コントローラーボタンの入力を受け付けるプログラムのプロトタイプを創造する

ソーラー 「ははは、いいこと思いついちゃったあ


今まで見てきたswitch文、for文をくみあわせて


コントローラーの上、下、右、左、A、Bの入力を


受け付けることができるプログラムのプロトタイプを


考え付いちゃったんだ~~~」


マックス 「なあにい~~~もうやっちまったんか~~~い」


ソーラー 「うふふ はっーははっ


これをみてよ。


#pragma warning(disable: 4996)

#include <stdio.h>

int main(void){

int a;


for(a=1;0<a;a++){

int b;


scanf("%d",&b);


switch (b){


case 1:

printf("上に進む\n");

break;

case 2:

printf("右に進む\n");

break;

case 3:

printf("左に進む\n");

break;

case 4:

printf("後ろに進む\n");

break;

case 5:

printf("ジャンプする\n");

break;

case 6:

printf("レーザーを発射する\n");

break;

}

}

return 0;

}


マックス

「ずっと命令文を繰り返すfor文の{}のなかに


scanf関数とswitch文が配置されているのか


for(a=1;0<a;a++){ }は


{}のなかの命令文をずっとくりかえすタイプのfor文だから


今のプログラムの中の


この部分↓のプログラムをくりかえしつづけるわけだ。


int b;


scanf("%d",&b);


switch (b){


case 1:

printf("上に進む\n");

break;

case 2:

printf("右に進む\n");

break;

case 3:

printf("左に進む\n");

break;

case 4:

printf("後ろに進む\n");

break;

case 5:

printf("ジャンプする\n");

break;

case 6:

printf("レーザーを発射する\n");

break;

}


ソーラー「

この場合はfor{}文の{}のなかの命令文で


変数aを使用しているものがないため


for(a=1;0<a;a++){ }

for(;;){    }と記述してもOKだね。


for(;;)に関しては詳しくは


for文は命令文を繰り返し実行し続けるシステムのエピソードを


みてよね。


このプログラムでは


scanf関数が使ってあるので


コンパイル後


コマンドプロンプト画面では


_


アンダーバーが表示され


数値入力待ち受け状態になっている。


ここでキーボードから数値1を打ち込むと


switch文の


case 1:につづく命令文


printf("上に進む\n");


が実行され


コマンドプロンプト画面に


上に進むが表示される。


通常では ここでプログラムの実行は終了するが


命令文をずっと、繰り返すfor文が


冒頭につかってあるので


また命令文


int b;


scanf("%d",&b);


switch (b){


case 1:

printf("上に進む\n");

break;

case 2:

printf("右に進む\n");

break;

case 3:

printf("左に進む\n");

break;

case 4:

printf("後ろに進む\n");

break;

case 5:

printf("ジャンプする\n");

break;

case 6:

printf("レーザーを発射する\n");

break;

}


が繰り返して実行されるため


コマンドプロンプト画面では


再び


_



アンダーバーが表示された


数値入力待ち受け状態になっている。


ここで数値2を打ち込むと


case 2:のあとにつづく命令文


printf("右に進む\n");


が実行され


右に進むが表示される。


この表示がされると


またfor文により

int b;


scanf("%d",&b);


switch (b){


case 1:

printf("上に進む\n");

break;

case 2:

printf("右に進む\n");

break;

case 3:

printf("左に進む\n");

break;

case 4:

printf("後ろに進む\n");

break;

case 5:

printf("ジャンプする\n");

break;

case 6:

printf("レーザーを発射する\n");

break;

}


が 繰り返され


コマンドプロンプト画面では


再び


_



アンダーバーが表示された


数値入力待ち受け状態になる。


これを繰り返すと


上に進む

右に進む

右に進む

上に進む

ジャンプする

レーザーを発射する

上に進む

などのようにコンパイル結果は表示されていく。


ここでは1を入力したときは



という命令文が対応していましたが


1を入力したときは

操作しているゲームキャラクターが




2を入力したときは

操作しているゲームキャラクターが




というように


数値入力に対応して


ゲームキャラクターをディスプレイ画面上で移動させること


ができるんじゃないかな?


キーボードで数値を打ち込むのはゲームっぽくないから


コントローラーボタンの上を押すと1が入力され上に進む

コントローラーボタンの右を押すと2が入力され右に進む

コントローラーボタンの左を押すと3が入力され左に進む

コントローラーボタンの下を押すと4が入力され後ろに進む

コントローラーボタンのAを押すと5が入力されジャンプする

コントローラーボタンのBを押すと6が入力されレーザーを発射


するようにしておけばいいわけじゃない?。


キーボードで数値1をうちこめるなら


コントローラーの上をおして


数値1をうちこむようにすることも


数値入力システム的にはできるんじゃないかな?


つまり for文とswitch文をくみあわせて


コントローラーボタンの入力にあわせてゲームキャラクターを


動かせるんじゃない?


今のコンパイル結果


上に進む

右に進む

右に進む

上に進む

ジャンプする

レーザーを発射する

上に進む

は、そのまま


ゲーム画面上でのキャラクターの動きになるわけなんだ。」


マックス 「おおっ冴えてるな~ 


調子よさそうじゃないか。


いいことでもあったのか。」


ソーラー 「いいことだらけ、ぼくの周りは猫だらけだよ。」


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます