微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python游戏:如何控制生成A的速度?

如何解决Python游戏:如何控制生成A的速度?

在此游戏中,不同的字母会在一个时间间隔后从屏幕顶部掉落,当您敲击键盘上的相应键时,这些字母会消失。每个字母的x位置是随机的,下降速度将随着游戏的进行而加快。游戏将在特定条件下结束(例如,屏幕高度被字母占据)。对我来说,这似乎是巨大的挑战。因此,在第一阶段,我的代码被简化为相同的字母“ A”,而不是变化的字母。 问题是如何控制游戏中每个“ A”的生成速度。目前,它太快了。我已经尝试过time.sleep(5),但是它也阻止了每个字母的掉落。 这是代码

  1. alphabet_zoo.py
import sys
import pygame
from pygame.locals import *
from settings import Settings
from letter import Letter
import game_functions as gf
from pygame.sprite import Group

def run_game():
    pygame.init()
    az_settings =Settings()
    screen = pygame.display.set_mode((0,0),RESIZABLE)   
    pygame.display.set_caption("Alphabet Zoo")
    letters = pygame.sprite.Group()


    while True:
        gf.letter_generator(az_settings,screen,letters)
        gf.check_events(letters)
        letters.update()
        gf.update_screen(az_settings,letters)


run_game()

  1. settings.py
    def __init__(self):
        self.bg_color = (0,0)
        self.letter_speed_factor = 1
  1. game_functions.py
import sys
import pygame
import time
from letter import Letter

def letter_generator(az_settings,letters):
    # time.sleep(5)
    # This setting not only slowdowns the generating of A
    # but also stops the falling down of each A for a short time.
    new_letter = Letter(az_settings,screen)
    letters.add(new_letter)

def check_events(letters):
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                letters.empty()


def update_screen(az_settings,letters):
    screen.fill(az_settings.bg_color)
    letters.draw(screen)
    letters.update()
    pygame.display.flip()
  1. letter.py
import pygame
import random
from pygame.sprite import Sprite


class Letter(Sprite):

    def __init__(self,az_settings,screen):
        super().__init__()
        self.screen = screen
        self.az_settings = az_settings
        self.image = pygame.image.load('images/A.png')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        self.rect.centerx = random.randint(0,self.screen_rect.right)
        self.rect.top = self.screen_rect.top
        self.center = float(self.rect.centerx)


    def update(self):
        if self.rect.bottom < self.screen_rect.bottom:
            self.rect.centery += self.az_settings.letter_speed_factor

我如何实现控制A生成速度的目标?

解决方法

您可以从时间模块中查看time.time()函数。示例:

import time

start = time.time()
sleepTime = 1
while True:
    print("This is being printed meaning the program isn't stopped")
    now = time.time()
    if now  - start > sleepTime:
        print("generate A in this area. This will only happen every one second.")
        start = now

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?