공부하시는대에 도움이 됐으면 좋겠습니다.
답안코드 확인해주세요!
입출력예시
답안코드
더보기
import java.util.*;
public class Main
{
private static char[][] board = new char[3][3];
private static char turn;
private static int row;
private static int col;
private static int turnRow;
private static int turnCol;
private static boolean entryError;
private static boolean anotherGame = true;
private static char repeat;
private static int entryCount = 0;
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
while(anotherGame)
{
newGame();
while(!winner())
{
writeBoard();
getMove();
}
System.out.println("y나 Y를 입력하면 게임은 다시 시작됩니다.");
repeat = keyboard.next().charAt(0);
if(repeat == 'y' || repeat == 'Y') //y라면 게임을 계속한다
anotherGame = true;
else
anotherGame = false;
}
}
private static void writeBoard() //표지만들기
{
System.out.println("-----------------");
System.out.println("|R\\C| 1 | 2 | 3 |");
System.out.println("-----------------");
for(row = 0; row < 3; ++row)
{
System.out.println("| " + (row + 1)
+ " | " + board[row][0]
+ " | " + board[row][1]
+ " | " + board[row][2]
+ " |");
System.out.println("-----------------");
}
}
private static void getMove()
{
entryError = true;
Scanner keyboard = new Scanner(System.in);
while(entryError)
{
System.out.println();
System.out.println(turn + "의 차례");
System.out.println("어디에 두고 " + turn + " 싶습니까?");
System.out.println("행과 열을 띄워서 입력해주세요 ");
System.out.println();
turnRow = keyboard.nextInt();
turnCol = keyboard.nextInt();
System.out.println("당신은 행" + turnRow+"을 선택");
System.out.println("당신은 열" + turnCol+"을 선택");
if (turnRow < 1 || turnRow > 3 || turnCol < 1 || turnCol > 3)
{
System.out.println("다시 입력하세요 유효한 값이 아닙니다.");
System.out.println(
"행렬은 1,2,3안에 있는 숫자로 입력해야합니다.");
}
else if (board[turnRow - 1][turnCol - 1] == 'X'
|| board[turnRow - 1][turnCol - 1] == 'O')
{
System.out.println("이미 차있는 자리입니다.");
System.out.println("다시 선택해주세요.");
}
else
{
entryError = false;
System.out.println("당신의 선택.");
board[turnRow - 1][turnCol - 1] = turn;
++entryCount;
}
}
}
private static boolean winner()
{
// 행에서 승리한 경우
for(row = 0; row < 3; ++row)
{
if(board[row][0] == turn)
{
if(board[row][1] == turn)
{
if(board[row][2] == turn)
{
System.out.println();
System.out.println (turn + " 가 승리했습니다!");
writeBoard();
return true;
}
}
}
}
// 열에서 승리한 경우
for(col = 0; col < 3; ++col)
{
if(board[0][col] == turn)
{
if(board[1][col] == turn)
{
if(board[2][col] == turn)
{
System.out.println();
System.out.println (turn + " 가 승리했습니다.");
writeBoard();
return true;
}
}
}
}
// 대각선 승리한 경우
if(board[0][0] == turn)
{
if(board[1][1] == turn)
{
if(board[2][2] == turn)
{
System.out.println();
System.out.println (turn + " 가 승리했습니다.");
writeBoard();
return true;
}
}
}
if(board[0][2] == turn)
{
if(board[1][1] == turn)
{
if(board[2][0] == turn)
{
System.out.println();
System.out.println (turn + " 가 승리했습니다.");
writeBoard();
return true;
}
}
}
//비기는 경우
if(entryCount >= 9)
{
System.out.println();
System.out.println("비겼습니다.");
writeBoard();
return true;
}
else // 다음 턴
{
if(turn == 'X')
turn = 'O';
else
turn = 'X';
return false;
}
}
private static void newGame()
{
System.out.println();
System.out.println("새로운 게임입니다 X먼저!");
turn = 'O';
for(row = 0; row < 3; ++row)
{
for(col = 0; col < 3; ++col)
board[row][col] = ' ';
}
entryCount = 0;
System.out.println();
}
}
더 많은 자바코드가 보고 싶다면?
https://chuinggun.tistory.com/category/%EC%9E%90%EB%B0%94/%EC%9E%90%EB%B0%94
'자바' 카테고리의 다른 글
[자바] 가위 바위 보 게임을 random메소드를 활용하여 작성하시오 rock paper scissors (0) | 2023.01.07 |
---|---|
[자바] 완전수를 구하는 프로그램을 작성하시오 (0) | 2023.01.06 |
댓글