代码有问题啊
|
yanyan1985
|
[1楼]
大 中
小 发表于 2007-5-25 09:43:54 只看该作者
代码有问题啊//一个简单的五子棋游戏
// //以下代码在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 |





