华北科技学院计算机学院综合性实验
实 验 报 告
课程名称 JAVA程序设计 实验学期 2014 至 2015 学年 第 1 学期 学生所在院部 计算机学院 年级 2013级 专业班级 计科 学生姓名 学号
任课教师 鞠宏军 实验成绩
计算机学院制
华北科技学院计算机系综合性实验报告
《Java程序设计》课程综合性实验报告
开课实验室:基础七 2015 年 12 月 1 日 实验题目 一、实验目的 基于java的模拟撑过30秒游戏 通过编写Java的应用系统综合实例——模拟撑过30秒,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。 程序使用Eclipse集成开发环境完成,熟悉并掌握在Eclipse开发环境下编写Java程序。 二、设备与环境 硬件:多媒体计算机 软件:Windows系列操作系统、JDK开发包、Eclipse开发环境 三、实验内容及要求 1.实验要求 1、简单的模拟撑过30秒游戏程序分析 2、系统的功能模块设计。要求画出功能模块框图。 3、系统的详细设计 4、应用到的关键技术的详细说明。可附相关的关键程序代码。 5、系统页面设计要求清晰、实用、美观。 2.实验内容 I.功能分析 (1). 本程序为java课程设计。用java编写,采用了Swing 界面。其中运用了Runnable接口、java的awt.events消息处理。实践了java课程多方面的内容。总代码量474行。 (2). 本程序实现了主要游戏的主要方面,窗口固定大小,子弹数70个。主要实现了如下算法:人物移动方向。子弹随机发射。当人物撞到子弹后游戏结束。控制一个计数器产生计时效果的计时器算法。以及用户鼠标左键单击按钮的事件处理方法。 第 1 页
华北科技学院计算机系综合性实验报告 II.功能结构分析 程序文件说明 内容 主程序类 人物移动类 子弹及计时类 文件 Game.java Move.java Threads.java 说明:在java环境下,运行java Game启动程序。程序框架都在Game.java中。Game.java 还包括人物碰到子弹死亡后的重新游戏按钮。 III.代码分析 (1)运行java Game启动程序,打开主界面。出现人物和子弹。
第 2 页
华北科技学院计算机系综合性实验报告 窗口设置代码如下: private void initialize() { } this.setSize(700, 700); this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(1); } }); this.setResizable(false); this.setContentPane(getJPanel()); this.setTitle(\传奇小游戏!(模拟撑过30秒的小DEMO)\this.setVisible(true); (2). 进行游戏,采用子弹随机方向发射,计时器开始计时,键盘上下左右移动人物,操作人物不撞到子弹。 a. 键盘操作人物移动代码如下: private JButton getJButton() {
if (jButton == null) { jButton = new JButton(); jButton.setBounds(new Rectangle(320, 320, 30, 30)); jButton.setBackground(new Color(1, 1, 1)); p = jButton.getLocation(); x = p.getX(); y = p.getY(); jButton.setIcon(new ImageIcon(fileLoc)); jButton.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent e) { if(e.getKeyCode()==10){ if(!gamexunhuan){ jButton1.setVisible(false); jLabel.setVisible(false); reset(); } } if (e.getKeyCode() == 37) {//左 kleft = false; } if (e.getKeyCode() == 38) {//上 kup = false; } if (e.getKeyCode() == 39) {//右 kright = false; } if (e.getKeyCode() == 40) {//下 kdown = false; } } public void keyPressed(java.awt.event.KeyEvent e) { if (e.getKeyCode() == 37) { kleft = true; 第 3 页
华北科技学院计算机系综合性实验报告 } } if (e.getKeyCode() == 38) { kup = true; } // 触发按右键 if (e.getKeyCode() == 39) { kright = true; } if (e.getKeyCode() == 40) { kdown = true; } } }); } return jButton; b. 计时器代码如下: while (gamexunhuan) { try { zx += zzx; zy += zzy; jb.setLocation(zx, zy); if (zx + 5 > x & zx + 5 < x + 30 & zy + 5 > y & zy + 5 < y + 30) { jButton.setIcon(new ImageIcon(fileLoc1)); gamexunhuan = false; first = true; jButton1.setVisible(true); jLabel.setVisible(true); lasttime = new Date().getTime(); Date gametime = new Date(lasttime-firsttime); int min =0; int sec =0; min = gametime.getMinutes(); sec = gametime.getSeconds(); String endtime = \ if(min!=0){ endtime=min + \分 \秒\ }else{ endtime=sec + \秒\ } jLabel.setText(\用时:\ break; } // 超出边线停止循环 if (zx > 700 | zy > 700 | zx < 0 | zy < 0) { break; } Thread.sleep(60); } catch (InterruptedException e) { // TODO 自动生成 catch 块 e.printStackTrace();
第 4 页