逍遥散人 10月6日 平静 的说 终于回杨凌了 心情还是那样没变化 闷了   荦荦夕颜 10月6日 平静 的说 武汉归来 带给大家一首好听的歌 擦肩而过   知多少 10月6日 平静 的说 输入要叽歪的内容_   10-502 10月6日 平静 的说 休假归来、开始上班了   小鱼游 10月6日 高兴 的说 今天阳光明媚   fay_meng 10月5日 平静 的说 明天,上课,去图书馆上自习,一切照旧.....依然泡论坛   zdk6105 10月5日 平静 的说 明天,上班   小鱼游 10月5日 生气 的说 心情无比烦躁   古井新月 10月5日 平静 的说 输入要叽歪的内容_   zdk6105 10月4日 平静 的说 心情不佳啊,那就听听音乐吧   [查看全部 321 条唧唧歪歪...]


打印

代码有问题啊

代码有问题啊

//一个简单的五子棋游戏
//
//以下代码在JDK1.4下通过
//编译: javac Wuziqi.java
//运行: java Wuziqi
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Wuziqi extends JFrame
{
public Wuziqi()
{
super(\"五子棋\");
this.setBounds(200,200,450,400);
this.setContentPane(new qipan(this));
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.show();
}
public static void main(String args[])
{
new Wuziqi();
}
}

class qipan extends JPanel
{
Wuziqi getThis;
MouseListener ml;
MouseMotionListener mml;
BorderLayout bl=new BorderLayout();
JLabel jl1;
JLabel jl2;
JLabel jl;
JTextField jcb;
JButton jb1,jb2,jb4,jb5;
int X,Y;//获取鼠标的位置
int tempx,tempy;
boolean start;
ArrayList alx=new ArrayList(),aly=new ArrayList();
int index;
Thread newthread;
int ret;
JP1 myjp1;
JP2 myjp2;
boolean st=true;
String getStr=\"\";
int blackArray[][]=new int[20][20];
int whiteArray[][]=new int[20][20];
int succeedx[]=new int[5];
int succeedy[]=new int[5];
boolean suc;
boolean control=true;
boolean control2;
int FPS=300;
boolean sta=true;
boolean end=true;
boolean endGame;
public qipan(Wuziqi getThis)
{
this.getThis=getThis;
this.setLayout(new BorderLayout());
myjp1=new JP1(); myjp2=new JP2();
this.add(myjp1,bl.CENTER);
this.add(myjp2,bl.EAST);
}
class JP1 extends JPanel implements Runnable
{
public JP1()
{
this.setBackground(new Color(0xeeaaaa));
ml=new MyListener();
this.addMouseListener(ml);
mml=new MyListener2();
this.addMouseMotionListener(mml);
}
public void startThread()
{
newthread=new Thread(this);
newthread.start();
}
public void stop()
{
newthread=null;
}
public void run()
{
while(newthread!=null)
{
try
{
repaint();
Thread.sleep(FPS);
if(control)
{
if(ret==0) ret=1; else ret=0;
}
if(control2)
{
if(suc)
{
suc=false;
jl.setText(getStr);
}
else
{
suc=true; jl.setText(\"\");
}
}
}catch(InterruptedException e){System.out.println(\"error\");}
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
paint_0(g);
}
public void paint_0(Graphics g)
{
if(end){
if(alx.size()>=9)
{
for(int m=0;m      //有误啊?
if(m%2==0)
{
Integer intex=(Integer)alx.get(m);
int xxx=intex.intValue();
Integer intey=(Integer)aly.get(m);
int yyy=intey.intValue();
blackArray[(yyy-10)/18][(xxx-10)/18]=1;
}
else
{
Integer intex=(Integer)alx.get(m);jb1.setEnabled(false);
int xxx=intex.intValue();
Integer intey=(Integer)aly.get(m);
int yyy=intey.intValue();
whiteArray[(yyy-10)/18][(xxx-10)/18]=1;
}
}
if(ifSuccessful()==1) //黑棋胜
{
jb1.setEnabled(true);
jb4.setEnabled(false);
jb2.setEnabled(false);
endGame=true;
if(sta)
{
stop();
ret=0; control=false; control2=true; suc=true; getStr=\" 黑棋胜利\";
startThread(); end=false;
}sta=false;
}
else if(ifSuccessful()==2) //白棋胜
{
jb1.setEnabled(true);
jb4.setEnabled(false);
jb2.setEnabled(false);
endGame=true;
if(sta)
{
stop();
ret=0; control=false; control2=true; suc=true; getStr=\" 白棋胜利\";
startThread(); end=false;
}sta=false;
}else;
}
}
String str=\" \";
index=alx.size()+1;
if(index/10>0&&index/100==0) str=\" \";
if(index/100>0) str=\" \";
if(alx.size()%2==0)
{
jl1.setText(\" 黑方\");
jl2.setText(str+\"第\"+index+\"手\");
}
else
{
jl1.setText(\" 白方\");
jl2.setText(str+\"第\"+index+\"手\");
}
g.setColor(new Color(0x556677));
for(int i=0;i<20;i++)
g.drawLine(10,10+i*18,352,10+i*18);
for(int i=0;i<20;i++)
g.drawLine(10+i*18,10,10+i*18,352);
if(start)
{
g.setColor(Color.blue);
g.drawLine(tempx-7,tempy-7,tempx-5,tempy-7);
g.drawLine(tempx-7,tempy-7,tempx-7,tempy-5);
g.drawLine(tempx+7,tempy-7,tempx+5,tempy-7);
g.drawLine(tempx+7,tempy-7,tempx+7,tempy-5);
g.drawLine(tempx-7,tempy+7,tempx-7,tempy+5);
g.drawLine(tempx-7,tempy+7,tempx-5,tempy+7);
g.drawLine(tempx+7,tempy+7,tempx+5,tempy+7);
g.drawLine(tempx+7,tempy+7,tempx+7,tempy+5);
Label:for(int i=0;i{
if(i%2==0)
g.setColor(Color.black);
else
g.setColor(Color.white);
Integer intex=(Integer)alx.get(i);
Integer intey=(Integer)aly.get(i);
if(suc)
{
for(int w=0;w<5;w++)
{
if(succeedx[w]==intex.intValue()&succeedy[w]==intey.intValue())
continue Label;
}
}
g.fillOval(intex.intValue()-7,intey.intValue()-7,14,14);
}
}
}
public int ifSuccessful()
{
for(int i=0;i<20;i++) //横向
{
for(int j=0;j<16;j++)
{
if(blackArray[j]==1 & blackArray[j+1]==1 & blackArray[j+2]==1 & blackArray[j+3]==1 & blackArray[j+4]==1)
{
for(int t=0;t<5;t++) {succeedx[t]=10+18*(j+t); succeedy[t]=10+18*i;}
return 1;
}
if(whiteArray[j]==1&whiteArray[j+1]==1&whiteArray[j+2]==1&whiteArray[j+3]==1&whiteArray[j+4]==1)
{
for(int t=0;t<5;t++) {succeedx[t]=10+18*(j+t); succeedy[t]=10+18*i;}
return 2;
}
}
}
for(int i=0;i<20;i++) //纵向
{
for(int j=0;j<16;j++)
{
if(blackArray[j]==1&blackArray[j+1]==1&blackArray[j+2]==1&blackArray[j+3]==1&blackArray[j+4]==1)
{
for(int t=0;t<5;t++)
{
succeedx[t]=10+i*18;
succeedy[t]=10+18*(j+t);
}
return 1;
}
if(whiteArray[j]==1&whiteArray[j+1]==1&whiteArray[j+2]==1&whiteArray[j+3]==1&whiteArray[j+4]==1)
{
for(int t=0;t<5;t++)
{
succeedx[t]=10+i*18;
succeedy[t]=10+18*(j+t);
}
return 2;
}
}
}
for(int i=0;i<16;i++) //斜向1
{
for(int j=0;j<16;j++)
{
if(blackArray[j]==1&blackArray[i+1][j+1]==1&blackArray[i+2][j+2]==1&blackArray[i+3][j+3]==1&blackArray[i+4][j+4]==1)
{
for(int t=0;t<5;t++)
{
succeedx[t]=10+18*(j+t);
succeedy[t]=10+18*(i+t);
}
return 1;
}
if(whiteArray[j]==1&whiteArray[i+1][j+1]==1&whiteArray[i+2][j+2]==1&whiteArray[i+3][j+3]==1&whiteArray[i+4][j+4]==1)
{
for(int t=0;t<5;t++)
{
succeedx[t]=10+18*(j+t);
succeedy[t]=10+18*(i+t);
}
return 2;
}
}
}
for(int i=0;i<16;i++) //斜向2
{
for(int j=19;j>3;j--)
{
if(blackArray[j]==1&blackArray[i+1][j-1]==1&blackArray[i+2][j-2]==1&blackArray[i+3][j-3]==1&blackArray[i+4][j-4]==1)
{
for(int t=0;t<5;t++)
{
succeedx[t]=10+18*(j-t);
succeedy[t]=10+18*(i+t);
}
return 1;
}
if(whiteArray[j]==1&whiteArray[i+1][j-1]==1&whiteArray[i+2][j-2]==1&whiteArray[i+3][j-3]==1&whiteArray[i+4][j-4]==1)
{
for(int t=0;t<5;t++)
{
succeedx[t]=10+18*(j-t);
succeedy[t]=10+18*(i+t);
}
return 2;
}
}
}
return 0;
}
}
class MyListener extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
if(start)
{
if(endGame)
{
Toolkit.getDefaultToolkit().beep();
return;
}
if(check())
{
alx.add(new Integer(tempx)); aly.add(new Integer(tempy));
jb2.setEnabled(true);
if(st)
myjp1.startThread();
st=false;
}
else Toolkit.getDefaultToolkit().beep();
}
}
public boolean check()
{
for(int i=0;i{                                                   //有误啊???
Integer intex=(Integer)alx.get(i);
Integer intey=(Integer)aly.get(i);
int n=intex.intValue(),nn=intey.intValue();
if(tempx!=n||tempy!=nn) continue;
else return false;
}
return true;
}
}
class MyListener2 extends MouseMotionAdapter
{
int getx,gety;
int x1,y1;
public void mouseMoved(MouseEvent e)
{
X=e.getX(); Y=e.getY();
getx=(X-10)/18; gety=(Y-10)/18;
x1=(X-10)%18; y1=(Y-10)%18;
if(Y<=352)
{
if(x1<=9)
{
tempx=10+18*getx;
if(y1<=9)
tempy=10+18*gety;
else tempy=10+18*(gety+1);
}
else
{
tempx=10+18*(getx+1);
if(y1<=9)
tempy=10+18*gety;
else tempy=10+18*(gety+1);
}
repaint();
}
}
}
class JP2 extends JPanel
{
JPanel up,center,down;
public JP2()
{
this.initComponent();
this.setLayout(new GridLayout(3,0));
this.add(createUP());
this.add(createCENTER());
this.add(createDOWN());
}
public Container createUP()
{
up=new JPanel(new GridLayout(2,0));
up.setBackground(Color.cyan);
up.add(jl1); up.add(jl2);
return up;
}
public Container createCENTER()
{
center=new JPanel(new BorderLayout());
center.add(jb4,BorderLayout.NORTH);
center.add(jb1,BorderLayout.CENTER);
center.add(jcb,BorderLayout.SOUTH);
return center;
}
public Container createDOWN()
{
down=new JPanel(new BorderLayout());
down.setBackground(Color.orange);
down.add(jb2,BorderLayout.NORTH);
down.add(jl,BorderLayout.CENTER);
down.add(jb5,BorderLayout.SOUTH);
return down;
}
public void initComponent()
{
jl1=new JLabel(\" 黑方\");
jl2=new JLabel(\" 第1手\");
jl=new JLabel(\"\");
jcb=new JTextField(\" 19 * 19\");
jcb.setEditable(false);
jb1=new JButton(\"重新开始\");
jb1.setEnabled(false);
jb2=new JButton(\"悔棋\");
jb2.setEnabled(false);
jb4=new JButton(\"开始\");
jb5=new JButton(\"关于\");
jb5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new About().setVisible(true);
}
});
jb4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
qipan.this.setCursor(new Cursor(Cursor.HAND_CURSOR));
start=true;
jb4.setEnabled(false);
jb1.setEnabled(true);
jcb.setEnabled(false);
for(int i=0;i<5;i++) {succeedx=succeedy=0;}
for(int i=0;i<20;i++)
for(int j=0;j<20;j++) blackArray[j]=whiteArray[j]=0;
control=true; control2=false; sta=true; st=true; ret=0; suc=false; end=true;
}
});
jb2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(alx.size()==0) return;
alx.remove(alx.size()-1);
aly.remove(aly.size()-1);
}
});
jb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jb2.setEnabled(false);
alx.removeAll(alx); aly.removeAll(aly); ret=0;
for(int i=0;i<5;i++) {succeedx=succeedy=0;}
for(int i=0;i<20;i++)
for(int j=0;j<20;j++) blackArray[j]=whiteArray[j]=0;
control=true; control2=false; sta=true; st=true; suc=false; end=true; endGame=false;
repaint();
}
});
}
}
class About extends JDialog
{
JTextField jtf;
public About()
{
super(getThis,true);
jtf=new JTextField();
jtf.setText(\"kevin开发的五子棋游戏,感谢老婆,感谢父母\");
jtf.setEditable(false);
jtf.setBackground(Color.cyan);
this.setContentPane(jtf);
this.pack();
this.setLocationRelativeTo(getThis);
}
}
}

那几个for循环好象有问题,都没写全啊???主人看看改改吧,好让我们研究啊呵呵

TOP

好长。。。

TOP