热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java写简易五子棋游戏。

importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS

 

 

 

import java.io.*;
import java.util.*;


public class 五子棋游戏
{
static  int m=1;
static  int n=1;
static final int SIZE=13;
static final String nothing="□";
static final String black="●";
static final String white="×";
static String[][] chess =new String[SIZE][SIZE];

 

/***
 每一个元素有三种情况,黑子白子和空,空我们定义为框,先初始化棋盘;
向每个元素内填充框。
***/
// throws IOException配readLine不能少;
public static void main(String[] args)  throws IOException
{
System.out.print(‘\n‘);
System.out.println("欢迎来到英雄联盟,敌军还有30秒到达战场!");
System.out.print(‘\n‘);
System.out.print(‘\n‘);

construction();

go_construction();

keyboard_enter();
}

 

//******************************************************


 //初始化棋盘方法;
public static void construction()
{
for(int i=0;i{
for(int j=0; j 
chess[i][j]=nothing;
}
}


//******************************************************


//输出棋盘方法;
public static void go_construction()  
{
for(int i=0;i{
for(int j=0; j
System.out.print(chess[i][j]);
}
System.out.print(‘\n‘);
}
}


//******************************************************


//读取用户输入
// throws IOException配readLine不能少;
public static void keyboard_enter() throws IOException
{
//包装后的键盘;在iO包里;
BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in));

String go=null;

while((go =keyboard.readLine() )!=null)
{
System.out.println("菜鸟"+go);

//将字符串分成两节;
String[] xyStr=go.split(",");

String xstr=xyStr[0];

String ystr=xyStr[1];

//把String转为int型;
int xPos =Integer.parseInt(xstr);
int yPos =Integer.parseInt(ystr);

if(!chess[xPos][yPos].equals(nothing))
{
System.out.println("此处已有棋子,请在别处落子。");
continue;
}

//所谓下棋,就是对棋点的字符串重新赋值;
chess[xPos][yPos]=black;
m++;


//傻瓜级电脑下棋,直接用随机数;但是不可以重复;
while(true)
{
int pc_x=new Random().nextInt(SIZE);
int pc_y=new Random().nextInt(SIZE);

if(chess[pc_x][pc_y].equals(nothing))
{
chess[pc_x][pc_y]=white;
n++;
break;
}
}

go_construction();

int judge;

if(judge()==1)  //人赢了;
{
System.out.println("恭喜你赢了这个傻逼电脑");
return;
}
if(judge()==(-1))  //pc赢了;
{
System.out.println("悲剧,这个傻逼电脑都赢了你");
return;
}
if(judge()==0)  //平局;
{
System.out.println("平局,这个傻逼电脑和你差不多");
return;
}
}
}

 

//******************************************************


//定义一个判断输赢的方法;
public static int judge()
{

//判断橫着的五个;
for(int i=0;i{
String heng_line="";
for(int j=0;j{
heng_line+=chess[i][j];

if(heng_line.contains("●●●●●"))
return 1;

if(heng_line.contains("×××××"))
return -1;

if(m+n==SIZE*SIZE)   //还没出胜负时,棋盘走完了。
{

return 0;
}
}
}

//判断竖着的五个;
for(int j=0;j{
String shu_line="";
for(int i=0;i{
shu_line+=chess[i][j];

if(shu_line.contains("●●●●●"))
return 1;

if(shu_line.contains("×××××"))
return -1;

if(m+n==SIZE*SIZE)   //还没出胜负时,棋盘走完了。
{
return 0;
}
}
}

//向右上方向走出五个子;
for(int i=0,j=0;i{
String youshang_line="";

youshang_line+=chess[i][j];

while(i!=0&j!=SIZE-1)
{
i--;j++;

youshang_line+=chess[i][j];

if(youshang_line.contains("●●●●●"))
return 1;

if(youshang_line.contains("×××××"))
return -1;

if(m+n==SIZE*SIZE)   //还没出胜负时,棋盘走完了。
{
return 0;
}
}
}

for(int i= SIZE-1,j=0;j{
String youshang_line="";

youshang_line+=chess[i][j];

while(i!=0&j!=SIZE-1)
{
i--;j++;

youshang_line+=chess[i][j];

if(youshang_line.contains("●●●●●"))
return 1;

if(youshang_line.contains("×××××"))
return -1;

if(m+n==SIZE*SIZE)   //还没出胜负时,棋盘走完了。
{
return 0;
}
}
}

//右下方向出现五个子;
for(int i=SIZE-1,j=0;i>0;i--)
{
String youxia_line="";

youxia_line+=chess[i][j];

while(i!=SIZE-1&j!=SIZE-1)
{
i++;j++;

youxia_line+=chess[i][j];

if(youxia_line.contains("●●●●●"))
return 1;

if(youxia_line.contains("×××××"))
return -1;

if(m+n==SIZE*SIZE)   //还没出胜负时,棋盘走完了。
{
return 0;
}
}
}

for(int i=0,j=0;j{
String youxia_line="";

youxia_line+=chess[i][j];

while(i!=SIZE-1&j!=SIZE-1)
{
i++;j++;

youxia_line+=chess[i][j];

if(youxia_line.contains("●●●●●"))
return 1;

if(youxia_line.contains("×××××"))
return -1;

if(m+n==SIZE*SIZE)   //还没出胜负时,棋盘走完了。
{
return 0;
}
}
}


return 2;//记得加上此方法返回值;no void;

}

 

 


}

 

本文出自 “64位Tiger” 博客,请务必保留此出处http://doubletiger.blog.51cto.com/11157348/1748717


推荐阅读
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 本文介绍了一个使用Spring框架和Quartz调度器实现每周定时调用Web服务获取数据的小项目。通过详细配置Spring XML文件,展示了如何设置定时任务以及解决可能遇到的自动注入问题。 ... [详细]
  • 在编程实践中,正确管理和释放资源是非常重要的。本文将探讨 Python 中的 'with' 关键字及其背后的上下文管理器机制,以及它们如何帮助我们更安全、高效地管理资源。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • 本文详细介绍了二叉堆的概念及其在Java中的实现方法。二叉堆是一种特殊的完全二叉树,具有堆性质,常用于实现优先队列。 ... [详细]
author-avatar
二狗子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有