
1个回答
展开全部
这个 网上 也有啊
package com.tarena.day07.gobang;
import java.util.Scanner;
public class GoGang {
/**
* @param args
*/
public static void main(String[] args) {
int space = 0;
int black = 1;
int white = 2;
String[] chessName = {"空","黑","白"};
int[] board = new int[16*16]; //定义一个棋盘
Scanner console = new Scanner(System.in);
int idx = 0;
while(true){
print(board); //调用打印棋盘的方法
int color = idx++%2+1;//执黑先行(1,2,1,2,1,2)
int i,j;
do{
System.out.print("请 "+chessName[color]+" 方下子(i j):");
i = console.nextInt(16);
j = console.nextInt(16);
}while(board[i*16+j]!=space);
board[i*16+j]=color;
if(isWin(board, color, i, j)){
print(board);
System.out.println("恭喜"+ chessName[color]);
break;
}
}
}
public static boolean isWin(int[] board, int color, int i, int j) {
return n2sWin(board, color, i, j) ||
w2eWin(board, color, i, j) ||
wn2esWin(board, color, i, j) ||
en2wsWin(board, color, i, j) ;
}
/** 东北到西南 */
private static boolean en2wsWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
j++;
i--;
if(j==16 || i==-1)
break;
}
//i,j 是第一个空白子
j--;i++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
j--;
i++;
if(j==-1 || i==16)
break;
}
return c>=5;
}
/** 西到东 */
private static boolean w2eWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
j--;
if(j==-1)
break;
}
//i,j 是第一个空白子
j++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
j++;
if(j==16)
break;
}
return c>=5;
}
/** 西北到东南 */
private static boolean wn2esWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
j--;
i--;
if(j==-1 || i==-1)
break;
}
//i,j 是第一个空白子
j++;i++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
j++;
i++;
if(j==16 || i==16)
break;
}
return c>=5;
}
/** 北到南方向 */
private static boolean n2sWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
i--;
if(i==-1)
break;
}
//i,j 是第一个空白子
i++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
i++;
if(i==16)
break;
}
return c>=5;
}
public static void print(int[] board){
char[] ico = {'+','@','O'};
char[] hex = "0123456789abcdef".toCharArray();
// for(int i=0; i<board.length; i++){
// System.out.print(ico[board[i]]);
// if((i+1)%16==0){
// System.out.println();
// }
// }
System.out.print(" ");
for(int i=0; i<16; i++){
System.out.print(hex[i]);
}
System.out.println();
for(int i=0; i<16; i++){
System.out.print(hex[i]);
for (int j = 0; j < 16; j++) {
System.out.print(ico[board[i*16+j]]);
}
System.out.println();
}
}
}
package com.tarena.day07.gobang;
import java.util.Scanner;
public class GoGang {
/**
* @param args
*/
public static void main(String[] args) {
int space = 0;
int black = 1;
int white = 2;
String[] chessName = {"空","黑","白"};
int[] board = new int[16*16]; //定义一个棋盘
Scanner console = new Scanner(System.in);
int idx = 0;
while(true){
print(board); //调用打印棋盘的方法
int color = idx++%2+1;//执黑先行(1,2,1,2,1,2)
int i,j;
do{
System.out.print("请 "+chessName[color]+" 方下子(i j):");
i = console.nextInt(16);
j = console.nextInt(16);
}while(board[i*16+j]!=space);
board[i*16+j]=color;
if(isWin(board, color, i, j)){
print(board);
System.out.println("恭喜"+ chessName[color]);
break;
}
}
}
public static boolean isWin(int[] board, int color, int i, int j) {
return n2sWin(board, color, i, j) ||
w2eWin(board, color, i, j) ||
wn2esWin(board, color, i, j) ||
en2wsWin(board, color, i, j) ;
}
/** 东北到西南 */
private static boolean en2wsWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
j++;
i--;
if(j==16 || i==-1)
break;
}
//i,j 是第一个空白子
j--;i++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
j--;
i++;
if(j==-1 || i==16)
break;
}
return c>=5;
}
/** 西到东 */
private static boolean w2eWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
j--;
if(j==-1)
break;
}
//i,j 是第一个空白子
j++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
j++;
if(j==16)
break;
}
return c>=5;
}
/** 西北到东南 */
private static boolean wn2esWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
j--;
i--;
if(j==-1 || i==-1)
break;
}
//i,j 是第一个空白子
j++;i++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
j++;
i++;
if(j==16 || i==16)
break;
}
return c>=5;
}
/** 北到南方向 */
private static boolean n2sWin(int[] board, int color, int i, int j) {
while( board[i * 16 +j] == color ){
i--;
if(i==-1)
break;
}
//i,j 是第一个空白子
i++;
int c = 0;//计数变量
while(board[i * 16 +j] == color){
c++;
i++;
if(i==16)
break;
}
return c>=5;
}
public static void print(int[] board){
char[] ico = {'+','@','O'};
char[] hex = "0123456789abcdef".toCharArray();
// for(int i=0; i<board.length; i++){
// System.out.print(ico[board[i]]);
// if((i+1)%16==0){
// System.out.println();
// }
// }
System.out.print(" ");
for(int i=0; i<16; i++){
System.out.print(hex[i]);
}
System.out.println();
for(int i=0; i<16; i++){
System.out.print(hex[i]);
for (int j = 0; j < 16; j++) {
System.out.print(ico[board[i*16+j]]);
}
System.out.println();
}
}
}
追问
我要的是javaME平台开发的,就是手机上能运行的java文件,你这是javaEE平台上开发的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询