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

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


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


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


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


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


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


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


このプログラムをみてよ。

👇

#include <iostream>


using namespace std;


int main() {


int a;


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


int b;


cin >> b;

switch (b) {


case 1:

cout << "上に進む\n";

break;


case 2:

cout << "右に進む\n";

break;


case 3:

cout << "左に進む\n";

break;


case 4:

cout << "後ろに進む\n";

break;


case 5:

cout << "ジャンプする\n";

break;


case 6:

cout << "レーザーを発射する\n";

break;

}

}

return 0;

}


マックス


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


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


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


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


今のプログラムの中の


この部分↓のプログラムを繰り返し実行し続けるわけだ


int b;


cin>>b;


switch (b){


case 1:

cout<<"上に進む\n";

break;


case 2:

cout<<"右に進む\n";

break;


case 3:

cout<<"左に進む\n";

break;


case 4:

cout<<"後ろに進む\n";

break;


case 5:

cout<<"ジャンプする\n";

break;


case 6:

cout<<"レーザーを発射する\n";

break;


}


ソーラー「


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


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


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



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


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


     「for文は命令文を繰り返し実行し続けるシステム」


のエピソードを


みてよね。


このプログラムでは


cinが使ってあるので


プログラムを実行すると


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


_


アンダーバーが表示され


数値入力待ち受け状態になります


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


switch文の


case 1:につづく命令文


cout>>"上に進む\n";


が実行され


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


上に進む


が表示されます。


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


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


冒頭につかってあるので


また命令文


int b;


cin>>b;


switch (b){


case 1:

cout<<"上に進む\n";

break;


case 2:

cout<<"右に進む\n";

break;


case 3:

cout<<"左に進む\n";

break;


case 4:

cout<<"後ろに進む\n";

break;


case 5:

cout<<"ジャンプする\n";

break;


case 6:

cout<<"レーザーを発射する\n";

break;


}


が繰り返して実行されます


ですので


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


再び


_



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


つまり


キーボードからの数値入力待ち受け状態になります


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


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


cout>>"右に進む\n";


が実行され


右に進むが


コマンドプロンプト画面に表示されます。


この表示がされると


またfor文により


int b;


scanf("%d",&b);


switch (b){


case 1:

cout<<"上に進む\n";

break;


case 2:

cout<<"右に進む\n";

break;


case 3:

cout<<"左に進む\n";

break;


case 4:

cout<<"後ろに進む\n";

break;


case 5:

cout<<"ジャンプする\n";

break;


case 6:

cout<<"レーザーを発射する\n";

break;


}


が 繰り返し実行されることになるので


再び


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


_



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


つまり


コマンドプロンプト画面からの数値入力待ち受け状態になります。


これを繰り返すと


1(と入力すると)

上に進む

2(と入力すると)

右に進む

3(と入力すると)

右に進む

4(と入力すると)

上に進む

5(と入力すると)

ジャンプする

6(と入力すると)

レーザーを発射する

1(と入力すると)

上に進む



などのようにビルド実行結果がコマンドプロンプト画面に表示されていきます。


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


コマンドプロンプト画面に"上に進む"と文字を表示する


命令文が 実行されましたが


"1を入力したときは


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


ゲーム画面の中を上に進む


という命令文が実行される"


"2を入力したときは


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


ゲーム画面の中を右に進む


という命令文が実行される"


というように


数値入力に対応して


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


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


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


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

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

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

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

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

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


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


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


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


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


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


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


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


動かせるんじゃない?


今のビルド実行結果


1(と入力すると)

上に進む

2(と入力すると)

右に進む

3(と入力すると)

右に進む

4(と入力すると)

上に進む

5(と入力すると)

ジャンプする

6(と入力すると)

レーザーを発射する

1(と入力すると)

上に進む


は、そのまま


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




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


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


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


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

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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