这是我们的第一次java作业,一个五子棋小游戏,不用实现屏幕交互

由于初学,找了很多资料,调试了很多遍才成功

放代码:

package java1;
import java.util.Arrays;
import java.util.Scanner;
public class wzq {public static void main(String[] args) {Scanner sc = new Scanner(System.in);boolean finish = false;//控制游戏是否结束int turn = 1;int x = 0,y = 0;final char player1 = '*';final char player2 = 'o';//常量定义玩家2使用的字符final char empty = '-';//常量定义空棋盘字符char cb[][] = new char[10][10];//定义11*11二维数组for (int i = 0;i < (cb.length);i++) {Arrays.fill(cb[i],empty);//棋盘每一个坐标填上empty}while(!finish) {//游戏开始,打印棋盘,System.out.println("-------------------");System.out.println("  1 2 3 4 5 6 7 8 9");for (int i = 1;i < 10;i++) {//只打印9*9,实现显示出的棋盘都能落子System.out.print(i + " ");for (int j = 1;j < 10;j++){System.out.print(cb[i][j] + " ");}System.out.println();//一行打印结束,换行}System.out.println("-------------------");
//      判断下棋者for(;;) {if (turn == 1) {System.out.println("请"+player1+"输入坐标用空格隔开:") ;x = sc.nextInt();y = sc.nextInt();if(x<0||x>9||y<0||y>9) {System.out.println("*您输入的坐标有误,请重新输入*");}if(cb[x][y] == empty){cb[x][y] = player1;}else {System.out.println("您输入位置已有棋子,请重新选择");continue;}}      else {System.out.println("请"+player2+"输入坐标用空格隔开:");x = sc.nextInt();y = sc.nextInt();if(x<0||x>9||y<0||y>9) {System.out.println("您输入的坐标有误,请重新输入");}if(cb[x][y] == empty){cb[x][y] = player2;}else {System.out.println("您输入位置已有棋子,请重新选择");continue;}}//打印棋盘System.out.println("-------------------");System.out.println("  1 2 3 4 5 6 7 8 9");for (int i = 1;i < 10;i++) {System.out.print(i + " ");for (int j = 1;j < 10;j++){System.out.print(cb[i][j] + " ");}System.out.println();}if(turn == 1) {if(judge(cb,x,y,player1)) {System.out.println(player1+"胜利");}else{turn = -1;}}else {if(judge(cb,x,y,player2)) {System.out.println(player2+"胜利");}else{turn = 1;}}}}sc.close();}//         五棋成线判断函数private static boolean judge(char cb[][],int x,int y,int q) {int count = 1;int j = 0;int i = 0;boolean f = false;
//                  判断棋子左侧for(j = y-1;j>0;--j) {if(cb[x][j] == q) {count++;}else {break;}}
//                  判断棋子右侧for(j = y+1;j<cb[0].length;j++) {if(cb[x][j] == q) {count++;}else {break;}}if(count == 5) {f =true;}count = 1;
//                  判断棋子上方for (i = x-1;i>0;--i){if(cb[i][y] == q) {count++;}else {break;}}
//                  判断棋子下方for (i = x+1;i<cb.length;++i) {if(cb[i][y] == q) {count++;}else {break;}}if(count == 5) {f = true;}count = 1;
//                  判断东北for(i = x-1,j = y+1;i>0&&j<cb[0].length;--i,++j) {if(cb[i][j] == q) {count++;}else {break;}}
//                  判断西南for(i = x+1,j=y-1;i<cb.length&&j>0;++i,--j) {if(cb[i][j] == q) {count++;}else {break;}}if(count == 5){f = true;}// count需要重置一下count = 1;
//                  判断西北for(i = x-1,j = y-1;i>0&&j>0;--i,--j) {if(cb[i][j] == q) {count++;}else {break;}}
//                  判断东南for(i = x+1,j=y+1;i<cb.length&&j<cb[0].length;++i,++j) {if(cb[i][j] == q) {count++;}else {break;}}if(count == 5) {f = true;}return f;}
}

这里记录一下,我调试过程中出现的问题

1.最大的问题是刚开始我的函数中没有定义变量f,最后直接写上return false,其实之前写python的时候也出现过这样的问题,就是可能没太理解return的使用方法,导致无论运行结果如何都返回false,后来我就想到设置一个变量的方法,很好地解决了这个问题,我觉得还挺简单易懂的。

2.还有一个问题是当时我设置坐标时还设置了(0,0)这样的坐标,但是最终导致要六个棋子才能终止游戏,这里将打印棋盘中i,j的初始值设置成了1,就解决了。

3.我有看到有前辈的函数中用System.exit(0);来结束,但是我运行出来的结果中,电脑并不会打印谁胜利只会最后终止输入,好像我查到说System.exit(0)是正常结束程序,并且不再执行后面的代码,可能也就直接终止了打印输出那一步。

还有什么其他的问题欢迎评论区留言哦,我也是一个初学者,希望和大家一起进步^_^!

JAVA简易五子棋游戏相关推荐

  1. Java 简易五子棋游戏的编写

    编写一个简易五子棋,棋盘在控制台中绘制,棋盘每- - 个点都有对应的坐标,下棋者输 入对应坐标落棋子,运行效果如图所示.两位数字表示的坐标中,第-一个数字表示横坐标, 第二个数字表示纵坐标,运行结果如 ...

  2. java 五子棋 简单_java实现简易五子棋游戏

    本文实例为大家分享了java实现简易五子棋游戏的具体代码,供大家参考,具体内容如下 编写一个简易五子棋,棋盘在控制台中绘制,棋盘每- - 个点都有对应的坐标,下棋者输 入对应坐标落棋子,运行效果如图所 ...

  3. 【QT项目】简易五子棋游戏(人机对战)— 完整源码

    文章目录 前言 一.游戏实现效果 二.需求分析 三.解决方案 四.核心步骤 1.插入棋盘图 2.双方落子 3.输赢判定 4.重新开始 五.完整源码 1.main.cpp 2.chessboard.h ...

  4. 五子棋java设计引言_基于JAVA的五子棋游戏系统设计与实现报告.doc

    PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT I 基于JAVA的五子棋游戏系统设计与实现 专 业 电子信息工程 学 生 董永杰 指导教师 曾玉 摘要 PAGE \* ...

  5. java版五子棋分析_基于JAVA的五子棋游戏系统设计实现分析.doc

    WORD格式整理版 WORD格式整理版 学习好帮手 学习好帮手 基于JAVA的五子棋游戏系统设计与实现 专 业 电子信息工程 学 生 董永杰 指导教师 曾玉 WORD格式整理版 学习好帮手 摘 要 目 ...

  6. 基于java的五子棋游戏的设计_基于Java的五子棋游戏的设计

    摘  要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JAVA开发五子棋游戏.主要完成了人机对战和玩家之间联网对战2个功能.网络连接部分为Soc ...

  7. java五子棋游戏设计_基于Java的五子棋游戏的设计

    摘  要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JAVA开发五子棋游戏.主要完成了人机对战和玩家之间联网对战2个功能.网络连接部分为Soc ...

  8. java入门-五子棋游戏的制作

    java入门-五子棋游戏的制作 想要开发一个简单的五子棋游戏,需要实现五子棋的棋盘.棋子.输赢判定.重新开始游戏.悔棋.认输.人机大战以及退出游戏等功能. 1.实现五子棋的棋盘功能 想要实现这个功能, ...

  9. java五子棋游戏人工智能_基于java的五子棋游戏(人机对战)

    [实例简介] 我毕业设计自己做的基于java的五子棋游戏软件,获得优秀论文,功能在单纯的人机对战上算比较齐全,也比较好玩!希望为毕业设计做游戏的同学提供些查考! 软件的基本功能 软件的基本功能介绍如下 ...

最新文章

  1. ASP.NET之对称算法加密
  2. leetcode 491. Increasing Subsequences | 491. 递增子序列(Java)
  3. java调用julia脚本,Julia请求脚本中的用户输入
  4. 普通筛法时间界的证明
  5. Tensorflow入门之运算篇
  6. PHP分组聊天室--fooking现实
  7. 调用谷歌的方法输出图表,运行中的结果
  8. 简明python教程 沈洁元_Python简明教程-沈洁元
  9. nginx工作原理详解
  10. excel如何去重统计户数_Excel如何去重,然后统计数据?_excel提取数据并去重
  11. 图表数据分析怎么做,举实例给你说清楚
  12. 2010上半年网络规划设计师上午试卷、标准答案及分析Ⅱ
  13. hdu6441 Find Integer
  14. 开源项目管理软件排名_2014年排名前5位的开源项目管理工具
  15. 重学Elasticsearch第1章 : Elasticsearch, Kibana概念、Elasticsearch相关术语
  16. MySQL的 validate_password插件 和 validate_password组件
  17. python爬虫知乎图片_python 爬取知乎图片
  18. 20200906——阅读 日志系统:一条SQL更新语句是如何执行的?
  19. 2022年全球及中国制动系统行业头部企业市场占有率及排名调研报告
  20. Python全栈工程师(4:函数)

热门文章

  1. 检测视频中的人脸,并画出矩形框
  2. 风险热度地图(Risk heat map)
  3. 用java编写进制转换器_JAVA 简单进制转换器
  4. 用excel和window系统自带功能给文件批量改名(超详细小白教程!)
  5. 假如有这样一种生活……
  6. 【Zynq UltraScale+ MPSoC解密学习1】Zynq UltraScale+的基本介绍
  7. 基于BERT-PGN模型的中文新闻文本自动摘要生成
  8. leetcode报数题
  9. IP协议详解之头部结构
  10. Edge、Chrome自定义新标签页网址