创建随机事件 pygame



我正在用Python开发一个名为"Blank Screen Simulator"的小游戏(但它不仅仅是黑屏,我想有事件。就像随机图像弹出的时间一样,但现在我只有一次多次单击鼠标的时间和多次按下按钮的时间(无论如何,我需要使这些随机。这是我尝试过的系统:

import pygame
from pygame.locals import *
import time
import random
pygame.init()
width, height = 640, 480
screen=pygame.display.set_mode((width, height))
Event1 == False
Event2 == False
screen_rect=screen.get_rect()
player=pygame.Rect(180, 180, 20, 20)
mouseClickNumber = 0
keyPressNumber = 0
a = random.choice(Event1, Event2)
a = True
def Event1:
    if pygame.mouse.get_pressed(button 1):
        mouseClickNumber = mouseClickNumber + 1
    time.sleep(20)
    clickHappyFunTime = False
    print mouseClickNumber
    mouseClickNumber = 0
def Event2:
    if pygame.key.get_pressed:
        keyPressNumber = keyPressNumber + 1
    time.sleep(20)
    buttonPressTime = False
    print keyPressNumber
    keyPressNumber = 0

我的系统涉及将两个事件作为 False,然后在两个变量 Event1 和 Event2 之间进行随机选择,但是当我运行它时,def Event2: 是一种无效的语法。我只是做错了什么吗?

函数定义必须包含参数列表,即使它是空的。喜欢这个:

def Event1():

但是,您在这里还有很多其他问题。

  • Event1 == False 没有将False分配给Event1,它只是将Event1False进行比较——这将提高NameError,因为你还没有任何名为Event1的东西,但即使你这样做了,这也不会做任何有用的事情,特别是因为你忽略了结果。
  • 如果你修复了这个问题,a = random.choice(Event1, Event2)就会失败,因为choice需要一个参数,一个可供选择的序列,而不是每个选择的单独参数;你想要a = random.choice([Event1, Event2])
  • 如果你解决这个问题,它将在FalseFalse之间做出选择。也许您希望它在稍后要定义的两个函数之间进行选择?但是在定义它们之前,您无法在它们之间进行选择。更早地将它们定义为一些不同的值无济于事;它只是选择较早的值。(此外,对普通值和函数重用相同的名称非常令人困惑。
  • 如果你修复了这个问题,反正没关系,因为a = True只会替换你选择的值。
  • 你永远不会直接调用函数,或者将它们附加到事件,这样它们就会被PyGame间接调用,所以它们没有多大用处。
  • 如果调用这些函数,它们将引发UnboundLocalError,因为赋值给函数内部的mouseClickNumber会使其成为局部变量,从而隐藏该名称的全局变量。为避免这种情况,您需要添加 global mouseClickNumber .
  • GUI 应用程序内部的time.sleep会冻结整个 GUI,阻止其更新屏幕。

最新更新