返回列表 發帖

[作業] 超級金頭腦 (二)

本帖最後由 鄭繼威 於 2023-4-29 14:15 編輯

備註:若課堂上未能完成,當作業!

設計遊戲 "超級金頭腦",
讓使用者計算兩個範圍介於51~99之隨機亂數的和.
參考作法如下:

1. 要有一個起始畫面, 顯示標題與遊戲規則


2. 參賽人數


3. 參賽者姓名


4. 請就位的訊息


5. 測驗中畫面


6. 排名
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. using namespace std;
  5. int main()
  6. {
  7.     int x; //有幾位參賽者
  8.     long t1,t2;
  9.     srand(time(NULL));
  10.     cout<<"*** 超級金頭腦 v1.0 ***"<<endl<<endl;
  11.     cout<<"遊戲規則: 電腦隨機出題, 比賽誰能在最短的時間內算對三題!"<<endl<<endl;
  12.     cout<<"有幾位挑戰者? ";
  13.     cin>>x;              
  14.    
  15.     string name[x];      //產生長度為x的陣列(string)存名字
  16.     long score[x];       //產生長度為x的陣列(long)存秒數
  17.     for(int i=0; i<x; i++)
  18.     {
  19.          system("cls");
  20.          score[i]=0;   //初始化秒數
  21.          cout<<"第"<<i+1<<"位挑戰者你好, 請輸入你的大名: ";
  22.          cin>>name[i];
  23.          cout<<name[i]<<"同學請就位!"<<endl<<endl;
  24.          system("pause");
  25.          system("cls");
  26.          int n=0;   //答對的次數
  27.          int ans;
  28.          
  29.          while(n<3) //要答對3題才完成
  30.          {
  31.              int a=rand()%9+1;       //1~9
  32.              int b=rand()%9+1;
  33.              cout<<a<<" + "<<b<<" = ";
  34.              t1=clock();  //使用者輸入前按下碼錶
  35.              cin>>ans;
  36.              t2=clock();  //使用者輸入後按下碼錶
  37.              if(ans==a+b)
  38.              {
  39.                  cout<<"答對了! ";
  40.                  n++;           //答對就n+1
  41.              }
  42.              else
  43.                  cout<<"答錯了! 正確答案是"<<a+b<<". ";
  44.              cout<<"本題花了"<<t2-t1<<"毫秒思考!"<<endl; //不管答對與否都輸出花了幾毫秒思考
  45.              score[i]+=(t2-t1);                          //把毫秒sum進去score裡
  46.          }
  47.          cout<<endl<<name[i]<<"同學總共花了"<<score[i]<<"毫秒!"<<endl;
  48.          system("pause");
  49.     }
  50.     system("cls");
  51.     cout<<"*** 金頭腦風雲榜 ***"<<endl<<endl;
  52.     //開始進行排序(由小到大(時間越少名次越前面))
  53.     string tmp1;
  54.     long tmp2;
  55.     for(int i=0; i<x-1; i++)
  56.     {
  57.         for(int j=i+1; j<x; j++)
  58.         {
  59.              if(score[j]<score[i])
  60.              {
  61.                  tmp1=name[i];
  62.                  name[i]=name[j];
  63.                  name[j]=tmp1;
  64.                 //換秒數的時候順便換名字
  65.                  tmp2=score[i];
  66.                  score[i]=score[j];
  67.                  score[j]=tmp2;                    
  68.              }     
  69.         }     
  70.     }
  71.     //最後輸出排名完成此專題
  72.     for(int i=0; i<x; i++)
  73.         cout<<"第"<<i+1<<"名\t"<<name[i]<<"\t"<<score[i]<<"毫秒"<<endl;
  74.     cout<<endl;
  75.     system("pause");
  76.     return 0;
  77. }
複製代碼

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表