五子棋项目设计

java基本入门之后,迎来第一个挑战——五子棋设计

寒假的时候,靠着看java手册,实现了双人对战并判断输赢的功能。但是一直卡在了人机对战上面。

寒假提前一周来到学校,每天下午去蓝杰请教,自己一步一步摸索,终于花了4天时间完成了。

以下详细的叙述一下整体的设计过程:

首先是五子棋窗口界面的设计,画窗体,加按钮,这些都比较基础,主要是要重写重绘的方法,否则每次改变窗体都会使其变化。

package wuziqi;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FiveChessUI extends JPanel implements Config {
   
    /**
     *五子棋界面
     */
    private static final long serialVersionUID = 1L;
    private static int[][] chesses=new int[ROWS][COLUMNS];

    public static void main(String[] args) {
        FiveChessUI fcUI = new FiveChessUI();
        fcUI.initUI();
    }
    public void initUI () {
        JFrame jf = new JFrame();
        jf.setTitle("五子棋v0.5 by xzw");
        jf.setSize(700,650);
        jf.setLocationRelativeTo(null);

        jf.add(this,BorderLayout.CENTER);
        this.setBackground(Color.ORANGE);

        jf.setDefaultCloseOperation(3);
        this.setLayout(new FlowLayout());

        JPanel jp2 = new JPanel();
        jp2.setPreferredSize(new Dimension(100, 0));
        jp2.setBackground(Color.CYAN);

//      JButton jbuStart = new JButton("开始");
//      jbuStart.setPreferredSize(new Dimension(70, 70));

        JButton jbuReg = new JButton("悔棋");
        jbuReg.setPreferredSize(new Dimension(70, 50));

        JButton jbuR = new JButton("重来");
        jbuR.setPreferredSize(new Dimension(70, 50));

        JButton jbup2p = new JButton("双人");
        jbup2p.setPreferredSize(new Dimension(70, 70));

        JButton jbup2c = new JButton("人机");
        jbup2c.setPreferredSize(new Dimension(70, 70));

        JLabel la2 = new JLabel("当前执子:black");

        jp2.add(jbup2p);
        jp2.add(jbup2c);
        jp2.add(jbuReg);
        jp2.add(jbuR);

        jp2.add(la2);

        jf.add(jp2,BorderLayout.EAST);

        jf.setVisible(true);

        Graphics g = this.getGraphics();

        ChessListener e = new ChessListener(g,chesses,this);
        jbup2p.addActionListener(e);
        jbup2c.addActionListener(e);
        jbuReg.addActionListener(e);
        jbuR.addActionListener(e);

    }
    /**
     * 重写重绘方法
     */
    public void paint(Graphics g){
        //调用父类的重绘窗体
        super.paint(g);
        //重绘窗体的同时绘制棋盘和棋子
        drawChessTable(g);
        drawChesses(g);
    }
    //画棋盘
    public void drawChessTable (Graphics g){
        g.setColor(Color.BLACK);
        for (
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值