|
外星人入侵项目实现按住空格全自动发射子弹
前言
完全自动实现其实很简单。只要加个计时器就行了。
两个语句都使用。
pygame.time.set_timer
还有
key _ press=pygame . key . get _ pressed()
if key _ press[pygame . k _ space]3360
提示:以下是本文正文内容。可以参考以下案例
一、
pygame.time.set_timer
此句用于定时——多少毫秒之后响应一次循环
1.先设置一个常量 FIRE_EVENT = pygame.USEREVENT
Import pygame
Class Settings:
保存游戏《外星人入侵》中设置的所有类“”
#设置发射常数
FIRE_EVENT=pygame。USEREVENT
在这里,这个常数可以放在settings.py中,也可以放在主程序中。为了主节目的简洁易读性。
2.在主程序加入这个定时器
From settings import Settings
Class AlienInvasion:
\“\”管理游戏资源和行为的类\“\”
Def __init__(self)
ation">:
"""初始化游戏并创建游戏资源"""
pygame.init()
self.settings = Settings()
pygame.time.set_timer(Settings.FIRE_EVENT, 250)
我这里设置了250 表示每250毫秒执行一次
二、
key_press = pygame.key.get_pressed()
if key_press[pygame.K_SPACE]:
此语句用于检测按键是否被按下并执行命令
1.先遍历按键事件并写入此代码
def _check_events(self):
# 监视键盘和鼠标事件。
for event in pygame.event.get():
key_press = pygame.key.get_pressed()
if key_press[pygame.K_SPACE]:
[color=]这种方法不同于event.type == pygame.KEYDOWN要执行循环命令需要加True,Flase开关,它可以持续响应按键被按下的情况
2.设置条件并创建子弹
def _check_events(self):
# 监视键盘和鼠标事件。
for event in pygame.event.get():
key_press = pygame.key.get_pressed()
if key_press[pygame.K_SPACE]:
"""创建一颗子弹,并将其加入编组bullets中"""
if len(self.bullets) self.settings.bullets_allowed and event.type == Settings.FIRE_EVENT:
new_bullet = Bullet(self) # 引用Bullet类创建子弹赋值给new_bullet
self.bullets.add(new_bullet) # 在sprite中添加子弹
self.settings.bullets_allowed这里我设置的是10 不然根本没有“哒哒哒”的感觉,当然也可以不要这个条件,重要的是event.type == Settings.FIRE_EVENT这个条件,当延迟250毫秒时在运行发射子弹的代码
总结
最后我们来看一下效果

ok,大功告成!感谢您的聆阅,希望对您有所帮助! |
|