# sprite test
#pygameを使用する場合、インポートは必要です。
import pygame
#乱数を使用する場合、ランダム(random)をインポートする必要があります。
#インポートはソースをプログラムソースに取り込むことです。
import random
#定数を定義します。大文字で変数名を定義しています。
WIDTH = 640
HEIGHT= 480
#色の定数の指定。RBGの8ビットで指定します。
BLUE = ( 0, 0, 255)
GREEN = ( 0, 255, 0)
# sprite class
#クラスを定義します。ここでは、pygameにあるSpriteと言うクラスをモデイファイします。
#Spclassは、新しいクラスの名前です。人形描画のオブジェクトです。
class Spclass(pygame.sprite.Sprite):
#初期処理の定義です。
def __init__(self):
つづき
#Spriteクラスのinitの実行
pygame.sprite.Sprite.__init__(self)
#イメージファイルの読み込み。 \は行の継続
self.image = \
pygame.image.load("man.png").convert()
#self.imageから(0,0)ピクセルの色の値を取得する
colorkey = self.image.get_at((0,0))
#取得した色を透明にする
self.image.set_colorkey(colorkey)
#imageを四角にセットする。
self.rect = self.image.get_rect()
#ランダムに四角の読み込んだイメージを配置する。(0~WIDTH、HEIGH)
self.rect.centerx = random.randrange(WIDTH)
self.rect.centery = random.randrange(HEIGHT)
#スピードをランダムにセットする。(-3~3)
self.x1 = random.randrange(-3, 3)
self.y1 = random.randrange(-3, 3)
つづき
# 画像の更新(クラスの一部です)
def update(self):
# ランダムな場所からランダムにinitで設定したスピード(増分)を足す。
self.rect.centerx += self.x1
self.rect.centery += self.y1
# 端まで行くとスピードを反転する。
# x方向の反転
if self.rect.centerx >= WIDTH \
or self.rect.centerx < 0:
self.x1 *= -1
# y方向の反転
if self.rect.centery >= HEIGHT \
or self.rect.centery < 0:
self.y1 *= -1
# メインの処理(実際のクラスの実行)
# main
つづき
# 処理は、上から順に実行されます。
# initは、pygameを使うときに必ずする初期処理です。
pygame.init()
# スクリーンの大きさを指定します。
screen = pygame.display.set_mode((WIDTH,HEIGHT))
# クロック(時計)の設置です。
myclock = pygame.time.Clock()
# クラスグループのエリアを定義します。
allgroup = pygame.sprite.Group()
# グループにSpclassを登録します。
# 登録と同時にinitが実行されます。
for i in range(100):
allgroup.add(Spclass())
# 処理のループ条件を0に設定しします。
# エリアは、初期値の設定と同時に取られます。
endflag = 0
# endflag が 0の間繰り返し実行する。
while endflag == 0:
# イベントを取得する。
for event in pygame.event.get():
# イベント・タイプがQUIT(閉じるを押されたら)ならendflagを1にし繰り返しを出る。
if event.type == pygame.QUIT: endflag = 1
# スクリーンの背景をブルーで塗る。
screen.fill(BLUE)
# svreenの半分の長方形の始点と終点を定義する。
rect = (0, HEIGHT/2, WIDTH, HEIGHT/2)
# 長方形をグリーンで塗て配置する。
pygame.draw.rect(screen, GREEN, rect)
# クラスグループの更新を実行する。
allgroup.update()
# クラスグループの描画を実行する。
#(当プログラムには表示されていないがコピーの本体にある)
allgroup.draw(screen)
# 1秒間に60回実行する。60FPS
myclock.tick(60)
# 実描画する。(表示する)
pygame.display.flip()
# プログラムを終わらせる。
pygame.quit()
終わり。