飞机大战编程python总结(飞机大战编程思路)

http://www.itjxue.com  2023-03-19 03:44  来源:未知  点击次数: 

怎么用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 游戏 结束方法:

当检测到碰撞事件的发生,判断是否需要调用该方法来退出 游戏

鼓励大家亲自动手实现一下这个小 游戏 ,还是挺有趣的。代码注释较为详细,在实践过程中,可以仔细阅读以便于加深理解。

(责任编辑:IT教学网)

更多
上一篇:没有了

推荐Flash实例教程文章