井字游戏(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)相关推荐

  1. 连连看java代码_连连看 - java代码库 - 云代码

    [java]代码库/* * To change this license header, choose License Headers in Project Properties. * To chan ...

  2. java代码_【JAVA虚拟机(JVM)精髓】05-Java代码的执行过程

    持续更新JVM相关知识,敬请关注: Java虚拟机精髓专栏​zhuanlan.zhihu.com 这里再简单回顾下Java代码执行的整个过程,首先是前端编译过程,java源文件,通过前端编译器,生成出 ...

  3. 医院医生评价的java代码_基于JAVA的医院信息查询接口调用代码实例

    基于JAVA的医院信息查询接口调用代码实例 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io ...

  4. 21点 小游戏 java代码_基于Java的21点扑克游戏的实现

    在上次写的比较牌点的扑克游戏上Java扑克游戏(多人多牌数比较游戏)的实现中,添加21点游戏规则,实现21点牌类游戏.具体实现步骤如下:[需要源代码的留QQ,大家一起探讨探讨哈,谢谢啦!] 抽象出规则 ...

  5. 高斯模糊java代码_一行java代码实现高斯模糊效果

    本文实例为大家分享了本地图片或者网络图片高斯模糊效果(毛玻璃效果),具体内容如下 首先看效果图 1.本地图片高斯模糊 2.网络图片高斯模糊 下面是使用步骤 一.实现本地图片或者网络图片的毛玻璃效果特别 ...

  6. atm java代码_用JAVA制作简单的ATM的代码 求教

    展开全部 ok,稍等 呵呵,已经给你拆分成了两个独立的类了. 我再吧注释加起吧. 哪儿e68a8462616964757a686964616f31333262363734不清楚的可以给我留言嘛,刚开始 ...

  7. (1 24) 3 java代码_《Java语言程序设计》测试题及参考答案(第1部分)

    一.单项选择题 1.Java Applet编程时用户的Applet程序类的正确定义是哪一种 ? (1)class MyApplet extends applet{ } (2)class MyApple ...

  8. 体质测试java代码_求java代码,要求做一个测试类,实现以下功能之一。最好三个功能都有。...

    展开全部 import java.util.*; public class Admin {//管理类 Scanner in=new Scanner(System.in); String msg=&qu ...

  9. 蜘蛛纸牌 java代码_源代码-Java实现蜘蛛纸牌.doc

    源代码-Java实现蜘蛛纸牌 aboutdialog.java import javax.swing.*; import java.awt.*; /* **"关于"窗口 */ pu ...

最新文章

  1. 树莓派的Raspbian Stretch with desktop和Ubuntu Mate(废弃)
  2. 《代码整洁之道》阅读笔记
  3. 修改XtraMessageBox的内容字体大小
  4. 深度学习核心技术精讲100篇(四十九)-深度学习之关联规则
  5. Redis 为什么是单线程的?
  6. 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
  7. javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
  8. 【联盛德W806上手笔记】五、TIM定时器
  9. 地球十大人类禁区!让人不寒而栗
  10. 让机器读懂视频:亿级淘宝视频背后的多模态AI算法揭秘
  11. Kubernetes—配置管理ConfigMap(十三)
  12. 阿里云加入开放媒体联盟AOM 科技巨头联合推广高清视频新标准
  13. Qt之QTcpSocket 跨线程连续发送大数据
  14. 面试题:关于搭建测试环境 (一)
  15. 对话腾讯17级员工张正友博士:有关梦想、成长和焦虑
  16. 攻防世界-杂项-simple_transfer
  17. Digging Into Self-Supervised Monocular Depth Estimation(2019.8)
  18. java.lang.IllegalArgumentException: interface UserMapper is not visible from class loader
  19. 2021-11-05 springMVC 错误:org.springframework.http.converter.HttpMessageNotWritableException No conve
  20. Circular Billiard Table(计算几何)

热门文章

  1. [数字图像处理]频域滤波(1)--基础与低通滤波器
  2. Ubuntu 配置/etc/fstab参数实现开机自动挂载硬盘
  3. 微信小程序毕业设计开题报告家教信息管理系统|招聘求职兼职+后台管理系统|前后分离VUE.js
  4. pytest-xdist进程级并发过程及参数化说明--成都-阿木木
  5. Android Button 属性详解
  6. trick:CSS 3+checkbox实现JQuery的6个基本动画效果
  7. 模仿jquery的fadeIn、fadeOut、fadeToogle、fadeTo函数,淡入淡出效果挺不错!
  8. 因为痛,所以青春之摘写
  9. ORM之ForeignKey操作
  10. 前端技术学习第四讲:JavaScript中DOM和BOM