求一个最简单的JAVA五子棋程序。。

跪求阿···

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

;

public class 下棋 extends JFrame {
int x = 0, y = 0;

int a = 0;

int x1 = 0, y1 = 0, x2 = 0, y2 = 0, x3 = 0, y3 = 0, x4 = 0, y4 = 0;;

boolean fa = true, huatu = true, yin = false;

int a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, a8 = 0, a9 = 0;

int s[] = new int[10], jj[] = new int[10];

JButton congxin, huanse;

JLabel jl;

public 下棋() {
Container c = getContentPane();
c.setLayout(new FlowLayout());
congxin = new JButton("重新开始红队先下");
c.add(congxin);
huanse = new JButton("重新开始蓝队先下");
c.add(huanse);
jl = new JLabel();
c.add(jl, BorderLayout.SOUTH);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event) {
if (event.isAltDown()) {
repaint();
}
x = event.getPoint().x;
y = event.getPoint().y;
int a = mm(x, y);
if (yin) {
jl.setForeground(Color.RED);
jl
.setText(" 游戏已结束,请重新开始 ");

}

else {
if (s[a] == 1) {
jl.setForeground(Color.RED);
jl.setText(" 此位置有棋子,请另选位置重新下棋 ");
} else {
fa = false;
if (a == 1)
a1 = 1;
if (a == 2)
a2 = 1;
if (a == 3)
a3 = 1;
if (a == 4)
a4 = 1;
if (a == 5)
a5 = 1;
if (a == 6)
a6 = 1;
if (a == 7)
a7 = 1;
if (a == 8)
a8 = 1;
if (a == 9)
a9 = 1;
jl.setText("");
repaint();
}
}
s[a] = 1;
}
});

congxin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
for (int i = 0; i < s.length; i++) {
s[i] = 0;
jj[i] = 0;
}
fa = true;
repaint();
yin = false;
huatu = true;
jl.setForeground(Color.black);
jl
.setText(" 红队先下 ");
}
});

huanse.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
for (int i = 0; i < s.length; i++) {
s[i] = 0;
jj[i] = 0;
}
fa = true;
repaint();
yin = false;
huatu = false;
jl.setForeground(Color.black);
jl
.setText(" 蓝队先下 ");
}
});

setSize(500, 500);
setVisible(true);
}

public void paint(Graphics g) {
if (fa) {
super.paint(g);
int x = 100, y = 100, c = 300, k = 300;
for (int i = 0; i < 300; i += 100)
g.drawRect(x, y + i, c, k - i);
for (int i = 0; i < 300; i += 100)
g.drawRect(x + i, y, c - i, k);
} else {
jl.setForeground(Color.black);
if (huatu) {
g.setColor(Color.red);
if (a1 == 1) {
g.drawLine(120, 120, 180, 180);
g.drawLine(180, 120, 120, 180);
a1 = 0;
jj[1] = 1;
}
if (a2 == 1) {
g.drawLine(220, 120, 280, 180);
g.drawLine(280, 120, 220, 180);
a2 = 0;
jj[2] = 1;
}

if (a3 == 1) {
g.drawLine(320, 120, 380, 180);
g.drawLine(380, 120, 320, 180);
a3 = 0;
jj[3] = 1;
}
if (a4 == 1) {
g.drawLine(120, 220, 180, 280);
g.drawLine(180, 220, 120, 280);
a4 = 0;
jj[4] = 1;
}
if (a5 == 1) {
g.drawLine(220, 220, 280, 280);
g.drawLine(280, 220, 220, 280);
a5 = 0;
jj[5] = 1;
}
if (a6 == 1) {
g.drawLine(320, 220, 380, 280);
g.drawLine(380, 220, 320, 280);
a6 = 0;
jj[6] = 1;
}
if (a7 == 1) {
g.drawLine(120, 320, 180, 380);
g.drawLine(180, 320, 120, 380);
a7 = 0;
jj[7] = 1;
}
if (a8 == 1) {
g.drawLine(220, 320, 280, 380);
g.drawLine(280, 320, 220, 380);
a8 = 0;
jj[8] = 1;
}
if (a9 == 1) {
g.drawLine(320, 320, 380, 380);
g.drawLine(380, 320, 320, 380);
a9 = 0;
jj[9] = 1;
}
huatu = false;
jl
.setText(" 蓝队下棋 ");
} else {
g.setColor(Color.blue);
if (a1 == 1) {
g.drawOval(125, 125, 50, 50);
a1 = 0;
jj[1] = 2;
}
if (a2 == 1) {
g.drawOval(225, 125, 50, 50);
a2 = 0;
jj[2] = 2;
}
if (a3 == 1) {
g.drawOval(325, 125, 50, 50);
a3 = 0;
jj[3] = 2;
}
if (a4 == 1) {
g.drawOval(125, 225, 50, 50);
a4 = 0;
jj[4] = 2;
}
if (a5 == 1) {
g.drawOval(225, 225, 50, 50);
a5 = 0;
jj[5] = 2;
}
if (a6 == 1) {
g.drawOval(325, 225, 50, 50);
a6 = 0;
jj[6] = 2;
}
if (a7 == 1) {
g.drawOval(125, 325, 50, 50);
a7 = 0;
jj[7] = 2;
}
if (a8 == 1) {
g.drawOval(225, 325, 50, 50);
a8 = 0;
jj[8] = 2;
}
if (a9 == 1) {
g.drawOval(325, 325, 50, 50);
a9 = 0;
jj[9] = 2;
}
huatu = true;
jl
.setText(" 红队下棋 ");
}
dd();
}
}

public int mm(int x, int y) {
if (x >= 100 && x < 200 && y >= 100 && y < 200)
a = 1;
else if (x >= 200 && x < 300 && y >= 100 && y < 200)
a = 2;
else if (x >= 300 && x < 400 && y >= 100 && y < 200)
a = 3;
else if (x >= 100 && x < 200 && y >= 200 && y < 300)
a = 4;
else if (x >= 200 && x < 300 && y >= 200 && y < 300)
a = 5;
else if (x >= 300 && x < 400 && y >= 200 && y < 300)
a = 6;
else if (x >= 100 && x < 200 && y >= 300 && y < 400)
a = 7;
else if (x >= 200 && x < 300 && y >= 300 && y < 400)
a = 8;
else if (x >= 300 && x < 400 && y >= 300 && y < 400)
a = 9;
else
a = 0;
return a;
}

public void dd() {

if (jj[1] == 1 && jj[2] == 1 && jj[3] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线1,2,3 ");
yin = true;
}
if (jj[4] == 1 && jj[5] == 1 && jj[6] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线4,5,6 ");
yin = true;
}
if (jj[7] == 1 && jj[8] == 1 && jj[9] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线7,8,9 ");
yin = true;
}
if (jj[1] == 1 && jj[5] == 1 && jj[9] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获获胜,连接线1,5,9 ");
yin = true;
}
if (jj[3] == 1 && jj[5] == 1 && jj[7] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线3,5,7 ");
yin = true;
}
if (jj[1] == 1 && jj[4] == 1 && jj[7] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线1,4,7 ");
yin = true;
}
if (jj[2] == 1 && jj[5] == 1 && jj[8] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线2,5,8 ");
yin = true;
}
if (jj[3] == 1 && jj[6] == 1 && jj[9] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 红方获胜,连接线3,6,9 ");
yin = true;
}

if (jj[1] == 2 && jj[2] == 2 && jj[3] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线1,2,3 ");
yin = true;
}
if (jj[4] == 2 && jj[5] == 2 && jj[6] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线4,5,6 ");
yin = true;
}
if (jj[7] == 2 && jj[8] == 2 && jj[9] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线7,8,9 ");
yin = true;
}
if (jj[1] == 2 && jj[5] == 2 && jj[9] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线1,5,9 ");
yin = true;
}
if (jj[3] == 2 && jj[5] == 2 && jj[7] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线3,5,7 ");
yin = true;
}
if (jj[1] == 2 && jj[4] == 2 && jj[7] == 2) {
jl.setForeground(Color.RED);
jl.setText("蓝方获胜,连接线1,4,7 ");
yin = true;
}
if (jj[2] == 2 && jj[5] == 2 && jj[8] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线2,5,8 ");
yin = true;
}
if (jj[3] == 2 && jj[6] == 2 && jj[9] == 2) {
jl.setForeground(Color.RED);
jl
.setText(" 蓝方获胜,连接线3,6,9 ");
yin = true;
}
if (s[1] == 1 && s[2] == 1 && s[3] == 1 && s[4] == 1 && s[5] == 1
&& s[6] == 1 && s[7] == 1 && s[8] == 1 && s[9] == 1) {
jl.setForeground(Color.RED);
jl
.setText(" 双方都没获胜,游戏结束 ");
yin = true;
}
System.out.println(jj[2]);
}

public static void main(String[] args) {
下棋 s = new 下棋();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-01-19
你要是学习用的话,不要看上面那段啊。。。。那是标准的学过C语言的人编写出来的带有后遗症的程序。。。。。。

你要找带有很多类明确使用继承和带有接口声明的例子,那样对理解JAVA很好的。。。本回答被提问者采纳
第2个回答  2009-01-31
给个邮箱啊,程序太多了,要发到邮箱里面去啊

java五子棋
statusText.setText("黑棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待白棋下子..."); } else if(chessColorWin==-1) { chessWhiteWin++; statusText.setText("白棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待黑棋下子..."); } } public void getLocation(in...

求五子棋代码(要java写的),有界面
import java.awt.Color;public class WuZhiqi extends Applet implements ActionListener, MouseListener,MouseMotionListener, ItemListener { int color = 0;\/\/ 旗子的颜色标识 0:白子 1:黑子 boolean isStart = false;\/\/ 游戏开始标志 int bodyArray[][] = new int[16][16]; \/\/ 设置棋盘棋子状...

求一个简单的JAVA五子棋代码!! 网上复制的别来了!
public void whoWin(Games wz) { \/\/ 从数组挨个查找找到某个类型的棋子就从该棋子位置向右,向下,斜向右下 各查找5连续的位置看是否为5个相同的 int xlabel;\/\/ 记录第一次找到某个棋子的x坐标 int ylabel;\/\/ 记录第一次找到某个棋子的y坐标 \/\/ ●○╋ \/\/ 判断人是否赢了 for (int i =...

关于java五子棋的代码
\/\/棋子枚举类public enum Chessman{ \/\/枚举类第一行必须列出所有实例,这两个表示创建两个棋子视力,它们的棋子成员变量分别是●和○ BLACK_CHESS("●"), WHITE_CHESS("○"); \/\/成员变量,决定这个棋子的类型 private String chessman; \/\/构造器,枚举类的构造器只能提供给自己的实例使用,外部不能...

java程序设计,五子棋判断输赢
int Map[MAX_LINE][MAX_ROW];int CheckWin() \/\/返回0表示都没赢,返回1表示白棋赢,返回2表示黑棋赢 { int i,j,k;int tmp;\/* 判断所有横行 *\/ for(i=0;i<MAX_LINE;i++){ for(j=0;j<MAX_ROW-5;j++){ tmp=Map[i][j];if( tmp != 0){ for(k=1;k<5;k++)if(Map[i...

求五子棋Java代码旁边就注释 让我看的清楚明白一些,要详细的解释和思路...
import java.applet.Applet;import t.Color; \/\/这一段import就不说了,下面要用到的就import进来 public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener \/\/继承Applet表明是个applet,后面的接口必须要实现每个接口的所有方法 { int color_Qizi=0;\/\/...

跪求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游戏小程序,要交作业的
五子棋 --- import java.awt.*;import java.awt.event.*;import javax.swing.*;class mypanel extends Panel implements MouseListener { int chess[][] = new int[11][11];boolean Is_Black_True;mypanel(){ Is_Black_True = true;for(int i = 0;i < 11;i++){ for(int j = 0;...

下了个JAVA五子棋代码不会看 求注释
{ color_Qizi=0; \/\/白棋先 } else { color_Qizi=1; \/\/黑棋先 } } public void actionPerformed(ActionEvent e) \/\/ActionListener接口中的方法,也是必须的 { Graphics g=getGraphics(); \/\/这句话貌似可以去掉,g是用来画图或者画界面的 if (e.getSource()==b1) \/\/如果动作的来源是第一个...

我想知道用Java编写的五子棋怎么判断输赢
定义一个boolean类判断是否赢 flag \/\/ 横向 boolean flag = false; \/\/一开始不赢 int i1 = 1; \/\/用他来循环第几个棋子 int count1 = 1; \/\/用它来计数有多少个棋子连起来 while(chess[x][y] == chess[x + i][y]){ i1++;count1 ++;} while(chess[x][y] == chess[x ...

相似回答