C#的二十一点游戏
问题描述:
我想让我的二十一点游戏给我一个新卡时,我按下按钮,绘制一个卡(命中)C#的二十一点游戏
private void btnDraw_Click(object sender, EventArgs e)
{
Random rdn = new Random();
int YourCardOne = rdn.Next(1, 10 + 1);
this.lblYourCardOne.Text = Convert.ToString(YourCardOne);
这是代码,我画一张卡,我想它当我再次按下按钮时绘制另一张卡片,但我不希望它改变第一张。
我想这样做,但它改变了两张卡,只要我按下抽奖,
private void btnDraw_Click(object sender, EventArgs e)
{
Random rdn = new Random();
int YourCardOne = rdn.Next(1, 10 + 1);
this.lblYourCardOne.Text = Convert.ToString(YourCardOne);
Random rdn1 = new Random();
int YourCardTwo = rdn.Next(1, 10 + 1);
this.lblYourCardTwo.Text = Convert.ToString(YourCardTwo);
答
也许不是你可以使用整数列表你的手
你可以让你的手是这样的:
List<int> hand = new List<int>();
然后,当按钮被点击添加到列表:
private void btnDraw_Click(object sender, EventArgs e)
{
Random rdn = new Random();
hand.add(rdn.Next(1, 10 + 1));
答
最好的办法是尝试模仿现实世界,而不是试图将编程模式应用到游戏中。不要使用卡片列表并随机选择一张卡片。你不会在二十一点游戏中这样做,你总是拿顶牌。这意味着你应该有一个单独的Shuffle()
方法,它可以随机混合纸牌,也可以取出最上方的纸牌。
下面是我从一个加尔德游戏中得到的一些示例代码,当我刚刚学习编程时,可能会给你一个我洗牌意味着什么的例子。在那之后,获得顶牌的行为很简单。
int deckSize;
public void Shuffle()
{
Random rand = new Random();
//Swap every card with a random card in the deck
for(int count = 0; count < deckSize; count++)
{
int index = rand.Next(deckSize);
Card swapee = cards[index];
cards[index] = cards[count];
cards[count] = swapee;
}
}
你只需要一个随机的整个游戏。以这种方式使用兰德根本不会效仿一副牌。 BJ使用不止2张牌,你需要允许第3张,第4张,第5张甚至第6张牌。目前您的点击代码是针对前2张卡片的,不适用于点击。该代码应该用于Deal。 – Plutonix