2013-11-25 33 views
5

Questa è una domanda semplice ma non sono riuscito a trovare la risposta altrove.Visualizzazione di un gioco in XNA dopo aver scritto il codice della console C#

Sono nuovo alla programmazione e ho scritto un gioco da tavolo completo in C#. Stavo pensando di rappresentarlo con XNA. Vorrei che il gioco aprisse la semplice app per console (che ho già) e una visualizzazione di gioco.

La mia idea sarebbe quella di consentire a un giocatore di giocare il suo turno prima di inviare i dati alla finestra di XNA e farlo leggere tali dati e aggiornare di conseguenza le immagini. La finestra XNA non ha bisogno di fare nient'altro che semplicemente ricevere i dati e aggiornarne la grafica. Voglio solo sapere se questo è possibile, se c'è un modo più semplice per farlo e se dovrei usare Visual Studio Windows, invece di XNA.

Grazie in anticipo.

+0

Il gioco XNA (se è una classe diversa) dovrebbe poter accedere alle variabili delegate 'public' dell'applicazione console. Ricevendo questo, il metodo di disegno potrebbe disegnare direttamente le immagini in base allo stato della posizione.Infine, il metodo 'update' potrebbe vedere se il gioco è iniziato, terminato e chi ha vinto. Così come altre cose del genere. Mona. – Monacraft

risposta

0

Questo potrebbe funzionare per quello che si vuole fare:

Inizia con la creazione di un nuovo progetto XNA.

quindi effettuare le seguenti:

In Microsoft Visual C# fare clic destro del progetto in Esplora soluzioni. Quindi fare clic su "Proprietà" e nella scheda "Applicazione" selezionare "Applicazione console" come tipo di uscita.

Suppongo che tu conosca le nozioni di base di XNA.

Ora, nel ciclo di aggiornamento, è possibile utilizzare Console.ReadLine() per ottenere l'input dell'utente dalla console e quindi aggiornare tutto ciò che è necessario.

Sfortunatamente, questo non è sufficiente per le tue esigenze da solo, dovrai scendere a compromessi. Dovresti aggiungere le classi di gioco da tavolo che hai creato per il progetto XNA e adattarle leggermente per lavorare in XNA. Sarai in grado di ricevere input dall'utente, ma non sarai in grado di fornire l'output direttamente dalla console a XNA. Console.WriteLine() è anche disponibile, quindi sarà possibile stampare il testo come al solito.

Una volta arrivati ​​così lontano, si dovrebbe iniziare a vedere dove si trovano i problemi in base a ciò che richiede il codice dalla console. Sentiti libero di postare di nuovo qui con questi problemi, una volta che sai cosa potrebbero essere, e io aiuterò a trovare una soluzione.

Detto questo, sembra che l'unico vero vantaggio di ciò sarebbe la Console.ReadLine() per ottenere input. Oltre a questo, il codice sarebbe piuttosto identico a un normale progetto XNA.

0

Così ho creato una classe che è possibile inserire in lettere maiuscole e minuscole fanno spazi e backspace che assomiglia a questo.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.GamerServices; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework.Media; 

namespace TileGame 
{ 
    class KeyboardEntering 
    { 
     private KeyboardState ksCurr; 
     private KeyboardState ksPrev; 

     public KeyboardEntering() 
     { 

     } 

     public string Update(string enterString) 
     { 
      string exitString = enterString; 
      ksCurr = Keyboard.GetState(); 
      if (!IsPressed(Keys.LeftShift) && !IsPressed(Keys.RightShift)) 
      { 
       if (OnRelease(Keys.A)) exitString += "a"; 
       if (OnRelease(Keys.B)) exitString += "b"; 
       if (OnRelease(Keys.C)) exitString += "c"; 
       if (OnRelease(Keys.D)) exitString += "d"; 
       if (OnRelease(Keys.E)) exitString += "e"; 
       if (OnRelease(Keys.F)) exitString += "f"; 
       if (OnRelease(Keys.G)) exitString += "g"; 
       if (OnRelease(Keys.H)) exitString += "h"; 
       if (OnRelease(Keys.I)) exitString += "i"; 
       if (OnRelease(Keys.J)) exitString += "j"; 
       if (OnRelease(Keys.K)) exitString += "k"; 
       if (OnRelease(Keys.L)) exitString += "l"; 
       if (OnRelease(Keys.M)) exitString += "m"; 
       if (OnRelease(Keys.N)) exitString += "n"; 
       if (OnRelease(Keys.O)) exitString += "o"; 
       if (OnRelease(Keys.P)) exitString += "p"; 
       if (OnRelease(Keys.Q)) exitString += "q"; 
       if (OnRelease(Keys.R)) exitString += "r"; 
       if (OnRelease(Keys.S)) exitString += "s"; 
       if (OnRelease(Keys.T)) exitString += "t"; 
       if (OnRelease(Keys.U)) exitString += "u"; 
       if (OnRelease(Keys.V)) exitString += "v"; 
       if (OnRelease(Keys.W)) exitString += "w"; 
       if (OnRelease(Keys.X)) exitString += "x"; 
       if (OnRelease(Keys.Y)) exitString += "y"; 
       if (OnRelease(Keys.Z)) exitString += "z"; 
      } 

      if (IsPressed(Keys.LeftShift) || IsPressed(Keys.RightShift)) 
      { 
       if (OnRelease(Keys.A)) exitString += "A"; 
       if (OnRelease(Keys.B)) exitString += "B"; 
       if (OnRelease(Keys.C)) exitString += "C"; 
       if (OnRelease(Keys.D)) exitString += "D"; 
       if (OnRelease(Keys.E)) exitString += "E"; 
       if (OnRelease(Keys.F)) exitString += "F"; 
       if (OnRelease(Keys.G)) exitString += "G"; 
       if (OnRelease(Keys.H)) exitString += "H"; 
       if (OnRelease(Keys.I)) exitString += "I"; 
       if (OnRelease(Keys.J)) exitString += "J"; 
       if (OnRelease(Keys.K)) exitString += "K"; 
       if (OnRelease(Keys.L)) exitString += "L"; 
       if (OnRelease(Keys.M)) exitString += "M"; 
       if (OnRelease(Keys.N)) exitString += "N"; 
       if (OnRelease(Keys.O)) exitString += "O"; 
       if (OnRelease(Keys.P)) exitString += "P"; 
       if (OnRelease(Keys.Q)) exitString += "Q"; 
       if (OnRelease(Keys.R)) exitString += "R"; 
       if (OnRelease(Keys.S)) exitString += "S"; 
       if (OnRelease(Keys.T)) exitString += "T"; 
       if (OnRelease(Keys.U)) exitString += "U"; 
       if (OnRelease(Keys.V)) exitString += "V"; 
       if (OnRelease(Keys.W)) exitString += "W"; 
       if (OnRelease(Keys.X)) exitString += "X"; 
       if (OnRelease(Keys.Y)) exitString += "Y"; 
       if (OnRelease(Keys.Z)) exitString += "Z"; 
      } 
      if (OnRelease(Keys.Space)) exitString += " "; 

      if (OnRelease(Keys.Back)) 
      { 
       if(exitString.Length != 0) exitString = exitString.Substring(0, exitString.Length - 1); 
      } 

      ksPrev = ksCurr; 
      return exitString; 
     } 

     public bool OnRelease(Keys key) 
     { 
      if (ksCurr == null) return false; 
      if (ksPrev == null) return false; 
      return ksCurr.IsKeyUp(key) && ksPrev.IsKeyDown(key); 
     } 
     public bool IsPressed(Keys key) 
     { 
      if (ksCurr == null) return false; 
      return ksCurr.IsKeyDown(key); 
     } 
    } 
} 

quindi di utilizzare questo faccio un oggetto KeyboardEntering e impostarlo ke e l'aggiornamento sembra che questo

drawStringTest = ke.Update (drawStringTest);

quindi ho semplicemente disegnato la stringa con il metodo DrawString. Spero che le persone possano trovare questo utile. So che questo è un vecchio post e XNA non è quello che era, ma qualunque haha.