Java实现三子棋小游戏的代码怎么写
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"Java实现三子棋小游戏的代码怎么写",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java实现三子棋小游戏的代码怎么写"吧!游戏操作如图
千家信息网最后更新 2026年11月02日Java实现三子棋小游戏的代码怎么写
本篇内容主要讲解"Java实现三子棋小游戏的代码怎么写",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java实现三子棋小游戏的代码怎么写"吧!
游戏操作如图示:

原理:
主要借助3x3的二维数组
实现:
1、Main–主程序
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、AI–电脑
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、ChessBoard–棋盘
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、Game–游戏
import java.util.Arrays;public class Game { private final ChessBoard chessboard; private final Player player; private final AI ai; public Game(Player player){ this.chessboard=new ChessBoard(); this.player=player; this.ai=new AI(); } //初始化 public void Init(){ System.out.println("欢迎进入三子棋游戏"); System.out.println(chessboard); } //回合制游戏,游戏主流程 public void play(){ while (true){ //一次循环=player回合+AI回合 if (playerTurn()){//玩家回合 break; } if (aiTurn()){//ai回合 break; } } } private boolean aiTurn() { System.out.println("AI回合:"); while (true) { int[] rc=ai.getPosition(); int row=rc[0]; int column=rc[1]; if(chessboard.moveCrossAT(row, column)){ break; } } System.out.println(chessboard); return chessboard.getState()!=ChessBoard.CONTINUE; } private boolean playerTurn() { System.out.println("玩家回合:"); while (true) { int[] rc=player.getPosition(); int row=rc[0]; int column=rc[1]; if(chessboard.moveCircleAt(row, column)){ break; } System.out.println("该位置已经有棋子,请重新选择位置"); } System.out.println(chessboard); return chessboard.getState()!=ChessBoard.CONTINUE; } //新一局游戏开始时 游戏的界面需要重置 否则会是上一局游戏的结局界面 public void destory(){ chessboard.reset(); }}运行结果:
1、测试落子位置合法性
2、测试棋盘状态/输赢
3、测试平局
到此,相信大家对"Java实现三子棋小游戏的代码怎么写"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
位置
回合
棋盘
玩家
三子
状态
空白
代码
小游戏
有效
遗憾
对角
对象
平局
数组
范围
测试
内容
对角线
正负
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网是第几次科技革命的成果
互联网科技公司华为
互联网核心科技是什么
腾讯阿里互联网科技
互联网 卓越科技
猫创互联网科技
佰商互联网科技有限公司
人人互联网科技是培训
无锡溥仪互联网科技有限公司
科技与互联网的利与弊
互联网之后的科技是什么
互联网科技和信息
亳州好赞互联网科技有限公司
山东子淼互联网科技有限公司
陕西云淼互联网科技公司
互联网科技包装股
易租星互联网科技有限公司
互联网科技的前景
平安好医生打造互联网科技医疗
上海互联网科技园景观
广州为想互联网科技有限公司
科技互联网龙头
互联网科技论坛
成都狮子座互联网科技
互联网科技素材视频竖屏
青海省互联网新科技
湖南诚度互联网科技有限公司
特约风豹互联网科技为什么扣费
伍佰万互联网科技怎么赚钱
城市宝互联网科技有限公司