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基础之详解HashSet的使用方法
Jun 30 Java/Android
Java 语言中Object 类和System 类详解
Jul 07 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
maven依赖的version声明控制方式
Jan 18 Java/Android
springboot 自定义配置 解决Boolean属性不生效
Mar 18 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
springboot读取nacos配置文件
May 20 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
May 30 Java/Android
springboot读取resources下文件的方式详解
Jun 21 Java/Android
app场景下uniapp的扫码记录
Jul 23 Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
Android存储中最基本的文件存储方式
Jmerte 分布式压测及分布式压测配置
Java存储没有重复元素的数组
Apr 29 #Java/Android
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
php命令行用法入门实例教程
2014/10/27 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
Javascript验证方法大全
2015/09/21 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python抓取电影天堂电影信息的代码
2016/04/07 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
python3实现字符串操作的实例代码
2019/04/16 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
英文简历中的自我评价用语
2013/12/09 职场文书
服务员岗位责任制
2014/02/11 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
关于安全的演讲稿
2014/05/09 职场文书
公司2015年终工作总结
2015/05/26 职场文书
安全生产会议制度
2015/08/06 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python