게임 작동은 그림에 나와 있습니다:
주로 3x3 2차원 배열을 사용하여 구현됩니다.
1메인–메인 프로그램
public class Main { public static void main(String[] args) { Player player=new Player();//玩家 Game game=new Game(player); //一次循环代表一次游戏 while (true){ game.Init();//初始化 game.play();//开始游戏 game.destory();//释放 boolean q=player.queryContinue(); //一局游戏结束后,询问用户是否开始下一局游戏 if (!q){ System.out.println("欢迎下次继续游戏!"); break; } } } }
2. ;computer
import java.util.Random; //返回AI对象的落子位置 //用数组表示 第几行第几列 从0开始 //所以有效范围是[0,2] public class AI { private final Random random=new Random(); public int[] getPosition(){ int r=random.nextInt(3);//生成[0,2]的随机整数 0 1 2 int c=random.nextInt(3); return new int[]{r,c}; } }
3. Player
import java.util.Scanner; //返回玩家落子位置 //用数组表示 第几行第几列 从0开始 //所以有效范围是[0,2] public class Player { private final Scanner sc=new Scanner(System.in); public int[] getPosition(){ System.out.println("请输入要落子的位置,行列有效取值范围为[0,2]"); System.out.print(">>>"); int r,c; while (true){ System.out.print(">>>"); r=sc.nextInt(); c=sc.nextInt(); if (r>=0&&r<=2&&c>=0&&c<=2){ break; } System.out.println("行列有效范围为[0,2],请重新输入"); } return new int[]{r,c}; } //询问用户是否继续下一局 public boolean queryContinue(){ System.out.println("本局游戏结束,开始新游戏请输入true,否则输入false"); System.out.print(">>>"); return sc.nextBoolean(); } }
4. 체스보드
import java.util.Arrays; //棋盘 用来实例化对象 //棋盘对象 //功能 1、落子 2、判断棋盘状态 public class ChessBoard { private static final int empty=0;//空白位置用0表示 private static final int circle=1;//落子为o的位置 private static final int cross=2;//落子为x的位置 private final int[][] array={ {empty,empty,empty}, {empty,empty,empty}, {empty,empty,empty} }; public boolean moveCircleAt(int row,int column){//落一个o if (array[row][column]!=empty){ //落子前需要先判断该位置是否为空白 return false; } array[row][column]=circle; return true; } public boolean moveCrossAT(int row,int column){//某个位置落个x if (array[row][column]!=empty){ return false; } array[row][column]=cross; return true; } //棋盘的四种状态 public static final int CIRCLE_WIN=0;//执o者赢 //三横三竖两对角成直线 public static final int CROSS_WIN=1;//执x者赢 public static final int DRAW=2;//平局 //没有成直线 但无落子位置了 public static final int CONTINUE=3;//继续 public int getState(){//得到棋盘的状态 //判断行 for (int i=0;i<3;i++){ if(array[i][0]==array[i][1]&&array[i][1]==array[i][2]){ if (array[i][0]==circle){ System.out.println("恭喜你赢了!"); return CIRCLE_WIN; } else if (array[i][0]==cross){ System.out.println("很遗憾你输了!"); return CROSS_WIN; } } } for (int i=0;i<3;i++){ if (array[0][i]==array[1][i]&&array[1][i]==array[2][i]){ if (array[0][i]==circle){ System.out.println("恭喜你赢了!"); return CIRCLE_WIN; } else if(array[0][i]==cross){ System.out.println("很遗憾你输了!"); return CROSS_WIN; } } } //正负对角线 //正负对角线 if ((array[0][0]==array[1][1]&&array[1][1]==array[2][2]) ||(array[0][2]==array[1][1]&&array[1][1]==array[2][0])){ if (array[1][1]==circle){ System.out.println("恭喜你赢了!"); return CIRCLE_WIN; } else if (array[1][1]==cross){ System.out.println("很遗憾你输了!"); return CROSS_WIN; } } //无获胜 for (int i=0;i<3;i++){ for (int j=0;j<3;j++){ if (array[i][j]==empty){ return CONTINUE; } } } return DRAW;//无获胜也无空白 平局 } private static String show(int i){ //显示 switch (i){ case empty: return " "; case circle: return "o"; case cross: return "x"; default: return "1"; } } @Override public String toString() { String s="---------\n"; for (int i=0;i<2;i++){ //前两行 s+=String.format("|%s|%s|%s|\n",show(array[i][0]),show(array[i][1]),show(array[i][2])); s+="---------\n"; } //最后一行 s+=String.format("|%s|%s|%s|\n",show(array[2][0]),show(array[2][1]),show(array[2][2])); s+="---------"; return s; } public void reset() { for (int i=0;i<3;i++){ Arrays.fill(array[i],empty);//所有位置再次设置为空白 } } }
5. 실행 결과:
1 . 배치 위치의 적법성을 테스트합니다.2. 테스트 보드 상태/승패
3. 테스트 추첨
위 내용은 Java로 3피스 체스 게임을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!