Iscriviti ora!   
 
Cura-Calvizie.NET  Cura-Calvizie.NET      3) Un RPG in XNA - Basi del gioco: Input 
 



 Menù

Forum
Chat
Calvizie: domande e...

 Ultimi post forum

Emulatori per...
Conoscete qlk emulatore per PS2?...

Creare un MMORPG
Salve a tutti ragazzi, sono nuovo ^^Volevo...

aiuto creazione...
Ciao a tutti sono nuovo di questo sito ed è...

Son buoni segni?
Salve a tutti! Nuovo anno, nuova cotta, ma...

Aiutatemi a creare...
Ciao a tutti... sarò rapido nel spiegarvi...

Genere Preferito
che genere di film preferite? SONDAGGIO:...

Pazienti e...
Come siete? Siete orgogliosi di esserlo?...

che musica...
Che musica ascoltate?my s**t stink much...

Auguri Gnafu!!
Volevo personalmente inziare l'immancabile...

Cerco disegnatrice
Salve. Sto cercando una ragazza disposta a...

Il personaggio di...
Qual è il personaggio con cui vi...

 


3) Un RPG in XNA - Basi del gioco: Input


 
3) Un RPG in XNA - Basi del gioco: Input

Non c'è molto da dire su questo argomento, poichè XNA comprende già tutto il necessario. Sono poche le cose che mancano, come la funzione che indica se il tasto è stato cliccato e rilasciato di seguito (normale Click di un tasto). Ad ogni modo è sempre buona cosa integrare tutto in una classe che ci fà tutto (anche questa funzione) e, magari, aggiungere anche altre funzioni. Ecco la classe:

La classe si chiama "InputSystem" e permette di sapere le cose principali. Ho implementanto anche le funzioni per i click dei tasti. E' necessario creare un' istanza di questa classe dentro Game1 e ad ogni Update (funzione Update (GameTime gameTime) di Game1): è necessario richiamare il metodo update di questa classe.


Using System;
using System. Collections. Generic;
using System. Linq;
using System. Text;
using Microsoft. Xna. Framework. Input;
namespace RPG_Example. GameEngine
{
// Tasti del mouse
enum MouseButton
{
SINISTRO = 0,
CENTRO,
DESTRO
}
class InputSystem
{
/* Servono 2 State per la tastiera e 2 State per il mouse:
* (Con State mi riferisco a KeyboardState per la tastiera e MouseState per il mouse)
* Uno per lo stato corrente e l'altro per il vecchio stato
* Senza troppe spiegazioni: ci serve per sapere se un tasto è cliccato
*/
KeyboardState keyState;
KeyboardState vecchioKeyState;
MouseState mouseState;
MouseState vecchiomouseState;
// Aggiornamento da richiamare ad ogni ciclo
public void update ()
{
// Aggiorna la tastiera
if (keyState = = null)
{ vecchioKeyState = Keyboard. GetState (); }
else
{ vecchioKeyState = keyState; }
keyState = Keyboard. GetState ();
// Aggiorna il mouse
if (mouseState = = null)
{ vecchiomouseState = Mouse. GetState (); }
else
{ vecchiomouseState = mouseState; }
mouseState = Mouse. GetState ();
}
// Tastiera
public bool TastoCliccato (Keys tasto)
{
return keyState. IsKeyDown (tasto) && vecchioKeyState. IsKeyUp (tasto);
}
public bool TastoPremuto (Keys tasto)
{
return keyState. IsKeyDown (tasto);
}
public bool TastoNonPremuto (Keys tasto)
{
return keyState. IsKeyUp (tasto);
}
// Mouse
public bool MouseClick (MouseButton tasto)
{
switch (tasto)
{
case MouseButton. SINISTRO:
return ((vecchiomouseState. LeftButton = = ButtonState. Released) && (mouseState. LeftButton = = ButtonState. Pressed));
case MouseButton. CENTRO:
return ((vecchiomouseState. MiddleButton = = ButtonState. Released) && (mouseState. MiddleButton = = ButtonState. Pressed));
case MouseButton. DESTRO:
return ((vecchiomouseState. RightButton = = ButtonState. Released) && (mouseState. RightButton = = ButtonState. Pressed));
}
return false;
}
public bool MousePremuto (MouseButton tasto)
{
switch (tasto)
{
case MouseButton. SINISTRO:
return (mouseState. LeftButton = = ButtonState. Pressed);
case MouseButton. CENTRO:
return (mouseState. MiddleButton = = ButtonState. Pressed);
case MouseButton. DESTRO:
return (mouseState. RightButton = = ButtonState. Pressed);
}
return false;
}
public bool MouseNonPremuto (MouseButton tasto)
{
switch (tasto)
{
case MouseButton. SINISTRO:
return (mouseState. LeftButton = = ButtonState. Released);
case MouseButton. CENTRO:
return (mouseState. MiddleButton = = ButtonState. Released);
case MouseButton. DESTRO:
return (mouseState. RightButton = = ButtonState. Released);
}
return false;
}
public int MouseX
{
get
{ return mouseState. X; }
}
public int MouseY
{
get
{ return mouseState. Y; }
}
}
}

Dentro "Game1" dichiariamo:

InputSystem inputSystem;

Dentro "protected override void Update (GameTime gameTime) " di "Game1" inseriamo come prima riga

inputSystem. Update ();

Adesso possiamo usare l'input come più ci aggrada



Sweet Vengeance della Freank-Expo



Autore: Freank

 Commenti
LEGGI TUTTI

News di attualità

Allegri: "Cassano è...
Domani il Milan affronta il Cesena a "S....

Acque termali nel...
Una grande quantità di acqua termale sgorga...

Il genio di Nikola...
A lungo rimasto nell'oblio, il nome di...

"Sinestesia": un...
Francis Galton, cugino di Charles Darwin,...

Il Metabolismo...
Il metabolismo dei farmaci è una tecnica...

 




pubblicità | siti partner | regole | visione | diritti | ufficio stampa | donazioni | scrivici
© 1999-2012 - P.IVA 02284690035 - Grafica, layout e contenuti sono di esclusiva proprietà di Cura-Calvizie.NET.

Web Design by ArcadiA Club

Powered by:
Spazi pubblicitari di alto livello