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



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


今まで見てきた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文だから


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;

}


ソーラー「

この場合は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;

}

👆されているので


が記述されているので


また命令文


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文をくみあわせて


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


動かせるんじゃない?


今のプログラムの実行結果


上に進む

右に進む

右に進む

上に進む

ジャンプする

レーザーを発射する

上に進む

は、そのまま


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


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


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


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


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


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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る