C#骰子滚动

时间:2010-10-13 15:02:34

标签: c#

我尝试使用5个骰子进行C#编程。两名球员获得三次投球。在得分之前,他必须依次获得6分,5分和4分。当他抛出这些特殊号码时,这些骰子就会从游戏中移除。留下的两个骰子的总数是他的观点。电脑必须击败它。骰子必须按顺序建造。也就是说,玩家必须在之前或同时将5和5抛出6或者与4同时投掷。

如何识别6,5,4的骰子,以及如何在骰子满足其条件后最大限度地减少骰子的数量?

1 个答案:

答案 0 :(得分:1)

听起来像学习有限状态机的练习。

基本的想法是你的“机器”在某种状态下启动,我们称之为“开始”。

你可以掷骰子三次以获得分数,所以你还必须记录掷骰子的次数。

每次掷骰后,您都会检查骰子,并根据当前状态和滚动内容,您的“机器”可能会转换为新状态。

你声明你必须按顺序滚动一个6,一个5和一个4(这暗示状态将如何转换)或同一滚动(告诉你可以跳过状态)。

那么这些其他州是什么?因为你必须滚动6然后是5然后是4,我们只需要调用状态,“SIX”,“FIVE”和“FOUR”。

在伪代码中:

int STATE_START = 6;
int STATE_SIX = 5;
int STATE_FIVE = 4;
int STATE_FOUR = 3;

int state = STATE_START;
int rolls = 0;
int[] dice
int score = 0;

do (while state != STATE_FOUR && rolls++ < 4) {
    dice = rollDice();

    do (while state != STATE_FOUR) {
        if (dice.Contains(state)) {
            state--;
        }
        else {
            break;
        }
    }
}

if (state == STATE_FOUR) {
    score = getScore(dice);
}
相关问题