Menu
CoddyTech

ポインターを追いかけよう

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行目ではその位置に輪を描き、プレイヤーがポインターで指している場所を見られるようにします。宝石より後、つまり最後に描画してください。そうしないと、宝石が輪を覆ってしまいます。

ループの前に位置を一度だけ読み取ると、輪はゲーム開始時のポインターの位置にとどまります。

challenge icon

チャレンジ

簡単
  1. ループ内で、宝石を描画した後に、pygame.mouse.get_pos()を使ってポインターの位置を読み取ります。
  2. その位置に白い(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プレイグラウンド