本文主要是介绍玩游戏?写游戏!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
玩游戏,我猜每个人都会偶尔玩一下,但是每次玩完就感觉时间过的好快,感觉时间都给浪费掉了,最近有一则新闻:“学长遗言”,就是讲大四的学长给学弟学妹们的真言,具体就是不要花太多时间玩游戏。这我也就不多做评价了。
当然,相反的是,如果我们可以做游戏给自己玩,然后再玩(测试代码)的时候不断完善我们的游戏,使之更具趣味化,人性化,合理化,我想这未尝不是一种好的方式来转换我们对游戏的痴迷。
大多数同学遨游在课本与考试之间,如果真正实践就只能望而却步,如果能够写一个游戏那就真的高大上了,有木有?今天我就浅谈我对写一些小游戏的简单看法。
男人游戏系列,我想在大多数同学的记忆中应该都无法磨灭吧!今天我就对“是男人就撑过20秒”这个游戏讲讲我自己的理解和实现。
(1)你要准备好导弹的图片,飞机的图片,碰撞后的效果图片,背景图片,然后用一个文件夹images保存。
(2)准备一个背景音乐以及碰撞后产生的效果音效用audio文件夹保存
前两步很简单有木有!
(3)我们需要将用鼠标来控制飞机的行动,当然用键盘也可以
(4)碰撞效果,这里我们需要判断导弹(圆形)的圆心和飞机的圆心距是否大于飞机和导弹的实际距离,如是则结束游戏,结束的弹出窗口
(5)时间计数,在左上角显示时间
(6)导弹出现的位置,从边框随机出现,出现50个,具体的导弹的轨迹可以自己设置
(7)界面
菜单栏, 开始,结束,暂停,游戏设置
难度设置:简单,中等,困难。通过设置小球的移动方法
历史记录:最高时间
游戏帮助等
(8)当然如果觉得死的太快也可以设置子弹碰到飞机后,子弹消失,当然我们在这里规定飞机有一定量的血,低于一定值时就结束游戏
具体实现:
首先要将我们需要的数据存入GameData类中,便于修改,测试数据
接着写好实体类,所有实体都继承Entity类,本类中有未实现的move()和draw()方法,由子类实现,子类包括背景,子弹,飞机等
其次要写主函数,写好界面,启动线程,添加实体,绘制实体
在接下来是监听方法,实现菜单中的开始,暂停,结束,继续方法。
然后是线程方法,其中实例化一个Entity类的对象,然后调用move()方法
最后就是测试代码。
数据类:
public class GameData {//窗体的大小public static final int width = 500;public static final int height = 400;//子弹的大小public static final int bwidth = 5;public static final int bheight = 5;....}
实体类
public class Entity {public void draw(Graphics g){}public void move(){ System.out.println("进入Entity的move方法*************************");}}
设置鼠标光标为飞机图像
Toolkit toolkit = Toolkit.getDefaultToolkit();Cursor cursor = toolkit.createCustomCursor(GameData.icon1.getImage(), new Point(16,16), "MyCursor");jP.setCursor(cursor);
监听中,开始,暂停,结束,继续实现:我就列出一种的代码,其他的类似
if(e.getActionCommand().equals("结束")){//循环list为空while(!GameData.list.isEmpty()){//循环删除导弹并设置当前状态Entity en = GameData.list.remove(0);cn.setStop(true); }}
子弹中的绘制方法,x,y开始位置可以由自己设置,我这里用的是随机类Ramdom对象的nextint()方法随机产生
public void draw(Graphics g){g.drawImage(GameData.icon.getImage(), x, y,GameData.bwidth, GameData.bheight, null); }
移动的方法我就不附代码了,现在我移动的方法还比较幼稚,也不太合理,就只是从左上到坐下移动,后面还会修改~~
至于其他对象方法也是类似的。
由于现在也只是初步完成一部分的工作,所以到之后如果做好了,在进行修改!^ _ ^
这篇关于玩游戏?写游戏!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!