整体思路框架
首先绘制窗口,窗户绘制完成向窗口里面添加背景,在逐步向背景里面绘制图形,绘制玩障碍物之后,添加马里奥,马里奥绘制结束,添加敌人,逐步完成类的内容添加,之后添加积分与死亡,最后添加背景音乐
设计一个初始界面,在开始后出现马里奥。当马里奥踩死敌人,碰到金币,顶到砖块,都会进行加分。当马里奥碰到敌人就会死亡,当马里奥碰到旗子到达城堡后游戏结束;
1.背景类 2.马里奥类3.敌人类 (4.抽象类 5.数据类)
在设计类的时候可以注意到,马里奥和敌人它们都拥有几个相同的属性和方法。例如XY坐标,长度、宽度、速度,移动方法,绘制方法等。因此可以建立一个抽象的类作为父类,马里奥类和敌人类继承父类的属性和方法,并重写其中的抽象方法,为我们的代码编写提供方便。
一、编写入口类(初始化界面)
首先,建立一个入口类(MainFrame)继承JPanel.实例化一个窗体,并设置窗体的各种属性。
这时候,我们已经拥有了一个界面。其中,初始化的方法,其中包括了监听和线程两个内容。当然,可以将监听和线程分开来写成监听类和线程类。然后创建一个类,做主线程,在main方法里将该窗体类实例化,然后就实现了一个游戏窗体。
二、绘制图像
通过导入图片,对图片进行封装,来后进行使用图片;使用ImageIO.read来读取图片,使用graphics.drawImage来绘制图片将图片绘制到窗口上
三、背景类
根据思路,在初始化了界面之后我们需要一个背景类。即在界面中绘制背景图,通过图像坐标的改变,实现背景不断的移动,造成马里奥不断前进的状态景象。通关判断关卡数来判断背景图片,以达到更换背景的作用。
使用obstacleList.add向背景中添加障碍物逐渐形成关卡
四,抽象类
马里奥和敌人具有的几个共同的属性和方法为:
X和Y的坐标
图片的宽度和高度
绘画方法(根据需要重写)
移动方法
是否碰撞方法
获取图片的方法(抽象方法需要重写)
是否死亡和设置的方法
是否出界的方法
我们需要添加一个监听器类,进行关闭监听
监听器不光能关闭程序,人物的移动也需要键盘的监听触发事件来进行移动,使用 this.addKeyListener的方法进行触发判断。
通过监听来达到移动马里奥的效果public void keyTyped(KeyEvent e)
注意:移动是人物类移动,所以在人物类中这样添加
并且在人物类中创建一个判断方向移动的方法,
将X,Y轴的数值进行变更移动。
在将4个方向属性设置为布尔类型去判断,当我去按下俩个按键后触发斜走。