精華區beta NTUE-CS101 關於我們 聯絡資訊
: 1. 遊戲父類別: 儲存姓名跟分數 : 2. 遊戲子類別繼承父類別 : 3. "選擇遊戲"的畫面 : 4. 兩個遊戲的內容 : 5. 存檔 遊戲一 : 骰子 這應該很簡單 不用考慮點數有沒有重複 雖然他沒有規定骰子要不要用物件 這裡我還是用一下 class dice { int point; public: int play() { point=rand()%6+1; return point; } int getpoint() { return point; } }; 兩個遊戲都會用到亂數 所以記得在main的第一行要加上 int main() { srand(time(NULL)); ... 然後來看遊戲主迴圈 class game1 : public game { dice d; public: void play() { int com, ply; inputname(); // 輸入名子 ( 這個函數是 game 繼承下來的 ) for(int i=1;i<=10;i++) // 題目指定連玩10次 { cout<<"你先丟"; system("pause"); ply = d.play(); // 骰子的 play 函數有 return 點數 cout<<"你的點數是"<<ply<<"\n\n"; cout<<"換我囉"; system("pause"); com = d.play(); cout<<"電腦的點數是"<<com<<"\n\n"; cout<<"遊戲結果\n\n"; if(ply>com) { cout<<"YOU WIN\n\n"; addpoint(10); } else if(ply<com) { cout<<"YOU, LOSER!!\n\n"; } else { cout<<"DRAW\n\n"; } } } }; 遊戲二 : 抽牌 先寫撲克牌類別 class poker { int card[52]; // 把 52 張牌存在這裡 int current; // 現在拿到第幾張牌 public: void wash() { int tmp[52]; // 看哪張牌被亂數產生過了 int i,c; for(i=0;i<52;i++) tmp[i]=0; // 0代表還沒產生過 1代表產生過了 for(i=0;i<52;i++) { do { c = rand()%52; // 產生一個亂數 }while(tmp[c]==1); // 確認這個亂數沒有產生過 card[i] = c; // 把這張牌(剛產生的亂數)放到card牌堆裡 tmp[c] = 1; // 記錄產生過了 } current = 0; } int get() { return card[current++]; // 傳回current那張牌 然後把current加1 } void showcard(int c) // 傳入牌的編號 這個函數會把牌的外觀cout出來 { switch(c%4) { case 0: cout<<"梅花"; break; case 1: cout<<"磚塊"; break; case 2: cout<<"紅心"; break; case 3: cout<<"黑桃"; break; } switch(c/4) { case 1: cout<<"A"; break; case 11: cout<<"J"; break; case 12: cout<<"Q"; break; case 13: cout<<"K"; break; default: cout<<c/4; break; } } }; 再寫遊戲物件 class game2 : game { poker p; public: void play() { int com, ply; inputname(); // 輸入名子 ( 這個函數是 game 繼承下來的 ) p.wash(); // 先洗牌 for(int i=1;i<=10;i++) // 題目指定連玩10次 { cout<<"你先抽"; system("pause"); ply = p.get(); cout<<"你的牌是"; p.showcard(ply); cout<<"\n\n"; cout<<"換我囉"; system("pause"); com = p.get(); cout<<"電腦的牌是"; p.showcard(com); cout<<"\n\n"; cout<<"遊戲結果\n\n"; if(ply>com) { cout<<"YOU WIN\n\n"; addpoint(10); } else if(ply<com) { cout<<"YOU, LOSER!!\n\n"; } } } }; 搞定~ 沒有很想像中那麼難吧 試著看懂他 不要純用抄的喔 畢竟我只是猜題 看懂他 這樣考試的時候要是改了題目你也寫的出來 加油~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.74.9
rockmyangel:揪甘心!!! 06/07 20:16
hi29629508:快拜 06/07 21:53
shooyu:113行的i是不是c呢?~ 06/07 22:55
謝謝提醒~ ※ 編輯: yantchen 來自: 203.68.15.209 (06/07 23:49) 噢 我忘了撲克牌抽牌之前要先洗牌@@ ※ 編輯: yantchen 來自: 203.68.15.209 (06/08 01:18) ㄟ... 有個地方52打成51了 會變無窮迴圈 ※ 編輯: yantchen 來自: 203.68.15.209 (06/08 22:37)