コントローラーボタンの入力を受け付けるプログラムのプロトタイプを創造する
ソーラー 「ははは、いいこと思いついちゃったあ
今まで見てきた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文をくみあわせて
コントローラーボタンの入力にあわせてゲームキャラクターを
動かせるんじゃない?
今のプログラムの実行結果
上に進む
右に進む
右に進む
上に進む
ジャンプする
レーザーを発射する
上に進む
・
・
・
は、そのまま
ゲーム画面上でのキャラクターの動きになるわけなんだ。」
マックス 「おおっ冴えてるな~
調子よさそうじゃないか。
いいことでもあったのか。」
ソーラー 「いいことだらけ、ぼくの周りは猫だらけ 妖精だらけだよ。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます