基于pygame框架的打飞机小游戏

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:如果有不清楚的,欢迎交流指正。 

猜你喜欢

转载自blog.csdn.net/peng_for_csdn/article/details/88751600