Sto facendo un gioco di blackjack in cui una carta deve essere mostrata un secondo dopo l'ultima carta. L'ho cercato su google e ho visto Thread.Sleep, ma la gente ha detto che i timer sarebbero stati migliori per quello. Come posso farlo con i timer? Grazie!Ritarda un gioco xna con timer
risposta
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());
}
}
}
Grazie! – 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
}
.
.
.
}
ho copiato alcuni dei bit di codice per mostrare il posizionamento del codice aggiunto ... Inoltre, dopo aver digitato "t.Elapsed + =" premere TAB due volte, per creare il gestore di eventi. Se si desidera interrompere il timer, impostare la proprietà "Abilitato" su falso. ('t' è un nome di variabile cattivo)
System.Timers.Timer è disponibile nel framework compatto? Potrebbe valere la pena di lasciare che l'OP sappia che sta sacrificando Xbox e il supporto telefonico, usando il telefono .. – MattDavey
Hmm .. Non so se lo è .. ma non posso commentare la sua domanda originale per avvisarlo. (Se vedi questo, e vuoi il supporto per Xbox o telefono, usa il suggerimento di Andrew Russel – NBcode
Eventhough l'OP ha richiesto i timer, non è davvero la soluzione migliore per lo sviluppo del gioco – TJHeuvel
- 1. Prestazioni del gioco XNA
- 2. Distribuire un gioco per PC scritto con XNA
- 3. Determinazione del ritardo del gioco XNA
- 4. XNA deride l'oggetto di gioco o disaccoppiando il gioco
- 5. Prestazioni del delegato C# nel gioco xna
- 6. Configurazione del gioco in C# e XNA
- 7. Visualizzazione di rettangoli nella finestra di gioco con XNA
- 8. Classe giocatore con il mio gioco C# XNA
- 9. Going fullscreen senza stretching in un gioco XNA
- 10. Un gioco XNA può utilizzare IsolatedStorageSettings per WP7?
- 11. È possibile eseguire un gioco XNA senza .NET o XNA installato?
- 12. Android SoundPool.play() a volte ritarda
- 13. Ciclo di gioco con timer separato per il rendering e logica di gioco
- 14. Script di gioco Javascript (o simili) per C# XNA
- 15. È possibile inviare a Steam un gioco creato con pygame?
- 16. gioco di pipistrelli. L'aggiunta di un timer con il set/p
- 17. XNA 4.0 con C# .NET 4.5?
- 18. XNA, direct X, OpenGL
- 19. Silverlight/XNA animation lagging
- 20. È possibile scrivere un gioco XBOX commerciale utilizzando Visual Studio e MS XNA Game Studio SDK?
- 21. Visualizzazione di un gioco in XNA dopo aver scritto il codice della console C#
- 22. XNA - Neve simulata
- 23. XNA: ottieni un array/elenco di risorse?
- 24. SurfaceView ritarda se in ScrollView
- 25. XNA su iPhone
- 26. Qual è un buon esempio di salvataggio dei dati di gioco in XNA 4.0?
- 27. XNA - Accesso con profilo locale
- 28. XNA GameComponent Implementation Preferences ...?
- 29. Screensavers con XNA e .NET?
- 30. Pygame ritarda quando vengono implementati due giocatori
Si consiglia di non utilizzare (* soprattutto * non utilizzare 'Thread.Sleep'). Accumula il 'gameTime.ElapsedGameTime' quando viene chiamato' Game.Update'. –
@Andrew Russel +1 Thread.Sleep dovrebbe essere evitato nel 99,9% dei casi in cui potresti essere tentato di usarlo! – MattDavey
Puoi fare un esempio? – Tom