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 相关文章推荐
为什么在foreach循环中JAVA集合不能添加或删除元素
Jun 11 Java/Android
详解Java ES多节点任务的高效分发与收集实现
Jun 30 Java/Android
dubbo服务整合zipkin详解
Jul 26 Java/Android
Spring Boot 排除某个类加载注入IOC的操作
Aug 02 Java/Android
聊聊Lombok中的@Builder注解使用教程
Nov 17 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
Java时间工具类Date的常用处理方法
May 25 Java/Android
Spring Cloud OpenFeign模版化客户端
Jun 25 Java/Android
Java+swing实现抖音上的表白程序详解
Jun 25 Java/Android
Android实现图片九宫格
Jun 28 Java/Android
Java 定时任务技术趋势简介
Java版 单机五子棋
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 #Java/Android
Spring Boot 实现 WebSocket
Android存储中最基本的文件存储方式
Jmerte 分布式压测及分布式压测配置
Java存储没有重复元素的数组
Apr 29 #Java/Android
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
关于layui toolbar和template的结合使用方法
2019/09/19 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python实现telnet客户端的方法
2015/04/15 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
幼儿园小班评语
2014/04/18 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
市场营销工作计划书
2014/09/15 职场文书
2014年实习期工作总结
2014/11/27 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python