【发布时间】:2016-01-16 17:16:34
【问题描述】:
我正在学习编程,尤其是从 C# 开始,我一直在尝试骰子游戏以变得更加熟悉并提高自己。我现在正在尝试在 Windows 窗体中创建一个基本游戏,其中两名玩家掷 5 个骰子并记录他们的得分。
规则:
从 5 个骰子开始
如果出现 1 或 4,则玩家不得分,并且这些骰子被移除。否则将所有骰子加到总数中
继续使用剩余的骰子,直到没有剩余的骰子
到目前为止,我有一个 Image 数组,它将我所有的骰子图像存储在我的资源中,还有一个可以掷骰子的按钮。我特别需要帮助的是能够移除惩罚骰子(将那个特定的骰子设置回空白)并允许玩家继续滚动剩余的骰子,直到没有剩余。
目前我不确定我可以在哪里进一步做到这一点,也许我咬得比我能咀嚼的多。我喜欢编码,任何帮助将不胜感激。
这是界面的图像:
public partial class Form1 : Form
{
Image[] diceImages;
int[] dice;
int[] diceResults;
Random random;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
diceImages = new Image[7];
diceImages[0] = Properties.Resources.blank;
diceImages[1] = Properties.Resources.one;
diceImages[2] = Properties.Resources.two;
diceImages[3] = Properties.Resources.three;
diceImages[4] = Properties.Resources.four;
diceImages[5] = Properties.Resources.five;
diceImages[6] = Properties.Resources.six;
dice = new int[5] { 0, 0, 0, 0, 0 };
random = new Random();
diceResults = new int[6] { 0, 0, 0, 0, 0, 0 };
}
private void btn_rollDice_Click(object sender, EventArgs e)
{
RollDice();
GetResults();
ResetResults();
}
private void RollDice()
{
for (int i = 0; i < dice.Length; i++)
{
dice[i] = random.Next(1, 7);
switch (dice[i])
{
case 1:
diceResults[0]++;
break;
case 2:
diceResults[1]++;
break;
case 3:
diceResults[2]++;
break;
case 4:
diceResults[3]++;
break;
case 5:
diceResults[4]++;
break;
case 6:
diceResults[5]++;
break;
}
}
lbl_dice1.Image = diceImages[dice[0]];
lbl_dice2.Image = diceImages[dice[1]];
lbl_dice3.Image = diceImages[dice[2]];
lbl_dice4.Image = diceImages[dice[3]];
lbl_dice5.Image = diceImages[dice[4]];
}
private void GetResults()
{
bool oneRoll = false, fourRoll = false;
for (int i = 0; i < diceResults.Length; i++)
{
if (diceResults[i] == 1 && diceResults[i] == 4)
{
oneRoll = true;
fourRoll = true;
}
}
}
private void ResetResults()
{
}
}
【问题讨论】:
-
那么问题是什么?
-
@CodeCaster 抱歉,如果玩家掷出 1 或 4,我需要帮助将骰子图像重置为空白骰子。但是,允许他们继续滚动剩余的骰子,直到他们没有剩余的骰子。
-
@CodeCaster 例如。掷出 1 = 1, 3, 3, 4, 5。玩家不得分,骰子 1 和骰子 4 被移除,留下 3 个骰子。掷 2 = 5, 6, 3。玩家得 14 分并继续掷骰直到没有骰子。导致其他玩家轮流。
-
我会将 diceResults 设为列表对象。这将适用于您当前的代码: diceResults = diceResults.Where(x => (x != 1) && (x != 4)).ToArray();
-
@jdweng 我试试看。干杯