java实现简单三子棋游戏

本文实例为大家分享了java实现简单三子棋游戏的具体代码,供大家参考,具体内容如下

JOptionPane类的使用

编写程序,实现简单的三子棋游戏。在三子棋中,双方在3×3的棋盘中轮流下棋,一方用*示,另一方用O表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满,但没有一方获胜则出现平局。在程序中,一方为用户,用户在界面上输入每次下棋的位置;另一方下棋的位置为随机自动生成。示例界面如图所示。

提示:(1) 采用Scanner类或者JOptionPane类中提供的方法输入,输出采用System.out中的方法或JOptionPane类提供的方法。 (2) 字符串处理可以使用String或StringBuffer类。

实现代码:

import java.util.Random;
import javax.swing.*;
public class Main {
   public static boolean check(StringBuffer st,int pos){   //检查pos上的棋子有没有获胜
      char des=st.charAt(pos);
      char []s=new char[10];
      for(int i=1;i<=9;i++) s[i]=st.charAt(i);
      if((s[3]==des&&s[6]==des&&s[9]==des)||
      (s[1]==des&&s[4]==des&&s[7]==des)||
      (s[2]==des&&s[5]==des&&s[8]==des)||
      (s[1]==des&&s[3]==des&&s[2]==des)||
      (s[6]==des&&s[4]==des&&s[5]==des)||
      (s[9]==des&&s[7]==des&&s[8]==des)||
      (s[1]==des&&s[5]==des&&s[9]==des)||
      (s[3]==des&&s[5]==des&&s[7]==des)) return true;
      return false;
   }
   public static void main(String[] args) {
      StringBuffer s= new StringBuffer("0123456789");
      String tp;
      for(int i=0;i<=5;){
         int k=-1;
         tp=JOptionPane.showInputDialog("---------------------------\n|    "+s.charAt(1)+"    |    "+s.charAt(2)+"    |    "+s.charAt(3)+"    |\n---------------------------\n|    "+s.charAt(4)+"    |    "+s.charAt(5)+"    |    "+s.charAt(6)+"    |\n---------------------------\n|    "+s.charAt(7)+"    |    "+s.charAt(8)+"    |    "+s.charAt(9)+"    |\n---------------------------\n"+"请输入落子位置(1~9):");
         boolean f=true;
         if(tp.length()==1){
            k=tp.charAt(0)-'0';
            if(k>=1&&k<=9){
               if(s.charAt(k)>='1'&&s.charAt(k)<='9'){
                  i++;        //有效下棋
                  f=false;
               }
            }
         }
         while(f){
            tp=JOptionPane.showInputDialog("---------------------------\n|    "+s.charAt(1)+"    |    "+s.charAt(2)+"    |    "+s.charAt(3)+"    |\n---------------------------\n|    "+s.charAt(4)+"    |    "+s.charAt(5)+"    |    "+s.charAt(6)+"    |\n---------------------------\n|    "+s.charAt(7)+"    |    "+s.charAt(8)+"    |    "+s.charAt(9)+"    |\n---------------------------\n"+"输入错误,请重新输入落子的位置:");
            if(tp.length()==1){
               k=tp.charAt(0)-'0';
               if(k>=1&&k<=9){
                  if(s.charAt(k)>='1'&&s.charAt(k)<='9'){
                     i++;        //有效下棋
                     f=false;
                  }
               }
            }
         }
         //在k处落子
         s.replace(k,k+1,"O");
         if(check(s,k)){
            //获胜
            JOptionPane.showMessageDialog(null,"---------------------------\n|    "+s.charAt(1)+"    |    "+s.charAt(2)+"    |    "+s.charAt(3)+"    |\n---------------------------\n|    "+s.charAt(4)+"    |    "+s.charAt(5)+"    |    "+s.charAt(6)+"    |\n---------------------------\n|    "+s.charAt(7)+"    |    "+s.charAt(8)+"    |    "+s.charAt(9)+"    |\n---------------------------\n"+"恭喜你,你赢了!");
            break;
         }
         //电脑随机落子
         if(i==5) {
            JOptionPane.showMessageDialog(null,"---------------------------\n|    "+s.charAt(1)+"    |    "+s.charAt(2)+"    |    "+s.charAt(3)+"    |\n---------------------------\n|    "+s.charAt(4)+"    |    "+s.charAt(5)+"    |    "+s.charAt(6)+"    |\n---------------------------\n|    "+s.charAt(7)+"    |    "+s.charAt(8)+"    |    "+s.charAt(9)+"    |\n---------------------------\n"+"平局!");
            break;
         }
         Random rs=new Random();
         k=rs.nextInt(9)+1;
         while(k<1||k>9||s.charAt(k)=='*'||s.charAt(k)=='O') k=rs.nextInt(9)+1;
         s.replace(k,k+1,"*");
         if(check(s,k)){
            //电脑胜
            JOptionPane.showMessageDialog(null,"---------------------------\n|    "+s.charAt(1)+"    |    "+s.charAt(2)+"    |    "+s.charAt(3)+"    |\n---------------------------\n|    "+s.charAt(4)+"    |    "+s.charAt(5)+"    |    "+s.charAt(6)+"    |\n---------------------------\n|    "+s.charAt(7)+"    |    "+s.charAt(8)+"    |    "+s.charAt(9)+"    |\n---------------------------\n"+"你输了,再接再厉吧!");
            break;
         }
      }
   }
}

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

(0)

相关推荐

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

    本文实例为大家分享了Java实现三子棋小游戏的具体代码,供大家参考,具体内容如下 游戏操作如图示: 原理: 主要借助3x3的二维数组 实现: 1.Main–主程序 public class Main {     public static void main(String[] args) {       Player player=new Player();//玩家       Game game=new Game(player);       //一次循环代表一次游戏       while

  • Java实现三子棋小游戏

    # 前言 之前在学习C语言的时候,做过一个三子棋的小游戏,最近开始学习Java,就想着能不能用Java再把之前的练习重新实现一边,既然有这个想法了,那就开始行动啦~. 再写的过程中,能感觉到面向过程语言和面向对象语言的一些差异.最让我头疼的是类的设计,感觉不仅得考虑功能得实现,还需要考虑类之间得逻辑关系,函数的功能是单一的,但函数与函数之间谈不上什么关系,你要用的上我,你就用,不用就拉倒.类在设计的时候需要考虑将哪些方法封装在哪个类当中,封装位置不合适,尽管也可能实现功能,但总感觉怪怪的.自己最

  • Java实现三子棋游戏

    本文实例为大家分享了Java实现三子棋游戏的具体代码,供大家参考,具体内容如下 一.题目要求 编写程序,实现简单的三子棋游戏.在三子棋中,双方在3×3的棋盘中轮流下棋,一方用*示,另一方用O表示.如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜.如果棋盘已被棋子占满,但没有一方获胜则出现平局.在程序中,一方为用户,用户在界面上输入每次下棋的位置:另一方下棋的位置为随机自动生成. 二.代码示例 import javax.swing.JOptionPane;   public class

  • JavaSE实现三子棋游戏

    目录 main函数 棋盘模块设计 玩家模块设计 AI(电脑)模块设计 游戏模块设计 本文实例为大家分享了JavaSE实现三子棋游戏的具体代码,供大家参考,具体内容如下 用面向对象的思维把实现三子棋划分为四个模块: main函数 public class main {     public static void main(String[] args) {         player player1 = new player();         game game1 = new game(pl

  • java实现简单三子棋游戏

    本文实例为大家分享了java实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 JOptionPane类的使用 编写程序,实现简单的三子棋游戏.在三子棋中,双方在3×3的棋盘中轮流下棋,一方用*示,另一方用O表示.如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜.如果棋盘已被棋子占满,但没有一方获胜则出现平局.在程序中,一方为用户,用户在界面上输入每次下棋的位置:另一方下棋的位置为随机自动生成.示例界面如图所示. 提示:(1) 采用Scanner类或者JOptionPane类中提

  • C语言实现简单三子棋游戏

    本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 游戏介绍:使用C语言中二维数组和函数的基本知识实现一个三子棋游戏,这个游戏要实现的基本功能有初始化棋盘.棋盘的打印.玩家下棋.电脑下棋.判断输赢. 代码框架: 1.头文件(game.h) #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<st

  • 利用C语言实现简单三子棋游戏

    本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下 创建文件 只要弄清了二维数组的相关知识,我们就可以去实现简单的三子棋.对于初学者可谓是成就感满满~~ 首先我们会创建三个文件夹分别是game.h .geme.c .test.c .其中game.h中我们会引用所有需要的头文件(test.c和game.c中#include "game.h"即可):对常用量进行宏定义:还有对封装的函数进行申明和注释,使代码可读性更高.更好进行管理. 准备环节 1.菜单打印 既

  • C语言代码实现简单三子棋游戏

    三子棋是我们小时候经常玩的游戏,今天就分享一下如何用c语言简单实现三子棋吧 编译软件VS2019 c语言实现三子棋运用到了二维数组的知识,在编写三子棋程序时用到了多文件编译(不是必须的,但是使用多文件编译会增加代码的可读性),首先我们先建立一个头文件和两个源文件·: test.c//主程序 函数实现 game.c//主要用于自定义函数的定义 game.h//声明自定义函数 主要代码实现 test.c 调用各个功能的函数 #define _CRT_SECURE_NO_WARNINGS 1 #inc

  • C语言实现简单的控制台三子棋游戏

    用C语言实现简单的控制台三子棋游戏 首先,确定一局游戏的基本流程: 1.创建棋盘并初始化.(将棋盘看作一个二维数组) 2.打印显示出棋盘. 3.玩家落子(玩家通过输入行列坐标的方式来落子). 4.判定胜负关系.(如果玩家胜出,则退出游戏.) 5.电脑落子(随机位置落子) . 6.判定胜负关系(如果电脑胜出,退出游戏.否则,回到步骤 2 继续执行.) 第一步,此处通过构造menu()函数搭建一个简单的交互菜单和玩家交互,用来判断是否开始进行一局游戏. #define _CRT_SECURE_NO_

  • C语言实现简单三子棋小游戏

    三子棋介绍 三子棋,民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙等.将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了.如果两个人都掌握了技巧,那么一般来说就是平棋.一般来说,下在中间最有利,下在角上次之,下在边上再次之.最大的好处就是随便找个地方就可以玩这个简单而有趣的游戏了. 描述 使用C语言来编写一个简单的三子棋游戏 基本流程 1.显示菜单 void Menu() { printf("*******************************

  • C语言简单实现三子棋游戏

    本文实例为大家分享了C语言简单实现三子棋游戏的具体代码,供大家参考,具体内容如下 设计思路 1. 二维数组实现棋盘 2. 设计并打印出棋盘 3. 玩家先手 4. 每一次下棋后判断输赢 首先我们写出游戏的主函数,让玩家能自由选择开始游戏或者退出游戏. int main() { int input = 0; srand((unsigned int)time(NULL));//生成随机数用于电脑下棋 do { menu();//打印菜单 printf("请选择 >"); scanf(&

  • C语言三子棋游戏的简单设计

    本文实例为大家分享了C语言三子棋游戏简单设计的具体代码,供大家参考,具体内容如下 题目思想: 用 3×3 的二维数组表示棋盘 每一个棋子的格子,也就是每个元素表示三种状态:分别是 1.未落子 ' ' 2.玩家落子 'X' 3.电脑落子 'O' 玩家通过输入数字作为落子位置的坐标(输入的行数与输入的列数) 直接上代码解析 1.创建出棋盘 #define _CRT_SECURE_NO_WARNINGS //利用宏定义行和列 #define MAX_ROW 3 #define MAX_COL 3 #i

  • C语言实现简单的三子棋游戏源码

    本文实例为大家分享了C语言实现简单的三子棋游戏的具体代码,供大家参考,具体内容如下 1.游戏的整体划分 因为C语言是面向过程的,我将游戏抽象出来玩家下棋,电脑下棋,在判断输赢这一过程,又通过对过程的分析,进行了具体函数的实现,分为如下模块: 游戏主菜单函数 void menu(); 初始化棋盘函数 void InitBoard(char board[ROW][COL], int row, int col): 打印棋盘函数 void DisplayBoard(char board[ROW][COL

随机推荐