2017-09-03 5 views
2

私はスロットマシンのコードで作業していましたが、リールの入力があり、発生するさまざまな組み合わせをすべてコーディングしました。私はそれをファイルに出力し、十分なすべてがそこにあることを確認します。今、私は何とかすべての組み合わせをスキャンし、支払いのルール(2倍、3倍、5倍の同じシンボル)に基づいて、2勝があればルールに従う必要があります。 aabbbより高い支払うものだけが支払われるなら、すべての支払条件のためのカウンターを作る。トラフの組み合わせをスキャンする方法を理解する必要があります

#include <stdio.h> 

int main() { 
    freopen("C:\\tmp\\output.txt", "w", stdout); 
    char reel1[37] = { 'A', '1', 'W', 'Q', '9', 'L', '1', 'J', 'H', 'Q', '9', 'W', '1', 'A', 'M', 'K', 'Q', 'L', 'A', '9', '1', 'M', 'K', 'Q', 'H', '9', 'A', 'Q', 'K', 'T', '9', 'J', 'W', '9', '1', 'L', '9' }; 
    char reel2[36] = { 'A', 'K', 'L', '1', '9', 'M', 'J', '1', 'K', 'M', 'Q', '9', 'T', 'A', '1', 'Q', 'W', 'K', '9', 'L', 'J', '1', 'Q', 'L', 'K', 'J', 'W', 'A', '9', 'K', 'H', 'Q', '1', 'K', 'Q', '1' }; 
    char reel3[35] = { 'J', 'K', '9', 'A', '1', 'Q', 'L', '9', 'A', '1', 'T', 'J', '9', 'A', 'H', '1', 'J', '9', 'L', 'Q', '1', 'J', 'H', '9', 'K', '1', 'M', 'A', 'J', 'K', 'W', '9', '1', 'J', '1' }; 
    char reel4[32] = { 'K', 'A', 'L', 'Q', '1', 'M', 'A', 'K', 'J', 'M', 'Q', '1', 'H', 'J', 'A', 'K', 'M', '9', 'J', 'H', '1', 'Q', '9', 'J', '1', 'W', 'K', '9', 'J', 'T', '1', 'J' }; 
    char reel5[32] = { 'J', '1', 'Q', 'W', 'K', '9', 'Q', 'J', 'K', '9', '1', 'H', 'J', '9', 'A', 'M', '9', 'J', '1', '9', 'L', 'A', '9', 'J', 'L', '9', 'K', 'Q', '9', 'T', 'K', 'Q' }; 
    int a, b, c, d, e; 
    for (a = 0; a <= 36; a++) { 
     for (b = 0; b <= 35; b++) { 
      for (c = 0; c <= 34; c++) { 
       for (d = 0; d <= 31; d++) { 
        for (e = 0; e <= 31; e++) { 
         printf("%c%c%c%c%c\n", reel1[a], reel2[b], reel3[c], reel4[d], reel5[e]); 
        } 
       } 
      } 
     } 
    } 
    return 0; 
} 

私は今、このタックルはどうすればよい:ここで

は、私がこれまで持っているものでしょうか?私はすべての配当の組み合わせに対してカウンターを設置しなければならないことを知っています。一度それが現れれば、リールで最高の支払いです。しかしそこに着く方法は私を打ち負かす。すべての組み合わせをスキャンする方法は?誰でも提案がありますか?

+0

あまりにも巣立つ! –

+0

提案: 'for(a = 0; a <= 36; a ++)'の代わりに 'for(a = 0; a <37; a ++)'を書くことは、配列が '37 'ハードコードされた値に頼るのを避けるために 'for(a = 0; a <(int)(sizeof(reel1)/ sizeof(* reel1)); a ++)'と書くこともできます。 – chqrlie

+0

@chqrlieありがとう、私はそれに変更しました。ハードコードされた値については、今のところ私にとっては大したことではありません。なぜなら、私がこれを行うために必要なのは、これを一度実行して、必要なものを私に与えることだけだからです。 –

答えて

0

あなたのコードは、スロット値の47,738,880通りの組み合わせをすべて表示します。ホイールには重複したアイテムがあり、その順序はおそらく重要ではないため、多くの重複があります。ここで

は、あなたが進む可能性がどのようである:様々な勝ちの組み合わせとは、最高の1

  • 出力に組み合わせを保つ

    • チェック:代わりの組み合わせを印刷する、します5スロット値を持つ関数を呼び出します対応する最高の勝利と一緒に。

    次に、プログラムを実行してその出力をsort | uniq -cにパイプすると、重複が削除された(およびカウントされた)リストを取得できます。

    リストの中で失われた組み合わせを省略したい場合があります。

    ウィニングコンビネーションの印刷に加えて、可能なウィンの合計(上記で計算されたすべてのウィンの合計)を計算し、それを合計出力数(37 * 36 * 35 * 32 * 32)で割ることができます。プレイヤーとカジノのオッズが何であるかを確認してください。

  • +0

    まあ、私は "すべての記号左から右に支払う "。それはあなたが上記のことに影響しますか?重複などについて?リール1に2つのAシンボルがあり、残りの4つに1つのAシンボルがあるとしますが、5xAが画面に表示される2つの異なる方法です。私が言っていることを得ることを願っています。 –

    +0

    @SanJasko:組み合わせが値の順序に基づいて支払う場合、値をソートしないでください。これにより、より多くの合計の組み合わせが生成されますが、リスティングには重複した部分がたくさんあります。 – chqrlie

    +0

    重複はどのようにして得られますか?私がそれらを持っていても、彼らはまだ勝利の組み合わせとしてカウントされます。私はAAA99とAAA90とAAAKJを持っていると言いましょう。その3つは今でもコンビネーションを獲得しています。そして、AAA99が再び現れても、それは4番目と5番目のリールに2つの9があるので、最初のものとは異なりますが、それはまだ勝ち組です。それは私がそれを見ている方法です。 –

    関連する問題