玩游戏?写游戏!

 

         玩游戏,我猜每个人都会偶尔玩一下,但是每次玩完就感觉时间过的好快,感觉时间都给浪费掉了,最近有一则新闻:“学长遗言”,就是讲大四的学长给学弟学妹们的真言,具体就是不要花太多时间玩游戏。这我也就不多做评价了。

        当然,相反的是,如果我们可以做游戏给自己玩,然后再玩(测试代码)的时候不断完善我们的游戏,使之更具趣味化,人性化,合理化,我想这未尝不是一种好的方式来转换我们对游戏的痴迷。

        大多数同学遨游在课本与考试之间,如果真正实践就只能望而却步,如果能够写一个游戏那就真的高大上了,有木有?今天我就浅谈我对写一些小游戏的简单看法。

        男人游戏系列,我想在大多数同学的记忆中应该都无法磨灭吧!今天我就对“是男人就撑过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); 
        }

 移动的方法我就不附代码了,现在我移动的方法还比较幼稚,也不太合理,就只是从左上到坐下移动,后面还会修改~~

至于其他对象方法也是类似的。

 

         由于现在也只是初步完成一部分的工作,所以到之后如果做好了,在进行修改!^ _ ^

 

 

 

 

 

 

 

 

 

 

 

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值