Java实战: Plane War(飞机大战)

Plane-War

github链接
Java实战: Plane War(飞机大战)

游戏说明:

玩家的飞机最初出现在底部*,通过方向键控制飞机移动,通过空格键发射子弹。当玩家的飞机被击中时,飞机将重新回到底部*,同时更换为可以发射两发子弹的飞机,当玩家被击中三次时,游戏结束。同时,飞机共有两组,若期间玩家的飞机都未被击中,则玩家获得胜利。

实现效果:

Java实战: Plane War(飞机大战)
Java实战: Plane War(飞机大战)
Java实战: Plane War(飞机大战)

GamePlay类:

控制游戏的循环和面板的刷新,当在checkEvent中达到一定条件时更改stop_flag标志,结束游戏的循环

gameFrame类:

作为一个游戏框架容器,用来添加菜单栏,相应的菜单和菜单项和游戏面板类。其中,菜单栏提供一些游戏属性的设置,游戏的说明等内容

gamePanel类:

作为游戏的主面板,用于添加飞机,敌机,飞机子弹,敌机子弹等游戏元素,同时完成对这些元素在指定位置的绘制,这个类同时创建好两个标签game_stop和game_win,并在其中添加图片。当玩家被击中三次时,将game_stop标签加入面板,当玩家获胜时将game_win标签加入面板。同时包含一个处理键盘事件的内部类,用于控制玩家飞机的移动。

Plane类:

用于创建玩家飞机的类,主要包含坐标,飞机图像,飞机速度,图像的宽度和高度等属性。根据面向对象的原则,在Plane类中还包括对飞机位置更新的方法。

Bullets类:

用于创建玩家飞机发射子弹的对象,也是属于Plane类的属性,不过作为一个独立的类会更容易操作和设置。同时,由于子弹对象的创建是由于gamePanel中处理键盘事件来创建。所以,将其作为一个独立类。主要包括坐标,子弹的宽度和高度,速度等属性。

Enemy类:

用于创建敌机对象,主要包括坐标,敌机宽度高度,速度,move_count(记录敌机移动次数,到达一定次数后发射子弹,每个对象都有这个属性),enemy_group(用于记录敌机编组,依据此属性来选择加载敌机的图像,飞机位置的设置及飞机运动模式的选择)。在此类中有updatePosition方法,它依据enemy_group属性来更新敌机编组的位置。同时,由于敌机子弹是基于move_count属性来设置,所以在此类中包含子弹这一属性,表现为用动态数组来存储EnemyBullet对象。

EnemyBullet类:

用于创建敌机子弹对象,主要包含坐标,宽度高度,速度等属性,包含更新子弹位置的方法。

checkEvent类:

用于做各种碰撞检测,因此需要包括玩家飞机对象,玩家子弹对象,敌机对象,敌机子弹对象,同时还要有游戏主面板对象(在做检测时,若玩家飞机被击中,需要通过面板来重新生成飞机对象)(这里不包括边界检测,边界检查对应类的updatePosition类中来实现)。