Iscriviti ora!   
 
Misteri e Segreti  Misteri e Segreti      3) Un RPG in XNA - Basi del gioco: Input 
 



 Menù

Forum
Chat
Nostradamus
Occulto
Satanismo
Stregoneria

 Ultimi post forum

P J HARVEJ
http://cricetare.it/musica-MP3/Music+mp3/P/P+...

Apnea
Quanto resistete in apnea?

IL TEMPO E'...
Ragazzi, vi state accorgento che negli...

che scuola...
Scusate, non sapevo dove postarlo e ho...

Ragnarok
E' un gioco online.. ci avete mai giocato??...

cercasi team
devo dire che ci sono rimasto un po' male...

Materialismo
Topic provocatorio Basta con questo...

Il motivo più...
...gioire/piangere/vivere/morire qual è...

Amici e tradimenti
Confessereste alla vostra amica di aver...

sfogo notturno...
Salve a tutti... sono rientrata poco fa a...

Platone VS...
Secondo voi quali sono le differenze e le...

 


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à

Hiroshima: cosa...
Nel parco della pace di Hiroshima, ogni...

4) Un RPG in XNA -...
Veniamo all'aspetto pratico ora. Supponiamo...

L'assorbimento...
L'assorbimento dipende innanzi tutto dalla...

Fitness: cinque...
Quante volte ci è capitato di iscriverci in...

Conto energia e...
Dopo gli impegni presi durante la conferenza...

 




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

Web Design by ArcadiA Club

Powered by:
Spazi pubblicitari di alto livello