WonderWitchでプログラム〜どのボタンを押しているのか判定〜


目次に戻る


今までのサンプルプログラムをみてわかったと思いますが、key_wait()関数を呼び出せば、どのボタンを押したかどうか判定することができます。ただし、key_wait()関数はそこで何かボタンを押さないと処理が先に進まないためゲームには不向きです。そこで使用するのが、key_press_check()関数です。
 
key_press_check()関数を使うと、関数を呼び出したときに押しているボタンの状態を得ることができます。
 
#makefile メイクファイル
# makefile for key_press
#

include ../makefile.inc

all: kpress.fx

kpress.fx: main.fx
 copy main.fx kpress.fx
main.fx: main.bin
main.bin: main.obj
main.obj: main.c

main.cf cfファイル
name: kpress
info: キー入力
mode: 7
source: main.bin
output: main.fx
/* main.c  Cソースファイル */
#include <sys/bios.h>
#include <string.h>

int main()
{
    int key;
    static char buff[20] = "";  /* 結果表示用 */
 
    text_screen_init();  /* テキスト画面を初期化 */
 
    while(1){ /* 無限ループ開始 */
        key = key_press_check(); /* 現在押しているキーを得る */
  
        strcpy( buff , "" ); /* buffの内容を初期化 */

        if( key & KEY_A ) /* Aボタンを押している */
            strcat( buff , "A" );
        if( key & KEY_B ) /* Bボタンを押している */
            strcat( buff , "B" );
        if( key & KEY_X1 ) /* X1ボタンを押している */
            strcat( buff , "X1" );
        if( key & KEY_X2 ) /* X2ボタンを押している */
            strcat( buff , "X2" );
        if( key & KEY_X3 ) /* X3ボタンを押している */
            strcat( buff , "X3" );
        if( key & KEY_X4 ) /* X4ボタンを押している */
            strcat( buff , "X4" );
        if( key & KEY_Y1 ) /* Y1ボタンを押している */
            strcat( buff , "Y1" );
        if( key & KEY_Y2 ) /* Y2ボタンを押している */
            strcat( buff , "Y2" );
        if( key & KEY_Y3 ) /* Y3ボタンを押している */
            strcat( buff , "Y3" );
        if( key & KEY_Y4 ) /* Y4ボタンを押している */
            strcat( buff , "Y4" );
        if( key & KEY_START ) /* STARTボタンを押している = プログラムの終了 */
            break;
  
        text_put_string( 0 , 0 ,  buff ); /* どのボタンを押したかを画面に出力 */
        text_put_string( strlen(buff) , 0 ,  "                    " ); /* 以前画面に書いた文字を消す */
    }
 
    return 0;
}



目次に戻る