Shoot射击游戏第一天:
1.创建了6个对象类,创建World测试
回顾:
1.猜字符小游戏:
算法:
1)generate()生成随机字符数组
2)main()主流程
笔记:
1.什么是类?什么是对象?
1)现实世界是由很多对象组成的
基于对象抽出类
2)对象:真实存在的单个的个体
类:类型/类别,代表一类个体
3)类中可以包含:
3.1)所有对象所共有的属性/特征--------成员变量
3.2)所有对象所共有的行为-------------方法
4)一个类可以创建多个对象
同一类型的多个对象,结构相同,数据不同
5)类是对象的模板,对象是类的具体的实例
2.如何创建类?class如何创建对象?new 如何访问成员?this.
练习:
1)oo.day02包中----Student和StudentTest
2)将今天的代码重做两次
Shoot射击游戏需求:
1)角色:英雄机、小敌机、大敌机、小蜜蜂、子弹、天空
关系:英雄机发射子弹
子弹射击敌人(小敌机、大敌机、小蜜蜂)
英雄机与敌人(小敌机、大敌机、小蜜蜂)碰撞
所有对象都飞行在天空上
2)子弹射击敌人:
子弹消失、敌人消失
若被撞敌人是小敌机,则玩家增1分
大敌机,则玩家增3分
小蜜蜂,英雄机得奖励(1命、40火力值)
3)英雄机发射子弹,分单倍(1发子弹)和双倍(2发子弹)
英雄机的火力值>0则双倍火力,否则单倍火力
得火力奖励时,一次得40火力值,累加
发射一次双倍火力,则火力值减2
4)英雄机与敌人碰撞:
敌人消失
英雄机减1命、清空火力值(直接归0)
当英雄机的命数为0时,则游戏结束
MyShoot
cn.tedu.shoot
角色:
英雄机、小敌机、大敌机、小蜜蜂、子弹、天空
class Hero{ //英雄机
life,doubleFire,width,height,x,y
void shoot(){ //发射子弹
}
void moveTo(int x,int y){ //英雄机随着鼠标动
}
void step(){ //图片切换
}
}
class Airplane{ //小敌机
width,height,x,y,speed
void step(){
y
}
}
Hero:
width,height,x,y,life,doubleFire
moveTo(int x,int y),step()
Airplane:
width,height,x,y,speed,step()
BigAirplane:
width,height,x,y,speed,step()
Bullet:
width,height,x,y,speed,step()
Bee:
width,height,x,y,xSpeed,ySpeed,awardType,step()
Sky:
width,height,x,y,speed,y1,step()
class BigAirplane{ //大敌机
}
class Bee{ //小蜜蜂
}
class Bullet{ //子弹
}
class Sky{ //天空
}
new Student(); //创建学生对象
Student zs = new Student(); //创建学生对象
zs.name = "zhangsan";
引用 指向 对象
数据类型 引用类型变量
Student zs = new Student();
Student zs = new Student();
基本类型变量(变量)
int a;
byte,short,int,long,char----------0
float,double----------------------0.0
boolean---------------------------false
引用类型--------------------------null
类:引用类型
数组:引用类型
oo.day01
Student----------不包含main
StudentTest------包含main
类 对象
月饼模子 月饼
Student zs = new Student();
zs.name = "zhangsan";
zs.age = 25;
zs.address = "河北廊坊";
zs.stuId = "001";
zs.eat();
zs.sleep();
zs.study();
zs.abc = 123; //编译错误,没有abc属性
Student ls = new Student();
ls.name = "lisi";
ls.age = 27;
ls.address = "黑龙江佳木斯";
ls.stuId = "002";
ls.eat();
ls.sleep();
ls.study();
class Student{
String name;
int age;
String address;
String stuId;
void eat(){}
void sleep(){}
void study(){}
}
Student zs = new Student();
Student ls = new Student();
Student ww = new Student();
class Teacher{
String name;
int age;
String address;
double salary;
void eat(){}
void sleep(){}
void teach(){}
}
class Dog{
String type;
String color;
void 看门(){}
}
class Car{
String type;
String color;
double price;
void run(){}
void back(){}
void stop(){}
}
对象 类
WKJ 老师
LK
ZY
张三 学生
李四
王五
小黑 狗
小花
小强
马六 汽车
奥迪
奥拓
面向过程的程序设计弊端:
1)缺乏对数据的封装
2)数据与方法(操作数据)的分离
class Emp{ //Emp就是我自己造的数据类型(引用类型)
String name;
int age;
double salary;
void print(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("工资:"+salary);
}
}
class Test{
public static void main(String[] args){
Emp e = new Emp(); //创建了一个Emp的对象
e.name = "zhangsan";
e.age = 25;
e.salary = 5000.0;
e.print();
}
}
基本数据类型-----------只能装一个数据
数组-------------------数据类型必须相同
自己造个数据类型-------想装什么就装什么
OO:面向对象
OOA:面向对象分析
OOD:面向对象设计
OOAD:面向对象分析与设计
OOP:面向对象编程--------------你们的角色
语言基础:
1)固定(猜字符游戏)
2)去银行取钱
面向对象:难
1)抽象(射击游戏)
2)向着社会主义社会发展
晕乎乎的过来的-----------------正常的
不晕:
1)什么也不会-------------------下个月见
2)自以为不晕-------------------很不错很不错的了
高质量的代码:-----目标
复用性好、扩展性好、维护性好、
可移植性好、健壮性好、可读性好、效率好...
抽了4个人出来-----------花费2个月时间做一套框架
清华思路------环保、GIS、MIS
每个项目---------用户管理、角色管理
某和
OA办公系统------产品(.net)
java来实现
A公司:删除/修改/增加一些
B公司:删除/修改/增加一些
C公司:删除/修改/增加一些
产品:可以适应很多公司的
项目:只能适应一个公司的
语言基础---------我讲得多,你们练得少
面向对象---------我讲得少,你们练得多、想得多