如何在c ++中得分yahtzee

时间:2015-05-26 01:56:50

标签: c++

我正在为我的c ++编程课写一个yahtzee游戏。我遇到的一个困难是不同类别的评分系统。我想我已经想出了如何添加1s,2s等,但我不知道如何让程序确定何时推出了3种类型,4种等等。到目前为止,这是我的代码。

use strict;

# Helper function to remove duplicates in a list.
sub uniq {
  my %seen;
  grep !$seen{$_}++, @_;
}

my @teststrings = ("one", "two", "three", "one");

my @filtered = uniq @teststrings;
print "uniq: @filtered\n";
my @sorted = sort @teststrings;
print "sort: @sorted\n";
my @sortedfiltered = uniq sort @teststrings;
print "uniq sort : @sortedfiltered\n";

正如你所看到的,我已经为前6个类别设置了得分,但不知道如何继续。

1 个答案:

答案 0 :(得分:0)

  

我不知道如何让程序确定何时推出了3种,4种等等。

  1. 创建一个变量来帮助您跟踪具有给定数字的骰子数量。

    /:cuda_haskell> nvcc --version
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2014 NVIDIA Corporation
    Built on Thu_Jul_17_19:13:24_CDT_2014
    Cuda compilation tools, release 6.5, V6.5.12
    /:cuda_haskell> nvcc -o hello.o -c hello.cu
    /:cuda_haskell> ghc main.hs -o hello_hs hello.o -L/usr/local/cuda/lib -optl-lcudart
    Linking hello_hs ...
    /:cuda_haskell> ./hello_hs
    Hello World!
    /:cuda_haskell> cat main.hs
    -- main.hs
    {-# LANGUAGE ForeignFunctionInterface #-}
    
    import Foreign.C
    import Foreign.Ptr (Ptr,nullPtr)
    
    foreign import ccall "hello" hello :: IO ()
    
    main = hello
    

    并用以下内容填充数组:

    int diceCount[DICE] = {0};
    
  2. 创建辅助函数以确定是否抛出了五种,四种或三种。

    for (int i = 0; i < DICE; i++) {
       diceCount[roll[i-1]]++
    }
    

    并将其用作:

    int getNOfAKind(int diceCount[], int N)
    {
       // This will need moving DICE out of `main`
       // making it a global variable.
       for ( int i = 0; i < DICE; ++i )
       {
          if (diceCount[i] == N )
          {
             return i+1;
          }
       }
       return -1;
    }
    
    int getFiveOfAKind(int diceCount[])
    {
       return getNOfAKind(diceCount, 5);
    }
    
    int getFourOfAKind(int diceCount[])
    {
       return getNOfAKind(diceCount, 4);
    }
    
    int getThreeOfAKind(int diceCount[])
    {
       return getNOfAKind(diceCount, 3);
    }