Python之游戏开发-飞机大战,Python游戏开发,#!/usr/bin


#!/usr/bin/env python# coding: utf-8import pygameimport timeimport randomfrom pygame.locals import *class Base(object):    def __init__(self, x, y, imageName):        self.x = x        self.y = y        self.imageName = imageName        self.image = pygame.image.load(self.imageName).convert()    def display(self):        screen.blit(self.image, (self.x, self.y))class Plane(Base):    def __init__(self, screen, x, y, imageName, planeName):        Base.__init__(self, x, y, imageName)        self.screen = screen        self.bulletList = []        self.planeName = planeName    def display(self):        Base.display(self)class EnemyPlane(Plane):    def __init__(self, screen):        Plane.__init__(self, screen, 0, 0, "./feiji/enemy-3.gif", "Enemy")        self.directioin = "right"  # right表示向右  left表示向左        self.speed = random.randint(1, 5)    def move(self):        if self.directioin == "right":            self.x += self.speed        elif self.directioin == "left":            self.x -= self.speed            # 到达另外一个边界时,需要反转方向        if self.x > 480:            self.directioin = "left"        elif self.x < 0:            self.directioin = "right"    def shoot(self):        shootFlagList = [2, 6]        shootFlag = random.randint(1, 100)        if shootFlag in shootFlagList:            self.bulletList.append(Bullet(self.screen, self.planeName, self.x, self.y))            # print("x:%d,y:%d"%(self.x, self.y))    def display(self):        Plane.display(self)        # print(self.bulletList)        for bullett in self.bulletList:            if bullett.y <= 700:                bullett.display()                bullett.move()                global hero                # 以中点为心                if ((bullett.x - hero.x - 40) ** 2 + (                        bullett.y - hero.y - 40) ** 2) ** 0.5 < 40 and bullett.baozhaflag == 0:                    bullett.baozhaflag = 1                    global score                    if score > 20:                        score -= 20                    else:                        score = 0                    global flagg                    flagg = 1                    print(hero.x, hero.y)                    imageName = "./feiji/hero_blowup_n3.gif"                    im = hero.image                    hero.image = pygame.image.load(imageName).convert()                    print("END")            else:                self.bulletList.remove(bullett)class playerPlane(Plane):    def __init__(self, screen):        Plane.__init__(self, screen, 230, 600, "./feiji/hero.gif", "player")        self.speed = 20    def display(self):        Plane.display(self)        # print(self.bulletList)        for bullett in self.bulletList:            if bullett.y >= 0:                bullett.display()                bullett.move()                global enemy                if ((enemy.x + 40 - bullett.x) ** 2 + (                        enemy.y + 80 - bullett.y) ** 2) ** 0.5 < 40 and bullett.baozhaflag == 0:                    bullett.baozhaflag = 1                    global escore                    if escore > 0:                        escore -= 20                    global flagge                    flagge = 1                    print(enemy.x, enemy.y)                    imageName = "./feiji/enemy2_down1.gif"                    im = enemy.image                    enemy.image = pygame.image.load(imageName).convert()                    print("END")            else:                self.bulletList.remove(bullett)    def moveRight(self):        if self.x >= 0 and self.x <= 420:            self.x += self.speed    def moveLeft(self):        if self.x <= 480 and self.x >= 20:            self.x -= self.speed    def sheBullet(self):        bui = Bullet(self.screen, "player", self.x + 40, self.y - 4)        self.bulletList.append(bui)# 导弹类class Bullet(Base):    def __init__(self, screen, bulletName, x, y):        self.bulletName = bulletName        imageName1 = "./feiji/bullet-1.gif"        self.baozhaflag = 0        if bulletName == "player":            imageName1 = "./feiji/bullet-3.gif"        Base.__init__(self, x, y, imageName1)    def move(self):        if self.bulletName == "player":            self.y -= 2        else:            self.y += 2    def display(self):        Base.display(self)if __name__ == ‘__main__‘:    score = 200    escore = 100    # 1.创建一个窗口    screen = pygame.display.set_mode((480, 700), 0, 32)    # 2.创建一个图片    background = pygame.image.load("./feiji/background.png").convert()    color_red = (255, 0, 0)    color_green = (0, 255, 0)    color_blue = (0, 0, 255)    print(pygame.font.get_fonts())    pygame.font.init()    # font = pygame.font.SysFont(None, 48)    # 使用系统字体    fontObj3 = pygame.font.SysFont(‘arial‘, 20)    # 加粗    fontObj3.set_bold(True)    # 斜体    fontObj3.set_italic(True)    # 文字具有蓝色背景    textSurfaceObj3 = fontObj3.render("敌方血量:" + str(score), True, color_red, color_blue)    textRectObj3 = textSurfaceObj3.get_rect()    textRectObj3.center = (60, 510)    # 文字具有蓝色背景    textSurfaceObj2 = fontObj3.render("我方血量:" + str(escore), True, color_red, color_blue)    textRectObj2 = textSurfaceObj2.get_rect()    textRectObj2.center = (60, 10)    # 创建玩家飞机    # hero = pygame.image.load("./feiji/hero.gif").convert()    global flagg    flagg = 0    flagge = 0    global hero    hero = playerPlane(screen)    global enemy    enemy = EnemyPlane(screen)    # 3.图片到背景去    imm = hero.image    imme = enemy.image    while True:        screen.blit(background, (0, 0))        textSurfaceObj3 = fontObj3.render("Me   :" + str(score), True, color_red, color_blue)        textRectObj3 = textSurfaceObj3.get_rect()        textRectObj3.center = (60, 510)        # 文字具有蓝色背景        textSurfaceObj2 = fontObj3.render("Enemy :" + str(escore), True, color_red, color_blue)        textRectObj2 = textSurfaceObj2.get_rect()        textRectObj2.center = (60, 10)        screen.blit(textSurfaceObj3, textRectObj3)        screen.blit(textSurfaceObj2, textRectObj2)        # screen.blit(hero, (x, 600))        # hero.display()        # 获取事件,比如按键等        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.moveLeft()                # 检测按键是否是d或者right                elif event.key == K_d or event.key == K_RIGHT:                    print(‘right‘)                    hero.moveRight()                # 检测按键是否是空格键                elif event.key == K_SPACE:                    print(‘space‘)                    hero.sheBullet()                    # 更新需要显示的内容        hero.display()        if flagg == 1:            hero.image = imm            flagg = 0        # 让敌机自己移动以及发射子弹        enemy.move()        enemy.shoot()        enemy.display()        if flagge == 1:            enemy.image = imme            flsgge = 0        pygame.display.update()        time.sleep(0.01)

  

#!/usr/bin/env python# coding: utf-8import pygame import time import random from pygame.locals import * class Base(object):def __init__(self, x, y, imageName): self.x = x self.y = y self.imageName = imageName self.image = pygame.image.load(self.imageName).convert() def display(self): screen.blit(self.image, (self.x, self.y)) class Plane(Base):def __init__(self, screen, x, y, imageName, planeName): Base.__init__(self, x, y, imageName) self.screen = screen self.bulletList = [] self.planeName = planeName def display(self): Base.display(self) class EnemyPlane(Plane):def __init__(self, screen): Plane.__init__(self, screen, 0, 0, "./feiji/enemy-3.gif", "Enemy") self.directioin = "right"# right表示向右 left表示向左 self.speed = random.randint(1, 5) def move(self):if self.directioin == "right": self.x += self.speed elif self.directioin == "left": self.x -= self.speed # 到达另外一个边界时,需要反转方向if self.x > 480: self.directioin = "left"elif self.x < 0: self.directioin = "right"def shoot(self): shootFlagList = [2, 6] shootFlag = random.randint(1, 100) if shootFlag in shootFlagList: self.bulletList.append(Bullet(self.screen, self.planeName, self.x, self.y)) # print("x:%d,y:%d"%(self.x, self.y))def display(self): Plane.display(self) # print(self.bulletList)for bullett in self.bulletList: if bullett.y <= 700: bullett.display() bullett.move() global hero # 以中点为心if ((bullett.x - hero.x - 40) ** 2 + ( bullett.y - hero.y - 40) ** 2) ** 0.5 < 40and bullett.baozhaflag == 0: bullett.baozhaflag = 1global score if score > 20: score -= 20else: score = 0global flagg flagg = 1 print(hero.x, hero.y) imageName = "./feiji/hero_blowup_n3.gif" im = hero.image hero.image = pygame.image.load(imageName).convert() print("END") else: self.bulletList.remove(bullett) class playerPlane(Plane):def __init__(self, screen): Plane.__init__(self, screen, 230, 600, "./feiji/hero.gif", "player") self.speed = 20def display(self): Plane.display(self) # print(self.bulletList)for bullett in self.bulletList: if bullett.y >= 0: bullett.display() bullett.move() global enemy if ((enemy.x + 40 - bullett.x) ** 2 + ( enemy.y + 80 - bullett.y) ** 2) ** 0.5 < 40and bullett.baozhaflag == 0: bullett.baozhaflag = 1global escore if escore > 0: escore -= 20global flagge flagge = 1 print(enemy.x, enemy.y) imageName = "./feiji/enemy2_down1.gif" im = enemy.image enemy.image = pygame.image.load(imageName).convert() print("END") else: self.bulletList.remove(bullett) def moveRight(self):if self.x >= 0and self.x <= 420: self.x += self.speed def moveLeft(self):if self.x <= 480and self.x >= 20: self.x -= self.speed def sheBullet(self): bui = Bullet(self.screen, "player", self.x + 40, self.y - 4) self.bulletList.append(bui) # 导弹类class Bullet(Base):def __init__(self, screen, bulletName, x, y): self.bulletName = bulletName imageName1 = "./feiji/bullet-1.gif" self.baozhaflag = 0if bulletName == "player": imageName1 = "./feiji/bullet-3.gif" Base.__init__(self, x, y, imageName1) def move(self):if self.bulletName == "player": self.y -= 2else: self.y += 2def display(self): Base.display(self) if __name__ == ‘__main__‘: score = 200 escore = 100# 1.创建一个窗口 screen = pygame.display.set_mode((480, 700), 0, 32) # 2.创建一个图片 background = pygame.image.load("./feiji/background.png").convert() color_red = (255, 0, 0) color_green = (0, 255, 0) color_blue = (0, 0, 255) print(pygame.font.get_fonts()) pygame.font.init() # font = pygame.font.SysFont(None, 48)# 使用系统字体 fontObj3 = pygame.font.SysFont(‘arial‘, 20) # 加粗 fontObj3.set_bold(True) # 斜体 fontObj3.set_italic(True) # 文字具有蓝色背景 textSurfaceObj3 = fontObj3.render("敌方血量:" + str(score), True, color_red, color_blue) textRectObj3 = textSurfaceObj3.get_rect() textRectObj3.center = (60, 510) # 文字具有蓝色背景 textSurfaceObj2 = fontObj3.render("我方血量:" + str(escore), True, color_red, color_blue) textRectObj2 = textSurfaceObj2.get_rect() textRectObj2.center = (60, 10) # 创建玩家飞机# hero = pygame.image.load("./feiji/hero.gif").convert()global flagg flagg = 0 flagge = 0global hero hero = playerPlane(screen) global enemy enemy = EnemyPlane(screen) # 3.图片到背景去 imm = hero.image imme = enemy.image whileTrue: screen.blit(background, (0, 0)) textSurfaceObj3 = fontObj3.render("Me :" + str(score), True, color_red, color_blue) textRectObj3 = textSurfaceObj3.get_rect() textRectObj3.center = (60, 510) # 文字具有蓝色背景 textSurfaceObj2 = fontObj3.render("Enemy :" + str(escore), True, color_red, color_blue) textRectObj2 = textSurfaceObj2.get_rect() textRectObj2.center = (60, 10) screen.blit(textSurfaceObj3, textRectObj3) screen.blit(textSurfaceObj2, textRectObj2) # screen.blit(hero, (x, 600))# hero.display()# 获取事件,比如按键等for event in pygame.event.get(): # 判断是否是点击了退出按钮if event.type == QUIT: print("exit") exit() # 判断是否是按下了键elif event.type == KEYDOWN: # 检测按键是否是a或者leftif event.key == K_a or event.key == K_LEFT: print(‘left‘) hero.moveLeft() # 检测按键是否是d或者rightelif event.key == K_d or event.key == K_RIGHT: print(‘right‘) hero.moveRight() # 检测按键是否是空格键elif event.key == K_SPACE: print(‘space‘) hero.sheBullet() # 更新需要显示的内容 hero.display() if flagg == 1: hero.image = imm flagg = 0# 让敌机自己移动以及发射子弹 enemy.move() enemy.shoot() enemy.display() if flagge == 1: enemy.image = imme flsgge = 0 pygame.display.update() time.sleep(0.01)

Python之游戏开发-飞机大战

评论关闭