我是pygame的新手,目前我正致力于创建一个记忆游戏,其中计算机在随机位置显示盒子一秒钟,然后用户必须点击他/她认为这些盒子的位置。这有点像this game:
但是,我不确定如何让计算机显示带有字母或符号的方框,例如: 'T'或'%'。 (我已经制作了网格)。 有人可以帮忙吗?真的很感激。
import pygame
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
# Create a 2 dimensional array. A two dimesional
# array is simply a list of lists.
grid=[]
for row in range(20):
# Add an empty array that will hold each cell
# in this row
grid.append([])
for column in range(20):
grid[row].append(0) # Append a cell
# Set row 1, cell 5 to one. (Remember rows and
# column numbers start at zero.)
grid[1][5] = 1
# Set title of screen
pygame.display.set_caption("Spatial Recall")
#Loop until the user clicks the close button.
done=False
# Used to manage how fast the screen updates
clock=pygame.time.Clock()
# -------- Main Program Loop -----------
while done==False:
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT: # If user clicked close
done=True # Flag that we are done so we exit this loop
if 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)
# Sete t hat location to zero
grid[row][column]=1
print("Click ",pos,"Grid coordinates: ",row,column)
# Draw the grid
for row in range(10):
for column in range(10):
color = LIGHT_PINK
if grid[row][column] == 1:
color = RED
pygame.draw.rect(screen,color,[(margin+width)*column+margin,(margin+height)*row+margin,width,height])
# Limit to 20 frames per second
clock.tick(20)
# Go ahead and update the screen with what we've drawn.
pygame.display.flip()
pygame.quit ()
答案 0 :(得分:2)
要显示文字,您必须完成一系列步骤。首先,您需要使用命令`pygame.font.Font(字体名称,大小)来获取字体。例如:
arialfont=pygame.font.Font('arial', 12)
可以从命令pygame.font.get_fonts()
获取所有可用字体。记得在任何一个之前初始化pygame(pygame.init()
)。
接下来,您必须使用Font.render(text, antialias, color, background=None)
。例如:
text=arialfont.render('Hello World!', True, (0, 0, 0))
这将返回一个表面。您可以像使用任何其他表面一样使用它。使用text.get_rect()
获取其矩形,然后重新定位矩形以将其放置在您想要的位置,并将其blit到窗口。如果你对表面物体一无所知,那就问问我。
这是一个有效的代码。
import pygame, sys
pygame.init()#never forget this line
window=pygame.display.set_mode((100, 100))
font=pygame.font.SysFont('arial', 40)
text=font.render('@', True, (0, 0, 0))
rect=text.get_rect()
window.fill((255, 255, 255))
window.blit(text, rect)
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()