游戏尝试捕捉

首先声明一下,我学java的时间可能不会比你早太多(十一假期后开始),所以有些分析可能会有错误。但总体情况应该是正确的。

从mian方法开始,这是程序的入口。?首先,生成一个TestHoney对象,它是从Frame类派生的。在mian中,这个窗口的属性首先用setSize设置,这里是背景颜色和大小,setVisible是显示TestHoney。那么Graphics g = th . get Graphics();获取Graphics的一个实例,因为Graphics是一个抽象类,不能直接使用new Graphics()生成对象。其实这里th . get graphics();获得了一个图形子类的例子。然后生成炮弹的实例。让我们进入循环。在循环中,先休眠(4),先休眠4毫秒,也就是这个循环不能一直连续执行,这样CPU会发疯。而且在sleep(4)之后,执行一次下面的代码,实现图像的重绘和信息的检测。每4毫秒重画一次。很快,但是没必要。(另外,这里的运动画面是每4毫秒在屏幕上重画一次。因为间隔时间短,眼睛感觉画面是连续运动的。).。Sleep可能抛出异常,并尝试捕获异常。cb.paint(g,x 1);每4毫秒做一次是最重要的。增加一个额外的参数x1的目的是将蓝色椭圆的X坐标值传递给炮弹,这样红点在不发射的时候会和椭圆留在一起。

炮弹类:

静态int y=560,分值= 0;这里的Y应该是“子弹”,是图片中“红点”的Y坐标(以像素为单位)。Score就是分数,int temp=240,应该是初始化红点的x坐标值,最初是240。然后得到

ClassLoader对象主要用于下面的AudioClip对象,在加载声音文件时使用。?下面是画图法,用于画图和判断。首先,定义了int t。根据后来的代码可知,T是用来记录图片中那些黑点的行数的。if(y = = 560)temp = x2;当y等于560时,表示红点没有被击发。从下面的代码可以看出,当红点击中黑点时,也使得y==560,也就是说当子弹击中黑点时,自动回到初始位置。下面是绘图部分,在指定位置绘图。注意这里有一个y-,注意每4毫秒调用一次paint方法,也就是每4毫秒调用一次y-,使红点的y坐标减少1,实现了红点的上移。下面是一堆判断,就是判断红点有没有撞到黑点。如果有,红点将返回到它的初始位置(y=560)。如果y==0,也就是还没到黑点,屏幕(程序窗口)已经打好了,所以会回到初始位置。

TestHoney类

Static int a=200,这是蓝色椭圆的初始x值。用一个两位数组来画黑点,等于1,表示那个位置有黑点,否则没有黑点。ClassLoader和AudioClip也用于产生声音。这里有两个addlisteners。第一个,addWindowListener,是监控TestHoney添加到窗口的(因为TestHoney是从Frame类派生的,所以可以添加这个)?它重写了WindowAdapter中的windowClosing方法。实际上WindowAdapter类实现了WindowListener中的所有抽象方法,但都是空的实现,也就是写完方法声明后,在下面加一个{},在{}里什么都不写。如果不使用WindowAdapter,直接使用WindowListener。因为它是抽象的,所以你需要实现里面所有的方法,但是很多方法对这个程序是没用的。比如里面有windowClosed方法,这个没用,但是还是要写。所以直接用WindowAdapter,直接重写你想用的方法就行了。?这里重写了windowClosing方法,即鼠标点击程序右上角的红色“X”实现关闭功能。如果不添加,则“X”不会关闭程序。

在下面添加KeyLIstener以添加键盘监视。VK _右指键盘上的→键,即按下→后,x 1+= 10;(蓝色椭圆向右移动)其他人也是如此。注意,其中有一个repaint()。在public void Keypressed(KeyEvent e)中,当键盘上的某个键被按下时自动调用该方法,每按下一次就调用一次repaint(),即实现重绘。TestHoney从父类继承了这个方法。这里好像没写,但是继承了,就是重画刷新图像。

然后是paint()方法,就是按要求画黑点。没什么好说的。

综上所述,就是如图所示的初始情况。按“→”或“↓”分别左右移动,按“SPACE”(即空格键)发射。(按下后y=559。《炮弹》中,判断只要Y小于560,Y-就会启动,红点不断上移。)判断红点的位置和黑点的位置。打到黑点后,红点Y变成560,也就是回到椭圆,黑点位置对应的二维数组的值变成0,表示那个地方没有黑点。如果没有打到红点,因为y-一直执行,y最后达到0,然后又变成560,回到椭圆,完成一个循环。

它每4毫秒重绘一次,并不断更新。