HOWTO · Pygame
Pygame の collidepoint() メソッド
この短い記事では、Pygame での collidepoint() メソッドの使用について簡単に説明します。
このページの内容
この記事では、Pygame を使用して Python でテキストを描画する方法を示します。 これは、動作する Python ゲーム ウィンドウの完全なコードではありません。
最低限の作業フレームワークに興味がある場合は、この 記事 を確認してください。
Pygame で collidepoint() メソッドを使用する
rect クラスの collidepoint() メソッドでは、与えられた点が rect 内にあるかどうかをテストします。 次に、ホバーすると色が変わるボタンを作成します。
関数に x 座標と y 座標を別々に指定するか、タプルやリストなどのイテラブルで指定できます。
構文:
rect.collidepoint(x, y)
rect.collidepoint((x, y))
collidepoint() を使用して、表面にカーソルを合わせたときに表面の色を変更します。 これを設定するには、次のことを行います。
collidepoint()メソッドを使用してrectを定義することから始めます。- 指定された
rect幅と高さでサーフェスを作成して続行します。 - メイン ループの前に行う最後の作業は、2つの変数を作成することです。 1つは通常の色を表し、もう 1つはホバーの色を表します。
# Before Main loop
rect = pygame.Rect(10, 10, 100, 60)
btn_surface = pygame.Surface((rect.width, rect.height))
normal_color = (200, 100, 100)
hover_color = (100, 200, 100)
メイン ループでマウスの位置を取得し、それが rect 内にあるかどうかを確認します。
- マウスの位置を取得し、上で作成した
rectのcollidepoint()メソッドに渡します。 - マウスが上にあることが判明した場合は、ボタンの表面をホバー カラーで塗りつぶします。 それ以外の場合は、通常の色で塗りつぶします。
- 最後に、サーフェスをスクリーンにブリットします。
# In the Main loop
if rect.collidepoint(pygame.mouse.get_pos()):
btn_surface.fill(hover_color)
else:
btn_surface.fill(normal_color)
screen.blit(btn_surface, rect)
完全なコード:
# Imports
import sys
import pygame
# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))
# Before Main loop
rect = pygame.Rect(10, 10, 100, 60)
print(rect.width)
btn_surface = pygame.Surface((rect.width, rect.height))
normal_color = (200, 100, 100)
hover_color = (100, 200, 100)
# Game loop.
while True:
screen.fill((20, 20, 20))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# In the Main loop
if rect.collidepoint(pygame.mouse.get_pos()):
btn_surface.fill(hover_color)
else:
btn_surface.fill(normal_color)
screen.blit(btn_surface, rect)
pygame.display.flip()
fpsClock.tick(fps)
出力: