java 五子棋 项目_Java小项目——五子棋

一、需求分析

1、界面设计

左:棋盘,单独写一个GamePanel类

右:控制栏panel2

2、功能

2.1 棋盘

首先绘制一个棋盘。考虑重绘,将该绘制写在paint()重写中。

2.2 下棋

用户点击相应位置:计算出棋子的位置,绘制棋子,并存储棋子位置。同样将该绘制写在paint()重写中。

2.3 胜利

胜利判断:横向、竖直、斜向判断

2.4 电脑下棋

使用xxx实现

二、实现

0、Config 常数接口

存在一些数为常量,不须改变。

需要时直接继承该接口。

1、绘制棋盘

我们将UI分为两个板块,左边为游戏区域

将绘制棋盘的功能代码,放在paint()函数中,解决重绘功能

public void paint(Graphics gr){

super.paint(gr);

System.out.println("重绘");

//绘制棋盘

for(int i=0;i

gr.drawLine(X0,Y0+SIZE*i,X0+SIZE*(LINE-1),Y0+SIZE*i);//竖向画线

gr.drawLine(X0+SIZE*i,Y0,X0+SIZE*i,Y0+SIZE*(LINE-1));//横向画线

}

}

2、下棋功能

三、源码

0、

package com.java7.wuziqi0712_win;

public interface Config {

public static final int X0=30;

public static final int Y0=30;

public static final int SIZE=40;//棋盘间隔大小

public static final int LINE=19;//棋盘线条数目

//保存棋子,二维数组对应第i,j个,是否存在棋子,不存在为0;若存在,黑棋为1,白棋为0

public int chessArray[][] = new int[LINE][LINE];

}

1、GameUI

package com.java7.wuziqi0715_ai;

import javax.swing.*;

import java.awt.*;

public class GameUI implements Config {

public static void main(String args[]){

GameUI game = new GameUI();

game.showUI();

}

public void showUI(){

//1.建立面板

JFrame jf = new JFrame();

jf.setTitle("五子棋1.0");

jf.setSize(X0*2+SIZE*(LINE-1)+130,X0*2+SIZE*(LINE-1)+22);

jf.setLocationRelativeTo(null);

jf.setDefaultCloseOperation(3);

//2.绘制棋盘

GamePanel gp = new GamePanel();

jf.add(gp);

//3.绘制按钮

JPanel jp2 = new JPanel();

jp2.setBackground(Color.WHITE);

jp2.setPreferredSize(new Dimension(130,0));

//jp2.setBorder(BorderFactory.createLineBorder(Color.red));//设置面板边框颜色

jf.add(jp2,BorderLayout.EAST);

JButton jb1 = new JButton("重新开始");

JLabel lb1 = new JLabel("\n--------\n");

JButton jb2 = new JButton("玩家对战");

JButton jb3 = new JButton("悔棋");

JLabel lb2 = new JLabel("\n--------\n");

JButton jb4 = new JButton("人机对战");

jp2.add(jb1);

jp2.add(lb1);

jp2.add(jb2);

jp2.add(jb3);

jp2.add(lb2);

jp2.add(jb4);

JRadioButton jrb1= new JRadioButton("玩家先手",true);

JRadioButton jrb2= new JRadioButton("电脑先手");

//单选按钮,互斥,一次只能选择一个

ButtonGroup bg = new ButtonGroup();

bg.add(jrb1);

bg.add(jrb2);

jp2.add(jrb1);

jp2.add(jrb2);

jf.setVisible(true);

//3.下棋 :在jf上加鼠标监听器

//画笔

Graphics gr = gp.getGraphics();

//创建监听器对象

GameMouse mouse = new GameMouse(gr,chessArray,jf);

//给面板加上监听器

gp.addMouseListener(mouse);

jb1.addActionListener(mouse);

jb2.addActionListener(mouse);

jb3.addActionListener(mouse);

jb4.addActionListener(mouse);

jrb1.addActionListener(mouse);

jrb2.addActionListener(mouse);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值