Java五子棋进一步开发

//这次五子棋添加了下棋范围的限定和提示窗口,开始游戏和结束游戏的按钮,还有棋盘绘制,即棋盘不会消失的功能

 

 

import javax.swing.*;
import java.awt.*;
public class goUI extends JPanel{
     GoListener gol = new GoListener ();
     int X = 50, Y = 50, SIZE = 46, ROW = 15, COL = 15;
     Graphics g;
     public void showUI(){
         JFrame pang =new JFrame();
         pang.setTitle("AI五子棋");
         pang.setSize(900,800);
         pang.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
         pang.setLocationRelativeTo(null);
         Color c1=new Color(113, 154, 255);
         Color c2=new Color(246, 150, 31);

         JPanel btnpane =new JPanel();
         btnpane.setBackground(c1);
         Dimension dimW=new Dimension(125,0);
         btnpane.setPreferredSize(dimW);
         JPanel chesspane =this;
         chesspane.setBackground(c2);

         JButton btn1=new JButton("开始游戏");
         btn1.setBounds(20,20,100,35);
         btnpane.add(btn1);
         btn1.addActionListener(gol);
         //添加的按钮,要把鼠标监听器加到按钮上才能生效

         pang.add(btnpane,BorderLayout.WEST);
         pang.add(chesspane,BorderLayout.CENTER);
         pang.setVisible(true);
         chesspane.addMouseListener (gol);
         gol.g = chesspane.getGraphics ();}
         //绘制棋盘方法改成了paint: 
         paint方法
         1:在窗体可视化的时候会执行一次
         2: 拖动改变窗体尺寸时 会执行 
         3: 最小化 最大化的时候会执行
         public void paint(Graphics g){
         Color c2=new Color(246, 150, 31);
         g.setColor(c2);
         g.fillRect (0,0,getWidth (),getHeight ());
         g.setColor (Color.BLACK);
         for(int i = 0; i < 16; i++){
            g.drawLine (X, Y + i * SIZE, X + SIZE * COL, Y + i * SIZE);
            g.drawLine (X + i * SIZE, Y, X + i * SIZE, Y + SIZE * ROW);
          }}
         public static void main(String[] args){
             goUI go = new goUI();
             go.showUI();

     }}

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class GoListener implements MouseListener , ActionListener {
    int X = 50, Y = 50, SIZE = 46, ROW = 15, COL = 15;
    Graphics g;
    int chessFlag = 0;
    public void mouseClicked(MouseEvent e){};
    //添加按钮,控制游戏的开始和结束
    public void actionPerformed(ActionEvent e){
        System.out.println("按钮被点击了");
        String btnStr = e.getActionCommand ();
        JButton btn = (JButton) e.getSource ();
        if(btnStr.equals ("开始游戏")){
            chessFlag=1;
            btn.setText ("结束游戏");
        }else if(btnStr.equals ("结束游戏")){
            chessFlag=0;
            btn.setText ("开始游戏");
        }
    }
    @Override


    public void mousePressed(MouseEvent e){
        //对游戏是否开始进行判断
        if(chessFlag==0){
            System.out.println ("游戏未开始");
            JOptionPane.showMessageDialog (null,"游戏未开始");
        return;}
        int x=e.getX();
        int y=e.getY();
        x=(x-X+SIZE/2)/SIZE;
        int H=x;
        x=X/2+x*SIZE;
        y=(y-Y+SIZE/2)/SIZE;
        int S=y;
        y=Y/2+y*SIZE;
        //对鼠标的点击范围进行判断,限制鼠标点击范围
        if(H<0||H>15 || S<0||S>15){
            System.out.println ("此处不能下棋");
            JOptionPane.showMessageDialog (null,"此处不能下棋");
            return;}
        if(chessFlag == 1){
            chessFlag = 2;
            g.setColor (Color.BLACK);
        } else if(chessFlag == 2){
            g.setColor (Color.WHITE);
            chessFlag = 1;}
            g.fillOval (x, y, 42, 42);}

    public void mouseReleased(MouseEvent e){};


    public void mouseEntered(MouseEvent e){};


    public void mouseExited(MouseEvent e){};
};
//游戏未开始点击棋盘的提示
//鼠标在棋盘范围外点击的提示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值