# makefile メイクファイル
# makefile for sprite_2
#include ../makefile.inc
all: spr_2.fx
spr_2.fx: main.fx
copy main.fx spr_2.fx
main.fx: main.bin
main.bin: main.obj
main.obj: main.cmain.cf cfファイル
name: sprite_2
info: スプライト表示3
mode: 7
source: main.bin
output: main.fx/* main.c sprite_2のメインソース */
#include <sys/bios.h>
#include "hito.h"
#define ANIMATION_TIME 30 /* スプライトの表示内容を切り替える時間 */
#define KEY_WAIT 5 /* キー入力受付間隔 */
int main()
{
int anime = 2; /* スプライトに設定するキャラクタ番号 */
unsigned long lastanimetime = sys_get_tick_count(); /* アニメーションで使用する時間保持用変数 */
unsigned long lastkeytime = 0; /* キー入力で使用する時間保持用変数 */
int x = 10,y = 10; /* スプライトの表示位置 */
int key; /* 入力されたキー */
display_control( DCM_SCR1 | DCM_SPR ); /*ディスプレイの設定。SCREEN1を使用し、スプライトを使用する。*/
font_set_monodata( 0 , 4 , bmp_hito ); /*bmp_hito配列をキャラクタとして登録 */
screen_fill_char( 0 , 0 , 0 , SCREEN_CHAR_WIDTH , SCREEN_CHAR_HEIGHT , 0 ); /* 画面表示内容を初期化(画面全体をキャラクタ0で塗りつぶす) */
sprite_set_char_location( 0 , anime , x , y ); /* 0番のスプライトにanime番のキャラクタを割り当て、表示位置は(10,10)にする */
sprite_set_range(0,1); /* 使用するスプライトの数を設定 */
/* STARTボタンを押すまで繰り返す */
while( (key=key_press_check()) != KEY_START ){
unsigned long nowtime = sys_get_tick_count(); /* 現在の時間を得る */
/* スプライトのアニメーション */
if( nowtime - lastanimetime > ANIMATION_TIME ){ /* スプライトの表示内容を切り替える時間がきたかどうか */
lastanimetime = nowtime;
anime = (anime == 2) ? 3 : 2; /* スプライト0に設定するキャラクタ番号を切り替える */
sprite_set_char( 0 , anime ); /* スプライト0にanime番のキャラクタを割り当てる */
}
/* キー入力 */
if( key && nowtime - lastkeytime > KEY_WAIT ){
int v = 1; /* スプライトの移動量 */
if( key & KEY_B ){ /* Bボタン(ダッシュキー) */
v = 2; /* Bボタンを押している間は移動量が2倍 */
}
if( key & KEY_UP1 ){ /* 上ボタン */
y-=v;
if( y < 0 ){
y = 0;
}
}
if( key & KEY_DOWN1 ){ /* 下ボタン */
y+=v;
if( y > LCD_PIXEL_HEIGHT-8 ){
y = LCD_PIXEL_HEIGHT-8;
}
}
if( key & KEY_LEFT1 ){ /* 左ボタン */
x-=v;
if( x < 0 ){
x = 0;
}
}
if( key & KEY_RIGHT1 ){ /* 右ボタン */
x+=v;
if( x > LCD_PIXEL_WIDTH-8 ){
x = LCD_PIXEL_WIDTH-8;
}
}
/* スプライトの位置を更新する */
sprite_set_location( 0 , x , y );
/* キーを押した時間を記憶(キーウェイト用) */
lastkeytime = sys_get_tick_count();
}
}
return 0;
}/* hito.h */
#define hito_width 2
#define hito_height 2
unsigned char bmp_hito[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x19, 0x1A, 0x24, 0x58, 0x98, 0x24, 0x48, 0x90,
0x98, 0x58, 0x24, 0x1A, 0x19, 0x24, 0x12, 0x09,
};