Webサイト専門プログラマの言いたい放題

元システムエンジニアがサイト制作とプログラミングについて好き放題しゃべります。

【ゲームプログラム気まぐれ講座 ~スプライトとマリオ~】

f:id:wp-lesson:20160202155009j:plain

スプライトと言えば?
 
ああ、あのシュワ~っと爽やかな
炭酸飲料ね。それは「Sprite」。
 
じゃなくて、アニメーション用語です。
 
簡単に言うと、
パラパラ漫画の1コマ1コマを
画像にして並べたもの。
 
スライドって呼んだほうが感覚的に
分かりやすいかも知れませんね。
 
ウェブで画像やイラストを扱う人は、
gifアニメーション」のようなものと
イメージしても良いかと思います。
 
ゲームとかでキャラクターが動くのは、
何枚にもコマ割りされたスプライトを、
動く方向やアクションの種類に応じて
パパパパッと連続的に切り替えている
からです。(3Dゲームは別)
 
スプライトを作るにはコツがあって、
なるべく全てのコマの縦横のサイズを
同じにして、一定の間隔で並べます。
 
例えば余白を含めて縦横32ピクセルの
マリオをジャンプさせるとき、
 
━━━━━━━━━━━━━━━━━
x=0 y=0
━━━━━━━━━━━━━━━━━
 
 
ジャンプ前のマリオの絵(32*32px)
 
 
━━━━━━━━━━━━━━━━━
x=0 y=32
━━━━━━━━━━━━━━━━━
 
 
ジャンプ中のマリオの絵(32*32px)
 
 
━━━━━━━━━━━━━━━━━
x=0 y=64
━━━━━━━━━━━━━━━━━
 
 
着地直前のマリオの絵(32*32px)
 
 
━━━━━━━━━━━━━━━━━
 
こんな感じに画像ファイルの左上隅を
(x,y)座標の原点(0,0)と見なして各コマ
のマリオの絵を並べて配置します。
 
すると、プログラムのほうは32の倍数
だけy座標を変化させて画像を読み込み
画面に表示すれば良くなるので、
スプライト(スライド)の枚数分だけ
時間差で繰り返し処理をします。
 
‪#define‬ ANIMATION_JUMP_MAX 3
#define SPRITE_MARIO "/mario.png"
 
for ( i=0; i