close
我發現這個題目不太難 , 所以就動手寫了

擲骰子
規則是一般通俗的 < 十八豆仔 > 的規則
四個同點 = 豹子
兩個同點 = 另外兩顆相加比點數
兩個同點 另外兩顆為 1 跟 2 = BG
EX: (1112) 要重骰不為BG
三個同點重骰

如同我在留言板所言 ,
我不希望做白工 ,
所以 , 希望可以不管用任何方法分享一件值得分享的事情
這就是Web2.0的精神吧 , 分享。

但是也請不要一直希望我回答什麼程式作業,
我也是要考試的


這篇我就不鎖了 請取用

#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;

int main(int argc, char *argv[])
{
    int a[4]; // 存擲骰子的結果
    int b[6]; // 存所擲的個數
    int c;
    int d[2]; // 算點用
    int sum;
    int i,j,k;
   
    srand(time(NULL));
   
    while(1){
//歸 0
    for(i=0;i<6;i++){
    b[i]=0;
    }
   
    for(i=0;i<4;i++){
// 以取亂數模擬擲骰子
    a[i] = rand()%6+1;
//順便把個數做計算
    b[a[i]-1]++;
    }
   
    for(i=0;i<6;i++){
    if(b[i]==4) break;
    if(b[i]==2) break;
    }
// 如果有四個同點 兩個同點等離開loop
// 其他就重骰
// 如果是兩個兩個同點的
// 我現在的計法是點數計比較大的
// 如果有需要改的地方就自己修改吧
// 大部份的地方我都寫好了
// 這種小事應該可以自己弄

    if(b[i]==4) break;
    if(b[i]==2) break;
    }
// 印出一些執行結果   
    cout << a[0] << a[1] << a[2] << a[3] << endl;
   
    cout << b[0] <<"個1 " << b[1] <<"個2 " << b[2] <<"個3 " << b[3] <<"個4 "<< b[4] <<"個5 "<< b[5]<<"個6 "<<endl;
    if(b[i]==4) cout << b[i] << ":  子"<< endl;
    if(b[i]==2){
    j=0;
   
    for(c=0;c<4;c++){
      if(a[c]!=i+1){
// 把不是同點的點存起來
      d[j] = a[c];
      j++;
      }
    }
// 符合BG條件    
    if((d[0]==1&&d[1]==2)||(d[1]==1&&d[0]==2)) cout << "BG喔!" << endl;           
    else{
// 印出點數
    sum = d[0]+d[1];
    cout << sum <<"" << endl;
    }
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

想法 :
1. 丟骰子用亂數模擬。
2. 找另一個陣列存個數
3. 寫while迴圈是想做重來這件事
4.我是想當滿足某個條件就離開 其他就一直重來
5. 因為像 4個同點 或 2個同點都還滿好寫的
6. 滿足這些就離開
7. 離開以後就是要算點了
8.所以下面那個迴圈要做的就是先分類
9.4同點的印豹子,但是豹這個字我印不出來所以就先擺空白
10.2同點的有兩個問題
11.一個是印Bg 這容易 就找另一個陣列存 , 然後再看是不是12就好了
12.如果另外兩個都是同樣的
13那就看規則是怎麼定了
14.我是找最好寫的也就是把大的加起來當點數
15.我覺得也比較符合人性 , 要是我在賭香腸骰到5566這種不詳的數字
16我也會希望老闆是看到12而不是10或叫我重骰
17.所以我就這樣寫 , 如果規則不一樣你就自己改一下
18.如果你不會改代表你看不懂我的程式
19.那這個程式交出去也沒有意義
20.這就是我的想法
21.至於如果你有想分享什麼事情
22.再透過任何管道看看吧 (回應這篇文章或留言板或怎樣等等之類的)

arrow
arrow
    全站熱搜

    偽新聞新聞雜誌 發表在 痞客邦 留言(2) 人氣()