 
      
      
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。
(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)
マウス入力の例を示します。
マウス入力には、「マウスを操作した瞬間」を検出する方法と、「マウスの現在の状態」を検出する方法の2種類があります。前者は、ボタンのクリックなどの操作に向いています。後者は、キャラクターの移動などに向いています。
「example_pygame/mouse.py」を示します。
import pygame
def main():    pygame.init()       # Pygameを初期化    screen = pygame.display.set_mode((800, 600))    # 画面作成    image = pygame.image.load("image/icon.png")     # 画像    running = True      # 実行継続フラグ
    while running:        pygame.display.update()     # 画面を更新        screen.fill(pygame.Color(0, 0, 0))  # 画面を塗りつぶす
        # イベント発生時取得        for event in pygame.event.get():    # イベント            if event.type == pygame.QUIT: running = False   # 終了            if event.type == pygame.MOUSEBUTTONDOWN:    # ボタン下げ                if event.button == pygame.BUTTON_LEFT:  # 左ボタン                    print(event.pos, "DOWN")            if event.type == pygame.MOUSEBUTTONUP:      # ボタン上げ                if event.button == pygame.BUTTON_LEFT:  # 左ボタン                    print(event.pos, "UP")            if event.type == pygame.MOUSEMOTION:    # マウス移動                print(event.pos)
        # 状態取得        pressed = pygame.mouse.get_pressed()        if pressed[0]:  # 左クリック            image.set_alpha(128)   # 半透明        else:            image.set_alpha(255)   # 不透明        screen.blit(image, pygame.mouse.get_pos()) # 描画        pygame.display.flip()   # 画面フリップ    pygame.quit()
if __name__ == "__main__":    main()まずは『Pygame』の初期化処理です。
import pygame
def main():    pygame.init()       # Pygameを初期化    screen = pygame.display.set_mode((800, 600))    # 画面作成    image = pygame.image.load("image/icon.png")     # 画像    running = True      # 実行継続フラグメイン ループの中で、キー入力の判定をおこないます。ここでは、マウスを操作した瞬間の検出を示します。
    while running:        pygame.display.update()     # 画面を更新        screen.fill(pygame.Color(0, 0, 0))  # 画面を塗りつぶす
        # イベント発生時取得        for event in pygame.event.get():    # イベント            if event.type == pygame.QUIT: running = False   # 終了            if event.type == pygame.MOUSEBUTTONDOWN:    # ボタン下げ                if event.button == pygame.BUTTON_LEFT:  # 左ボタン                    print(event.pos, "DOWN")            if event.type == pygame.MOUSEBUTTONUP:      # ボタン上げ                if event.button == pygame.BUTTON_LEFT:  # 左ボタン                    print(event.pos, "UP")            if event.type == pygame.MOUSEMOTION:    # マウス移動                print(event.pos) event.typeがpygame.MOUSEBUTTON~のときに、マウスのボタンの状態を確認できます。また、pygame.MOUSEMOTIONのときに、マウスの移動を確認できます。
続いて、マウスの現在の状態の検出を示します。
        # 状態取得        pressed = pygame.mouse.get_pressed()        if pressed[0]:  # 左クリック            image.set_alpha(128)   # 半透明        else:            image.set_alpha(255)   # 不透明        screen.blit(image, pygame.mouse.get_pos()) # 描画        pygame.display.flip()   # 画面フリップ    pygame.quit() pygame.mouse.get_pressed()関数の戻り値を利用します。
これらの処理を、より詳しく見ていきましょう。
 pygame.event.get()を使います。そしてfor文でeventを得ます。
        for event in pygame.event.get():    # イベント            if event.type == pygame.QUIT: running = False   # 終了            if event.type == pygame.MOUSEBUTTONDOWN:    # ボタン下げ                if event.button == pygame.BUTTON_LEFT:  # 左ボタン                    print(event.pos, "DOWN")            if event.type == pygame.MOUSEBUTTONUP:      # ボタン上げ                if event.button == pygame.BUTTON_LEFT:  # 左ボタン                    print(event.pos, "UP")            if event.type == pygame.MOUSEMOTION:    # マウス移動                print(event.pos) eventにはさまざまな情報が含まれています。そして、event.typeがpygame.MOUSE~のときにマウスが操作されています。
 ボタン操作時はevent.buttonの値を調べると、操作が発生したボタンが分かります。ボタンの種類はpygame.BUTTON_~の形式です。また、event.posでマウス カーソルの位置を得られます。
 pygame.mouse.get_pressed()を使います。
        pressed = pygame.mouse.get_pressed()        if pressed[0]:  # 左クリック            image.set_alpha(128)   # 半透明        else:            image.set_alpha(255)   # 不透明        screen.blit(image, pygame.mouse.get_pos()) # 描画 pygame.mouse.get_pressed()の戻り値は、真偽値のリストです。要素0がボタン1、要素1がボタン2……です。マウス カーソルの位置はpygame.mouse.get_pos()で得られます。
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。
(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)