ポインターを追いかけよう
CoddyのPygameジャーニー「ゲームループ」セクションの一部。レッスン 13/32。
この章では、マウスで遊ぶゲーム「Gem Hunt」を作ります。水色のダイヤモンドが宝石です。gxとgyから4つの頂点を計算する多角形です。
pygame.mouse.get_pos()は、ほかのものと同じく左上隅を基準に測った、ウィンドウ内のポインターの位置を(x, y)として返します。ループ内で読み取れば、毎フレーム最新の位置が得られます。
mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)1行目では、タプルの値を2つの変数に展開しています。2行目ではその位置に輪を描き、プレイヤーがポインターで指している場所を見られるようにします。宝石より後、つまり最後に描画してください。そうしないと、宝石が輪を覆ってしまいます。
ループの前に位置を一度だけ読み取ると、輪はゲーム開始時のポインターの位置にとどまります。
チャレンジ
簡単- ループ内で、宝石を描画した後に、
pygame.mouse.get_pos()を使ってポインターの位置を読み取ります。 - その位置に白い
(240, 240, 240)のリングを描画します。半径は10、線の幅は2の円です。
自分で試してみよう
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Gem Hunt")
clock = pygame.time.Clock()
gx, gy = 225, 165
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((30, 30, 46))
gem_points = [(gx + 15, gy), (gx + 30, gy + 15), (gx + 15, gy + 30), (gx, gy + 15)]
pygame.draw.polygon(screen, (80, 220, 255), gem_points)
pygame.display.flip()
clock.tick(60)
pygame.quit()
ゲームループのすべてのレッスン
自分で練習してみよう: Pygameプレイグラウンド