您的位置:首页 > 其它

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()

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐