1、 /初始化坐标位置 boolean start = true, redplay = true, success = false; /初始化重新开始,下棋,胜利 int s = new int155, jj = new int155; /初始化棋局位置,棋子信息 JButton jbutton1, jbutton2; /定义重新开始红队先下,重新开始蓝队先下两个按钮 JLabel jlabel; /定义标签 public wuziqi() Container c = getContentPane(); /给容器赋值 c.setLayout(new FlowLayout(); jbutton1 =
2、 new JButton(重新开始红队先下); c.add(jbutton1); jbutton2 = new JButton(重新开始蓝队先下 c.add(jbutton2); jlabel = new JLabel(); c.add(jlabel, BorderLayout.SOUTH); /增加鼠标监听器 addMouseListener(new MouseAdapter() public void mousePressed(MouseEvent event) if (event.isAltDown() repaint(); /获得鼠标点击的坐标 x = event.getPoint()
3、.x; y = event.getPoint().y; System.out.println(坐标是:+x+,+y+; int location = location(x, y); /用a保存坐标的信息location=+location); /一方胜利或平局就重新开始 if (success) jlabel.setForeground(Color.RED); jlabel .setText( +游戏已结束,请重新开始 /棋局还没结束,继续下棋 else /如果先前一位置上已有一棋子,在此位置上再有一棋子就提醒另选位置重新下棋 if (slocation = 1) jlabel.setText
4、( 此位置有棋子,请另选位置重新下棋 /如果此位置是第一次有棋,则改变棋盘相应的信息 if(slocation=0) start = false;slocation=s+location+=+slocation); for(int i=1; for(int j=1; if(location=(j-1)*12+i) chequerji=1; System.out.println(j=+j+i=+i+chequerji=+chequer+chequerji); jlabel.setText( repaint(); /使刚下的棋子在棋盘上刻画出来 slocation = 1; ); /给按钮1添加监
5、听器,当点击按钮1则红队先下 jbutton1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) for (int i = 1; i s.length; i+) si = 0; jji = 0; /红棋结果为1,蓝棋结果为2s.length=+s.length); start = true; /重画棋盘 success = false; redplay = true; jlabel.setForeground(Color.black); jlabel .setText( +
6、红队先下 ); / 给按钮2添加监听器,当点击按钮2则红队先下 jbutton2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) redplay = false;蓝队先下 ); setSize(800, 800); setVisible(true); public void paint(Graphics g) / 划棋盘 if (start) super.paint(g); int x = 100, y = 100, c = 600, k = 600; for (int i
7、 = 0; 600; i += 50) g.drawRect(x, y + i, c, k - i); g.drawRect(x + i, y, c - i, k); /画棋子 if(!start) jlabel.setForeground(Color.black); if (redplay) g.setColor(Color.red); /出现错误 for(int i=1; if(chequerji=1) g.drawLine(100+(i-1)*50+10,100+(j-1)*50+10, 100+(i-1)*50+40, 100+(j-1)*50+40) ; g.drawLine(100
8、+(i-1)*50+40,100+(j-1)*50+10, 100+(i-1)*50+10, 100+(j-1)*50+40) ; chequerji=0; jj(j-1)*12+i=1; (j-1)*12+i+(j-1)*12+i);jj(j-1)*12+i=jj+(j-1)*12+i)+jj(j-1)*12+i); redplay = false; jlabel .setText( 蓝队下棋 /正确redplay)System.out.println(!redplayredplay) g.setColor(Color.blue); for(int j=1; if(chequerji=1)
9、g.drawOval(100+(i-1)*50+12,100+(j-1)*50+12, 25, 25) ; chequerji=0; jj(j-1)*12+i=2; System.out.println( redplay = true;红队下棋 result(); /调用result(),判断棋局的最终结果 public void result() int temp=new int1313; tempji=jj(j-1)*12+i;9; for(int j=1; if(tempji=2&tempji+1=2&tempji+2=2&tempji+3=2&tempji+4=2) jlabel.se
10、tForeground(Color.RED); jlabel.setText(+ 蓝方获胜,连接线_ ,+(i+1)+, +(i+2)+(i+3)+(i+4) + success = true; if(tempji=1&tempji+1=1&tempji+2=1&tempji+3=1&tempji+4=1) jlabel.setForeground(Color.RED); jlabel.setText( 红方获胜,连接线 success = true; for(int j=1; if(tempji=2&tempj+1i=2&tempj+2i=2&tempj+3i=2&tempj+4i=2) j
11、label.setText( +(j+1)+(j+2)+(j+3)+(j+4)+i + ); if(tempji=1&tempj+1i=1&tempj+2i=1&tempj+3i=1&tempj+4i=1) + +tempj+1i+1=2&tempj+2i+2=2&tempj+3i+3=2&tempj+4i+4=2) jlabel.setForeground(Color.RED); + +i+1+i+2+tempj+1i+1=1&tempj+2i+2=1&tempj+3i+3=1&tempj+4i+4=1) +(i+4) for(int i=5;tempj+1i-1=2&tempj+2i-2=
12、2&tempj+3i-3=2&tempj+4i-4=2)+(i-1)+(i-2)+j+3+(i-3)+(i-4) tempj+1i-1=1&tempj+2i-2=1&tempj+3i-3=1&tempj+4i-4=1) int count=0; for(int d=0;d=100+50*(i-1)&x=100+50*(j-1)&y100+50*j) location=(j-1)*12+i; return location; public static void main(String args) wuziqi s = new wuziqi(); s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1