Python---飞机大战小游戏
2019-07-28 14:43
85 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40927742/article/details/97614495
import pygame import random class MyPlane(object): # 属性: # XY坐标问题 # 飞机图片名字 def __init__(self,screen): self.x = 240-49 self.y = 850-124 self.screen = screen self.name = 'feiji2.png' self.planeimage = pygame.image.load(self.name) self.bullist = [] # 方法: # 展示 def show(self): # 加载图片到窗口 self.screen.blit(self.planeimage,(self.x,self.y)) removebul_list = [] # 存放需要删除的子弹对象 for bul in self.bullist: # 保存需要删除的对象 if bul.judge(): removebul_list.append(bul) # 在总的子弹列表里面删除需要删除的子弹 for need_rem in removebul_list: self.bullist.remove(need_rem) # 显示子弹并且让他移动起来 for bul in self.bullist: bul.show_bullet() bul.move() # 绘制到窗口 # 左 def moveleft(self): self.x -= 20 if self.x <=0: self.x = 0 # 右移动 def moveright(self): self.x += 20 if self.x >= 480 - 98: self.x = 480 - 98 def moveup(self): self.y -= 50 if self.y <= 0: self.y = 0 def movedown(self): self.y += 50 if self.y >= 850 - 124: self.y = 850 - 124 def shoot(self): ''' 发射子弹,用空格 :return: ''' bul = Bullet(self.x,self.y,self.screen) self.bullist.append(bul) class Bullet(object): # 子弹 def __init__(self,x,y,screen): # 属性:XY需要图片 self.x = x + 40 self.y = y - 50 self.screen = screen self.bulimage = pygame.image.load('bullet.png') def show_bullet(self): self.screen.blit(self.bulimage,(self.x,self.y)) def move(self): self.y -= 10 def judge(self): if self.y < 0: return True else: return False class FBullet(object): # 子弹 def __init__(self, x, y, screen): # 属性:XY需要图片 self.x = x + 40 self.y = y - 50 self.screen = screen self.bulimage = pygame.image.load('bullet-2.gif') def show_bullet(self): self.screen.blit(self.bulimage, (self.x, self.y)) def move(self): self.y += 5 def judge(self): if self.y > 850: return True else: return False class Fighter(object): # 敌机 def __init__(self,screen): # 属性:位置。敌机的名字 self.x = 0 self.y = 0 self.derection = 'right' self.screen = screen self.fighterplane = pygame.image.load('enemy1.png') self.fit_bul_list = [] def show_fighetr(self): self.screen.blit(self.fighterplane,(self.x,self.y)) removebul_list = [] # 存放需要删除的子弹对象 for bul in self.fit_bul_list: # 保存需要删除的对象 if bul.judge(): removebul_list.append(bul) # 在总的子弹列表里面删除需要删除的子弹 for need_rem in removebul_list: self.fit_bul_list.remove(need_rem) # 显示子弹并且让他移动起来 for bul in self.fit_bul_list: bul.show_bullet() bul.move() def move_fit(self): if self.derection == 'right': self.x += 1 elif self.derection == 'left': self.x -= 1 if self.x > 480-60: self.derection = 'left' if self.x <0: self.derection = 'right' def shoot_bul(self): # 敌机发射子弹 num = random.randint(1,50) if num == 10 or num == 20: new_fit_bul = FBullet(self.x,self.y,self.screen) self.fit_bul_list.append(new_fit_bul) def key_control(myplane): ''' 检测用户的鼠标和键盘输入 :return: ''' # 5、检测事件,获取具体事件 event_lists = pygame.event.get() for event in event_lists: if event.type == pygame.QUIT: # 检测鼠标事件 print('关闭') exit() elif event.type == pygame.KEYDOWN: # 检测键盘点击事件 if event.key == pygame.K_LEFT or event.key == pygame.K_a: print('按下左键') myplane.moveleft() elif event.key == pygame.K_RIGHT or event.key == pygame.K_d: print('按下右键') myplane.moveright() elif event.key == pygame.K_UP or event.key == pygame.K_w: print('按下向上的键') myplane.moveup() elif event.key == pygame.K_DOWN or event.key == pygame.K_z: print('向下移动') myplane.movedown() elif event.key == pygame.K_SPACE: myplane.shoot() else: print('输入不合法') def main(): ''' 这是一个飞机大战游戏 :return: ''' # 1、创建一个窗口 screen = pygame.display.set_mode((480,850)) pygame.display.set_caption('雷霆战机') # 2、加载图片,作为背景 background = pygame.image.load('bj7.jpg') # 2-2利用飞机类创建出一个对象,这个对象可以有多个属性与方法 myplane = MyPlane(screen) # 2-3利用敌机类,创建一个敌机对戏那个 fighter = Fighter(screen) while True: # 3、将图片加载到窗口 screen.blit(background,(0,0)) myplane.show() fighter.show_fighetr() fighter.move_fit() fighter.shoot_bul() # 5、检测事件,获取具体事件 key_control(myplane) #if hit # 4、刷新 pygame.display.update() import time time.sleep(0.001) if __name__=='__main__': main()
相关文章推荐
- python实现飞机大战微信小游戏
- python实现飞机大战小游戏
- Python实现飞机大战小游戏
- 利用python和pygame模块实现一个小游戏:飞机大战
- 利用python语言制作一个简单的飞机大战小游戏
- 小白之python开发:小游戏贪吃蛇
- python_飞机大战_HeroPlan_py_三
- Javascript实现飞机大战小游戏
- 扫雷小游戏-python
- python小游戏判断电话号码哪家运营商,Q退出
- 练习python小游戏
- Python第07周:一个小游戏
- python的一个小游戏之五子棋
- 用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
- python猜数字小游戏
- 零基础入门学习Python(4)--改进我们的小游戏
- python学习:第一个程序猜数字小游戏~包含次数限制、用户输入类型限制。内容学习源于【小甲鱼python入门学习】
- python代码,轻松完成贪吃蛇小游戏
- python学习第一周 猜数字小游戏
- Python实现的摇骰子猜大小功能小游戏示例