井字游戏java代码_井字游戏(java)
井字游戏(java)
井字游戏(java)
分析:游戏方式只有赢和平两种方式
赢:有一方有3个连成一条线就赢了(横,竖,对角线)。想要赢填子的数量必须大于等于5,所以填前面4个格子时不需要判断。
考虑赢我把它分为三种情况:横,竖,对角线
横竖其实是同一类 只要判断下一行一列下填的东西是否相同。(如果一行一列有个空没有填就可以直接跳过)
对角线:主对角线和斜对角线 主对角线的特点是横竖坐标相同,斜对角线的特点是横坐标等于2减去竖坐标
平:我偷懒了下,要填满9个格子
好开始写程序。
功能:1、展示填好的九宫格
2、判断是否有人赢了
3、填格子
展示代码:
public static void showMap(char[][] map)
{
System.out.println("-------------");
for(int i=0;i<3;i++)
{
System.out.print("|");
for(int j=0;j<3;j++)
{
if(map[i][j]!='\u0000')
System.out.print(" "+map[i][j]+" |");
else
System.out.print(" |");
}
System.out.println();
System.out.println("-------------");
}
}
判断代码
public static boolean isWin(char[][] chess)
{
for(int i=0;i<3;i++)//横着判断
{
boolean row=true;
if(chess[i][0]=='\u0000')
continue;
for(int j=1;j<3;j++)
{
if(chess[i][j]!=chess[i][0]||chess[i][j]=='\u0000')
{
row=false;
break;
}
}
if(row)
{
System.out.println(chess[i][0]+" player won");
return true;
}
}
for(int i=0;i<3;i++)//竖着判断
{
boolean column=true;
if(chess[0][i]=='\u0000')
continue;
for(int j=1;j<3;j++)
{
if(chess[j][i]!=chess[0][i]||chess[j][i]=='\u0000')
{
column=false;
break;
}
}
if(column)
{
System.out.println(chess[0][i]+" player won");
return true;
}
}
boolean mainDiagonal=true;
boolean deputyDiagonal=true;
for(int i=0;i<3;i++)//对角线判断
{
for(int j=0;j<3;j++)
{
if(mainDiagonal&&i==j)
{
if(chess[i][j]=='\u0000'||chess[i][j]!=chess[0][0])
mainDiagonal=false;
}
if(deputyDiagonal&&i==2-j)
{
if(chess[i][j]=='\u0000'||chess[i][j]!=chess[0][2])
deputyDiagonal=false;
}
}
}
if(mainDiagonal)
{
System.out.println(chess[0][0]+" player won");
return true;
}
if(deputyDiagonal)
{
System.out.println(chess[0][2]+" player won");
return true;
}
return false;
}
总代码:
import java.util.Scanner;
class WellGame
{
public static void main(String[] args)
{
char[][] array=new char[3][3];
showMap(array);
int step=0;
int row,column;
Scanner input=new Scanner(System.in);
while(step<5||isWin(array)==false&&step<9)
{
if(step%2==0) //用奇偶来区别XO输入
{
System.out.print("Enter a row(0, 1, or 2) for player X:");
row=input.nextInt();
System.out.print("Enter a column(0, 1, or 2) for player X:");
column=input.nextInt();
array[row][column]='X';
showMap(array);
}else
{
System.out.print("Enter a row(0, 1, or 2) for player O:");
row=input.nextInt();
System.out.print("Enter a column(0, 1, or 2) for player O:");
column=input.nextInt();
array[row][column]='O';
showMap(array);
}
step++;
}
if(step==9) //平局
System.out.println("The game ended in a draw");
}
public static boolean isWin(char[][] chess)
{
for(int i=0;i<3;i++) //行判断
{
boolean row=true;
if(chess[i][0]=='\u0000')
continue;
for(int j=1;j<3;j++)
{
if(chess[i][j]!=chess[i][0]||chess[i][j]=='\u0000')
{
row=false;
break;
}
}
if(row)
{
System.out.println(chess[i][0]+" player won");
return true;
}
}
for(int i=0;i<3;i++) //列判断
{
boolean column=true;
if(chess[0][i]=='\u0000')
continue;
for(int j=1;j<3;j++)
{
if(chess[j][i]!=chess[0][i]||chess[j][i]=='\u0000')
{
column=false;
break;
}
}
if(column)
{
System.out.println(chess[0][i]+" player won");
return true;
}
}
boolean mainDiagonal=true;
boolean deputyDiagonal=true;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(mainDiagonal&&i==j)//主对角线判断
{
if(chess[i][j]=='\u0000'||chess[i][j]!=chess[0][0])
mainDiagonal=false;
}
if(deputyDiagonal&&i==2-j) //斜对角线判断
{
if(chess[i][j]=='\u0000'||chess[i][j]!=chess[0][2])
deputyDiagonal=false;
}
}
}
if(mainDiagonal) //主对角线连成直线
{
System.out.println(chess[0][0]+" player won");
return true;
}
if(deputyDiagonal) //斜对角线连成直线
{
System.out.println(chess[0][2]+" player won");
return true;
}
return false;
}
public static void showMap(char[][] map)//显示九个格
{
System.out.println("-------------");
for(int i=0;i<3;i++)
{
System.out.print("|");
for(int j=0;j<3;j++)
{
if(map[i][j]!='\u0000')
System.out.print(" "+map[i][j]+" |");
else
System.out.print(" |");
}
System.out.println();
System.out.println("-------------");
}
}
}
井字游戏(java)相关教程
井字游戏java代码_井字游戏(java)相关推荐
- 连连看java代码_连连看 - java代码库 - 云代码
[java]代码库/* * To change this license header, choose License Headers in Project Properties. * To chan ...
- java代码_【JAVA虚拟机(JVM)精髓】05-Java代码的执行过程
持续更新JVM相关知识,敬请关注: Java虚拟机精髓专栏zhuanlan.zhihu.com 这里再简单回顾下Java代码执行的整个过程,首先是前端编译过程,java源文件,通过前端编译器,生成出 ...
- 医院医生评价的java代码_基于JAVA的医院信息查询接口调用代码实例
基于JAVA的医院信息查询接口调用代码实例 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io ...
- 21点 小游戏 java代码_基于Java的21点扑克游戏的实现
在上次写的比较牌点的扑克游戏上Java扑克游戏(多人多牌数比较游戏)的实现中,添加21点游戏规则,实现21点牌类游戏.具体实现步骤如下:[需要源代码的留QQ,大家一起探讨探讨哈,谢谢啦!] 抽象出规则 ...
- 高斯模糊java代码_一行java代码实现高斯模糊效果
本文实例为大家分享了本地图片或者网络图片高斯模糊效果(毛玻璃效果),具体内容如下 首先看效果图 1.本地图片高斯模糊 2.网络图片高斯模糊 下面是使用步骤 一.实现本地图片或者网络图片的毛玻璃效果特别 ...
- atm java代码_用JAVA制作简单的ATM的代码 求教
展开全部 ok,稍等 呵呵,已经给你拆分成了两个独立的类了. 我再吧注释加起吧. 哪儿e68a8462616964757a686964616f31333262363734不清楚的可以给我留言嘛,刚开始 ...
- (1 24) 3 java代码_《Java语言程序设计》测试题及参考答案(第1部分)
一.单项选择题 1.Java Applet编程时用户的Applet程序类的正确定义是哪一种 ? (1)class MyApplet extends applet{ } (2)class MyApple ...
- 体质测试java代码_求java代码,要求做一个测试类,实现以下功能之一。最好三个功能都有。...
展开全部 import java.util.*; public class Admin {//管理类 Scanner in=new Scanner(System.in); String msg=&qu ...
- 蜘蛛纸牌 java代码_源代码-Java实现蜘蛛纸牌.doc
源代码-Java实现蜘蛛纸牌 aboutdialog.java import javax.swing.*; import java.awt.*; /* **"关于"窗口 */ pu ...
最新文章
- 树莓派的Raspbian Stretch with desktop和Ubuntu Mate(废弃)
- 《代码整洁之道》阅读笔记
- 修改XtraMessageBox的内容字体大小
- 深度学习核心技术精讲100篇(四十九)-深度学习之关联规则
- Redis 为什么是单线程的?
- 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
- javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
- 【联盛德W806上手笔记】五、TIM定时器
- 地球十大人类禁区!让人不寒而栗
- 让机器读懂视频:亿级淘宝视频背后的多模态AI算法揭秘
- Kubernetes—配置管理ConfigMap(十三)
- 阿里云加入开放媒体联盟AOM 科技巨头联合推广高清视频新标准
- Qt之QTcpSocket 跨线程连续发送大数据
- 面试题:关于搭建测试环境 (一)
- 对话腾讯17级员工张正友博士:有关梦想、成长和焦虑
- 攻防世界-杂项-simple_transfer
- Digging Into Self-Supervised Monocular Depth Estimation(2019.8)
- java.lang.IllegalArgumentException: interface UserMapper is not visible from class loader
- 2021-11-05 springMVC 错误:org.springframework.http.converter.HttpMessageNotWritableException No conve
- Circular Billiard Table(计算几何)
热门文章
- [数字图像处理]频域滤波(1)--基础与低通滤波器
- Ubuntu 配置/etc/fstab参数实现开机自动挂载硬盘
- 微信小程序毕业设计开题报告家教信息管理系统|招聘求职兼职+后台管理系统|前后分离VUE.js
- pytest-xdist进程级并发过程及参数化说明--成都-阿木木
- Android Button 属性详解
- trick:CSS 3+checkbox实现JQuery的6个基本动画效果
- 模仿jquery的fadeIn、fadeOut、fadeToogle、fadeTo函数,淡入淡出效果挺不错!
- 因为痛,所以青春之摘写
- ORM之ForeignKey操作
- 前端技术学习第四讲:JavaScript中DOM和BOM