HeyWeGo第五周项目总结
项目内容
使用java程序开发一款扫雷游戏
游戏项目规划:
- 确定游戏中方块格子的个数
- 确定游戏中地雷的个数(初始10个),完成布雷
- 计算每个方块周围的雷数,在方块周围本身没有地雷的情况下,统计周围地雷的个数
- 若周围没有地雷则翻开周围的空白方格,直到周围有附近地雷的格子
- 设计一个检测是否挖完所有的雷的方法
- 设定左键点击为翻开
- 设定右键点开为标记
项目进展
整合并调试修改各队员分段编写的代码,游戏已实现,已经修补上周不能右键标记部分。
完整代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class frame1
extends JFrame {
JTextField text;
JLabel nowBomb, setBomb;
int BombNum, BlockNum; // 当前雷数,当前方块数
int rightBomb, restBomb, restBlock; // 找到的地雷数,剩余雷数,剩余方块数JButton start = new JButton(" 开始 ");
JPanel MenuPanel = new JPanel();
JPanel bombPanel = new JPanel();
Bomb[][] bombButton;JPanel c;
BorderLayout borderLayout1 = new BorderLayout();
GridLayout gridLayout1 = new GridLayout();
public frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
}private void jbInit() throws Exception {
c = (JPanel) getContentPane();
setTitle("扫雷");
c.setBackground(Color.WHITE);
MenuPanel.setBackground(Color.GRAY);
c.setLayout(borderLayout1);
setSize(new Dimension(700, 700));
setResizable(false);BlockNum = 144;
BombNum = 10;
text = new JTextField("10 ", 3);
nowBomb = new JLabel("当前雷数" + ":" + BombNum);
setBomb = new JLabel("设置地雷数");MenuPanel.add(setBomb);
MenuPanel.add(text);
MenuPanel.add(start);
MenuPanel.add(nowBomb);
c.add(MenuPanel, java.awt.BorderLayout.SOUTH);bombPanel.setLayout(gridLayout1);
gridLayout1.setColumns( (int) Math.sqrt(BlockNum));
gridLayout1.setRows( (int) Math.sqrt(BlockNum));
bombButton = new Bomb[ (int) Math.sqrt(BlockNum)][ (int) Math.sqrt(BlockNum)];
for (int i = 0; i < (int) Math.sqrt(BlockNum); i++) {
for (int j = 0; j < (int) Math.sqrt(BlockNum); j++) {
bombButton[i][j] = new Bomb(i, j);
//bombButton[i][j].setSize(10, 10);
bombButton[i][j].setFont(new Font("", Font.PLAIN, 14));//设置字体大小bombButton[i][j].setForeground(Color.white);
bombPanel.add(bombButton[i][j]);
}
}
c.add(bombPanel, java.awt.BorderLayout.CENTER);}
}
程序截图
成员贡献
2014336张子扬
整理游戏思路,搜集资料,编写自己负责部分的代码并进行分析。
20145237方浩南
对项目现状提出建议和意见,编写自己负责部分的代码并分析。
20145321曾子誉
编写自己负责部分的代码,汇总整理各代码段并负责更新本周的博客。
20145225唐振远
编写自己负责部分的代码并分析,对目前整理后的总代码修正和改进。