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的主要内容,如果未能解决你的问题,请参考以下文章

20170811 - 今日技能封装 - Q

20170811 - 今日技能封装 - Q1

20170804 - 今日技能封装 - A

20170817 - 今日技能封装 - A

20170803 - 今日技能封装 - A

20170818 - 今日技能封装 - A