您的位置:首页 > 编程语言 > Java开发

tiger(我) 用 java写简易五子棋游戏 上次没通过这次看看行不行

2016-03-19 13:14 351 查看
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< SIZE;i++)
{
for(int j=0; j< SIZE;j++)

chess[i][j]=nothing;
}
}

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

//输出棋盘方法;
public static void go_construction()
{
for(int i=0;i< SIZE;i++)
{
for(int j=0; j< SIZE;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<SIZE;i++)
{
String heng_line="";
for(int j=0;j<SIZE;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<SIZE;j++)
{
String shu_line="";
for(int i=0;i<SIZE;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<SIZE;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<SIZE;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<SIZE;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/1752849
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: