Java项目(连连看小游戏)

  • 格式:doc
  • 大小:148.00 KB
  • 文档页数:13

1 《Java程序设计实训》 连连看小游戏 一、实训名称 《连连看小游戏》 二、实训项目的目的和功能 本次实训是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JAVA的应用系统综合实例,来掌握Java语言编程技巧。 具体要求有以下几点: 1. 问题的描述与程序将要实现的具体功能。 2. 程序功能实现的具体设计思路或框架,并检查流程设计。 3. 代码实现。 4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。 5. 设计小结。

三、实训项目的开发环境和所使用的技术 使用Java核心API技术,利用Eclipse或NetBeans、JBuilder集成开发环境完成实训项目,界面友好,代码的可维护性好,有必要的注释和相应的文档。

四、实训地点、日程、分组情况 实训地点: 分组情况: 日 程: 第一阶段: 1.班级分组,选定课题,查阅相关资料 半天 2.划分模块、小组成员分工 半天 3利用CASE工具进行系统设计和分析,并编制源程序 3天 第二阶段:上机调试,修改、调试、完善系统 1天 第三阶段:撰写、上交课程设计报告,上交课程设计作品源程序(每人一份) 1天 2

实训成绩 评语

一.选题与分工 选题:连连看小游戏

分工: 姓名 所做工作 查阅相关的书籍,搜集资料 编写文档 程序编码 课程设计总结

二.问题描述及设计思路 1. 问题描述:连连看小游戏。设计JDK界面的连连看小游戏,用户可以通过点击鼠标消除相同数字来结束游戏。 2. 设计思路:本程序功能不是太复杂,主要工作是界面的设计。为减少通信接口设计,所有功能均在一个类中实现。程序中主要函数列表如下:

函数名称 函数功能简介 public class lianliankan implements ActionListener() 构建主面板

public void init() 程序入口 public void randomBuild() 随机数的建立 public void fraction() 实现计分 public void reload() 实现游戏重置 private void initTimer() 实现计时

三.具体设计 1.程序代码 import javax.swing.*; import java.awt.*; 3

import java.awt.event.*; public class lianliankan implements ActionListener { JFrame mainFrame; // 主面板 Container thisContainer; static long startTime, endTime; static Timer timer = null; int maxTime; int time = 0; JPanel centerPanel, southPanel, northPanel; // 子面板 JButton diamondsButton[][] = new JButton[6][5];// 游戏按钮数组 JButton exitButton, resetButton, setButton, newlyButton; // 退出,重列,设置,重新开始按钮 JLabel fractionLable = new JLabel("0"); // 分数标签 JLabel timeLable = new JLabel("0");// 时间标签 JButton firstButton, secondButton; // 分别记录两次被选中的按钮 int grid[][] = new int[8][7];// 储存游戏按钮位置 static boolean pressInformation = false; // 判断是否有按钮被选中 int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg = 0, validateLV; // 游戏按钮的位置坐标 int i, j, k, n;// 消除方法控制

public void init() { mainFrame = new JFrame("JKJ连连看"); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLayout()); centerPanel = new JPanel(); southPanel = new JPanel(); northPanel = new JPanel(); thisContainer.add(centerPanel, "Center"); thisContainer.add(southPanel, "South"); thisContainer.add(northPanel, "North"); centerPanel.setLayout(new GridLayout(6, 5)); for (int cols = 0; cols < 6; cols++) { for (int rows = 0; rows < 5; rows++) { diamondsButton[cols][rows] = new JButton(String .valueOf(grid[cols + 1][rows + 1])); diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } 4

} exitButton = new JButton("退出"); exitButton.addActionListener(this); resetButton = new JButton("重列"); resetButton.addActionListener(this); setButton = new JButton("设置"); setButton.addActionListener(this); newlyButton = new JButton("再来一局"); newlyButton.addActionListener(this); southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(setButton); southPanel.add(newlyButton); fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable .getText()))); northPanel.add(fractionLable); timeLable .setText(String.valueOf(Integer.parseInt(timeLable.getText()))); northPanel.add(timeLable); mainFrame.setBounds(280, 100, 500, 450); mainFrame.setVisible(true); }

private void repaint() { // TODO Auto-generated method stub

}

public void fraction() { fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable .getText()) + 100)); }

public void time() { timeLable.setText(String .valueOf(Integer.parseInt(timeLable.getText()) + 100)); }

public void reload() { 5

initTimer(); startTime = System.currentTimeMillis()/1000; int save[] = new int[30]; int n = 0, cols, rows; int grid[][] = new int[8][7]; for (int i = 0; i <= 6; i++) { for (int j = 0; j <= 5; j++) { if (this.grid[i][j] != 0) { save[n] = this.grid[i][j]; n++; } } } n = n - 1; this.grid = grid; while (n >= 0) { cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); while (grid[cols][rows] != 0) { cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); } this.grid[cols][rows] = save[n]; n--; } mainFrame.setVisible(false); pressInformation = false; // 这里一定要将按钮点击信息归为初始 init(); for (int i = 0; i < 6; i++) { for (int j = 0; j < 5; j++) { if (grid[i + 1][j + 1] == 0) diamondsButton[i][j].setVisible(false); } } }

public void estimateEven(int placeX, int placeY, JButton bz) { public void xiao() { // 相同的情况下能不能消去。 if ((x0 == x && (y0 == y + 1 || y0 == y - 1))