20170811 - 今日技能封装 - A
Posted 清及
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20170811 - 今日技能封装 - A相关的知识,希望对你有一定的参考价值。
1 涉及到对文件的处理,必须?
做异常处理。
2 消敌机游戏编写过程记录
分别建8个类,并初始化(主类构造为测试用)
画窗口,使用swing中的Jframe等。
//项目分析
①分析项目内有什么对象
敌机,蜜蜂,子弹,英雄机
②抽取共同特征到父类中
敌机,蜜蜂,子弹,英雄机皆有
x,y坐标,宽,高,图片属性→FlyObject
③抽取部分子类共有行为
蜜蜂有奖励行为,抽取奖励接口
敌机有扣分行为,抽取惩罚接口
子弹无
英雄机亦无
思维漏洞:
① 新建项目后,新建包类命名方式为 域名反写+项目名 ,漏了后者
② 新建构造,方法公开化,属性私有化,在前面加public,应第一时间加上
③ 在主类中新建对象后直接赋值提示报错——不可直接在类体内赋值,可以赋初始值,但具体的必须到构造中赋值
private FlyObject[] fo = new FlyObject[2];
fo[0] = new Bee();//就立刻下面赋值了!?
fo[1] = new Enemy();
④private FlyObject[] fo = new FlyObject[2];→private FlyObject[] fo = {};
⑤
width = image.getWidth();
eight = image.getHeight();
image = ShootGame.bee;
⑥
public void paintBullet(Graphics g){
for(int i = 0;i < bullets.length;i++){
Bullet f = bullets[i];
g.drawImage(f.image,f.x,f.y,null);
}
}
public void paintBee(Graphics g){
g.drawImage(fo[0].image,0,0,null);
}
⑦(复制粘贴注意)蜜蜂,敌机一直显示在下方→height写在x下面,于是默认便是0
⑧x = rand.nextInt(654-this.width); → rand.nextInt(ShootGame.WIDTH-this.width);
⑨思路要一直都极其清晰,每一步应该做什么,应该怎么做脑中的概念都要非常清楚(try...catch...直接放在了外面)
⑩使用random方法获取整数时,必须用nextInt
image = ShootGame.bee;
width = image.getWidth();
eight = image.getHeight();
思维记录
① 写到英雄机图片属性时,想到需要建主类,通过静态区调英雄机图片
② Bee重写获得奖励方法——返回一个奖励类型的数字,因此需要定义typeNum
3 提示需要 insert ; 有可能是什么原因?
变量没有声明类型
1 涉及到对文件的处理,必须? | |
做异常处理。 | |
2 消敌机游戏编写过程记录 | |
分别建8个类,并初始化(主类构造为测试用) | |
画窗口,使用swing中的Jframe等。 | |
在主类中新建各个对象 | |
三个父类 | |
奖励 飞翔 敌人 | |
子类 | |
敌机继承飞翔实现敌人,下落速度 | |
子弹继承飞翔 | |
英雄机 | |
蜜蜂 | |
//项目分析 | |
①分析项目内有什么对象 | |
敌机,蜜蜂,子弹,英雄机 | |
②抽取共同特征到父类中 | |
敌机,蜜蜂,子弹,英雄机皆有 | |
x,y坐标,宽,高,图片属性→FlyObject | |
③抽取部分子类共有行为 | |
蜜蜂有奖励行为,抽取奖励接口 | |
敌机有扣分行为,抽取惩罚接口 | |
子弹无 | |
英雄机亦无 | |
思维漏洞: | |
① 新建项目后,新建包类命名方式为 域名反写+项目名 ,漏了后者 | |
② 新建构造,方法公开化,属性私有化,在前面加public,应第一时间加上 | |
③ 在主类中新建对象后直接赋值提示报错——不可直接在类体内赋值,可以赋初始值,但具体的必须到构造中赋值 | |
private FlyObject[] fo = new FlyObject[2]; | |
fo[0] = new Bee();//就立刻下面赋值了!? | |
fo[1] = new Enemy(); | |
④private FlyObject[] fo = new FlyObject[2];→private FlyObject[] fo = {}; | |
⑤ | |
width = image.getWidth(); | |
eight = image.getHeight(); | |
image = ShootGame.bee; | |
⑥ | |
public void paintBullet(Graphics g){ | |
for(int i = 0;i < bullets.length;i++){ | |
Bullet f = bullets[i]; | |
g.drawImage(f.image,f.x,f.y,null); | |
} | |
} | |
public void paintBee(Graphics g){ | |
g.drawImage(fo[0].image,0,0,null); | |
} | |
⑦(复制粘贴注意)蜜蜂,敌机一直显示在下方→height写在x下面,于是默认便是0 | |
⑧x = rand.nextInt(654-this.width); → rand.nextInt(ShootGame.WIDTH-this.width); | |
⑨思路要一直都极其清晰,每一步应该做什么,应该怎么做脑中的概念都要非常清楚(try...catch...直接放在了外面) | |
⑩使用random方法获取整数时,必须用nextInt | |
image = ShootGame.bee; | |
width = image.getWidth(); | |
eight = image.getHeight(); | |
思维记录 | |
① 写到英雄机图片属性时,想到需要建主类,通过静态区调英雄机图片 | |
② Bee重写获得奖励方法——返回一个奖励类型的数字,因此需要定义typeNum | |
3 提示需要 insert ; 有可能是什么原因? | |
变量没有声明类型 |
以上是关于20170811 - 今日技能封装 - A的主要内容,如果未能解决你的问题,请参考以下文章