day31 类的组合及继承,文件目录规范
2017-07-04 23:23
211 查看
Python之路,Day18 = Python基础18-面向对象继承与组合
类的继承
def talk(): print("I am come from talk..a") class Animal: def say(self): print("say") class Person(object): def __init__(self, name, age): self.name = name self.age = age def walk(self): print("%s is walking..."%self.name) class Teacher(Person): def say(self): Animal.say(123) pass class Student(Person): def __init__(self, name, age, tuition): Person.__init__(self, name, age) self.tuition = tuition def walk(self): Person.walk(self) print("I am come from Student...") def talk(self): talk() # 对象可以调用外面的函数 t = Teacher('zhang', 18) print(t.name, t.age) t.walk() t.say() s = Student('liu', 17, 19800) print(s.name, s.age) s.walk() print(s.tuition) s.talk()
类的组合
class BirthDay(object): def __init__(self, year, mon, day): self.year = year self.mon = mon self.day = day def tellInfo(self): print("comes from BirthDay") return "year:%s mon:%s day:%s"%(self.year, self.mon, self.day) class Teacher(object): def __init__(self, name, age, sex, birth): self.name = name self.age = age self.sex =sex self.birth = birth t = Teacher('zhang', 18, 'male', BirthDay(1999, 9, 99)) print(t.birth.tellInfo())
文件目录规范
飞机大战的例子
import time import pygame from sys import exit def main(): screen = pygame.display.set_mode((512, 768), 0, 32) pygame.display.set_caption("飞机大战之类的练习") pygame.mouse.set_visible(False) background = pygame.image.load(r".\img\background.jpg") hero_plan_len = 151 hero_plan_hig = 108 hero_plan = HeroPlan(screen, hero_plan_len, hero_plan_hig) enemy_plan = EnemyPlan(screen) while True: screen.blit(background, (0,0)) hero_plan.display() get_input(hero_plan) enemy_plan.display() pygame.display.update() time.sleep(0.03) class BasePlan: def __init__(self, screen, x, y): self.screen = screen self.x = x self.y = y self.buttle = [] self.count = 0 def display(self): self.move() self.screen.blit(self.plan, (self.x, self.y)) self.fire() for buttle in self.buttle: if buttle.clearButtle(): self.buttle.remove(buttle) buttle.move() buttle.display() def move(self): pass class HeroPlan(BasePlan): def __init__(self, screen, lenth, high): super().__init__(screen, 180, 640) self.lenth = lenth self.high = high self.plan = pygame.image.load(r".\img\hero_plan.png") def fire(self): if self.count == 2: self.buttle.append(HeroBullet(self.screen, self.x + 20, self.y - 48)) self.buttle.append(HeroBullet(self.screen, self.x + 105, self.y - 48)) self.count = 0 else: self.count += 1 class EnemyPlan(BasePlan): def __init__(self, screen): super().__init__(screen, 0, 0) self.direction = "right" self.plan = pygame.image.load(r".\img\enemy_plan.png") def move(self): if self.direction == "right": self.x += 10 elif self.direction == 'left': self.x -= 10 if self.x <= 0: self.direction = "right" elif self.x >= 248: self.direction = "left" def fire(self): if self.count == 20: self.buttle.append(EnemyButtle(self.screen, self.x+40, self.y+160)) self.buttle.append(EnemyButtle(self.screen, self.x+175, self.y+160)) self.count = 0 else: self.count += 1 class BaseBullet: def __init__(self, screen, x, y): self.screen = screen self.x = x self.y = y def display(self): self.screen.blit(self.buttle, (self.x, self.y)) class HeroBullet(BaseBullet): def __init__(self, screen, x, y): super().__init__(screen, x, y) self.buttle = pygame.image.load(r".\img\hero_bullet.png") def move(self): self.y -= 20 def clearButtle(self): if self.y < 0: return True class EnemyButtle(BaseBullet): def __init__(self, screen, x, y): super().__init__(screen, x, y) self.buttle = pygame.image.load(r".\img\enemy_bullet.png") def move(self): self.y += 10 def clearButtle(self): if self.y > 714: return True def get_input(hero_plan): for event in pygame.event.get(): if event.type == pygame.QUIT: exit() x, y = pygame.mouse.get_pos() hero_plan.x = x - hero_plan.lenth/2 hero_plan.y = y - hero_plan.high/2 def key_control(hero_temp): #获取事件,比如按键等 for event in pygame.event.get(): #判断是否是点击了退出按钮 if event.type == QUIT: print("exit") exit() #判断是否是按下了键 elif event.type == KEYDOWN: #检测按键是否是a或者left if event.key == K_a or event.key == K_LEFT: print('left') hero_temp.move_left() #检测按键是否是d或者right elif event.key == K_d or event.key == K_RIGHT: print('right') hero_temp.move_right() #检测按键是否是空格键 elif event.key == K_SPACE: print('space') hero_temp.fire() if __name__ == "__main__": main()
相关文章推荐
- 其他_Pb程序开发规范_文件和目录组织
- Atitit 遍历文件夹目录解决方案与规范 attilax总结 1. 规范 2 1.1. 注意的不要同时改变文件夹内容,增删文件。这样获取到的目录list不会变化 2 1.2. 主义中文名称文件读写
- EXTJS4.0 EXT文件目录,本地加载文档,命名规范
- 把Mvc4项目部署到虚拟目录之后找不到control想到的文件路径规范的问题
- 在linux 系统中利用 facl 实现目录下创建文件继承父目录的权限的所属组
- python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)
- 代码的文件和路径命名规范和目录结构规划
- 黑马程序员——面向对象(二)---类的继承、多态性、匿名内部类、异常、包、访问控制、命名规范、jar文件
- EXTJS4自学手册——EXT文件目录,本地加载文档,命名规范
- 获取指定包名下继承或者实现某接口的所有类(扫描文件目录和所有jar)
- 子进程会继承父进程用户id,用户组id,用户信息,文件描述符,数据段,堆栈,当前工作目录,创建文件权限,信号处理方式,进程组号,会话期号。
- 拯救你的电脑之文件命名规范与目录规划
- DAY31继承派生、组合、接口和抽象类
- 网页html制作目录文件及CSS命名规范总结
- 将指定目录指定类型文件以指定分隔符组合文件名不换行输出到指定文件命令
- 统计一个目录下有多少个文件组合命令
- C++中采用正则方式获取目录下文件的规范名字
- MFC更改环境目录可执行文件目录下继承的值
- Ext4自学手册-EXT文件目录,本地加载文档,命名规范
- ASP检索网站指定目录文件的算法与应用方向