gpt4 book ai didi

c# - 非常简单的抽卡游戏(消除重复+重置数组)

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:10 24 4
gpt4 key购买 nike

这里是编程初学者!我正在挑战自己创建一个绘图游戏(卡片绘图或在本例中为数字绘图)以提高我的编码技能,但对我来说这似乎有点太具有挑战性了,因为我只是一个初学者。

我做的这个程序其实很简单。你有一副 15 张牌(或在本例中为数字),程序要求你抽 5 张牌。虽然我能够做到这一点,但我注意到有时您已经抽到的牌会有重复,而对于任何普通套牌,每张牌只有 1 张副本。

至于我的代码,它相当短:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CardGame
{
class Program
{
static void Main(string[] args)
{
string ans = " ";
int[] Deck = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; // the deck

Console.WriteLine("Draw 5 cards? Y/N");


while (!ans.Equals("N"))
{

ans = Console.ReadLine();

if (ans.Equals("Y"))
{
Draw(Deck);
}

else
{
Console.WriteLine("Closing program");
}
}
}

static void Draw(int[] Deck) //Draw function
{
Random rand = new Random(); // randomizer
int turncount = 1;

while (turncount <= 5)
{
int pick = rand.Next(Deck.Count()); // random pick for each iteration
Console.WriteLine(Deck[pick]);
turncount++;
}


}


}
}

所以我的预期输出是这样的:5,8,1,4,12 | 2,3,9,11,7 | 10,6,15,13,​​14

但我所做的是吐出类似的东西:1,5,5,3,7 | 15,12,1,15,3| 2,3,1,5,6

我还有一个额外的挑战,我希望在您完成 3 次抽奖后重置套牌。因此,在抽取 3 次之后,您可以再次抽取所有牌。但我完全不知道我该怎么做。

至于我尝试过的各种方法,我尝试实现 Distinct 函数,因此我可以消除重复项,但这并不是我真正想要的结果,因为它会按顺序调用我的元素,例如:1,2 ,3,4,5,6,7,8,9,10,11,12,13,14,15.

关于我的问题的总结。希望大家能帮帮我这个初学者,多多指教!

最佳答案

问题是随机数生成器可以连续生成相同的数字 2、3 次或更多次。解决这个问题的两个明显方法是从牌组中移除抽取的牌,或者简单地检查您是否没有抽取同一张牌两次。

我在下面汇总的方法只是检查它不是一张已经抽过的牌。然而,每次都取出卡片会更有效率。

        static void Draw(int[] Deck) //Draw function
{
Random rand = new Random(); // randomizer

List<int> drawnCards = new List<int>();
while (drawnCards.Count < 5)
{
int pick = rand.Next(Deck.Count());
int card = Deck[pick];

// Check card has not already been drawn
if(!drawnCards.Contains(card))
{
drawnCards.Add(card);
}
}

foreach(int card in drawnCards)
{
Console.WriteLine(card);
}
}

关于c# - 非常简单的抽卡游戏(消除重复+重置数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59032398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com