3回目:pygameの使い方まとめ|キャラクターをマウスで動かしてみる。

 

前回はキーボードを使っての操作でした。

 

今回は「マウスででクリックしたところに移動」と「マウスでクリックしたところに画像をコピー」というのをやっていきたいと思います。

 

おさらい

前回の「キーボードで動かす」ソースコードです。

 


#-*- coding:utf-8 -*-
import pygame
from pygame.locals import *
import sys

(w,h)=(640,480)		#スクリーンの縦と横

pygame.init()		#初期化
screen=pygame.display.set_mode((w,h))	#スクリーンサイズを設定
pygame.display.set_caption("キーボードで移動")	#タイトル

Img=pygame.image.load("a.jpg").convert_alpha()
rect=Img.get_rect()
rect.center=(w/2,h/2)		#中心の設定

while(1):
 screen.fill((0,0,0)) #スクリーンの色
 screen.blit(Img,rect)		#画像と位置の設定
 pygame.display.update()	#更新
 
 for event in pygame.event.get():
  if event.type==QUIT:	#閉じるをおすと閉じる
   sys.exit()

  if event.type==KEYDOWN:
   if event.key==K_LEFT:
    rect.move_ip(-10,0)
   if event.key==K_RIGHT:
    rect.move_ip(10,0)
   if event.key==K_UP:
    rect.move_ip(0,-10)
   if event.key==K_DOWN:
    rect.move_ip(0,10)


マウスででクリックしたところに移動

ソースコード


#-*-coding:utf-8-*-
import pygame
from pygame.locals import*
import sys

(w,h)=(640,480)

pygame.init()		#初期化
screen=pygame.display.set_mode((w,h))#スクリーンサイズを設定
pygame.display.set_caption("マウスで動かす")	#タイトル

Img=pygame.image.load("a.jpg").convert_alpha()	#画像の用意

Basyo=(0,0)	#画像の場所を指定

while(1):
 screen.fill((0,0,0))	#画面の色
 screen.blit(Img,Basyo)	#画像の初期位置
 
 pygame.display.update()

 for event in pygame.event.get():
  if event.type==QUIT:
   sys.exit()

  if event.type==MOUSEBUTTONDOWN:	#もしマウスをクリックしたら
    (x,y)=event.pos			#クリックした位置を取得
    Basyo=(x,y)				#Basyoにx,yを入れる
    
 screen.blit(Img,Basyo)			#Basyoに画像を出力
 pygame.display.update()		#画面を更新

 

これだと、画像の左上にマウスが置かれる状況になります。

 

クリックしたときに画像が真ん中になる用にするには、このようにします。

 


  if event.type==MOUSEBUTTONDOWN:	#もしマウスをクリックしたら
    (x,y)=event.pos			#クリックした位置を取得
    Basyo=(x,y)				#Basyoにx,yを入れる
</pre ↓

  if event.type==MOUSEBUTTONDOWN:	#もしマウスをクリックしたら
    (x,y)=event.pos			#クリックした位置を取得
     x -= Img.get_width() / 2		#get_width()は画像の横幅を取得
     y -= Img.get_height() / 2		#/2ということは取得した座標から、画像の中心の座標を引いている
    Basyo=(x,y)

マウスでクリックしたところに画像をコピー


#-*- coding:utf-8 -*-
import pygame
from pygame.locals import *
import sys

(x,y)=(640,480)

pygame.init()
screen=pygame.display.set_mode((x,y))
pygame.display.set_caption("スタンプ")

Img=pygame.image.load("a.jpg").convert_alpha()

Basyo=(0,0)

while(1):
 screen.blit(Img,(0,0))
 
 pressed=pygame.mouse.get_pressed()	
 if pressed[0]:			#もし左クリックされたら
  (x,y)=pygame.mouse.get_pos()	#座標を取得
  x-=Img.get_width()/2
  y-=Img.get_height()/2
  Basyo=(x,y)

 screen.blit(Img,Basyo)
 pygame.display.update() 
  
 for event in pygame.event.get():
  if event.type==QUIT:
   sys.exit()

これでクリックした場所に画像が貼られますが、連続的なものになってしまいます。

 

さらに、この書き方はクリック制御をイベントの中に含んでいないやり方です。

 

まとめ

これでマウスでいろいろな事ができるということがわかりました。

 

少しずつですが、pythonという言語がどのようなものかがわかってきました。

 

本で読むことも大切ですが、実際に手を動かしてみることが一番大切なことだと思います。

 

次は、BGMの設定をやりたいと思います。

 

ゲームに音楽は欠かせませんからね。

 

参考サイト

Pythonでゲーム作りますが何か?