热门标签 | 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


推荐阅读
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文详细介绍如何在 iOS 7 环境下申请苹果开发者账号,涵盖从访问开发者网站到最终激活账号的完整流程。包括选择个人或企业账号类型、付款方式及注意事项等。 ... [详细]
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
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社区 版权所有