本帖最後由 鄭繼威 於 2023-4-29 14:15 編輯
備註:若課堂上未能完成,當作業!
設計遊戲 "超級金頭腦",
讓使用者計算兩個範圍介於51~99之隨機亂數的和.
參考作法如下:
1. 要有一個起始畫面, 顯示標題與遊戲規則
2. 參賽人數
3. 參賽者姓名
4. 請就位的訊息
5. 測驗中畫面
6. 排名
- #include<iostream>
- #include<cstdlib>
- #include<ctime>
- using namespace std;
- int main()
- {
- int x; //有幾位參賽者
- long t1,t2;
- srand(time(NULL));
- cout<<"*** 超級金頭腦 v1.0 ***"<<endl<<endl;
- cout<<"遊戲規則: 電腦隨機出題, 比賽誰能在最短的時間內算對三題!"<<endl<<endl;
- cout<<"有幾位挑戰者? ";
- cin>>x;
-
- string name[x]; //產生長度為x的陣列(string)存名字
- long score[x]; //產生長度為x的陣列(long)存秒數
- for(int i=0; i<x; i++)
- {
- system("cls");
- score[i]=0; //初始化秒數
- cout<<"第"<<i+1<<"位挑戰者你好, 請輸入你的大名: ";
- cin>>name[i];
- cout<<name[i]<<"同學請就位!"<<endl<<endl;
- system("pause");
- system("cls");
- int n=0; //答對的次數
- int ans;
-
- while(n<3) //要答對3題才完成
- {
- int a=rand()%9+1; //1~9
- int b=rand()%9+1;
- cout<<a<<" + "<<b<<" = ";
- t1=clock(); //使用者輸入前按下碼錶
- cin>>ans;
- t2=clock(); //使用者輸入後按下碼錶
- if(ans==a+b)
- {
- cout<<"答對了! ";
- n++; //答對就n+1
- }
- else
- cout<<"答錯了! 正確答案是"<<a+b<<". ";
- cout<<"本題花了"<<t2-t1<<"毫秒思考!"<<endl; //不管答對與否都輸出花了幾毫秒思考
- score[i]+=(t2-t1); //把毫秒sum進去score裡
- }
- cout<<endl<<name[i]<<"同學總共花了"<<score[i]<<"毫秒!"<<endl;
- system("pause");
- }
- system("cls");
- cout<<"*** 金頭腦風雲榜 ***"<<endl<<endl;
- //開始進行排序(由小到大(時間越少名次越前面))
- string tmp1;
- long tmp2;
- for(int i=0; i<x-1; i++)
- {
- for(int j=i+1; j<x; j++)
- {
- if(score[j]<score[i])
- {
- tmp1=name[i];
- name[i]=name[j];
- name[j]=tmp1;
- //換秒數的時候順便換名字
- tmp2=score[i];
- score[i]=score[j];
- score[j]=tmp2;
- }
- }
- }
- //最後輸出排名完成此專題
- for(int i=0; i<x; i++)
- cout<<"第"<<i+1<<"名\t"<<name[i]<<"\t"<<score[i]<<"毫秒"<<endl;
- cout<<endl;
- system("pause");
- return 0;
- }
複製代碼 |