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