首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pygame中的目标练习游戏在目标被射击几次后停止工作,我如何修复这个问题?

Pygame中的目标练习游戏在目标被射击几次后停止工作,我如何修复这个问题?
EN

Stack Overflow用户
提问于 2020-06-24 21:09:20
回答 1查看 280关注 0票数 1

我已经在Pygame中创建了一个Target练习游戏,它在每次射击时都会加快速度。在目标被射击几次后,子弹和目标碰撞将停止注册。下面是我认为相关的函数,有人能看出来有什么问题吗?

目标未命中函数:

代码语言:javascript
复制
def target_missed(stats, bullets):
"""Respond to target being missed."""

if stats.misses > 0:
    stats.misses -= 1


    # Empty list of bullets
    bullets.empty()

    # Pause.
    sleep(0.5)

else:
    stats.game_active = False
    pygame.mouse.set_visible(True)

用于子弹-目标碰撞的函数:

代码语言:javascript
复制
def check_bullet_target_collisions(ai_settings, screen, ship, targets, bullets):
"""Respond to bullet-target collisions."""
# Remove any bullets and targets that have collided.
collisions = pygame.sprite.groupcollide(bullets, targets, True, True)

if collisions:
    # Destroy existing bullets, speed up game, and create new target.
    bullets.empty()
    ai_settings.increase_speed()
    create_target(ai_settings, screen, targets)
EN

回答 1

Stack Overflow用户

发布于 2020-06-27 22:10:59

我知道问题出在哪里了!

基本上,当子弹移动太快时,碰撞不会被记录下来。所以让子弹的速度保持恒定。

Settings.py

代码语言:javascript
复制
class Settings():
"""A class to store all settings for Alien Invasion."""

def __init__(self):
    """Initialise the game's settings."""
    self.screen_width = 1200    # Screen settings
    self.screen_height = 800
    self.bg_colour = (230, 230, 230)


     # Bullet settings
    self.bullet_width = 15      # Make the width bigger than height for sideways bullet
    self.bullet_height = 3
    self.bullet_colour = 60, 60, 60
    self.bullets_allowed = 3


    self.missed_attempts = 3         # Missed attempts allowed

    self.speedup_scale = 1.1          # How quickly the game speeds up

    self.initialize_dynamic_settings()


def initialize_dynamic_settings(self):
    """Initialize settings that change throughout the game."""
    self.ship_speed_factor = 5
    self.bullet_speed_factor = 100


    self.target_speed_factor = 5  # Target settings
    # fleet_direction of 1 represents right; -1 represents left.
    self.target_direction = 1


def increase_speed(self):
    """Increase speed settings."""
    self.ship_speed_factor *= self.speedup_scale
    self.bullet_speed_factor *= 1     # Keep bullet speed constant
    self.target_speed_factor *= self.speedup_scale

一开始我让飞船,子弹和目标移动得更快,所以这就是问题所在。我希望每个人都能发现这是有帮助的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62555820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档