3

私はpygameが初めてで、現在、コンピューターがランダムな位置にボックスを1秒間表示し、ユーザーがそれらのボックスがあると思う場所をクリックする必要があるメモリゲームの作成に取り組んでいます。それはこのゲームのようなものです:

スクリーンショット

しかし、コンピュータに「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 ()
4

1 に答える 1

2

テキストを表示するには、一連の手順を実行する必要があります。最初に、`pygame.font.Font(font name, size) コマンドを使用してフォントを取得します。例えば:

arialfont=pygame.font.Font('arial', 12)

使用可能なすべてのフォントは、コマンドから取得できますpygame.font.get_fonts()pygame.init()これの前にpygame ( ) を初期化することを忘れないでください。

次に、 を使用する必要がありますFont.render(text, antialias, color, background=None)。例えば:

text=arialfont.render('Hello World!', True, (0, 0, 0))

これにより、サーフェスが返されます。他のサーフェスと同じように使用できます。を使用text.get_rect()して四角形を取得し、四角形を再配置して目的の場所に配置し、ウィンドウにブリットします。表面オブジェクトについて何も知らない場合は、私に聞いてください。

ここに作業コードがあります。

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()
于 2012-12-31T17:25:17.587 に答える