マウス入力は左ボタン、ホイールボタン、右ボタンの押下を扱います。ホイールの回転はちょっと面倒になるので割愛します。これらのボタンを使ったゲームらしい
サンプルプログラムって、案外難しいです。どんな仕様にするか?
マウスをUFOが追いかける 右ボタンの押下でUFOが消える 左ボタンの押下でUFOが表示される ホイールボタンでUFOが点滅する これでマウス入力を確認できます。
マウスカーソルが動くとUFOが追いかけこんな感じになります。 ソースです。
import pygame
import pygame.mouse as ms
import pygame.image as im
import sys
TURN_ON=0
TURN_OFF=1
BLINK=2
def main():
pygame.init()
pygame.display.set_caption("Pygame マウス入力")
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
img_ufo = im.load('ufo.png')
w = img_ufo.get_width()
h = img_ufo.get_height()
mode = TURN_ON
cnt = 0
blinkOn = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 終了ボタンで終了
pygame.quit()
sys.exit()
screen.fill((0,0,0))
# マウスをUFOが追いかける
left, center, right = ms.get_pressed()
if left:
mode = TURN_ON
elif right:
mode = TURN_OFF
elif center:
mode = BLINK
cnt = 0
x, y = ms.get_pos()
if mode == BLINK:
if cnt < 5:
blinOn = True
else:
if cnt >= 10:
cnt = 0
blinkOn = True
else:
blinkOn = False
cnt += 1
if mode == TURN_ON or (mode ==BLINK and blinkOn==True):
screen.blit(img_ufo, [x - w/2,y - h/2])
pygame.display.update()
clock.tick(10)#1秒間のフレーム数 100msec
if __name__ == '__main__':
main()
マウスカーソルの位置の取得。
x, y = ms.get_pos()
これは簡単。
マウスボタンの押下の取得。
left, center, right = ms.get_pressed()
Bool値で取得できます。
マウスの表示。
if mode == TURN_ON or (mode ==BLINK and blinkOn==True):
screen.blit(img_ufo, [x - w/2,y - h/2])
モードが点灯
モードが点滅かつ点滅中の表示がON
の条件で表示をします。
|