マウスイベント1

マウスという入力インターフェースを用いて, クリック時のプリントの実装します.
Pygameでマウス入力を検出する方法は, 2つあります.
今回は1つ目のイベントハンドラでマウスイベントを補足する方法です.
イベントハンドラは今までQUITイベントで使っていました.
つまりクリック時の処理の設定です.

import pygame
from pygame.locals import *
import sys

SCREEN_SIZE =  (1000, 700)

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE)
pygame.display.set_caption("マウスイベント")

backImg = pygame.image.load("hakusuiko.jpg").convert()
pythonImg2 = pygame.image.load("kappa3.png").convert()
colorkey = pythonImg2.get_at((0,0))  # 左上の色を透明色に
pythonImg2.set_colorkey(colorkey, RLEACCEL)

cur_pos = (500,350)    # カッパの位置
pythons_pos = []   # コピーしたカッパのリスト
while True:
    screen.blit(backImg, (0,0))

    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        # マウスクリックでカッパをコピー
        if event.type == MOUSEBUTTONDOWN and event.button == 1:
            x, y = event.pos
            x -= pythonImg2.get_width() / 2
            y -= pythonImg2.get_height() / 2
            pythons_pos.append((x,y))  # カッパの位置を追加
        # マウス移動でカッパを移動
        if event.type == MOUSEMOTION:
            x, y = event.pos
            x -= pythonImg2.get_width() / 2
            y -= pythonImg2.get_height() / 2
            cur_pos = (x,y)

    # カッパを表示
    screen.blit(pythonImg2, cur_pos)
    for i, j in pythons_pos:
        screen.blit(pythonImg2, (i,j))
    pygame.display.update()

上の部分は今までと変わりません.

cur_pos = (500,350)    # カッパの位置
pythons_pos = []   # コピーしたカッパのリスト

これで最初のカッパの位置と, マウスイベントを起こした時のカッパの位置の登録を行います.

これからクリック時の挙動イベントハンドラのプログラムです.
イベントハンドラは今まで, QUITイベントが来た時にスクリプトを終了していただけですが, 他にもたくさんのことに応用できます.
イベントには3種類あります.
一つ目に MOUSEBUTTONDOWN です.
マウスが押された時に一回だけ発生します. 長押ししても一回しか発生しません.
二つ目に MOUSEBUTTONUP です.
これはマウスが押されて離れた時に一回だけ発生します.
最後に MOUSEMOTION です.
マウスカーソルを移動させた時に発生します.
前の2つのイベントよりも大量に発生させることができます.
実際に見てみます.

for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        # マウスクリックでカッパをコピー
        if event.type == MOUSEBUTTONDOWN and event.button == 1:
            x, y = event.pos
            x -= pythonImg2.get_width() / 2
            y -= pythonImg2.get_height() / 2
            pythons_pos.append((x,y))  # カッパの位置を追加
        # マウス移動でカッパを移動
        if event.type == MOUSEMOTION:
            x, y = event.pos
            x -= pythonImg2.get_width() / 2
            y -= pythonImg2.get_height() / 2
            cur_pos = (x,y)

まず最初はQUITの操作です.
QUITが押されたら終了. これは前と変わりません.
次に, MOUSEBUTTONDOWN なのでクリック時に発生します.
どのイベントが発生したのかはEventオブジェクトのtypeで判断できます
またボタンの種類なのですが今回は1となっています.
数字はマウスのボタンの箇所を表していて, 1は左クリック,2は中クリック, 3は右クリックを表します.
posはマウスイベントが発生した座標です.
位置の追加をしていくことによって, 一番下のプログラムで位置に沿って表示させます.
次は MOUSEMOTION なので, 矢印ポインタに合わせて設定したキャラクターが映っています.

最後に表示させるプログラムです.

screen.blit(pythonImg2, cur_pos)
    for i, j in pythons_pos:
        screen.blit(pythonImg2, (i,j))
    pygame.display.update()

カッパの位置に沿って画像を貼っていきます.
最後にウィンドウの更新をします.