Iscriviti ora!   
 
Viso Lifting  Viso Lifting      3) Un RPG in XNA - Basi del gioco: Input 
 



 Menù

Forum
Chat

 Ultimi post forum

Tempo per una...
Ciao, vorrei sapere da chi fa fumetti,...

Dedica
Questa sezione è dedicata a te FnZ: -...

kiss kiss :]
secondo voi se conosco una ragazza, sembra...

Coltello dala parte...
Come si fa a "ribellarsi" nella nostra...

Final Fantasy
mi chiedevo, come si fa ad avere un topic...

Musica: quando?
Quando ascoltate la musica? Dedicate del...

Quali sono i libri...
Quali sono i libri che vi hanno cambiato la...

Registrarazioni...
Devo registrare dei rumori per un lavoro che...

cos'è l'amore??
si parla sempre di amore...di quello che si...

Facciamo un...
Facciamo un videogiochino di arcadia club?...

Mi freghi 2...
mi freghi una volta è colpa tua, mi freghi...

 


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à

Milan, Allegri...
Massimiliano Allegri non vede l'ora di...

CAVALLEIA E WEB 53...
Nell'illustazione: la battaglia di Damietta...

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

Il lavoro: uno...
La tossicodipendenza passa attraverso tutti...

Prepararsi al...
Ognuno di noi coltiva dei sogni nella vita,...

 




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

Web Design by ArcadiA Club

Powered by:
Spazi pubblicitari di alto livello