原题:In a game if TicTacToe,two players take turns marking an available cell in a 3x3 grid with their respective tokens(either X or O).When one player has placed three tokens in a horizontal,vertical or diagonal row on

the gird,the game is over and that player has won,A draw(no winner) occurs when all the cells on the gird have been filled with tokens and neither player has achiceved a win,Create a program for playing TicTacToe.The program prompts two players to enter X

token is enterd,the program redisplays the board on the console and deter=mines the of the game (win,draw,or continue)。

题目来源:

题目选自《JAVA程序语言设计》 P254-7.9***

代码如下:

import java.util.Scanner;

public class Main {

public static int[][] Chess=new int[3][3]; //建立九宫格

public static int player=1;//1 为X,-1为O

public static int count=0;//计数器,记录九宫格上的棋子数

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

while(true) { //建立游戏循环

while(true) { //建立输入循环

System.out.print("Enter a row(0, 1 or 2) for player");

if(player == 1)

System.out.print(" X: ");

else

System.out.print(" O: ");

int row = input.nextInt(); //输入行row上的位置

System.out.print("Enter a column(0, 1 or 2) for player");

if(player == 1)

System.out.print(" X: ");

else

System.out.print(" O: ");

int column = input.nextInt(); //输入列column上的位置

if (Judgingrange(row, column, player) == true) { //判断输入是否在九宫格内且输入位置没有棋子,

break; //如果符合则跳出输入循环

}

}

ShowCheckerboard(); //显示当前九宫格局势

if (JudgingWin(player) == true) { //判断是否有人赢

if (player==1)

System.out.println("X player win");

else

System.out.println("O player win");

System.out.print("Would you like to continue? (Y or N):");

String choose = input.next();

if (choose.equals("Y"))

{

for (int i=0; i<3 ; i++)

for (int j=0; j<3 ; j++)

Chess[i][j]=0;

count=0;

player=1;

continue;

}//重新开始游戏

else if (choose.equals("N"))

{

break;

}//跳出游戏循环

}

if (count == 9) { //如果九宫格每个格上都有棋子

System.out.println("X and O draw"); //则是平局

System.out.print("Would you like to continue? (Y or N):");

String choose = input.next();

if (choose.equals("Y"))

{

for (int i=0; i<3 ; i++)

for (int j=0; j<3 ; j++)

Chess[i][j]=0;

count=0;

player=1;

continue;

}//重新开始游戏

else if (choose.equals("N"))

{

break;

}//跳出游戏循环

}

player=-player;

}

System.out.println("Game Over!");

}

public static boolean Judgingrange(int x,int y, int num)

{

if (x < 0 || x > 2 || y < 0 || y > 2 ) { //检查是否越界

System.out.println("Input out, please input again.");

return false;

}

if (Chess[x][y] == 0) { //如果当前位置没有棋子

Chess[x][y] = num;

count++;

return true;

}

else { //如果当前位置有棋子

System.out.println("There's already a piece, Input out, please input again.");

return false;

}

}

public static boolean JudgingWin(int num) //判断是否X和O是否有赢

{

for (int i = 0; i < 3; i++) { //检查行和列上是否有三个一样的棋子

if (Chess[0][i] == Chess[1][i] && Chess[1][i] == Chess[2][i] &&Chess[2][i] == num) //行

{

return true;

}

else if (Chess[i][0] == Chess[i][1] && Chess[i][1] == Chess[i][2] && Chess[i][2] == num) //列

{

return true;

}

}

//检查主对角线和副对角线上是否有三个一样的棋子

if (Chess[0][0] == Chess[1][1] && Chess[1][1] == Chess[2][2] && Chess[2][2] == num)//主对角线

return true;

else if (Chess[0][2] == Chess[1][1] && Chess[1][1] == Chess[2][0] && Chess[2][0] == num)//副对角线

return true;

return false;

}

public static void ShowCheckerboard()//输出九宫格局势

{

System.out.println("—————————————");

for (int i = 0; i < 3; ++i) {

System.out.print("|");

for (int j = 0; j < 3; ++j) {

if (Chess[i][j] == 1 )

System.out.print(" X |");

else if(Chess[i][j] == -1)

System.out.print(" O |");

else

System.out.print(" |");

}

System.out.println();

System.out.println("—————————————");

}

}

}

运行结果:

/*output:

case 1:

Enter a row(0, 1 or 2) for player X: 1

Enter a column(0, 1 or 2) for player X: 1

—————————————

| | | |

—————————————

| | X | |

—————————————

| | | |

—————————————

Enter a row(0, 1 or 2) for player O: 2

Enter a column(0, 1 or 2) for player O: 1

—————————————

| | | |

—————————————

| | X | |

—————————————

| | O | |

—————————————

Enter a row(0, 1 or 2) for player X: 2

Enter a column(0, 1 or 2) for player X: 2

—————————————

| | | |

—————————————

| | X | |

—————————————

| | O | X |

—————————————

Enter a row(0, 1 or 2) for player O: 0

Enter a column(0, 1 or 2) for player O: 0

—————————————

| O | | |

—————————————

| | X | |

—————————————

| | O | X |

—————————————

Enter a row(0, 1 or 2) for player X: 1

Enter a column(0, 1 or 2) for player X: 2

—————————————

| O | | |

—————————————

| | X | X |

—————————————

| | O | X |

—————————————

Enter a row(0, 1 or 2) for player O: 0

Enter a column(0, 1 or 2) for player O: 2

—————————————

| O | | O |

—————————————

| | X | X |

—————————————

| | O | X |

—————————————

Enter a row(0, 1 or 2) for player X: 1

Enter a column(0, 1 or 2) for player X: 0

—————————————

| O | | O |

—————————————

| X | X | X |

—————————————

| | O | X |

—————————————

X player win

Would you like to continue? (Y or N):N

Game Over!

case 2 :

Enter a row(0, 1 or 2) for player X: 2

Enter a column(0, 1 or 2) for player X: 3

Input out, please input again.

Enter a row(0, 1 or 2) for player X: 1

Enter a column(0, 1 or 2) for player X: 1

—————————————

| | | |

—————————————

| | X | |

—————————————

| | | |

—————————————

Enter a row(0, 1 or 2) for player O: 0

Enter a column(0, 1 or 2) for player O: 0

—————————————

| O | | |

—————————————

| | X | |

—————————————

| | | |

—————————————

Enter a row(0, 1 or 2) for player X: 2

Enter a column(0, 1 or 2) for player X: 1

—————————————

| O | | |

—————————————

| | X | |

—————————————

| | X | |

—————————————

Enter a row(0, 1 or 2) for player O: 0

Enter a column(0, 1 or 2) for player O: 1

—————————————

| O | O | |

—————————————

| | X | |

—————————————

| | X | |

—————————————

Enter a row(0, 1 or 2) for player X: 2

Enter a column(0, 1 or 2) for player X: 1

There's already a piece, Input out, please input again.

Enter a row(0, 1 or 2) for player X: 2

Enter a column(0, 1 or 2) for player X: 0

—————————————

| O | O | |

—————————————

| | X | |

—————————————

| X | X | |

—————————————

Enter a row(0, 1 or 2) for player O: 0

Enter a column(0, 1 or 2) for player O: 2

—————————————

| O | O | O |

—————————————

| | X | |

—————————————

| X | X | |

—————————————

O player win

Would you like to continue? (Y or N):N

Game Over!

case 3:

Enter a row(0, 1 or 2) for player X: 1

Enter a column(0, 1 or 2) for player X: 1

—————————————

| | | |

—————————————

| | X | |

—————————————

| | | |

—————————————

Enter a row(0, 1 or 2) for player O: 2

Enter a column(0, 1 or 2) for player O: 2

—————————————

| | | |

—————————————

| | X | |

—————————————

| | | O |

—————————————

Enter a row(0, 1 or 2) for player X: 1

Enter a column(0, 1 or 2) for player X: 0

—————————————

| | | |

—————————————

| X | X | |

—————————————

| | | O |

—————————————

Enter a row(0, 1 or 2) for player O: 1

Enter a column(0, 1 or 2) for player O: 2

—————————————

| | | |

—————————————

| X | X | O |

—————————————

| | | O |

—————————————

Enter a row(0, 1 or 2) for player X: 0

Enter a column(0, 1 or 2) for player X: 2

—————————————

| | | X |

—————————————

| X | X | O |

—————————————

| | | O |

—————————————

Enter a row(0, 1 or 2) for player O: 2

Enter a column(0, 1 or 2) for player O: 0

—————————————

| | | X |

—————————————

| X | X | O |

—————————————

| O | | O |

—————————————

Enter a row(0, 1 or 2) for player X: 2

Enter a column(0, 1 or 2) for player X: 1

—————————————

| | | X |

—————————————

| X | X | O |

—————————————

| O | X | O |

—————————————

Enter a row(0, 1 or 2) for player O: 0

Enter a column(0, 1 or 2) for player O: 1

—————————————

| | O | X |

—————————————

| X | X | O |

—————————————

| O | X | O |

—————————————

Enter a row(0, 1 or 2) for player X: 0

Enter a column(0, 1 or 2) for player X: 0

—————————————

| X | O | X |

—————————————

| X | X | O |

—————————————

| O | X | O |

—————————————

X and O draw

Would you like to continue? (Y or N):N

Game Over!

*///~

java三星题之_JAVA三星题之playing a TicTacToe game相关推荐

  1. java三星题之_Java三星题之剪刀石头布(三局两胜)

    原题: Write a program that plays the popular scissor-rock-papergame(A scissor can cut a paper.a rock c ...

  2. java程序输出矩阵_java编程题之顺时针打印矩阵

    本文实例为大家分享了java顺时针打印矩阵的具体代码,供大家参考,具体内容如下 import java.util.ArrayList; /** * * 剑指offer编程题(JAVA实现)--第19题 ...

  3. java小光棍数_java做题记录第4期

    4.1 幸运数 4.1_1题目描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成. 首先从1开始写出自然数1,2,3,4,5,6,.... 1 就是第一个幸运 ...

  4. java数组排列组合_java算法题--递归求数组中数字排列组合问题

    java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...

  5. java猜字母游戏_JAVA编程题-用java编写猜字母游戏

    原标题:JAVA编程题-用java编写猜字母游戏 问题: 猜字母游戏,其游戏规则为: 程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统 ...

  6. java set是重复_java算法题,set内出现重复元素

    题目 将数字 1-9 填入一个3×3 的九宫格中, 使得格子中每一横行和的值全部相等, 每一竖列和的值全部相等. 请你计算有多少种填数字的方案. 这个是计蒜客上面的一个模拟题,我采用暴力. publi ...

  7. java编程兔子问题_JAVA编程题-用java解决兔子问题

    题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 解答: 分析:从第一对兔子开始,第1个月1对兔 ...

  8. java随机抽题系统_JAVA程序设计题六:随机抽奖系统

    给一同学写的实践周作业,发现好久没有写博客了,于是就分享出来,造福学弟学妹. 课题描述 基于JAVA GUI编写一个简单的随机抽奖程序,具体实现功能如下: 1. 创建一个文本文件,其中存放若干条用户信 ...

  9. java 中水仙花题目_java算法题:水仙花问题

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 "水仙花数 ",因 ...

最新文章

  1. Oracle-11g安装与使用
  2. UML中符号的意义(转)
  3. 抽奖自定义中奖概率总结
  4. mysql xa_Mysql对XA的支持
  5. vb devcon获取u盘信息_iOS 13 U盘越狱法,卡代码及U盘终极解决
  6. android recyclerview item自适应高度_web前端入门到实战:css让一个盒子的高度自适应屏幕剩余的部分...
  7. 《Android进阶解密》— Android 书籍
  8. 如何判断一个三位数是否为水仙花数
  9. visio对齐连接线
  10. Google测试之道读后感
  11. 51单片机两只老虎c语言程序,源码共享:51单片机上实现7首简单音乐的汇编代码...
  12. 在Word中方括号中打勾
  13. 关于STM32的裸机多任务多线程心得
  14. 区块链报告会心得体会3000_实习心得体会3000字篇【优秀篇】
  15. M56 智慧井盖的技术应用
  16. 迭代阈值图像分割matlab,Matlab 图像分割 (阈值处理)
  17. linux系统可以玩星际争霸吧,暴雪携手DeepMind推出《星际争霸2》API工具,玩家可以“调教”AI打游戏了...
  18. GlusterFS基本概念
  19. 在线听书有声小说网站详细安装教程
  20. 神经网络异常检测模型,神经网络异常检测方法

热门文章

  1. python : 正确复制列表的方法
  2. 洛谷 P2486 [SDOI2011]染色 树链剖分
  3. Bracket Sequences Concatenation Problem括号序列拼接问题(栈+map+思维)
  4. ES6中变量的解构赋值
  5. 20165328 第八周学习总结
  6. jQuery操作DOM对象
  7. C++基础总结(4)-----指针
  8. 下载频道12月热门资源TOP100强力推荐!
  9. cmake构建NNIE工程
  10. Hasura GraphQL 内部表结构