返回列表 發帖

[專題實作] 超級金頭腦 (二)

本帖最後由 方浩葦 於 2024-8-17 15:13 編輯

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

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


2. 參賽人數


3. 參賽者姓名


4. 請就位的訊息


5. 測驗中畫面


6. 排名


本帖隱藏的內容需要回復才可以瀏覽

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. using namespace std;
  5. int main(){
  6.     string name,tmp2;
  7.     float t1,t2,t3,t4,pass,tmp1;
  8.     int x,y,answer,answer_c,people;
  9.     srand(time(NULL));
  10.     cout<<"***超級金頭腦 1.0***"<<endl<<endl;
  11.     cout<<"遊戲規則:電腦隨機出題,比賽誰能在最短的時間算對3題"<<endl<<endl;
  12.     cout<<"有幾位參賽者:"<<endl;
  13.     cin>>people;
  14.     string n[people];
  15.     int score[people];
  16.     for(int i=1;i<=people;i++){
  17.         cout<<"第"<<i<<"位挑戰者你好,請輸入你的大名";
  18.         cin>>name;
  19.         n[i-1]=name;
  20.         system("cls");
  21.     }
  22.     for(int i=0;i<people;i++){
  23.         cout<<n[i]<<"同學請就位!"<<endl;
  24.         system("pause");
  25.         t3=clock();
  26.         for(int j=1;j<=3;j++){
  27.         while(true){

  28.         x=rand()%10;
  29.         y=rand()%10;
  30.         answer_c=x+y;
  31.         cout<<x<<"+"<<y<<"=";
  32.         t1=clock();
  33.         cin>>answer;
  34.         t2=clock();
  35.         pass=t2-t1;
  36.             if(answer==answer_c){
  37.                 cout<<"答對了!本題花"<<pass<<"毫秒思考"<<endl;
  38.                 break;
  39.             }
  40.             else {
  41.                 cout<<"答錯了!本題花"<<pass<<"毫秒思考"<<endl;
  42.                j--;
  43.                break;

  44.             }

  45.         }
  46.         }
  47.         t4=clock();
  48.         cout<<"總共花"<<t4-t3<<"毫秒"<<endl;
  49.         score[i]=t4-t3;
  50.         system("pause");
  51.         system("cls");
  52.   }
  53.   cout<<"***金頭腦風雲榜***"<<endl<<endl;
  54.   for(int k=0;k<people-1;k++){
  55.     for(int p=k+1;p<people;p++){
  56.         if(score[k]>score[p]){
  57.             tmp1=score[k];
  58.             score[k]=score[p];
  59.             score[p]=tmp1;

  60.             tmp2=n[k];
  61.             n[k]=n[p];
  62.             n[p]=tmp2;
  63.         }
  64.     }
  65.   }
  66.   for(int i=0;i<people;i++){
  67.   cout<<"第"<<i+1<<"名"<<"  "<<n[i]<<"\t"<<score[i]<<"毫秒"<<endl;
  68.   }
  69.     system ("pause");
  70.     return 0;

  71. }
複製代碼

TOP

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. using namespace std;
  5. int main()
  6. {
  7.     re:
  8.    int a,b,c,p,n=1;
  9.    float t,t1=0,t2=0,t_sum=0;
  10.    string x[10];
  11.    int y[10];
  12.    system("cls");
  13.    cout<<"***超級金頭腦***"<<endl<<endl;
  14.    cout<<"遊戲規則: 電腦隨機出題,比賽誰能在最短的時間內算完3題!"<<endl<<endl;
  15.    system("pause");
  16.    re2:
  17.    system("cls");
  18.    cout<<"有幾位參賽者: ";
  19.    cin>>p;
  20.    if(p<1)
  21.    {
  22.        cout<<"輸入錯誤"<<endl;
  23.        _sleep(1500);
  24.        goto re2;
  25.    }
  26.    for(int i=1; i<=p; i++)
  27.    {
  28.    system("cls");
  29.    cout<<"第"<<n<<"位參賽者你好,請輸入你的大名: ";
  30.    cin>>x[n-1];
  31.    system("cls");
  32.    cout<<x[n-1]<<"同學請就位!"<<endl;
  33.    system("pause");
  34.    system("cls");
  35.    t2=0;
  36.    int q=0;
  37.    while(q!=3)
  38.    {
  39.     t1=clock();
  40.     a=rand()%899+101;
  41.     b=rand()%899+101;
  42.     cout<<a<<" + "<<b<<" = ";
  43.     cin>>c;
  44.     t2=clock()-t1;
  45.     if(c==a+b)
  46.    {
  47.        cout<<"答對了! 本題花了"<<t2<<"毫秒思考"<<endl;
  48.        q++;
  49.    }
  50.    else
  51.    {
  52.        cout<<"答錯了! 正確答案是"<<+a+b<<", 本題花了"<<t2<<"毫秒思考"<<endl;
  53.    }
  54.    t_sum+=t2;
  55.    }
  56.    y[n-1]=t_sum;
  57.    cout<<endl<<x[n-1]<<"同學總共花了"<<y[n-1]<<"毫秒!"<<endl<<endl;
  58.    n++;
  59.    t_sum=0;
  60.    system("pause");
  61.    }
  62.    system("cls");
  63.    for(int i=0; i<=(p-1); i++)
  64.    {
  65.        for(int j=0; j<=(p-1); j++)
  66.        {
  67.            int z;
  68.            string z1;
  69.            if(y[i]<y[j])
  70.            {
  71.                z=y[j];
  72.                y[j]=y[i];
  73.                y[i]=z;
  74.                z1=x[j];
  75.                x[j]=x[i];
  76.                x[i]=z1;
  77.            }
  78.        }
  79.    }
  80.    cout<<"***金頭腦風雲榜***"<<endl<<endl;
  81.    for(int i=0; i<=p-1; i++)
  82.    {
  83.        cout<<"第"<<i+1<<"名 "<<x[i]<<"\t"<<y[i]<<"毫秒"<<endl;
  84.    }
  85.    system("pause");
  86.    goto re;
  87.    return 0;
  88. }
複製代碼

TOP

本帖最後由 李偈睿 於 2024-8-17 15:51 編輯
  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.     string name[x];
  15.     long score[x];
  16.     for(int i=0; i<x; i++)
  17.     {
  18.          system("cls");
  19.          score[i]=0;
  20.          cout<<"第"<<i+1<<"位挑戰者你好, 請輸入你的大名: ";
  21.          cin>>name[i];
  22.          cout<<name[i]<<"同學請就位!"<<endl<<endl;
  23.          system("pause");
  24.          system("cls");
  25.          int n=0;  
  26.          int ans;
  27.          
  28.          while(n<3)
  29.          {
  30.              int a=rand()%9+1;
  31.              int b=rand()%9+1;
  32.              cout<<a<<" + "<<b<<" = ";
  33.              t1=clock();
  34.              cin>>ans;
  35.              t2=clock();   
  36.              if(ans==a+b)
  37.              {
  38.                  cout<<"答對了! ";
  39.                  n++;
  40.              }
  41.              else
  42.                  cout<<"答錯了! 正確答案是"<<a+b<<". ";
  43.              cout<<"本題花了"<<t2-t1<<"毫秒思考!"<<endl;
  44.              score[i]+=(t2-t1);
  45.          }
  46.          cout<<endl<<name[i]<<"同學總共花了"<<score[i]<<"毫秒!"<<endl;
  47.          system("pause");
  48.     }
  49.     system("cls");
  50.     cout<<"*** 金頭腦風雲榜 ***"<<endl<<endl;
  51.     string tmp1;
  52.     long tmp2;
  53.     for(int i=0; i<x-1; i++)
  54.     {
  55.         for(int j=i+1; j<x; j++)
  56.         {
  57.              if(score[j]<score[i])
  58.              {
  59.                  tmp1=name[i];
  60.                  name[i]=name[j];
  61.                  name[j]=tmp1;
  62.                  tmp2=score[i];
  63.                  score[i]=score[j];
  64.                  score[j]=tmp2;                    
  65.              }     
  66.         }     
  67.     }
  68.     for(int i=0; i<x; i++)
  69.         cout<<"第"<<i+1<<"名\t"<<name[i]<<"\t"<<score[i]<<"毫秒"<<endl;
  70.     cout<<endl;
  71.     system("pause");
  72.     return 0;
  73. }
複製代碼

TOP

本帖最後由 劉奕劭 於 2024-8-17 15:52 編輯
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. #include<cmath>
  5. using namespace std;
  6. int main()
  7. {
  8.     float a,b,c,people,d,tmp;
  9.     string name[9999];
  10.     srand(time(NULL));
  11.     int e=1,x=1;
  12.     int right=3;
  13.     int n[2],o[9999],p[9999];
  14.     cout<<"**超級金頭腦**"<<endl;
  15.     cout<<"遊戲規則:由電腦出題,看誰能在最短時間內連續答對三題"<<endl;
  16.     cout<<"有幾位挑戰者:";
  17.     cin>>people;
  18.     for(int j=1; j<=people; j++){

  19.             cout<<"第"<<e<<"位挑戰者的大名:";
  20.             cin>>name[j-1];
  21.             cout<<name[j-1]<<"同學請就位!!";
  22.             for(int k=1; k<=right; k++){
  23.                 for(int i=0; i<2; i++)
  24.                     {
  25.                         n[i]=rand()%49+51;

  26.                     }
  27.             cout<<n[0]<<"+"<<n[1]<<"=?";
  28.             cin>>a;
  29.             b=clock()-c;
  30.             if(a==n[0]+n[1]){

  31.                 cout<<"答對了! 本題花了"<<b<<"毫秒思考"<<endl;
  32.             }else
  33.             {
  34.                 cout<<"答錯了! 本題花了"<<b<<"毫秒思考"<<endl;
  35.                 right++;
  36.             }
  37.             c=clock();
  38.             d=b+d;

  39.             }
  40.     o[j-1]=d;
  41.     e++;

  42.     }for(int l=0; l<9999; l++)
  43.     {
  44.     for(int m=l+1; m<people; m++)
  45.          {
  46.              if(o[m]<o[l])
  47.              {
  48.                  tmp=o[m];
  49.                  o[m]=o[l];
  50.                  o[l]=tmp;
  51.              }
  52.          }
  53.     }
  54.     system("pause");
  55.     cout<<"***風雲榜***"<<endl;
  56.     for(int i=0; i<=9; i++)
  57.     {

  58.         cout<<"第"<<x<<"名   ";
  59.         cout<<name[i]<<"   ";
  60.         cout<<o[i]<<"毫秒"<<endl;
  61.         x++;
  62.     }
  63.     system("pause");
  64.     return 0;
  65. }
複製代碼

TOP

本帖最後由 李唯銘 於 2024-8-17 15:34 編輯
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. using namespace std;
  5. int main()
  6. {
  7.     srand(time(NULL));
  8.     int n[2], ans, player, start, startin, tmp1, tmp2;
  9.     int name[99], score[99];
  10.     cout<<"***超級金頭腦***"<<endl;
  11.     cout<<"由電腦隨機出題,比誰能最快答完三題"<<endl;
  12.     cout<<"有幾位挑戰者"<<endl;
  13.     cin>>player;
  14.     for(int i=1; i<=player; i++){
  15.     cout<<"第"<<i<<"位挑戰者請輸入姓名"<<endl;
  16.     cin>>name[i-1];
  17.     cout<<"準備就緒"<<endl;
  18.     system("pause");
  19.     system("cls");
  20.     start=clock();
  21.     for(int a=1; a<=3; a++){
  22.     startin=clock();
  23.     for(int j=0; j<2; j++)
  24.     {
  25.         n[j]=rand()%899+101;
  26.         for(int k=0; k<j; k++)
  27.         {
  28.             if(n[j]==n[k])
  29.             {
  30.                j--;
  31.                break;
  32.             }
  33.         }
  34.     }
  35.     cout<<n[0]<<"+";
  36.     cout<<n[1]<<"=";
  37.     cin>>ans;
  38.     if(ans==n[0]+n[1]){
  39.         cout<<"答對了,用了"<<clock()-startin<<"毫秒"<<endl;
  40.     }
  41.     else{
  42.         cout<<"答錯了,用了"<<clock()-startin<<"毫秒"<<endl;
  43.         a--;
  44.     }
  45.     }
  46.     score[i-1]=clock()-start;
  47.     }
  48.     for(int i=0; i<player-1; i++)
  49.     {
  50.          for(int j=i+1; j<player; j++)
  51.          {
  52.              if(score[j]<score[i])
  53.              {
  54.                   tmp1=name[j];
  55.                   name[j]=name[i];
  56.                   name[i]=tmp1;
  57.                   tmp2=score[j];
  58.                   score[j]=score[i];
  59.                   score[i]=tmp2;
  60.              }
  61.          }
  62.     }
  63.     system("cls");
  64.     cout<<"***金頭腦最終排名***"<<endl;
  65.     for(int i=0; i<player; i++)
  66.         cout<<"第"<<i+1<<"名"<<name[i]<<"\t"<<"花了"<<score[i]<<"毫秒"<<endl;
  67.     cout<<endl;
  68.     system("pause");
  69.     return 0;

  70. }
複製代碼

TOP

返回列表