投稿三つ目!夏休みプチプログラミングコンテスト2018

夏休みプチプログラミングコンテスト2018への投稿です。三つ目!

一つ目:投稿!夏休みプチプログラミングコンテスト2018
二つ目:投稿二つ目!夏休みプチプログラミングコンテスト2018

今回のプログラムは、「2018夏休み 宿題を終わらせるぞ!プログラム!」

エンターキーを押すと、どんどん宿題が終わっていく、かもしれません。

実行後、エンターキーを押すと、どんどん宿題が終わっていきます!!!
前回のプログラムに追加した感じの内容ですね。

ソースはここに載せておきます。改変して利用などもご自由にどうぞ!

右クリックからダウンロード
https://cocoamix.jp/puttti2018/syukudai.c

macではそのまま、
cc syukudai.c
./a.out
で動作すると思います。

処理は無限ループなので、ctrl+cキーで終了を。

無限ループをなくした、トゥルーエンドを追加したものも作りました。これで一安心です。。
右クリックからダウンロード
https://cocoamix.jp/puttti2018/syukudai2.c

以下は、無限ループ版の中身のほぼほぼ全般

// defines
char *title = "⭐️ 2018夏休み 宿題終わらせちゃうぞー! ⭐\n-- Enterキーでさくさく終わらせよう! --\n";
char *msgEnter = "- Enterキーで次へ -\n";
char *serifuFormat = "%s%s%s\n";
char *serifuBoku_head = "ぼく「";
char *serifuP_head = "プロ生ちゃん「";
char *serifuQ_head = "クエリちゃん「";
char *serifu_tail = "」";

char *serifuMain[] =
		{
			"計算ドリルを終わらせた!!!",
			"自由研究をささっとやり終えた!!!",
			"漢字の書き取り全ページ終了!!!",
			"読書感想文、原稿用紙3枚書いた!!!",
			"英単語のプリント終わった!!!",
			"社会の作文、書き終えた!",
		};
char *msgSintyoku = "--- 進捗 %02d %% ---";
char *msgEnd[] =
		{
			".............",
			"目が覚めると、そこはベッドの上だった。",
			"今日は8月31日、夏休み最終日だ。。。",
			"宿題全然終わってない!\n",
		};
char *serifuP[] =
{
       "👍",
       "👍👍👍",
       "すごい!",
};
char *serifuQ[] =
{
       "すごいデス!",
       "えらいデス(*Q∀Q)♪",
       "応援してマスヨ(*Q∀Q)♡",
};

int countP = sizeof(serifuP)/sizeof(serifuP[0]);
int countQ = sizeof(serifuQ)/sizeof(serifuQ[0]);
int countSerifu = sizeof(serifuMain)/sizeof(serifuMain[0]);
int countMsgEnd = sizeof(msgEnd)/sizeof(msgEnd[0]);
//////////////////////////////////////////////////////
// globalな変数
int sintyoku =0;

////////
int syukudaiYaruzo();
void printPraise();
int showStudy();

//
// メイン
int main(void){	
	while(1){
		sintyoku = 0;
		// タイトル表示
		printf("%s",title);
		syukudaiYaruzo();
	}
	return 0;
}

//
// セリフ表示
void printPraise(int target){
	srand((unsigned int) time(NULL));
	if(target == 0){
		printf(serifuFormat, serifuP_head, serifuP[rand()%countP] ,serifu_tail);
	}else{
		printf(serifuFormat, serifuQ_head, serifuQ[rand()%countQ] ,serifu_tail);
	}
}
//
// 進捗
int showStudy(){
	int blDone = 0;
	printf(serifuFormat, serifuBoku_head, serifuMain[sintyoku] ,serifu_tail);
	
	sintyoku++;
	if(sintyoku >= countSerifu){
		blDone = 1;
	}
	return blDone;
}
//
// 宿題やるぞ!
int syukudaiYaruzo(){
	int n = 0;
	for(;(n = getchar()) != '\n';){
		//Enterまで空読み
	}
	
	int blDone = 0;
	// 宿題終わらせる!
	blDone = showStudy();
	
	// プロ生ちゃん or クエリちゃん
	srand((unsigned int) time(NULL));
	int target = (rand()%100 < 50)?0:1;
	// 褒める!
	printPraise(target);
	
	// 進捗率 表示
	printf(msgSintyoku, 100* sintyoku/countSerifu);
	
	// Enterで次へ
	printf("%s",msgEnter);
	if(blDone != 1){
		// 次の宿題へ
		syukudaiYaruzo();
	}else{
		// msg dream
		for(int i=0;i < countMsgEnd;i++){
			if((n = getchar()) == '\n'){
				printf("%s",msgEnd[i]);
			}
		}
		printf("%s",msgEnter);
		if((n = getchar()) == '\n'){
			// end
		}
	}
	
	// goto next dream ....
	return 0;
}