Java/Test

Java Test.11 - 낚시 게임

Marmellata 2023. 3. 24. 17:47
package Test;

import java.util.Random;
import java.util.Scanner;

public class FishGame {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 낚시 게임 / 호수 5*5 사이즈 / 물고기는 총 3마리, 랜덤좌표로 
		 * 물고기 위치 지정 된 후 낚시 게임 시작, 물고기 좌표는 겹치지 않음
		 * X 는 포인트,  ○는 호수, ● 물고기
		 * 더이상 이동 불가 구현, 물고기 잡고 이동하면 다시 호수 ○로 
		 * 물고기를 다 잡으면 게임 종료
		 */
		Random r = new Random();
		Scanner sc = new Scanner(System.in);

		int fish = 3;
		String[][] a = new String[5][5];
		int[] randa = new int [3];
		int[] randb = new int [3];
		int pointa = 0;
		int pointb = 0;
		int move = 0;
		boolean check = true;
		for (int i = 0 ; i<randa.length; i++) { // 겹치지 않는 가로 숫자 3개 랜덤 배정
			randa[i] = r.nextInt(5);
			for (int j =0; i>j; j++) {
				if (randa[i]==randa[j]) {
					i--;
					break;
				}
			}
		}
		for (int i = 0; i<randb.length; i++) { // 겹치지 않는 세로 숫자 3개 랜덤 배정
			randb[i] = r.nextInt(5);
			for (int j =0; i>j; j++) {
				if (randb[i]==randb[j]) {
					i--;
					break;
				}
			}
		}

		for(int i=0; i<a.length; i++) { // 게임 초기화
			for (int j=0; j<a[i].length; j++) {
				a[i][j] = "○";
			}
		}
		for(int i=0; i<randa.length; i++) { // 물고기 위치 랜덤 지정 
			a[randa[i]][randb[i]] = "●"; // 물고기 위치 표시 , 현재 다 보이는 치트 상태
		}


		for (int i=0; i<a.length; i++) { // 게임 화면 출력
			for (int j=0; j<a[i].length; j++) {
				System.out.print(a[i][j]);
			}
			System.out.println();
		}

		while(true) { // 낚시 포인트 입력
			System.out.println("낚시 포인트를 입력해주세요.");
			System.out.print("세로 (0~4) : ");
			pointa = sc.nextInt();
			if (pointa <0 || pointa>4) {
				System.out.println("잘못된 입력입니다.");
				continue;
			}
			while(true) {
				System.out.print("가로 (0~4) : ");
				pointb = sc.nextInt();
				if (pointb <0 || pointb>4) { 
					System.out.println("잘못된 입력 입니다.");
				}
				break;
			}
			break;
		}



		while(fish>0) { // 물고기 다잡을시 클리어
			a[pointa][pointb] = "X";
			for (int i=0; i<a.length; i++) { // 게임 화면 출력
				for (int j=0; j<a[i].length; j++) {
					System.out.print(a[i][j]);
				}
				System.out.println();
			}

			for (int j = 0; j<3; j++) {
				if((pointa==randa[j])&&pointb==randb[j]) { // 포인트 겹칠시 물고기 삭감
					fish--;

					}
				}
			if(fish==0) {
				break;
			}
			System.out.printf("\n 현재 남은 물고기 수 : %d ", fish);
			System.out.println("\n\n 포인트를 움직여주세요. \n 1.위 2.아래 3.왼쪽 4.오른쪽");
			System.out.print(" 입력 ( 1 ~ 4 ) : ");
			move = sc.nextInt();
			if (move==1) {
				if (pointa==0) {
					System.out.println("더이상 이동 할 수 없습니다.\n");
					continue;
				}
				else {
					a[pointa][pointb] = "○";
					pointa--;
				}

			}
			else if (move==2) {
				if (pointa==4) {
					System.out.println("더이상 이동 할 수 없습니다.\n");
					continue;
				}
				else {
					a[pointa][pointb] = "○";
					pointa++;
				}
			}
			else if (move==3) {
				if (pointb==0) {
					System.out.println("더이상 이동 할 수 없습니다.\n");
					continue;
				}
				else {
					a[pointa][pointb] = "○";
					pointb--;
					
				}
			}
			else if (move==4) {
				if (pointb==4) {
					System.out.println("더이상 이동 할 수 없습니다.\n");
					continue;
				}
				else {
					a[pointa][pointb] = "○";
					pointb++;
				}
			}
			else {
				System.out.println("잘못된 입력 입니다.");
			}

		}
		System.out.println("\n 모든 물고기를 잡았습니다 ! \n 게임 클리어 ! 과제 끝 ! 해방이다 ! ");
	}



}

출력 결과

○●○○○
○○○○○
○○○●○
○○●○○
○○○○○
낚시 포인트를 입력해주세요.
세로 (0~4) : 0
가로 (0~4) : 1
○X○○○
○○○○○
○○○●○
○○●○○
○○○○○

 현재 남은 물고기 수 : 2 

 포인트를 움직여주세요. 
 1.위 2.아래 3.왼쪽 4.오른쪽
 입력 ( 1 ~ 4 ) : 2
○○○○○
○X○○○
○○○●○
○○●○○
○○○○○

 현재 남은 물고기 수 : 2 

 포인트를 움직여주세요. 
 1.위 2.아래 3.왼쪽 4.오른쪽
 입력 ( 1 ~ 4 ) : 2
○○○○○
○○○○○
○X○●○
○○●○○
○○○○○

 현재 남은 물고기 수 : 2 

 포인트를 움직여주세요. 
 1.위 2.아래 3.왼쪽 4.오른쪽
 입력 ( 1 ~ 4 ) : 4
○○○○○
○○○○○
○○X●○
○○●○○
○○○○○

 현재 남은 물고기 수 : 2 

 포인트를 움직여주세요. 
 1.위 2.아래 3.왼쪽 4.오른쪽
 입력 ( 1 ~ 4 ) : 4
○○○○○
○○○○○
○○○X○
○○●○○
○○○○○

 현재 남은 물고기 수 : 1 

 포인트를 움직여주세요. 
 1.위 2.아래 3.왼쪽 4.오른쪽
 입력 ( 1 ~ 4 ) : 3
○○○○○
○○○○○
○○X○○
○○●○○
○○○○○

 현재 남은 물고기 수 : 1 

 포인트를 움직여주세요. 
 1.위 2.아래 3.왼쪽 4.오른쪽
 입력 ( 1 ~ 4 ) : 2
○○○○○
○○○○○
○○○○○
○○X○○
○○○○○

 모든 물고기를 잡았습니다 ! 
 게임 클리어 ! 과제 끝 ! 해방이다 !