與電腦猜拳的範例

Home Home
引用 | 編輯 satan0124
2009-04-28 07:27
樓主
推文 x0
本程式僅供參考之用,並未加上除錯機制。
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

void main()
{
srand (time(0));
char a = {'a','b','c'};
char b;
int c = 0; // 暫時記錄亂數值
int d = 0; // 暫時記錄亂數值
int e = 0; // 交換兩數所暫存的變數
int w = 0; // 記錄贏的次數
int l = 0; // 記錄輸的次數

cout << "─◎─猜拳─◎─" << endl;
for(;;)
{
cout << "請選擇您要出的拳(a.剪刀 b.石頭 c.布.......q.離開): ";
cin >> b;

for(int i = 0; i <= 500; i++) // i <= 500 表對調次數,可自行修改想要進行幾次的對調
{
c = rand()%3; // 亂數取得0,1,2三數
d = rand()%3;
e = a;
a = a; // 亂數將陣列裡的三個字元對調
a = e;
}

if (a == b) // 每次猜完一次拳之後,程式會再次將字元給做對調
{
cout < ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 ronlain
2009-05-09 09:08
1樓
  
一點點小意見
1. 只用到a[0]其實交換500次沒有意義
2. 建議用switch寫 程式可讀性會比較好

獻花 x0
引用 | 編輯 海洋天使
2009-05-25 10:21
2樓
  
用 a b c 程式可讀性會降低不少

建議是用些有意義的句子囉^^

獻花 x0
引用 | 編輯 kioko
2009-09-15 09:06
3樓
  
複製程式
#include <stdio.h>
#include <iostream> 
#include <stdlib.h> 
#include <conio.h>

using namespace std ; 

main ()
{
       int c_ai=0, c_select=0, c_count=0, c_win=0, c_lost=0, c_peace=0; 
       while(1){
              c_ai=rand()%3;
              printf("\n"); 
              printf("一@一 猜拳遊戲 一@一");
              printf("\n"); 
              printf("目前遊戲次數 %d 共獲得 %d 次勝利 %d 次失敗 %d 次平手\n",c_count,c_win,c_lost,c_peace);
              printf("\n");
              printf("請問您選擇的是 (0).剪刀 (1).石頭 (2).布 (3).離開遊戲 ... ? "); 
              scanf("%d",&c_select);
              c_count++; 
              switch(c_select){
                     case 0:
                            printf("你 出的是 < 剪刀 > ...\n");
                            switch(c_ai){
                                   case 0:
                                          printf("電腦出的是 < 剪刀 > ...\n");
                                          printf("判決 \"平手\" ...\n");
                                          c_peace++; 
                                          break;
                                   case 1:
                                          printf("電腦出的是 < 石頭 > ...\n");
                                          printf("判決 \"你輸了\" ...\n");
                                          c_lost++; 
                                          break;
                                   case 2:
                                          printf("電腦出的是 < 布 > ...\n");
                                          printf("判決 \"你勝利了\" ...\n");
                                          c_win++; 
                                          break;       
                            }
                            break; 
                     case 1:
                            printf("你 出的是 < 石頭 > ...\n");
                            switch(c_ai){
                                   case 0:
                                          printf("電腦出的是 < 剪刀 > ...\n");
                                          printf("判決 \"你勝利了\" ...\n");
                                          c_win++; 
                                          break;
                                   case 1:
                                          printf("電腦出的是 < 石頭 > ...\n");
                                          printf("判決 \"平手\" ...\n");
                                          c_peace++; 
                                          break;
                                   case 2:
                                          printf("電腦出的是 < 布 > ...\n");
                                          printf("判決 \"你輸了\" ...\n");
                                          c_lost++; 
                                          break;       
                            }
                            break; 
                     case 2:       
                            printf("你 出的是 < 布 > ...\n");
                            switch(c_ai){
                                   case 0:
                                          printf("電腦出的是 < 剪刀 > ...\n");
                                          printf("判決 \"你輸了\" ...\n");
                                          c_lost++; 
                                          break;
                                   case 1:
                                          printf("電腦出的是 < 石頭 > ...\n");
                                          printf("判決 \"你勝利了\" ...\n");
                                          c_win++; 
                                          break;
                                   case 2:
                                          printf("電腦出的是 < 布 > ...\n");
                                          printf("判決 \"平手\" ...\n");
                                          c_peace++; 
                                          break;       
                            }
                            break; 
                     case 3:
                            exit(1); 
                            break;
                     default:
                            printf("輸入錯誤請重新選擇 ...\n");
                            break; 
              } 
              getch();
              system("cls"); 
       } 
}

Switch版本

獻花 x0