本实例是通过二维数数组来实现这个简单的游戏实例,它是通过Scanner在控制台输入下棋的位置,本实例包括初始化棋盘、打印棋盘、判断棋子是否重复和是否越界、判断输赢、提示下棋信息五个部分。

public class WZQ {static String white = "☆";static String black = "★";static String[][] qp = new String[15][15];//{{null,null}}static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};static String line = "十";static boolean flag=true;//表示黑棋下public static void main(String[] args) {//1.初始化棋盘(方法)WZQ.init();//2.打印棋盘(打印棋盘方法)WZQ.print();//规定黑子先手System.out.println("黑棋为先手");System.out.println("黑棋落子");Scanner scanner= new Scanner(System.in);//下棋games:  while(true){int x= scanner.nextInt();int y=scanner.nextInt();/*判断棋子是否重复,及是否越界*/if( WZQ.checkPoint(x-1,y-1)){System.out.println("棋子重复,请重新落字");continue;}if(flag){qp[x-1][y-1]=black;}else{qp[x-1][y-1]=white;}System.out.println(flag);//调用print方法 打印棋盘WZQ.print();if(WZQ.isWin(x-1,y-1)){if(flag){System.out.println("黑子胜");}else{System.out.println("白字胜");}break games;}//开始游戏WZQ.startGame();}//4.判断每次下子坐标是否越界,棋子是否重复//5.判断输赢  每次下棋后判断输赢}/*提示该哪方下棋*/public  static  void startGame(){while(true){if(flag){System.out.println("白子落子");flag = false;break;}else{System.out.println("黑子落子");flag=true;break;}}}/*初始化棋盘*/public static  void init(){for (int i = 0; i <qp.length ; i++) {for (int j = 0; j <qp[i].length ; j++) {qp[i][j] = line;if(j==qp[i].length-1){qp[i][j]=num[i];}if(i==qp.length-1){qp[i][j]=num[j];}}}}/*打印棋盘*/public static void  print(){for (int i = 0; i <qp.length ; i++) {for (int j = 0; j <qp[i].length ; j++) {System.out.print(qp[i][j]);}System.out.println();}}/*判断落字时,此处是否有棋子,及棋子是否越界*/public  static boolean checkPoint(int m,int n){if(m>= qp.length-1||n>=qp[m].length-1||qp[m][n]!="十"){return  true;}return false;}/*判断输赢*/public static boolean isWin(int x,int y){int continueCount=1;int jiance=1;//横向判断for ( int i=y-1 ; i>=0&&jiance<5; i--){jiance++;if (qp[x][i]!= null&&qp[x][i]==qp[x][y]){continueCount++;}elsebreak;}for ( int i=y+1  ; i<=qp.length&&jiance<5; i++) {jiance++;if (qp[x][i] != null && qp[x][i] == qp[x][y]) {continueCount++;} elsebreak;}//判断横向是否已经有结果,反之重置为1if(continueCount>=5)return true;else{continueCount=1;jiance=1;}//纵向判断for ( int i=x-1  ; i>0&&jiance<5; i--){jiance++;if (qp[i][y]!= null&&qp[i][y]==qp[x][y]){continueCount++;}elsebreak;}for ( int i=x+1  ; i< qp.length&&jiance<5; i++) {jiance++;if (qp[i][y] != null && qp[i][y] == qp[x][y]) {continueCount++;} elsebreak;}//判断纵向是否已经有结果,反之重置为1if(continueCount>=5) {return true;}else{continueCount=1;jiance++;}//斜向判断//  斜\方向//西北for ( int i=x-1,j=y-1  ; i>0&&j>0&&jiance<5; i--,j--){jiance++;if (qp[i][j]!= null&&qp[i][j]==qp[x][y]){continueCount++;}elsebreak;}//东南for ( int i=x+1,j=y+1 ; i< qp.length&&y<qp[i].length&&jiance<5; i++) {jiance++;if (qp[i][j] != null && qp[i][j] == qp[x][y]) {continueCount++;} elsebreak;}// 斜 /  方向//西南for ( int i=x+1,j=y-1  ; i<qp[i].length&&j>0&&jiance<5; i++,j--){jiance++;if (qp[i][j]!= null&&qp[i][j]==qp[x][y]){continueCount++;}elsebreak;}//东北for ( int i=x-1,j=y+1  ; i>0&&j<qp[i].length&&jiance<5; i--,i++){jiance++;if (qp[i][j]!= null&&qp[i][j]==qp[x][y]){continueCount++;}elsebreak;}//判断斜向是否已经有结果,反之返回falseif(continueCount>=5) {return true;}elsereturn  false;}
}

java入门实例——简单的五子棋相关推荐

  1. 清华大学计算中心培训部-技术分享:JAVA入门:简单的Java程序

    JAVA入门:简单的Java程序 清华大学计算中心培训部-技术分享:http://training.tsinghua.edu.cn/html/jishuyuandi/2009/0302/27.html

  2. java入门申请,《java入门如此简单》——基础知识1

    1. 关键字 被java中赋予了特殊含义的单词,所有字母为小写 2. 标识符 程序中自定义的名称; 英文字母,数字,_$: 不可使用关键字 数字不可开头 严格区分大小写 取名有意义 规则 包名:所有字 ...

  3. 《java入门如此简单》——基础知识1

    1. 关键字 被java中赋予了特殊含义的单词,所有字母为小写 2. 标识符 程序中自定义的名称; 英文字母,数字,_$: 不可使用关键字 数字不可开头 严格区分大小写 取名有意义 规则 包名:所有字 ...

  4. 跟对人,原来java入门这么简单!

    龙珠悟空,一个写故事的程序员 <小白学java>第二章:初始java白月光,窥见java之美(一) 序言:张爱玲在<红玫瑰与白玫瑰>中写道"也许每一个男子全都有过这样 ...

  5. Java入门超简单程序Song List

    题目 The goal of this project is to write an application for maintaining a list of songs. Each song ha ...

  6. 五子棋游戏的简单实现(Java入门小游戏手把手教学)

    ##五子棋* 需求分析 完成一个简单的五子棋游戏 界面 窗体[带标题和背景] 棋盘[棋盘,棋子] 图标[白子,黑子,重来] 业务 页面展示 选择先走的棋子 落子开始下棋 黑白切换 判断输赢,如何判断赢 ...

  7. java rmi 入门实例

    java rmi 入门实例 (2009-06-16 16:07:55) 转载▼ 标签: java rmi 杂谈 分类: java-基础  java rmi即java远程接口调用,实现了2台虚拟机之间的 ...

  8. java oxm_Spring oxm入门实例

    o/xmapper是什么? spring3.0的一个新特性是o/xmapper.o/x映射器这个概念并不新鲜,o代表object,x代表xml.它的目的是在java对象(几乎总是一个plainoldj ...

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

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

最新文章

  1. 网络摄像机ip修改工具_网络监控怎么连接网络
  2. java分发器_SpringMVC核心分发器DispatcherServlet分析
  3. 判断浏览器的DOM模型
  4. 专家预测第二波WannaCry勒索病毒攻击即将到来!
  5. 数学菜鸟和大佬的关注点有什么不同?
  6. scala 当前日期_如何在Scala中检查当前日期和时间?
  7. java 定时任务哪个好_java目前常用的几种定时任务
  8. c语言标准库assert,C 标准库 - assert.h
  9. How to Build the Confidence Habit,7 Ways To Start To Value Yourself,Becoming More Me Through Meditat
  10. 【vue】elementUI报错:_self.$scopedSlots.default is not a function
  11. JAVA商城系统开发 VS PHP商城系统开发
  12. 如何设计高品质LoRa无线模块
  13. ICEM-tube-water
  14. 怪物猎人世界取得服务器信息,怪物猎人世界 Steam好友联机服务器选择工具V1.2...
  15. 银河麒麟桌面操作系统V10上安装使用MySQL5.7、MySQL Workbench
  16. android touch事件无反应,android的touch事件分发响应机制
  17. Springboot项目修改文件传输(minio)限制大小
  18. 篮球数据API接口 - 【赛程赛果】API调用示例代码
  19. 翻译 第11章 of IEEE Std 1666-2011 IEEE Standard for Standard SystemC Language Reference Manual
  20. ccd无法连接到计算机,使用CCD视觉系统出现工控机与显示器故障该怎么处理?

热门文章

  1. VScode运行fs.readFile时报错no such file or directory或无法输出data或undefined
  2. 北京科技大学计算机系老师,北京科技大学第六届“研师亦友”获奖导师风采展示——孙昌爱教授...
  3. poj2031 Building a Space Station
  4. 工程化---cnpm不是内部命令的解决
  5. 用vb删除mysql数据库数据_学习VB编程第99天,如何正确使用delete删除数据
  6. 中国传媒大学计算机联合学院,第七十九期CCF-CV走进高校系列报告会于中国传媒大学圆满结束...
  7. 自媒体营销软文灵感思路来源——万能公式:6P方法论
  8. deeplinux 热点_Deepin OS:颠覆你对Linux系统的刻板印象
  9. 计算机作文 六年级,描写电脑作文六年级
  10. 苹果电脑花屏死机的原因和解决方法