#include #include #include //sleep #include // defines int gamejikan =10; //入力時間 int mikanSize = 5;//1MiKaNでの長さ char *title = "⭐️ 2018夏休み 自由研究! ⭐\n「1個のみかんの皮、どこまで伸ばせるのか研究」\n"; char *subtitle = "mi ka n のいずれかを入力してEnter。mikanの数で長さが決まります。制限時間: %d秒\n- Enterで開始 -"; char *msgTimeup = "\n時間で〜〜す!!\n- Enterで結果表示 -\n"; char *mikan[] = { "mi", "ka", "n", }; char *kekka_head = "⭐️ 研究の成果 ⭐️ \n\n🍊"; char *msgTrophy[] = { "先生「努力が足りません。」", "先生「頑張りましたね!!!」", "先生「これは世界新記録かもしれませんよ!」", "先生「チートいけません」", }; char *msgEnd = "--- 自由研究 終了 ---"; ////////////////////////////////////////////////////// // globalな変数 // Mi Ka N カウント保持 int countMi = 0; int countKa = 0; int countN = 0; int endFlug = 0; //スレッド終了用flug ////////////////////////////////////////////////////// int inputMain(); void *inputting(); // // メイン int main(void){ inputMain(); return 0; } // // 入力ループなスレッドfunc void *inputting(){ char buff[256]; for(;;){ // 入力読み込み memset(buff,0x00,sizeof(buff)); fgets(buff, sizeof(buff), stdin); if(strlen(buff)>0)buff[strlen(buff) - 1] = 0x00;//改行消し if(endFlug == 1){ // 入力ループ、thread終了 break; } // Mi or Ka or N int len = strlen(buff); if(len >= 2){ if(strncasecmp(buff, mikan[0],strlen(mikan[0])) == 0){ countMi++; }else if(strncasecmp(buff, mikan[1],strlen(mikan[1])) == 0){ countKa++; } }else{ if(strncasecmp(buff, mikan[2],strlen(mikan[2])) == 0){ countN++; } } //printf("%d %d %d",countMi,countKa,countN); } return 0; } // // みかんチャレンジ int inputMain(){ int ret = 0; // タイトル表示 printf("%s",title); printf(subtitle,gamejikan); char buff[4]; fgets(buff, 4, stdin);//enter待ち用に // 入力スレッド生成 pthread_t inputThread; pthread_create( &inputThread, NULL, &inputting, NULL); // タイマー double timeStart =0; double timeWk =0; double keika =0; double jikan =gamejikan; timeStart = clock() / CLOCKS_PER_SEC ; while(1){ if(keika > jikan)break; timeWk = clock() / CLOCKS_PER_SEC ; keika = timeWk - timeStart; } // 入力終了 printf("%s", msgTimeup); endFlug = 1; pthread_join(inputThread, NULL); //スレッド終了待ち // 結果表示 int kekkaCount = countMi; if(kekkaCount > countKa) kekkaCount = countKa; if(kekkaCount > countN) kekkaCount = countN; printf("%s", kekka_head); sleep(1); for(int i=0; i< kekkaCount;i++){ printf("-"); } printf("\n\n%dセンチまで伸ばせました!\n",kekkaCount*mikanSize); if(kekkaCount < 3){ printf("%s\n\n",msgTrophy[0]); }else if(kekkaCount < 10){ printf("%s\n\n",msgTrophy[1]); }else if(kekkaCount < 20){ printf("%s\n\n",msgTrophy[2]); }else{ printf("%s\n\n",msgTrophy[3]); } printf("入力した数 Mi: %d Ka: %d N: %d\n\n",countMi,countKa,countN); sleep(1); printf("%s\n\n",msgEnd); return ret; }