返回顶部
首页 > 资讯 > 精选 >怎么用JavaSE实现三子棋游戏
  • 716
分享到

怎么用JavaSE实现三子棋游戏

2023-06-30 12:06:50 716人浏览 泡泡鱼
摘要

本篇内容主要讲解“怎么用JavaSE实现三子棋游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaSE实现三子棋游戏”吧!用面向对象的思维把实现三子棋划分为四个模块:main函数pu

本篇内容主要讲解“怎么用JavaSE实现三子棋游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaSE实现三子棋游戏”吧!

面向对象的思维把实现三子棋划分为四个模块:

main函数

public class main {    public static void main(String[] args) {        player player1 = new player();        game game1 = new game(player1);        while(true){            game1.initialize();            game1.play();            game1.destroy();            boolean b = player1.queryContinue();            if (!b) {                System.out.println("欢迎下次继续游戏");                break;            }        }    }}

棋盘模块设计

棋盘初始化

接受玩家落子并返回当前棋盘状态

接受AI落子并返回当前棋盘状态

判断获胜方、平局或是继续游戏,新游戏重置棋盘。

import java.util.Arrays;public class chessboard {    private static final int 空白 = 0;    private static final int 画圈 = 1;    private static final int 画叉 = 2;    private int[][] array = {            {空白,空白,空白},            {空白,空白,空白},            {空白,空白,空白},    };    public boolean moveCircleAt(int row,int column){        if(array[row][column] != 空白){            return false;        }        array[row][column] = 画圈;        return true;    }    public boolean moveCrossAt(int row,int column){        if(array[row][column] != 空白){            return false;        }        array[row][column] = 画叉;        return true;    }    public static final int CIRCLE_WIN = 0;    public static final int CROSS_WIN = 1;    public static final int DRAW = 2;    public static final int CONTINUE = 3;    private static String display(int i){        switch (i){            case 空白:return " ";            case 画圈:return "@";            case 画叉:return "*";            default:return " ";        }    }    @Override    public String toString() {        String s = "+-+-+-+-+-+\n";        for(int i = 0;i<2;i++){           s +=  String.fORMat("|%s|%s|%s|\n",display(array[i][0]),display(array[i][1]),display(array[i][2]));//           s += "+-+-+-+-+-+\n";        }        s +=  String.format("|%s|%s|%s|\n",display(array[2][0]),display(array[2][1]),display(array[2][2]));        s += "+-+-+-+-+-+";        return s;    }    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] == 画圈 ){                    System.out.println("玩家胜");                    return CIRCLE_WIN;                }                else if(array[i][0] == 画叉){                    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] == 画圈 ){                    System.out.println("玩家胜");                    return CIRCLE_WIN;                }                else if(array[0][i] == 画叉){                    System.out.println("机器赢");                    return CROSS_WIN;                }            }        }        //斜线判断        if(array[0][0] == array[1][1] && array[1][1]== array[2][1]){            if(array[1][1] == 画圈 ){                return CIRCLE_WIN;            }            else if(array[1][1] == 画叉){                return CROSS_WIN;            }        }        if(array[0][2] == array[1][1] && array[1][1]== array[2][0]){            if(array[1][1] == 画圈 ){                return CIRCLE_WIN;            }            else if(array[1][1] == 画叉){                return CROSS_WIN;            }        }        //没人赢        for(int i = 0;i<3;i++){            for(int j = 0;j<3;j++){                if(array[i][j] == 空白){                    return CONTINUE;                }            }        }        return DRAW;    }    public void reset() {        for(int i = 0;i<3;i++){            Arrays.fill(array[i],空白);        }    }}

玩家模块设计

输入想要落子的位置,决定退出游戏还是再来一局。

import java.util.Scanner;public class player {    private final Scanner scanner = new Scanner(System.in);    public int[] getStation(){        System.out.println("请输入要落子的位置,行,列,有效输入是0,1,2");        int r,c;        while (true) {            System.out.print(">>>");             r = scanner.nextInt();             c = scanner.nextInt();             if(r >= 0 && r <= 2 &&c >= 0 && c <= 2){                 break;             }            System.out.println("有效范围是0,1,2,请重新输入。");        }        return new int[] {r,c};    }    public boolean queryContinue(){        System.out.println("是否再来一把?,请输入true or false");        System.out.println(">>>");        return scanner.nextBoolean();    }}

AI(电脑)模块设计

生成随机坐标

import java.util.Random;public class AI {    //返回落子的位置    //第几行,第几列都是从0开始    //有效值0~2    private final Random random = new Random();    int r,c;    public int[] getStation(){        r = random.nextInt(3);        c = random.nextInt(3);        return new int[] {r,c};    }}

游戏模块设计

初始化工作:打印提示内容和分割线,加载棋盘

判断是玩家落子还是AI落子

玩家落子情况下:判断玩家输入的合法性,超出边界或是覆盖落子都是不合法行为

AI落子情况下:判断输入的合法性。

控制棋盘重置新棋局

package 三子棋;public class game {    private final chessboard chessboard1;    private final player player1;    private final AI ai;    public game(player player1){        this.chessboard1 = new chessboard();        this.player1 = player1;        this.ai = new AI();    }    //游戏开始之前,进行一些准备工作    public void initialize(){        System.out.println("欢迎进入井字棋游戏");        System.out.println("规则如下;省略");        System.out.println("===========================");        System.out.println(chessboard1);    }    public void play(){//cintinue会继续,玩家胜,AI胜和平局 都是break,退出循环。        while(true){            if(playerTurn()){                break;            }            if(aiTurn()) {                break;            }        }    }    //游戏结束之前,完成一些收尾工作    public void destroy(){//        ai.reset();//        player1.reset();        chessboard1.reset();    }    private boolean playerTurn(){        System.out.println("玩家回合");        while (true){            int[] rc = player1.getStation();            int row = rc[0];            int column = rc[1];            if(chessboard1.moveCircleAt(row,column))            {                break;            }            System.out.println("该位置已经有子,请重新选择位置");        }        System.out.println(chessboard1);        if(chessboard1.getState() == chessboard.CONTINUE){            return false;        }        return true;    }    private boolean aiTurn(){        System.out.println("AI回合");        while (true){            int[] rc = ai.getStation();            int row = rc[0];            int column = rc[1];            if(chessboard1.moveCrossAt(row,column))            {                break;            }            System.out.println("该位置已经有子,请重新选择位置");        }        System.out.println(chessboard1);        if(chessboard1.getState() == chessboard.CONTINUE){            return false;        }        return true;    }}

到此,相信大家对“怎么用JavaSE实现三子棋游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用JavaSE实现三子棋游戏

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

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

猜你喜欢
  • JavaSE实现三子棋游戏
    目录main函数棋盘模块设计玩家模块设计AI(电脑)模块设计游戏模块设计本文实例为大家分享了JavaSE实现三子棋游戏的具体代码,供大家参考,具体内容如下 用面向对象的思维把实现三子...
    99+
    2024-04-02
  • 怎么用JavaSE实现三子棋游戏
    本篇内容主要讲解“怎么用JavaSE实现三子棋游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaSE实现三子棋游戏”吧!用面向对象的思维把实现三子棋划分为四个模块:main函数pu...
    99+
    2023-06-30
  • 怎么用Java实现三子棋游戏
    本文小编为大家详细介绍“怎么用Java实现三子棋游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Java实现三子棋游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、题目要求编写程序,实现简单的三子棋...
    99+
    2023-06-30
  • python怎么实现三子棋游戏
    一、基本流程三子棋游戏实现逻辑如下:1、创建初始化3*3棋盘;2、玩家执U子,先进行落子;3、胜负判定【胜、负、和棋】,若胜负未分,则继续如下4、电脑执T子,进行落子;5、胜负判定,若胜负未分,则从步骤2继续执行二、基本步骤1、菜单界面选择...
    99+
    2023-05-15
    Python
  • python实现三子棋游戏
    目录一、基本流程二、基本步骤1、菜单界面2、初始化棋盘、打印棋盘3、玩家落子4、电脑落子5、输赢判定三、整体代码四、结果展示三子棋的python实现代码,供大家参考,具体内容如下 一...
    99+
    2024-04-02
  • Java实现三子棋游戏
    本文实例为大家分享了Java实现三子棋游戏的具体代码,供大家参考,具体内容如下 一、题目要求 编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一...
    99+
    2024-04-02
  • Java实现三子棋小游戏
    # 前言 之前在学习C语言的时候,做过一个三子棋的小游戏,最近开始学习Java,就想着能不能用Java再把之前的练习重新实现一边,既然有这个想法了,那就开始行动啦~。 再写的过程中...
    99+
    2024-04-02
  • 怎么用c语言实现三子棋游戏
    这篇文章给大家分享的是有关怎么用c语言实现三子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、...
    99+
    2023-06-14
  • C语言怎么实现三子棋游戏
    这篇文章主要讲解了“C语言怎么实现三子棋游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么实现三子棋游戏”吧!很多人从小都玩过三子棋,相信很多人都对这个游戏的实现有所疑问。那么今天...
    99+
    2023-06-20
  • 用C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 初始工作,通过#define 定义一个标识符来表示一个常量(棋盘的横纵坐标) (因为在代码的编写中,会有...
    99+
    2024-04-02
  • 如何用C++实现三子棋游戏
    这篇文章主要介绍了如何用C++实现三子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用C++实现三子棋游戏文章都会有所收获,下面我们一起来看看吧。游戏描述:先来点真实的!三子棋其实就是我们小时候经常玩...
    99+
    2023-06-26
  • 怎么用C语言实现三子棋小游戏
    这篇文章主要介绍了怎么用C语言实现三子棋小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用C语言实现三子棋小游戏文章都会有所收获,下面我们一起来看看吧。思想提升及重要代码片段为什么要拆成三个文件写:1....
    99+
    2023-06-30
  • C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 game.h 设置头文件 #define ROW 3 #define COL 3 #include&...
    99+
    2024-04-02
  • java实现简单三子棋游戏
    本文实例为大家分享了java实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 JOptionPane类的使用 编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×...
    99+
    2024-04-02
  • python如何实现三子棋游戏
    本文小编为大家详细介绍“python如何实现三子棋游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“python如何实现三子棋游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、基本流程三子棋游戏实现逻辑如下...
    99+
    2023-07-06
  • C语言怎么实现三子棋小游戏
    这篇文章主要介绍“C语言怎么实现三子棋小游戏”,在日常操作中,相信很多人在C语言怎么实现三子棋小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现三子棋小游戏”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • C语言怎样实现三子棋游戏
    这篇文章给大家分享的是有关C语言怎样实现三子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。思路:main函数结构部署game函数功能的实现①创建存储空间②初始化存储空间为空格③打印棋盘④实现玩家下棋⑤实现电...
    99+
    2023-06-25
  • 用C语言实现三子棋小游戏
    本文实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下 1. 规则介绍 三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起...
    99+
    2024-04-02
  • 使用C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 先简单介绍一下我的三子棋小游戏是怎么玩的,就是自己跟电脑pk,只不过电脑没这么智能。自己输入想要下的坐标...
    99+
    2024-04-02
  • 如何使用tkinter实现三子棋游戏
    小编给大家分享一下如何使用tkinter实现三子棋游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!整体游戏很简单。下棋,判断胜利或者平局。没有加入电脑下棋的算法。游戏界面:代码:import tkinter&n...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作