JAVA做五子棋源代码

如题所述

第1个回答  2012-06-06
import java.util.*;
public class FiveChess {
public static void main(String[] args) {
char[][] state=new char[16][16];
for(int i=0;i<state.length;i++){
for(int j=0;j<state.length;j++){
state[i][j]='*';
}
}
boolean isBlack=true;//当前是黑方下子
Scanner in=new Scanner(System.in);
printState(state);
while(true){
System.out.println("请"+(isBlack?"黑":"白")+"方下子:");
String input=in.next();
if(input.equals("exit")){
break;
}
int x=input.charAt(0)-'a';
int y=input.charAt(1)-'a';
if(state[x][y]!='*'){
System.out.println("该位置已经有棋子,请重新指定坐标!");
continue;
}
state[x][y]=(isBlack?'@':'O');
printState(state);
if(isWin(state,isBlack,x,y)){
System.out.println((isBlack?"黑":"白")+"方胜利!");
break;
}
isBlack=!isBlack;

}

}
public static void printState(char[][] state){
for(int i=0;i<state.length;i++)
{
System.out.print((char)('a'+i)+" ");
for(int j=0;j<state.length;j++){
System.out.print(state[i][j]+" ");
}
System.out.println();
}
System.out.print(" ");
for(int i=0;i<state[0].length;i++){
System.out.print((char)('a'+i)+" ");
}
System.out.println();
}
public static boolean isWin(char[][] state,boolean isBlack,int x,int y){
//char c=isBlack?'@':'O';
return isShuipingWin(state,isBlack,x,y)||isChuizhiWin(state,isBlack,x,y)||
isZuoXieWin(state,isBlack,x,y)||isYouXieWin(state,isBlack,x,y);

}
public static boolean isShuipingWin(char[][] state,boolean isBlack,int x,int y){
char c=isBlack?'@':'O';
int count=0;
do{
y--;
}
while(y>=0&&state[x][y]==c);
while(y<state[x].length&&state[x][y+1]==c){
y++;
count++;
if(y==state[x].length-1){
break;
}
}
if(count==5){
return true;
}
return false;
}
public static boolean isChuizhiWin(char[][] state,boolean isBlack,int x,int y){
char c=isBlack?'@':'O';
int count=0;
do{
x--;
}
while(x>=0&&state[x][y]==c);
while(x<state.length&&state[x+1][y]==c){
x++;
count++;
if(x==state.length-1){
break;
}
}

if(count==5){
return true;
}
return false;
}
public static boolean isYouXieWin(char[][] state,boolean isBlack,int x,int y){
char c=isBlack?'@':'O';
int count=0;
do{
x--;
y--;
}
while((x>=0&&y>=0)&&state[x][y]==c);
while(x<state.length&&y<state[0].length&&state[x+1][y+1]==c){
x++;
y++;
count++;
if(x==state.length-1||y==state[0].length-1){
break;
}
}
if(count==5){
return true;
}
return false;
}
public static boolean isZuoXieWin(char[][] state,boolean isBlack,int x,int y){
char c=isBlack?'@':'O';
int count=0;
do{
x--;
y++;
}
while((x>=0&&y<=state[0].length-1)&&state[x][y]==c);
while(x<state.length&&y>0&&state[x+1][y-1]==c)
{
x++;y--;
count++;
if(x==state.length-1||y==0){
break;
}
}
if(count==5){
return true;
}
return false;
}
}
第2个回答  2012-06-06
我有个,给个邮箱给你发

java五子棋源代码
1.chessClient.java ***\/ import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; class clientThread extends Thread { chessClient chessclient; clientThread(chessClient chessclient) { this.chessclient=chessclient; } public void acceptMessage(Stri...

跪求JAVA五子棋源代码
很sb的电脑五子棋:import java.io.*;import java.util.*;public class Gobang { \/\/ 定义一个二维数组来充当棋盘 private String[][] board;\/\/ 定义棋盘的大小 private static int BOARD_SIZE = 15;public void initBoard() { \/\/ 初始化棋盘数组 board = new String[BOARD_SIZE][BOARD_SIZE]...

下了个JAVA五子棋代码不会看 求注释
g.setColor(Color.white); \/\/设置颜色为白色 color_Qizi=1; \/\/下一步棋颜色为黑色 } g.fillOval(x-10,y-10,20,20); \/\/画一个圆,前面两个参数是左上角坐标 intGame_Body[x\/20][y\/20]=color_Qizi+1; \/\/棋盘状态中这个位置上相应地添上棋子,1为白棋2为黑棋0为空位置 if (Game_w...

急!!! Java五子棋源代码注释
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame...

java 五子棋 源代码 在我的基础上加个悔棋 判断胜负后把胜利的一方显示...
allChess[19][19] ;\/\/19 * 19 的棋盘 存放所有的棋子 0 --> 当前没有棋子 1 --> 黑子 2 --> 白子 比如: allChess[2][3]=2 --> 第3行第4列为白子 如果想要悔棋的话,我的理解是这样的:拿白子举例:每下一个白子后,保存两个数组,连续下两次白子之后的数组,如果想悔棋,黑方...

java 五子棋的源代码 以及类图 用例图 时序图
import java.io.*;class goboard { public String[][] board;private static int BOADSIZE=15;public void initBoard(){ board=new String[BOADSIZE][BOADSIZE];for(int i=0;i<BOADSIZE;i++){ for(int j=0;j<BOADSIZE;j++){ board[i][j]="+";} } } public void printboard(){ ...

大神们 急求基于eclipse的java小游戏程序的源码,程序不要多复杂啊。像...
import java.util.Scanner;public class Wuziqi { \/ 棋盘 \/ private final int[][] qipan;\/ 步数 \/ private int bushu;\/ 构造方法,设置棋盘规格 param x param y \/ public Wuziqi(int x, int y) { if (x < 1 || y < 1) { System.out.println("棋盘规格应不小于1,使用默认规格")...

...五子棋 哪位大哥给个源码(有说明) JAVA C++都好
我写过一个C#对弈版本的 可惜帮不上什么忙 我就是觉得写人机太复杂了,才写对弈的 你去多看看人工智能的资料吧,哪些算法没一个好理解的!不然写出来的东西就太笨了 祝你成功

...推箱子、俄罗斯方块、五子棋等,最好是.NET的,JAVA也行。
import java.lang.Math.*;import java.awt.event.*;import java.awt.*;import javax.swing.*;class MainFrame extends JFrame implements ActionListener{ \/\/定义整个框架 private JButton[] jb = new JButton[8];private JButton jbs = new JButton("开 局");private JButton jbres = ...

java期末作业!!求大神帮忙!!!
\/** *@author young *@Description: 记事本 *@date 2016年5月19日下午5:37:06 *\/import java.awt.*;import java.awt.event.*;import java.io.*;import java.awt.datatransfer.*;public class NotePad01 {public static void main(String args[]) {TextEdit TE = new TextEdit("记事本");...

相似回答
大家正在搜