Я создаю карточную игру, и мне нужно выполнить методы, чтобы сделать паузу во время анимации карты по экрану. В настоящее время у меня есть это, и оно отлично анимирует карту, но продолжит играть в игру, пока карта анимируется. Не уверен, как это сделать. Я попытался Thread.Sleep (), но он все еще продолжает все возможное выполнение, а затем приостанавливает.
private void btnPlay_Click(object sender, EventArgs e)
{
try
{
string input = Microsoft.VisualBasic.Interaction.InputBox("Please enter your betting amount (£3.00 minimum bet)", "Play", "3.00", -1, -1);
bet = double.Parse(input);
if (Globals.Balance > bet)
{
btnHit.Enabled = true;
btnStick.Enabled = true;
Globals.Balance -= bet;
lblBalance.Text = Globals.Balance.ToString();
Play();
}
else
{
throw new Exception("You don't have enough money!");
}
}
catch (FormatException)
{
MessageBox.Show("Incorrect format for betting amount");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Play()
{
ClearDetails();
DealPlayerCard();
Classes.Deck.NextCard(Deck);
DealPlayerCard();
UpdatePlayerTotal();
}
private void DealPlayerCard()
{
//does stuff here
switch (cardNum)
{
case 3:
pb.Location = new Point(120, 0);
timerCard.Enabled = true;
timerCard_Tick(null, null);
break;
case 4:
pb.Location = new Point(180, 0);
timerCard.Enabled = true;
timerCard_Tick(null, null);
break;
case 5:
pb.Location = new Point(240, 0);
timerCard.Enabled = true;
timerCard_Tick(null, null);
break;
}
AddPlayerCard(pb);
AddToHand("Player");
}
private void timerCard_Tick(object sender, EventArgs e)
{
this.SuspendLayout();
//sets x and y in a switch statement here
if ((CardBack.Location.X == x) && (CardBack.Location.Y == y))
{
timerCard.Enabled = false;
CardBack.Visible = false;
CardBack.Location = new Point(775, 247);
this.ResumeLayout();
}
else if ((CardBack.Location.X > 417) && (CardBack.Location.Y < 434))
{
CardBack.Location = new Point(CardBack.Location.X - 1, CardBack.Location.Y + 1);
timerCard_Tick(null, null);
}
else if ((CardBack.Location.X > 417) && (CardBack.Location.Y == 434))
{
CardBack.Location = new Point(CardBack.Location.X - 1, CardBack.Location.Y);
timerCard_Tick(null, null);
}
else if ((CardBack.Location.X == 417) && (CardBack.Location.Y < 434))
{
CardBack.Location = new Point(CardBack.Location.X, CardBack.Location.Y + 1);
timerCard_Tick(null, null);
}
}