栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python-飞机大战(一):准备工作及相关函数介绍

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-飞机大战(一):准备工作及相关函数介绍

    pygame模块
    pygame是一个游戏开发模块。
    首先我们需要导入:import pygame
    然后需要进行初始化:pygame.init()
    在这个过程中开发游戏。
    最后在结束游戏运行时卸载模块:pygame.quit()

    精灵和精灵组
    (1)起初看到“精灵”两个字的时候还有些许的惊讶,可能很久没看到这么有童年味道的词汇了。
    简单理解:精灵就是在游戏窗口中动或者不动的单一个体,在飞机大战中例如英雄机,子弹等。
    精灵组就是一堆精灵,比如在游戏窗口中的一排子弹。
    (2)要注意的是,我们在设计游戏对象的父类时,需要继承pygame.sprite.Sprite,在父类的构造函数中调用super().__init__()。否则运行时会报错:AttributeError。
    (3)还有一些碰撞监测的方法,我使用的是pygame.sprite.collide_mask(bullet, enemy)来判断子弹和敌机是否进行了碰撞。
    (4)精灵组的相关方法:
    (4.1)创建精灵组:
    pygame.sprite.Group()
    (4.2)精灵组添加精灵:self.dead_planes_group.add(enemy)
    (4.3)精灵组更新及绘制:
    self.dead_planes_group.update() self.dead_planes_group.draw(self.screen)

    定时器
    在飞机大战中我们将用到两个定时器模块的方法:
    (1)pygame.time.Clock()
    此函数用来设置游戏窗口的FPS,示例代码如下:

FPS = 60
self.clock = pygame.time.Clock()
self.clock.tick(FPS)

别忘了更新屏幕:

pygame.display.update()

(2)pygame.time.set_timer(event, millis)
event是我们定义的常量,millis是毫秒数。
我们在事件获取函数pygame.event.get()中判断事件的类型,然后根据事件的类型执行响应的操作。

AIR_PLANE = pygame.USEREVENT
FIRE = pygame.USEREVENT + 1

pygame.time.set_timer(AIR_PLANE, CREATE_TIME)
pygame.time.set_timer(FIRE, FIRE_TIME)

for event in pygame.event.get():
	if event.type == pygame.QUIT:
		# 退出游戏
	elif event.type == AIR_PLANE:
		# 创造敌机
	elif event.type == FIRE:
		# 英雄机开火
    random.choice(seq) 函数
    seq可以是一个列表,元组或字符串。
    这个函数是在seq中随机选择一个元素。
    结合之前的eval()函数多态实例化的文章,我的思路如下:
    首先定义一个字符串列表,表中元素是我们创建敌机的类名。然后随机选择一个类进行创建。示例代码如下:
enemy_str = ["AirPlane", "BigAirPlane", "SuperAirPlane"]

enemy = random.choice(Game.enemy_str)
self.air_plane_groups.add(eval(enemy)())
    创建及设置游戏窗口
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
self.screen = pygame.display.set_mode(SCREEN_RECT.size)

rect相关概念请参考此链接:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743884.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号