发布于2020-08-13 12:19 下载积分(8) 下载次数(1)
0
1
2
3
4
5
6
7
8
9
#coding=utf-8 import pygame from pygame.locals import * import time import random #飞机基类和子弹基类的基类 class Base(object): def __init__(self, screen_temp, x, y, image_name): self.x = x self.y = y self.screen = screen_temp self.image = pygame.image.load(image_name) #飞机基类 class BasePlane(Base): def __init__(self, screen_temp, x, y, image_name): Base.__init__(self,screen_temp,x,y,image_name) self.bullet_list = [] def display(self): self.screen.blit(self.image, (self.x, self.y)) for bullet in self.bullet_list: bullet.display() bullet.move() if bullet.judge(): #判断子弹是否越界 self.bullet_list.remove(bullet) #子弹基类 class BaseBullet(Base): def display(self): self.screen.blit(self.image, (self.x, self.y)) #玩家飞机类 class HeroPlane(BasePlane): def __init__(self, screen_temp): BasePlane.__init__(self, screen_temp,205,700,"./images/hero1.png") self.key_right_status = False self.key_left_status = False self.key_up_status = False self.key_down_status = False def move(self): if self.key_right_status: self.x += 3 if self.key_left_status: self.x -= 3 if self.key_down_status: self.y += 3 if self.key_up_status: self.y -= 3 def fire(self): self.bullet_list.append(Bullet(self.screen,self.x,self.y)) #敌机类 class EnemyPlane(BasePlane): def __init__(self, screen_temp): BasePlane.__init__(self, screen_temp,0,0,"./images/enemy0.png") self.direction = "right"#控制敌机默认显示方向 def move(self): if self.direction == "right": self.x += 5 elif self.direction == "left": self.x -= 5 if self.x > 420: self.direction = "left" elif self.x < 0: self.direction = "right" def fire(self): random_num = random.randint(1,50) if random_num == 20 or random_num == 21: self.bullet_list.append(EnemyBullet(self.screen,self.x,self.y)) #玩家子弹类 class Bullet(BaseBullet): def __init__(self, screen_temp,x,y): BaseBullet.__init__(self,screen_temp,x+40,y-20,"./images/bullet.png") def move(self): self.y -= 10 def judge(self): if self.y < 0: return True else: return False #敌机子弹类 class EnemyBullet(BaseBullet): def __init__(self, screen_temp,x,y): BaseBullet.__init__(self,screen_temp,x+22,y+30,"./images/bullet1.png") def move(self): self.y += 10 def judge(self): if self.y > 852: return True else: return False #键盘控制函数 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.key_left_status = True #hero_temp.move_left() #检测按键是否是d或者right elif event.key == K_d or event.key == K_RIGHT: print('right') hero_temp.key_right_status = True #hero_temp.move_right() #检测按键是否是w或者up elif event.key == K_w or event.key == K_UP: hero_temp.key_up_status = True #检测按键是否是s或者down elif event.key == K_s or event.key == K_DOWN: hero_temp.key_down_status = True #检测按键是否是空格键 elif event.key == K_SPACE: print('space') hero_temp.fire() #判断是否是松了键 elif event.type == KEYUP: if event.key == K_a or event.key == K_LEFT: hero_temp.key_left_status = False elif event.key == K_d or event.key == K_RIGHT: hero_temp.key_right_status = False elif event.key == K_w or event.key == K_UP: hero_temp.key_up_status = False elif event.key == K_s or event.key == K_DOWN: hero_temp.key_down_status = False def main(): #1. 创建窗口 screen = pygame.display.set_mode((480,852),0,32) #2. 创建一个背景图片 background = pygame.image.load("./images/background.png") #3. 创建一个飞机对象 hero = HeroPlane(screen) #4. 创建一个敌机 enemy = EnemyPlane(screen) while True: screen.blit(background, (0,0)) hero.display()#显示玩家飞机 enemy.display()#显示敌机 hero.move()#玩家飞机移动 enemy.move()#敌机移动 enemy.fire()#敌机开火 pygame.display.update() key_control(hero)#控制方向 time.sleep(0.01)#防崩 if __name__ == "__main__": main()
0
1
2
3
4
5
6
作者:12345F
链接: https://www.pythonheidong.com/blog/article/480204/677460ed5a53c66a36e3/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!