学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

C++プログラミング入門その15 関数を使用した応用プログラム

>>この記事には書き直した新しいページがあります。<<


<<前  [TOP]  次>>


Visual Studioで新規プロジェクトを作り、次のcppファイルを作成して下さい。


【KansuuTest5.cpp】

#include <iostream>
#include <stdlib.h>

void main() {

	int teki_kyori, teki_course, laser_course, round, sokudo=0;
	char rader='R';

	int seed, houkou;

	std::cout << "自然数で適当な数を入力してください。--> " << std::endl;

        for (std::cin >> seed ; !std::cin ; std::cin >> seed){

			std::cin.clear();
			std::cin.ignore();
			std::cout << "入力が間違ってます。" << std::endl << "自然数で適当な数を入力してください。--> ";
        }

	srand(seed);

	for(round=1; round<6; round++) {

		std::cout << "第 " << round << "ラウンド" << std::endl << std::endl;
		teki_course = rand()%6;
		sokudo ++;

		for(teki_kyori=10; ; teki_kyori-=sokudo) {
			if (teki_kyori<=0) {

				std::cout << "あなたの負けです" << std::endl;
				exit(0);
			}
			houkou = rand()%3-1;

			if ( teki_course == 0 ) {
				teki_course = rand()%2;
			}
			else if ( teki_course == 5 ) {
				teki_course = rand()%2+4;
			}
			else {
				teki_course += houkou;
			}
			std::cout << "敵との距離は" << teki_kyori << "です。" << std::endl;

			std::cout << "あなたはレーザーを撃ちますか?" << std::endl;
			std::cout << "それともレーダーを使いますか?" << std::endl;
			std::cout << "レーザー(F) or レーダー(R)" << std::endl;

			for (std::cin >> rader ; !std::cin ; std::cin >> rader){
				std::cin.clear();
				std::cin.ignore();
				std::cout << "入力が間違ってます。" << std::endl << "レーザー(F) or レーダー(R)";
		        }
			if ( rader == 'R' || rader == 'r') {
				std::cout << "敵のコースは" << teki_course << "です。" << std::endl;

			}
			else {
				std::cout << "撃つ方向を決めてください。" << std::endl;
				std::cout << "0〜5のどれかを入力してください" << std::endl;

				for (std::cin >> laser_course ; !std::cin ; std::cin >> laser_course){

					std::cin.clear();
					std::cin.ignore();
					std::cout << "入力が間違ってます。" << std::endl << "0〜5のどれかを入力してください";
       				}

				if (teki_course == laser_course) {

					std::cout << "あなたの勝ちです!" << std::endl;
					break;
				}
				else {

					std::cout << "外れました" << std::endl;
				}
			}
		}
	}
}



今までに説明したことを使って作った、簡単なゲームです。


敵の機体はあなたの所から10 離れたところから、1つづつ進んできて、あなたのいるところ、すなわち0 の所まで来たらあなたの負けです。
あなたの武器はレーザーガンで、相手が1つづつ進むごとに1回だけ打てます。
敵は6コース(方角)のどれかにいますから、適当な方角を選んでレーザーを撃ってください。
また、敵の位置をレーダーで索敵することも出来ますが、レーダーとレーザーは同時に使えません。


敵は1つ進むごとにコースを変えることが出来ますが、必ず隣り合うコースにしか移動しません。
従って、3のコースにいたら、次は、2、3または4のコースに必ずいます。(コースを変えないこともあります)。
端のコース(0または5のコース)にいる場合は、0にいたら次は0または1にいます。
敵の破壊に成功したら、そのメッセージを出します。
外れたら敵との距離を表示して、レーザーの方向入力を待つようにし、距離が0になったらプレーヤーの負けを表示します。
ゲームは、5回戦まであり、敵のスピードはだんだんと速くなっていきます。
乱数の種(seed)はキーボードから適当な数字を入力してもらうようにします。





<<前  [TOP]  次>>