Java语言程序设计实训报告
(打地鼠游戏)
学号:
姓名:
班级:
一、实训题
“打地鼠”游戏程序设计
二、实训容
1.打地鼠的界面设计(含截图、代码)
package .iotek.mouse;
import java.awt.Color;
import java.awt.Font;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class PlayMouse extends JFrame implements Runnable{ private int num = 0;
private JLabel back;
private JLabel [] mouses;
private ImageIcon imgMouse;
private JLabel jtf;
public PlayMouse(){
this.setResizable(false);//不能修改大小。
this.getContentPane().setLayout(null);
this.setTitle("打地鼠游戏");
this.setBounds(400,200,1000, 600);
back= new JLabel();
ImageIcon icon = new ImageIcon(this.getClass().getResource("1.jpg"));
back.setIcon(icon);
back.setBounds(0, -10,1000,600);
this.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefault Toolkit().getImage("src//iotek/mouse/4.png"),new Point(),"self"));
imgMouse = new ImageIcon(this.getClass().getResource("3.jpg"));
mouses = new JLabel[6];
for(int i=0;i<6;i++){
mouses[i] = new JLabel();
mouses[i].setSize(imgMouse.getIconWidth(),
imgMouse.getIconHeight());
//mouses[i].setIcon(imgMouse);
mouses[i].addMouseListener(new MouseListener() {
Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}
Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
}
Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
}
Override
public void mouseClicked(MouseEvent e) {//加分功能Object object = e.getSource();
if(object instanceof JLabel){
JLabel label =(JLabel) object;
if(label.getIcon()!=null){
num++;
jtf.setText("你的得分是:"+num+"分");
}
label.setIcon(null);
}
}
this.getContentPane().add(mouses[i]);
}
jtf = new JLabel();
jtf.setBounds(350,250,200,70);
jtf.setFont(new Font("",20,22));
jtf.setForeground(Color.black);
jtf.setText("你的得分是:分");
mouses[0].setLocation(100, 5);
mouses[1].setLocation(400, 5);
mouses[2].setLocation(700, 5);
mouses[3].setLocation(100, 300);
mouses[4].setLocation(400, 300);
mouses[5].setLocation(700, 300);
this.getContentPane().add(jtf);
this.getContentPane().add(back);
this.setVisible(true);
}
Override
public void run() {
while(true){
try {
Thread.sleep(500);
int index = (int) (Math.random()*6);
if(mouses[index].getIcon()==null){
mouses[index].setIcon(imgMouse);
Thread.sleep(800);//反应时间,可以因为难度的不同,设置不同的长度。
if(mouses[index].isShowing()){
mouses[index].setIcon(null);
}
}
} catch (InterruptedException e) {
// TODO 自动生成的catch 块
e.printStackTrace();
}
}
}
public static void main(String[] args){
PlayMouse P1 = new PlayMouse();
Thread t1 = new Thread(P1);
t1.start();
}
}
2.打地鼠的逻辑设计
1.游戏中的地洞是一图片,从本机文件中选择上传到eclipse中,固定在指定位置显示,地洞在游戏中没有任何动作,所以没有程序需要编写;
2.设计本程序的关键在于实现地鼠的随机出现,几秒钟延时后,便立即消失了,游戏操作者能够控制鼠标移动锤子敲打到地鼠,发生两类碰撞,形成加分机制。
三、心得体会
在学习这门课的过程中,我感受到了自己亲自动手编程序、调程序的重要性,我们要熟悉java的语法、体会如何进行调试的思想,最好的一个手段就是自己动手编程、调试,这会比我们一味的看书效果好得多。当然在这个编程过程中遇到了很多困难,其中调试带来的困难让我无法忘记,在调试程序的同时,我也总结出来了一些调试的小技巧,让我在java语言课程设计中也受用匪浅。