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 相关文章推荐
SpringBoot生成License的实现示例
Jun 16 Java/Android
详解Java实践之适配器模式
Jun 18 Java/Android
分析设计模式之模板方法Java实现
Jun 23 Java/Android
Java并发编程之详解CyclicBarrier线程同步
Jun 23 Java/Android
Netty结合Protobuf进行编解码的方法
Jun 26 Java/Android
浅谈Python魔法方法
Jun 28 Java/Android
Java中常用解析工具jackson及fastjson的使用
Jun 28 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
剑指Offer之Java算法习题精讲二叉树的构造和遍历
Mar 21 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
Java 数组的使用
May 11 Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
Android存储中最基本的文件存储方式
Jmerte 分布式压测及分布式压测配置
Java存储没有重复元素的数组
Apr 29 #Java/Android
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHP脚本中include文件出错解决方法
2008/11/20 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
php显示页码分页类的封装
2017/06/08 PHP
PHP时间处理类操作示例
2018/09/05 PHP
PHP的PDO连接讲解
2019/01/24 PHP
索趣科技的答案
2007/02/07 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
全面理解闭包机制
2016/07/11 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
layui实现数据分页功能
2019/07/27 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
python实现整数的二进制循环移位
2019/03/08 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
详解python itertools功能
2020/02/07 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
初中地理教学反思
2014/01/11 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
2014年司法所工作总结
2014/11/22 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL