**题目要求:**实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘,把每个元素赋值位“┼”可以画出棋盘, “○”代表该交叉点下了一颗白棋子,“●”代表该交叉点下了一颗黑棋子。每次用户输入要下棋的坐标,然后程序显示出下完后的棋盘,默认黑子先行。

遇到问题:
不知道如何用代码实现判断哪一方先赢。
(内心os:在网上搜的结果给出的代码完成的功能太多了,我这种渣渣的初学者根本看不懂。)
--------------------分割线------------------------------9.21号---------------------------
采用了最简单的方法来完成,每输入一个点的坐标就进行遍历,看是否有五子相连的;一开始想不明白的问题有:不知道怎末判断是不是五子相连;把五子相连的判断函数写出来之后不知道main()函数怎末写了,每输入一个点坐标就进行判断,需要循环,循环条件是什莫呢?while(!judge(x,y))?当然不对,因为这时候都没有输入坐标怎末调用方法呢,一开始写的时候把输入黑子坐标及白子坐标分开来写成两个方法了,后来发现这样不行,因为main方法里就没有点的坐标了,这样judge方法也不能调用了,于是在main方法里定义了x和Y,然后输入点的坐标,用了一个t值来控制循环。
代码如下:

/*** 五子棋游戏,二维数组* 五子相连判断算法* 每输入一个点,就遍历判断一次输赢*/
package shiyan5;
import java.util.Scanner;
public class shiyan5 {public static String [][]arr;//全局变量public static final String BLACK_CHESS="●";public static final String WHITE_CHESS="○";//棋子public static void main(String [] args) {int x;int y;int t=0;init();while(t==0) {System.out.println("输入黑子坐标");Scanner sc=new Scanner(System.in);System.out.print("请输入x:");x=sc.nextInt();System.out.print("请输入y:");y=sc.nextInt();black(x,y);if(!judge(x,y)) {t=0;}else {t=1;}System.out.println("输入白子坐标");System.out.print("请输入x:");x=sc.nextInt();System.out.print("请输入y:");y=sc.nextInt();white(x,y);if(!judge(x,y)) {t=0;}else {t=1;}}}/*** 对棋盘进行初始化*/public static void init() {arr=new String[15][15];for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {arr[i][j]="+";}}}public static void show() {for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {System.out.print("  "+arr[i][j]);}System.out.println();}}/** 输入黑子坐标*/public static void black(int x,int y) {arr[x][y]=BLACK_CHESS;show();}/** 输入白子的坐标*/public static void white(int x,int y) {arr[x][y]=WHITE_CHESS;show();}/** 判断输赢*/public static boolean judge(int x,int y) {int i;int j;int count=0;//计数int winflag=1;//垂直方向//向上读取for(i=x-1,j=y;i>=0&&count++<5;i--) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}//向下读取count=0;for(i=x+1,j=y;i<15&&count++<5;i++) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;if(winflag>=5) {System.out.println(arr[x][y]+"胜利");return true;}else {winflag=1;}//水平方向//向右读取for(i=x,j=y+1;j<15&&count++<5;j++) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;//向左读取for(i=x,j=y-1;j>=0&&count++<5;j--) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;if(winflag>=5) {System.out.println(arr[x][y]+"胜利");return true;}else {winflag=1;}//主对角线方向//右下for(i=x+1,j=y+1;i<15&&j<3&&count++<5;i++,j++) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;//左上for(i=x-1,j=y-1;i>=0&&j>=0&&count++<5;i--,j--) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;if(winflag>=5) {System.out.println(arr[x][y]+"胜利");return true;}else {winflag=1;}//斜对角线方向//右上for(i=x-1,j=y+1;i>=0&&j<15&&count++<5;i--,j--) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;for(i=x+1,j=y-1;i<15&&y>=0&&count++<5;i++,j--) {if(arr[x][y].equals(arr[i][j])) {winflag++;}else {break;}}count=0;if(winflag>=5) {System.out.println(arr[x][y]+"胜利");return true;}else {winflag=1;}return false;//所有方向读取完,没有}}

---------------------分割线------------------------------------------
学习java的路刚刚开始,要继续加油呀,
2019.9.21

简单五子棋问题,java实现相关推荐

  1. 使用java实现简单五子棋

    用java实现一个简单五子棋 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.Ar ...

  2. 五子棋游戏Java代码简单实现(含活动图和类图设计)

    五子棋游戏Java代码简单实现(含活动图和类图设计) 文章目录 五子棋游戏Java代码简单实现(含活动图和类图设计) 活动图设计 类图设计 代码实现 总结 OOA和OOD设计 代码设计 可改进部分 活 ...

  3. Java小程序——简单五子棋(人机对战)

    有关五子棋人人对战的代码,以及其他一些我想说的话请参考 Java小程序 -- 简单五子棋_如切如磋,如琢如磨-CSDN博客_java小程序 由于某些原因,这里我给出的AI算法算是比较简单的,所以导致了 ...

  4. 大学java课程设计-简单五子棋

    大学java课程设计-简单五子棋 前言 效果图 课设要求 五子棋介绍 五子棋介绍 游戏玩法 系统需求分析 系统的设计与实现 项目工程结构 运行环境 代码设计 前言 第一次写博客,不知道写些什么,就打算 ...

  5. 编写五子棋的完整python代码_python制作简单五子棋游戏

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 #五子棋 '" 矩阵做棋盘 16*16 "+" 打印棋盘 for for 游戏是否结束 开 ...

  6. 文本文件 java_简单的用java实现读/写文本文件的示例

    简单的用java实现读/写文本文件的示例 更新时间:2008年07月26日 13:09:26   作者: 同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流) 三个例子可以独立存在,所以根据 ...

  7. 历史上最简单的一道Java面试题,但无人能通过

    作者:方志宏 来源:zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道java面试题了. 题目很简单,完成代码,判断一个整数是否是奇数: public boolea ...

  8. python写游戏棋牌游戏_使用python实现简单五子棋游戏

    使用python实现简单五子棋游戏 发布时间:2020-08-29 06:12:30 来源:脚本之家 阅读:73 作者:weixin_42874933 用python实现五子棋简单人机模式的练习过程, ...

  9. java http服务端例子_简单的用 Java Socket 编写的 HTTP 服务器应用

    /*** SimpleHttpServer.java*/importjava.io.*;importjava.net.*;importjava.util.StringTokenizer;/*** 一个 ...

最新文章

  1. 数据库分库分表(sharding)系列
  2. 独家 | 使用Spark进行大规模图形挖掘(附链接)
  3. 警方建立了一个人工智能来预测暴力犯罪,它有严重缺陷
  4. python数字列表in_Python入门基础之数字字符串与列表
  5. chromium net库设计
  6. drools规则引擎技术指南_物联网规则引擎技术
  7. go去掉最后一个字符_Go:字符串操作
  8. pytest框架+conftest.py配置公共数据的准备和清理
  9. 【Redis】Redis学习(四) Redis Sentinel模式详解
  10. 电信企业文化和品牌知识
  11. 善政治理、兴业创新:来看看这几个智慧城市建设案例!
  12. 为何老显示DOTA2服务器登录中,Dota2一直 正在登录服务器的解决办法
  13. qlv转mp4格式工厂失败 解决方法
  14. 南京卡地亚数码科技 网站维护 数据更新
  15. 「京东程序员」因压力过大在页面植入「骂人代码」?
  16. fixed bug: is not eligible for getting processed by all BeanPostProcessors
  17. shell-脚本集合
  18. 方便速食品牌阿宽是如何崛起的?【黑盒研究内参第6期】
  19. k2698场效应管参数电流_常用场效应管参数大全,电压,参数表图文等,涨知识必读!...
  20. HUAWEI(MAC-地址绑定端口)

热门文章

  1. Redux 入门教程(三):React-Redux 的用法
  2. 小程序json字符串转 json对象 { name :你好} 转成 { name :你好}
  3. 爬虫原理与数据抓取----- urllib2:URLError与HTTPError
  4. 自动化运维—saltstack
  5. 近期Freecodecamp问题总结
  6. NA-NP-IE系列实验36:扩展ACL
  7. [Nancy On .Net Core Docker] 轻量级的web框架
  8. [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
  9. findbugs:may expose internal representation by ret
  10. android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]