Python 如何在Pygame上显示分数?
我是一个新的程序员,正在为我的《计算机科学总结》做一个记忆游戏。游戏是这样的:计算机在随机位置显示随机框,然后用户必须猜测框在哪里,然后点击它 我基本上完成了,除了现在我正在尝试创建5个不同的难度等级。例如,级别1将显示2个框,级别2将显示5个框,等等。如果用户通过所有级别,他们可以再次播放。我知道很多,但我真的很想在这个问题上获得a 但现在我被卡住了,因为在我试图关上窗户之前,它不会真正起作用,即使这样,它也只能走到一半。我在想我是如何定义函数的,但我不确定。 任何帮助都将不胜感激Python 如何在Pygame上显示分数?,python,pygame,Python,Pygame,我是一个新的程序员,正在为我的《计算机科学总结》做一个记忆游戏。游戏是这样的:计算机在随机位置显示随机框,然后用户必须猜测框在哪里,然后点击它 我基本上完成了,除了现在我正在尝试创建5个不同的难度等级。例如,级别1将显示2个框,级别2将显示5个框,等等。如果用户通过所有级别,他们可以再次播放。我知道很多,但我真的很想在这个问题上获得a 但现在我被卡住了,因为在我试图关上窗户之前,它不会真正起作用,即使这样,它也只能走到一半。我在想我是如何定义函数的,但我不确定。 任何帮助都将不胜感激 impor
import pygame , sys
import random
import time
size=[500,500]
pygame.init()
screen=pygame.display.set_mode(size)
# Colours
LIME = (0,255,0)
RED = (255, 0, 0)
BLACK = (0,0,0)
PINK = (255,102,178)
SALMON = (255,192,203)
WHITE = (255,255,255)
LIGHT_PINK = (255, 181, 197)
SKY_BLUE = (176, 226, 255)
screen.fill(BLACK)
# Width and Height of game box
width=50
height=50
# Margin between each cell
margin = 5
rows = 20
columns = 20
# Set title of screen
pygame.display.set_caption("Spatial Recall")
# Used to manage how fast the screen updates
clock=pygame.time.Clock()
coord=[]
# Create a 2 dimensional array. A two dimesional
# array is simply a list of lists.
def resetGrid():
grid = []
for row in range(rows):
# Add an empty array that will hold each cell
# in this row
grid.append([])
for column in range(columns):
grid[row].append(0) # Append a cell
return grid
def displayAllPink(pygame):
for row in range(rows):
for column in range(columns):
color = LIGHT_PINK
pygame.draw.rect(screen,color,[(margin+width)*column + margin,(margin+height)*row+margin,width,height])
pygame.display.flip()
def displayOtherColor(pygame,grid):
coord = []
for i in range(random.randint(2,5)):
x = random.randint(2, rows-1)
y = random.randint(2, columns-1)
color = LIME
pygame.draw.rect(screen,color,[(margin+width)*y + margin,(margin+height)*x+margin,width,height])
coord.append((x,y))
grid[x][y] = 1
pygame.display.flip()
time.sleep(1)
return coord
def runGame(gameCount,coord,pygame,grid):
pygame.event.clear()
pygame.display.set_caption("Spatial Recall: Level "+ str(gameCount))
pygame.time.set_timer(pygame.USEREVENT,1000)
time = 0
#clock.tick(
# -------- Main Program Loop -----------
#Loop until the user clicks the close button.
done = False
while done==False:
event = pygame.event.wait() # User did something
if event.type == pygame.QUIT: # If user clicked close
done=True # Flag that we are done so we exit this loop
pygame.event.clear()
print "Game ",gameCount, "ends"
elif event.type == pygame.USEREVENT:
time = time + 1
pygame.display.set_caption("Spatial Recall: Level "+ str(gameCount) + " Time: "+ str(time))
if time == 100:
done = True
pygame.display.set_caption("Time out, moving to next level")
pygame.event.clear()
return False
elif event.type == pygame.MOUSEBUTTONDOWN:
# User clicks the mouse. Get the position
pos = pygame.mouse.get_pos()
# Change the x/y screen coordinates to grid coordinates
column=pos[0] // (width+margin)
row=pos[1] // (height+margin)
if (row,column) in coord:
print coord
coord.remove((row,column))
print coord
color = LIME
pygame.draw.rect(screen,color,[(margin+width)*column + margin,(margin+height)*row+margin,width,height])
if coord == []:
done=True
pygame.display.set_caption("Time out, moving to next level")
pygame.event.clear()
return True
else:
color = RED
pygame.draw.rect(screen,color,[(margin+width)*column + margin,(margin+height)*row+margin,width,height])
pygame.display.flip()
def startTheGame(gameCount):
grid = resetGrid()
displayAllPink(pygame)
coord = displayOtherColor(pygame,grid)
displayAllPink(pygame)
runGame(gameCount,coord,pygame,grid)
for i in range(2):
startTheGame(i+1)
pygame.quit ()
目前它不起作用的主要问题是: 您的全局行和列设置为20,但板上只有9个字段,这就是为什么大多数随机选择的坐标不在板上 然后,您不能控制选择同一个坐标2次 一般来说,我建议选择更好的名称,尤其是displayOtherColor,它为每个级别组合目标坐标
对于您关于如何显示分数的问题,我建议将其设置为标题,因为您已经在运行时间中进行了设置。尝试澄清它是如何工作的,并看看是否可以将其缩小到更具体的问题和更小的代码块。@dokkaebi。我已经尝试过了,我认为问题在于我如何定义函数。但我不知道为什么,这正是我被困的地方。在调试之前少写代码,在编写更多代码之前,检查您编写的代码是否按预期工作。