Estoy haciendo un juego de blackjack donde se debe mostrar una carta un segundo después de la última carta. Lo busqué en Google y vi a Thread.Sleep, pero la gente dijo que los temporizadores serían mejores para eso. ¿Cómo puedo hacer esto con temporizadores? Gracias!Retraso en un juego xna con temporizadores
Respuesta
float WaitTimeToShowCard = 0;
public void Update(GameTime gametime)
{
if (HasToShowCard())
{
WaitTimeToShowCard = 1;
}
if (WaitTimeToShowCard >0)
{
WaitTimeToShowCard -= (float) gametime.Elapsed.TotalSeconds;
if (WaitTimeToShowCard <=0)
{
WaitTimeToShowCard = 0;
ShowCard();
}
}
}
o
public class Timer
{
public Action Trigger;
public float Interval;
float Elapsed;
Timer() {}
public void Update(float Seconds)
{
Elapsed+= Seconds;
if (Elapsed>= Interval)
{
Trigger.Invoke();
Destroy();
}
}
public void Destroy()
{
TimerManager.Remove(this);
}
public static void Create(float Interval, Action Trigger)
{
Timer Timer = new Timer() { Interval = Interval, Trigger = Trigger }
TimerManager.Add(this);
}
}
public class TimerManager : GameComponent
{
List<Timer> ToRemove = new List<Timer>();
List<Timer> Timers = new List<Timer>();
public static TimerManager Instance;
public static void Add(Timer Timer) { Instance.Timers.Add(Timer); }
public static void Remove(Timer Timer) { Instance.ToRemove.Add(Timer); }
public void Update(GameTime gametime)
{
foreach (Timer timer in ToRemove) Timers.Remove(timer);
ToRemove.Clear();
foreach (Timer timer in Timers) timer.Update((float) gametime.Elapsed.Totalseconds);
}
}
public class Game
{
public void Initialize() { Components.Add(new TimerManager(this);}
public Update()
{
if (HasToShowCard(out card))
{
Timer.Create(1,() => card.Show());
}
}
}
¡Gracias! Muy apreciado :) – Tom
using System.Timers;
.
.
.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Timer t = new Timer(1000);
//The number is the interval in miliseconds
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
t.Elapsed += new ElapsedEventHandler(t_Elapsed);
t.Enabled = true;
}
void t_Elapsed(object sender, ElapsedEventArgs e)
{
//code
}
.
.
.
}
copié algunos de los bits de código para mostrar el posicionamiento del código añadido ... Además, después de escribir "t.Elapsed + =" presione la tecla TAB dos veces, para crear el controlador de eventos. Si desea detener el temporizador, establezca la propiedad "Activado" en falso. ('t' es un mal nombre de variable)
¿System.Timers.Timer está disponible en el marco compacto? Podría valer la pena que el OP sepa que está sacrificando Xbox y soporte telefónico usándolo ... – MattDavey
Hmm ... No sé si es así ... pero no puedo comentar su pregunta original para notificarlo. (Si ves esto, y quieres soporte por Xbox o por teléfono, usa la sugerencia de Andrew Russel – NBcode
Aunque el OP pidió temporizadores, realmente no es la mejor solución para el desarrollo de juegos. – TJHeuvel
- 1. Retraso de animación Silverlight/XNA
- 2. establece un retraso en el juego libgdx
- 3. Distribuir un juego de PC escrito con XNA
- 4. Rendimiento delegado C# en el juego xna
- 5. configuración del juego en C# y XNA
- 6. Mostrar rectángulos en la ventana del juego con XNA
- 7. ¿Dónde guardar puntajes altos en un juego de XNA?
- 8. Ir a pantalla completa sin estirar en un juego XNA
- 9. C# desarrollo del juego después de XNA
- 10. Clase de jugador con mi juego C# XNA
- 11. XNA C# 2D juego de plataformas
- 12. ¿Puede un juego XNA utilizar IsolatedStorageSettings para WP7?
- 13. ¿Es posible ejecutar un juego XNA sin .NET o XNA instalado?
- 14. Usando system.windows.forms con XNA
- 15. 2D XNA ratón del juego, haga clic en
- 16. Lidiando con lag en XNA + lidgren
- 17. ¿Cómo puedo hacer una GUI para mi juego C# XNA?
- 18. Incrustar XNA en WinForms
- 19. Rectángulo de dibujo con XNA
- 20. XNA en el iPhone
- 21. ¿Se puede enviar un juego creado con pygame a Steam?
- 22. La determinación de XNA Game Lag
- 23. ¿XNA tiene un polígono, como un rectángulo?
- 24. XNA 4.0 con C# .NET 4.5?
- 25. ¿Cómo obtener la hora actual en un juego de WPF? (No XNA)
- 26. XNA 2D Game Engines
- 27. Retraso RaiseCanExecuteChanged con ContextMenu
- 28. cambio Jquery con retraso
- 29. Depuración de Xna
- 30. Cómo crear un retraso en Swing
No use ya sea (* especial * no utilice 'Thread.Sleep'). Acumula 'gameTime.ElapsedGameTime' cuando se invoca' Game.Update'. –
@Andrew Russel +1 Thread.Sleep debe evitarse en el 99.9% de los casos en los que podría estar tentado de usarlo. – MattDavey
¿Puedes dar un ejemplo? – Tom