java版 简单三子棋游戏


Posted in Java/Android onMay 04, 2022

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

JOptionPane类的使用

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

java版 简单三子棋游戏

java版 简单三子棋游戏

提示:(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;
         }
      }
   }
}

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


Tags in this post...

Java/Android 相关文章推荐
教你用Java Swing实现自助取款机系统
Jun 11 Java/Android
教你用Java在个人电脑上实现微信扫码支付
Jun 13 Java/Android
分析Netty直接内存原理及应用
Jun 14 Java/Android
浅谈sql_@SelectProvider及使用注意说明
Aug 04 Java/Android
Java 超详细讲解ThreadLocal类的使用
Apr 07 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
Qt数据库应用之实现图片转pdf
Jun 01 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 Java/Android
SpringBoot深入分析讲解监听器模式下
Jul 15 Java/Android
java实现web实时消息推送的七种方案
Jul 23 Java/Android
Java Redisson多策略注解限流
Sep 23 Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
Android存储中最基本的文件存储方式
Jmerte 分布式压测及分布式压测配置
Java存储没有重复元素的数组
Apr 29 #Java/Android
You might like
PHP VS ASP
2006/10/09 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
php排序算法实例分析
2016/10/17 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
Angularjs的启动过程分析
2017/07/18 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
JS实现打字游戏
2019/12/17 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
python实现dict版图遍历示例
2014/02/19 Python
python的类变量和成员变量用法实例教程
2014/08/25 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python 查看文件的读写权限方法
2018/01/23 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
python中map的基本用法示例
2018/09/10 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
广播体操比赛口号
2014/06/10 职场文书
死亡证明书样本说明
2014/10/18 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL
java实现web实时消息推送的七种方案
2022/07/23 Java/Android