iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现三子棋小游戏简易版
  • 510
分享到

Java实现三子棋小游戏简易版

2024-04-02 19:04:59 510人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了Java实现三子棋小游戏的具体代码,供大家参考,具体内容如下 游戏操作如图示: 原理: 主要借助3x3的二维数组 实现: 1、Main–主程序 pu

本文实例为大家分享了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、测试平局

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java实现三子棋小游戏简易版

本文链接: https://www.lsjlt.com/news/147883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现三子棋小游戏简易版
    本文实例为大家分享了Java实现三子棋小游戏的具体代码,供大家参考,具体内容如下 游戏操作如图示: 原理: 主要借助3x3的二维数组 实现: 1、Main–主程序 pu...
    99+
    2024-04-02
  • Java实现简易五子棋小游戏
    本文实例为大家分享了Java实现简易五子棋小游戏的具体代码,供大家参考,具体内容如下 五子棋是一个简单小游戏,首先我们先想想五子棋都有什么东西,棋子,棋盘; 首先我们可以定义一个棋子...
    99+
    2024-04-02
  • C语言实现三子棋游戏简易版
    前言 提示:是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方...
    99+
    2024-04-02
  • C语言实现简易的三子棋小游戏
    本文实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下 1.基本流程 1.菜单界面选择开始或者退出游戏。2.创建棋盘并初始化。3.打印棋盘。4.玩家落子并打印...
    99+
    2022-11-13
    C语言 三子棋
  • Java实现三子棋小游戏
    # 前言 之前在学习C语言的时候,做过一个三子棋的小游戏,最近开始学习Java,就想着能不能用Java再把之前的练习重新实现一边,既然有这个想法了,那就开始行动啦~。 再写的过程中...
    99+
    2024-04-02
  • Java怎么实现简易五子棋小游戏
    这篇文章主要介绍“Java怎么实现简易五子棋小游戏”,在日常操作中,相信很多人在Java怎么实现简易五子棋小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么实现简易五子棋小游戏”的疑惑有所帮助!...
    99+
    2023-06-30
  • C语言实现简易三子棋游戏
    利用数组来创建一个三子棋小游戏的步骤如下: 1、建立一个可以容纳九个元素的3*3棋盘。并初始化,使所有位置都为三。 2、打印棋盘,使其尽可能美观。 3、玩家通过输入坐标(row,co...
    99+
    2024-04-02
  • python实现简易五子棋小游戏(三种方式)
    tkinter库:Python的标准Tk GUI工具包的接口 示例: from tkinter import *root = Tk()#你的ui代码Label(root,text = 'hello world!').pack()root.m...
    99+
    2023-09-07
    python numpy 开发语言 pygame visual studio
  • java实现简单三子棋游戏
    本文实例为大家分享了java实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 JOptionPane类的使用 编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×...
    99+
    2024-04-02
  • java实现简易的五子棋游戏
    本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 先上效果图 一、问题分析 1、五子棋游戏分析: 五子棋作为较为普遍且简易的娱乐游戏,受到众多人的...
    99+
    2024-04-02
  • C++实现简易的五子棋小游戏
    本文实例为大家分享了C++实现简易五子棋小游戏的具体代码,供大家参考,具体内容如下 游戏界面: 这是一个简易的五子棋游戏,由c语言编写,每次循环输入两个位置的坐标,通过其奇偶性判...
    99+
    2024-04-02
  • Java实现三子棋游戏
    本文实例为大家分享了Java实现三子棋游戏的具体代码,供大家参考,具体内容如下 一、题目要求 编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一...
    99+
    2024-04-02
  • C语言实现简易五子棋小游戏
    本文实例为大家分享了C语言实现简单五子棋小游戏的具体代码,供大家参考,具体内容如下 效果图如下: 设计思路: 棋盘设计为15×15格,初始状态光标在棋盘的中央,白棋先走...
    99+
    2024-04-02
  • python+pygame实现简易五子棋小游戏的三种方式
    目录五子棋小游戏实现(一):  五子棋小游戏实现(二):  五子棋小游戏实现(三): tkinter库:Python的标准Tk GU...
    99+
    2023-03-23
    python 五子棋 python pygame python pygame五子棋
  • 基于C语言实现简易三子棋游戏
    用C语言写三子棋的具体代码,供大家参考,具体内容如下 1、头文件 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> ...
    99+
    2024-04-02
  • Python实现简易五子棋游戏
    本文实例为大家分享了Python实现五子棋游戏的具体代码,供大家参考,具体内容如下 class CheckerBoard():     '''棋盘类'''     def __ini...
    99+
    2024-04-02
  • C语言代码实现简易三子棋游戏
    本文实例为大家分享了C语言代码实现简易三子棋游戏的具体代码,供大家参考,具体内容如下 1. 三子棋游戏规则 是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井...
    99+
    2024-04-02
  • java如何实现简单三子棋游戏
    本篇内容主要讲解“java如何实现简单三子棋游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java如何实现简单三子棋游戏”吧!JOptionPane类的使用编写程序,实现简单的三子棋游戏。在...
    99+
    2023-06-30
  • C语言小游戏之简易版三子棋(棋盘可自由扩展)
    目录前言step1.初始化棋盘内值为空格step2.打印棋盘step3.玩家下棋step4.电脑下棋 step5.判断棋盘是不是满了step6.判断输赢step7.最终测试三种情况g...
    99+
    2024-04-02
  • python实现简易五子棋游戏(控制台版)
    本文实例为大家分享了python实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 运行效果:  完整代码+注释:  finish = False # 游戏...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作