【问题标题】:How/where to implement a randomized function如何/在哪里实现随机函数
【发布时间】:2015-02-22 03:51:10
【问题描述】:

我在 python 中制作 2048,除了在每个用户轮流后初始化下一个随机块之外,我在游戏的任何部分都没有遇到任何问题。创建执行此操作的函数很容易,并且只需要随机更改块条目数组中的一个条目。我遇到的问题是它是一个随机函数,并且它处于(游戏)循环中。这意味着它会不断被调用,并不断提供不同的输出,这意味着它会不断更改数组,而它应该只更改一次。游戏循环本身发布在下面,应该很容易解释。我关心的函数是 addTile() 函数。我曾想过跟踪它何时进出 if 语句,或者可能将随机函数的输出存储在某处,但这似乎不起作用。我如何在需要的时候选择性地调用这个函数?

while not done:

screen.fill((0,0,0))
board()

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done = 1

pressed = pygame.key.get_pressed()

if pressed[pygame.K_UP]:
    state = 1
if pressed[pygame.K_DOWN]:
    state = 2
if pressed[pygame.K_LEFT]:
    state = 3
if pressed[pygame.K_RIGHT]:
    state = 4

if state == 0:
    tiles(positions)
elif state == 1:
    positions = addTile(positions)
    positions = up(positions)
    tiles(positions)
elif state == 2:
    positions = down(positions)
    tiles(positions)
elif state == 3:
    positions = left(positions)
    tiles(positions)
elif state == 4:
    positions = right(positions)
    tiles(positions)

pygame.display.flip()
clock.tick(60)

【问题讨论】:

  • 似乎在您按下“UP”后,您的state 仍然是1,但您想在处理完事件后更改它。也许只是在最后添加state = 0 就可以解决您的问题。
  • @syntonym:那应该是答案,而不是评论。
  • 请修正代码中的缩进。

标签: python random pygame


【解决方案1】:

即使在您处理了按键之后,您的 state 仍然是 1。处理按键后,您应该将state 设置回0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多