RとPythonによるデータマイニング

企業でデータ分析などやっています。主にRやPythonによるデータマイニング・機械学習関連の話題と日々の日記やその他備忘録について書いてます。

[Python]pygameによるアニメーション

今日はpygameでいくつか試しにコード書いたりしてました。
pygameのサンプルコードは以下のサイトを参考に書きましたが、質・量ともに多く動画などもあり非常にわかりやすくて良かったです。
 http://programarcadegames.com/index.php?chapter=example_code


以下のコードは上記サイトを参考に作成した雪が降る中、ブロックが画面内を反射しているアニメーションのプログラムです。
(どういう状況だw)

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import pygame
import random
reload(sys)
sys.setdefaultencoding("utf-8")

pygame.init()

# 色の定義
black = [  0,  0,  0]
white = [255,255,255]
blue =  [  0,  0,255]
green = [  0,255,  0]
red =   [255,  0,  0]

# スクリーンの設定
size=[700,500]
screen=pygame.display.set_mode(size)

# キャプションの設定
pygame.display.set_caption("Bouncing Rectangle")

# ゲームループ制御フラグ
done=False

# クロック制御オブジェクト
clock = pygame.time.Clock()

# 長方形の位置、速度
rect_x = 50
rect_y = 50

rect_change_x = 5
rect_change_y = 3

# 雪の初期位置
star_list = []
for i in range(100):
    x = random.randrange(0,700)
    y = random.randrange(0,500)
    star_list.append([x,y])

# ゲームループ
while done==False:
    # イベント制御
    for event in pygame.event.get(): # User did something
        if event.type == pygame.QUIT: # If user clicked close
            done=True # Flag that we are done so we exit this loop

    # 長方形の移動
    rect_x += rect_change_x
    rect_y += rect_change_y

    # 画面端での反射制御
    if rect_x > 650 or rect_x < 0:
        rect_change_x *= -1
    if rect_y > 450 or rect_y < 0:
        rect_change_y *= -1

    # 背景の描画
    screen.fill(black)

    # 雪のアニメーション
    for item in star_list:
        item[1] += 2
        item[0] += random.randrange(-1,2)
        # 雪の描画
        pygame.draw.circle(screen,white,item,2)

        # 画面外に出たら画面上のランダムな位置に戻す
        if item[1] > 500:
            item[1] = random.randrange(-20,-5)
            item[0] = random.randrange(700)


    # 長方形の描画
    pygame.draw.rect(screen,white,[rect_x,rect_y,50,50])
    pygame.draw.rect(screen,red,[rect_x+10,rect_y+10,30,30])

    # ディスプレイのアップデート
    pygame.display.flip()

    # フレームレートの設定
    clock.tick(20)

# ゲーム終了
pygame.quit()

あんまり構造化してないから微妙だけど最初はこんなもんでしょう。
取り合えず基本的なオブジェクトの描画と移動のさせ方はわかったから、次はアクションかな。