**
学习Java第十三天
**
- 控制台输出一个20*20的棋盘;
- 玩家输入棋子的坐标(玩家默认为黑棋);
- 自动生成白旗;
- 输出棋盘;
- 。。。;
- 判断胜负。
下面是代码部分
import java.util.Scanner;
/**
*
- 这是一个五子棋游戏
- @author 卡布达
*/
public class WuziqiGame {
public static String[][] qipan = new String[20][20];
public static void main(String[] args) {
//1、给棋盘赋值
for(int i=0;i<qipan.length;i++){
for(int j=0;j<qipan[i].length;j++){
qipan[i][j]="+ ";
System.out.print(qipan[i][j]);
}
System.out.println();
}
// 2、请玩家,和 电脑分别落入棋子
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请落入棋子(● ),输入 行和列,只能输入1~20");
int hang = sc.nextInt();
int lie = sc.nextInt();
//2.1 判断当前位置是否已经落入 黑棋或白棋
//判断棋盘行和列的范围
if(hang<0 || hang>20 || lie<0 || lie>20){
System.out.println("落入棋子行和列 必须在1-20之间 ");
continue;
}
if(qipan[hang-1][lie-1]!="+ "){
System.out.println("该位置已经落棋,请重新落入棋盘");
continue;
}
// 3、电脑落入棋子 ,生成随机数 (生成的数组的下标 )
int hang1=0;
int lie1=0;
while(true){
hang1 = (int)(Math.random()*20);
lie1 = (int)(Math.random()*20);
//判断
if(qipan[hang1][lie1]=="+ "){
break;
}
}
// 4,将棋盘改变
System.out.println("电脑落入棋子后的结果");
for(int i=0; i < qipan.length; i++){
for(int j = 0 ;j < qipan[i].length ; j++){
if(hang-1==i && lie-1 == j){
qipan[i][j]="● ";
}
if(hang1==i && lie1==j){
qipan[i][j]="○ ";
}
System.out.print(qipan[i][j]);
}
System.out.println();
}
if(panduan()){
if(qipan[x][y]=="● "){
System.out.println("黑棋赢了");
}else{
System.out.println("白棋赢了");
}
break;
}
}
}
// 存放赢家的 下标
static int x=0;
static int y=0;
/**
* 判断输赢
*/
public static boolean panduan(){
boolean flag=false;
//遍历棋盘,如果是 黑棋 或 白棋所在的位置,则判断 右横线,竖下线 ,左斜线,右斜线
for(int i=0;i<qipan.length;i++){
for(int j = 0 ;j<qipan[i].length; j++){
if(qipan[i][j]=="● " || qipan[i][j]=="○ "){
// 判断 右横线
if(j<16 && qipan[i][j]==qipan[i][j+1] && qipan[i][j]==qipan[i][j+2] &&
qipan[i][j]==qipan[i][j+3] && qipan[i][j] == qipan[i][j+4]){
x=i;
y=j;
flag=true;
break;
}
if(i<16 && qipan[i][j]==qipan[i+1][j] && qipan[i][j]==qipan[i+2][j] &&
qipan[i][j]==qipan[i+3][j] && qipan[i][j] == qipan[i+4][j]){
x=i;
y=j;
flag=true;
break;
}
// 判断 斜下方
if(i<16 && j<16 && qipan[i][j]==qipan[i+1][j+1] && qipan[i][j]==qipan[i+2][j+2] &&
qipan[i][j]==qipan[i+3][j+3] && qipan[i][j] == qipan[i+4][j+4]){
x=i;
y=j;
flag=true;
break;
}
if( i<16 && j>4 && qipan[i][j]==qipan[i+1][j-1] && qipan[i][j]==qipan[i+2][j-2] &&
qipan[i][j]==qipan[i+3][j-3] && qipan[i][j] == qipan[i+4][j-4]){
x=i;
y=j;
flag=true;
break;
}
}
}
}
return flag;
}
}
小白一枚,大神多多指教