这是我们的第一次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. 华为USG地址池方式的NAPT和NAT Server配置案例
  2. 壁纸引擎java运行库_Microsoft Windows Desktop Runtime v5.0.0 桌面程序运行库(含常规运行库)...
  3. 晟数学院 oracle,Oracle 控制文件存储解析
  4. Array.prototype.reduce 的理解与实现
  5. thinkPHP 模板中的语法
  6. MyBatis调用存储过程,含有返回结果集、return参数和output参数
  7. appium手机键盘实现方法
  8. pre保持原格式但文本不超出的解决方案
  9. Visual studio 2019 报错没有“dirent.h”文件
  10. 关于activity转场动画makeSceneTransitionAnimation没效果的问题的解决办法
  11. 单片机开发怎么把杜邦线弄整齐?
  12. 软件技术专家能力模型
  13. xp系统怎么添加wifi连接服务器,XP系统怎么连接无线路由器
  14. Binomial Showdown
  15. 号码认证一键免密登录,让验证更简单!
  16. 论文笔记2.5D lightweight RIU-Net for automatic liver and tumor segmentation from CT
  17. 声纹识别(1)声纹识别的测试集和数据预处理
  18. Linux Cgroup 系列:CentOS 7 Systemd Cgroup 层级
  19. xslt简介_XSLT简介
  20. Elasticsearch错误 “low disk watermark [85%]”或“high disk watermark [90%]”

热门文章

  1. 检测视频中的人脸,并画出矩形框
  2. [RK3399][Android7.1] 问题记录 --- GPU 重启问题分析
  3. 物联网的核心技能是什么?
  4. SpringBoot的幕后推手...
  5. npoi word生成HTML,C# 使用NPOI生成Word文档(按照模板)
  6. 2014Gartner技术成熟度曲线
  7. Vscode Remote SSH 远程连接失败过程报错:试图写入的管道不存在
  8. 转载---SQL Server XML基础学习之7--XML modify() 方法对 XML 数据中插入、更新或删除...
  9. 如何在电脑上安装虚拟机和系统。全网最全教程,不接受反驳。
  10. 怎么把PDF转换成图片?这几种转换方法都可以做到