Рандомизировать игральные карты нажатием кнопки
Я работаю над программой на C#, где у вас есть кнопка, и она выберет две случайные карты из заранее определенного выбора. Например, я начинаю с 5 карт, которые будут выбраны из: туз пик, семерка пик, туз червей, пятерка треф и две алмазы. Теперь он сравнит эти две карты, определит, какая из них выше, и сделает его победителем, а "Пики"> "Сердца"> "Клубы"> "Алмазы" и "Туз" будут низкими. Таким образом, Пиковый Туз выиграет над двумя Алмазами. Я сделал CardClass, где я устанавливаю костюмы и ранги:
public enum Suits
{
Spades,
Hearts,
Clubs,
Diamonds
}
public enum Ranks
{
Ace,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_10,
Jacks,
Queen,
King
}
//Private instance variables suit and rank
private Suits suit;
private Ranks rank;
//Provide properties for suit and rank that insure they can only be set to valid values
public Suits Suit
{
get
{
return this.suit;
}
set
{
this.suit = value;
}
}
public Ranks Rank
{
get
{
return this.Rank;
}
set
{
this.rank = value;
}
}
//Provide a default constructor (no parameters) that sets the card to Ace of Spades.
public CardClass()
{
// Use the properties to set these values
this.Rank = Ranks.Ace;
this.Suit = Suits.Spades;
}
// Provide an explicit constructor with parameters for ALL instance variables.
public CardClass(Ranks rank, Suits suit)
{
//Use the properties to set these values
this.Rank = rank;
this.Suit = suit;
}
Теперь для моего нажатия кнопки я установил его так, что он выберет 2 разных числа, одно для игрока 1 и одно для игрока 2:
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int play1choice, play2choice;
private void btnCard_Click(object sender, EventArgs e)
{
Random player1 = new Random();
int Player1 = (player1.Next(5) + 1);
Random player2 = new Random();
int Player2 = (player2.Next(5) + 1);
}
}
}
Есть ли способ установить определенные карты для номеров? Итак, если генератор случайных чисел выберет 1, он назначит его на туз пик, а на 2 - на семерку пик и т. Д.?
1 ответ
Создайте метод, который будет генерировать пять начальных карт (см. GetFiveInitialCards
):
public enum Suits
{
Spades,
Hearts,
Clubs,
Diamonds
}
public enum Ranks
{
Ace,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_10,
Jacks,
Queen,
King
}
public class CardClass
{
public static CardClass[] GetFiveInitialCards()
{
return new CardClass[] {
new CardClass(Suits.Spades, Ranks.Ace),
new CardClass(Suits.Spades, Ranks._7),
new CardClass(Suits.Hearts, Ranks.Ace),
new CardClass(Suits.Clubs, Ranks._5),
new CardClass(Suits.Diamonds, Ranks._2)
};
}
public Suits Suit { get; }
public Ranks Rank { get; }
public CardClass(Suits suit, Ranks rank)
{
this.Suit = suit;
this.Rank = rank;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int play1choice, play2choice;
private readonly Random rnd = new Random();
private void btnCard_Click(object sender, EventArgs e)
{
CardClass[] initialCards = CardClass.GetFiveInitialCards();
int Player1 = (rnd.Next(5) + 1);
CardClass player1Card = initialCards[Player1];
int Player2 = (rnd.Next(5) + 1);
CardClass player2Card = initialCards[Player2];
}
}