import pygame
from pygame.locals import *
import time
import random
class Base(object):
"""docstring for Base"""
def __init__(self,screen,x,y,image):
self.screen = screen
self.x = x
self.y = y
self.image =pygame.image.load(image)
class Basefly(Base):
"""docstring for basefly"""
def __init__(self,screen,x,y,image):
Base.__init__(self,screen,x,y,image)
self.bulletList = []#cunfang zidan
def display(self):
self.screen.blit(self.image,(self.x,self.y))
for temp in self.bulletList:
temp.display()
temp.move()
if temp.judge():
self.bulletList.remove(temp)
class BaseBullet(Base):
"""zidan fulei"""
def __init__(self,screen,x,y,image):
Base.__init__(self,screen,x,y,image)
def display(self):
self.screen.blit(self.image,(self.x,self.y))
class Fly(Basefly):
def __init__(self,screen):
Basefly.__init__(self,screen,160,600,"/home/peng/桌面/image/fly.png")
def moveLeft(self):
self.x -= 7
def moveRight(self):
self.x += 7
def moveUp(self):
self.y -= 7
def moveDown(self):
self.y += 7
def fire(self):
self.bulletList.append(Bullet(self.screen,self.x,self.y))
class Enemy(Basefly):
def __init__(self,screen):
Basefly.__init__(self,screen,60,10,"/home/peng/桌面/image/enemy.PNG")
self.direction = "right"#敌机飞的方向
def move(self):
if self.direction == "right":
self.x += 3
elif self.direction == "left":
self.x -= 3
if self.x >= 465:
self.direction = "left"
elif self.x <= 3:
self.direction = "right"
def fire(self):
if random.randint(1,100) == 27 or random.randint(1,100) == 56 or random.randint(1,100)==49:
self.bulletList.append(EnemyBullet(self.screen,self.x,self.y))
class Bullet(BaseBullet):
def __init__(self,screen,x,y):
BaseBullet.__init__(self,screen,x+50,y-50,"/home/peng/桌面/image/blue.jpg")
def move(self):
self.y -= 20
def judge(self):
if self.y < 0:
return True
else:
return False
class EnemyBullet(BaseBullet):
def __init__(self,screen,x,y):
BaseBullet.__init__(self,screen,x+20,y+45,"/home/peng/桌面/image/yellow.jpg")
def move(self):
self.y += 20
def judge(self):
if self.y > 700:
return True
else:
return False
def keyController(fly):
for event in pygame.event.get():
if event.type == QUIT:
print("exit")
exit()
elif event.type == KEYDOWN:
if event.key == K_a or event.key == K_LEFT:
print("left")
fly.moveLeft()
elif event.key == K_d or event.key == K_RIGHT:
print("right")
fly.moveRight()
elif event.key == K_w or event.key == K_UP:
print("up")
fly.moveUp()
elif event.key == K_s or event.key == K_DOWN:
print("down")
fly.moveDown()
elif event.key == K_SPACE:
print("space")
fly.fire()
def main():
#创建一个窗口
screen = pygame.display.set_mode((480,750),0,32)
#创建图片用来填充窗口
background = pygame.image.load("/home/peng/桌面/image/back.png")
#创建飞机对象
fly = Fly(screen)
enemy = Enemy(screen)
while 1:
screen.blit(background,(0,0))
fly.display()
enemy.display()
#敌机移动
enemy.move()
enemy.fire()#敌机发射子弹
pygame.display.update()
keyController(fly)
time.sleep(0.01)
if __name__ == '__main__':
main()
运行截图:
ps:如果有不清楚的,欢迎交流指正。