飞机大战编程python总结(飞机大战编程思路)
怎么用python学飞机大战?
1、我方飞机模块
import pygame
class MyPlane(pygame.sprite.Sprite):
def __init__(self,bg_size):
pygame.sprite.Sprite.__init__(self)
self.image1 = pygame.image.load(r'E:\learn pygame\image\me1.png').convert_alpha()
self.image2 = pygame.image.load(r'E:\learn pygame\image\me2.png').convert_alpha()
self.image3 = pygame.image.load(r'E:\learn pygame\image\me_protect.png').convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(r'E:\learn pygame\image\me_destroy_1.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\me_destroy_2.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\me_destroy_3.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\me_destroy_4.png').convert_alpha() \
])
self.rect = self.image1.get_rect()
self.width,self.height = bg_size[0],bg_size[1]
self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 60
self.speed = 10
self.active = True
self.invincible = False
self.mask = pygame.mask.from_surface(self.image1)
def moveUp(self):
if self.rect.top 0:
self.rect.top -= self.speed
else:
self.rect.top = 0
def moveDown(self):
if self.rect.bottom self.height - 30:
self.rect.top += self.speed
else:
self.rect.bottom = self.height - 30
def moveLeft(self):
if self.rect.left 0:
self.rect.left -= self.speed
else:
self.rect.left = 0
def moveRight(self):
if self.rect.right self.width:
self.rect.left += self.speed
else:
self.rect.right = self.width
def reset(self):
self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 30
self.active = True
self.invincible = True
2、敌机与背景动图模块
import pygame
from random import *
class SmallEnemy(pygame.sprite.Sprite):
energy = 1
def __init__(self,bg_size):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(r'E:\learn pygame\image\enemy1.png').convert_alpha()
self.destroy_images = []
self.destroy_images.extend([\
pygame.image.load(r'E:\learn pygame\image\enemy1_down1.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\enemy1_down2.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\enemy1_down3.png').convert_alpha(), \
pygame.image.load(r'E:\learn pygame\image\enemy1_down4.png').convert_alpha() \
])
self.rect = self.image.get_rect()
self.width,self.height = bg_size[0],bg_size[1]
self.speed = 2
self.active = True
self.rect.left,self.rect.top = \
randint(0,self.width - self.rect.width), \
randint(-5 * self.height, 0)
self.mask = pygame.mask.from_surface(self.image)
self.energy = SmallEnemy.energy
self.hit = False
def move(self):
if self.rect.top self.height:
self.rect.top += self.speed
else:
self.reset()
def reset(self):
self.active = True
self.energy = SmallEnemy.energy
self.rect.left,self.rect.top = \
randint(0,self.width - self.rect.width), \
randint(-5 * self.height, 0)
class MidEnemy(pygame.sprite.Sprite):
energy = 4
如何用用python写飞机大战?
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf
from pygame.sprite import Group
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
# 创建一艘飞船
ship = Ship(ai_settings, screen)
# 创建一个用于存储子弹的编组
bullets = Group()
# 开始游戏主循环
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
bullets.update()
gf.update_bullets(ship, bullets)
gf.update_screen(ai_settings, screen, ship, bullets)
run_game()
300行代码,用Python写个飞机大战
春节这些天,闲赋在家,甚是无聊,便萌发了研究经典小 游戏 :飞机大战的念头,想必大家可能玩过微信的这款小 游戏 ,给我的感觉是这款 游戏 怎么可以做得这么好呢,操作简单,容易上手,简直是“老少皆宜”啊~
既然这款 游戏 这么棒,能否自己动手用 Python 来实现呢?事实证明是可以的。
先来看下飞机大战 游戏 最终实现的动态效果图。
在导入pygame之前,需要先使用命令:
进行包模块的安装
(1). __init__初始化方法:
进行 游戏 开始的初始化操作,包含:创建 游戏 窗口,创建 游戏 的敌机,背景等精灵
(2). __create_sprites创建精灵方法:
负责创建不同角色的精灵,并将其添加至精灵组
(3). start_game 游戏 开始方法:
负责播放背景音乐,使用while循环来设置刷新帧率、事件监听、碰撞检测、更新绘制精灵组、更新显示屏幕图像
(4). __event_handler事件监听方法:
负责监听用户在 游戏 界面的操作,例如:关闭 游戏 窗口,左右方向键的移动等
(5). __check_collide碰撞检测方法:
负责检测子弹是否碰撞到敌机,敌机是否碰撞到英雄飞机,然后做出相应的操作
(6). __update_sprites更新精灵方法:
负责各个角色精灵的更新并绘制到屏幕,展示给用户
(7). __game_over 游戏 结束方法:
当检测到碰撞事件的发生,判断是否需要调用该方法来退出 游戏
鼓励大家亲自动手实现一下这个小 游戏 ,还是挺有趣的。代码注释较为详细,在实践过程中,可以仔细阅读以便于加深理解。