공부/과제.
JAVA 문제풀이 13 배열 낚시 게임
햄이;
2021. 4. 28. 11:00
Q1. 이차원 배열을 이용한 낚시게임 (세부 문제 내용은 코드 확인)
package Day9;
import java.util.Random;
import java.util.Scanner;
/*
* Q.20 낚시게임
* 5*5 크기의 호수에 물고기 3마리가 있다.
* 물고기의 좌표는 랜덤을 통해 물고기의 위치가 정해진다.
* (단, 같은 자리에 물고기가 2마리 있을 수 없다.)
* 호수와 물고기의 세팅이 끝나면 낚시 게임이 시작된다.
*
* 1. 낚시꾼의 캐스팅을 입력한다
* 2. x,y좌표를 입력하세요 : 좌표 입력(엔터)
* 좌표값 0~4사이가 아니면 잘못된 캐스팅 출력하고 재 캐스팅
* 캐스팅을 올바르게 했다면 좌표에 물고기가 있는지 체크할 것
* 만약 그 위치에 물고기가 있으면 "물고기 1마리를 잡았습니다." 출력
*
* 낚시대를 움직이는 게임 시작
* 3. 위 2. 아래 3. 왼쪽 4. 오른쪽 : (이동숫자)(엔터) 입력
* 캐스팅 위치에서 위 -y 아래 +y 왼쪽 -x 오른쪽 +x 한 칸씩 이동
* 만약 호수의 크기를 벗어나는 캐스팅이면 "더 이상 이동을 할 수 없습니다" 출력
* 다시 3번 과정으로 이동
* 물고기 3마리를 모두 잡으면 축하합니다 출력을 하고 프로그램 종료
* */
public class Question3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random r = new Random();
Scanner sc = new Scanner(System.in);
int [][] place = new int[5][5];
int row; //물고기 좌표 행
int col; //물고기 좌표 열
int x; // 캐스팅 좌표 행
int y; // 캐스팅 좌표 열
int fish = 0; // 잡은 물고기의 수
while(fish<3) {//물고기의 수가 3미만 일 때만 반복
//물고기 세 마리 랜덤으로 넣어주기
for(int i=0; i<3; i++) {
row = r.nextInt(5);
col = r.nextInt(5);
if(place[row][col]==0) {
place[row][col] = 1; //비어있는 자리일 때 1(물고기) 입력
}else {
i--;
}
}
//테스트용 물고기의 위치 출력
System.out.println("물고기의 위치");
for(int i=0; i<place.length; i++) {
for(int j=0; j<place.length; j++) {
if(place[i][j]!=0)
System.out.println(+i+" "+j+" ");
}
}
while(fish<3) {
System.out.println("캐스팅 하겠습니다.");
System.out.println("X좌표를 입력하세요");
x = sc.nextInt();
System.out.println("Y좌표를 입력하세요");
y = sc.nextInt();
int fishing; // 낚시대 방향
if(x>=0 && x<5 && y>=0 && y<5) { //x,y좌표가 0~4 사이일 때
if(place[x][y]==1) { // 물고기가 있을 때
System.out.println("물고기 1마리를 잡았습니다.");
place[x][y] = 0; // 물고기가 잡혀서 그 자리는 0으로 바꿔준다.
fish++; // 잡은 물고기 수 +1
}else {
System.out.println("물고기가 없습니다.");
}
//캐스팅 위치에서 낚시대 이동 시작
while(true) {
System.out.println("낚시대를 어디로 움직이시겠습니까?");
System.out.println("1. 위 | 2. 아래 | 3. 왼쪽 | 4. 오른쪽 ");
fishing = sc.nextInt();
if(fishing>0 && fishing<5) { // 1~4 사이의 메뉴를 선택했을 때
switch(fishing) {
case 1 :{ // 위
y--;
if(y<0 || y>4) {
System.out.println("더이상 이동할 수 없습니다.");
y++;
}
System.out.println("현재 좌표"+x+" "+y);
break;
}case 2 :{ // 아래
y++;
if(y<0 || y>4) {
System.out.println("더이상 이동할 수 없습니다.");
y--;
}
System.out.println("현재 좌표"+x+" "+y);
break;
}case 3 :{ // 왼쪽
x--;
if(x<0 || x>4) {
System.out.println("더이상 이동할 수 없습니다.");
x++;
}
System.out.println("현재 좌표"+x+" "+y);
break;
}case 4 :{ // 오른쪽
x++;
if(x<0 || x>4) {
System.out.println("더 이상 이동할 수 없습니다.");
x--;
}
System.out.println("현재 좌표"+x+" "+y);
break;
}
}
//물고기 마리수 체크
if(place[x][y]!=0) {
System.out.println("물고기 1마리를 잡았습니다.");
place[x][y]=0;
fish++;
System.out.println("현재 물고기 수 :"+fish);
if(fish==3) {
System.out.println("축하합니다 물고기 3마리를 모두 잡았습니다.");
break;
}
}
}else {
System.out.println("잘못된 입력입니다. 다시 선택해주세요");
}
}
}else {
System.out.println("잘못된 캐스팅입니다.");
System.out.println();
}
}
}
}
}
코드가 밀리게 나와서 중간에 반 잘라서 업로드!