Pygame の collidepoint() メソッド
Maxim Maeder
2023年6月21日
この記事では、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)
出力:
著者: Maxim Maeder
Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.
GitHub