Iscriviti ora!   
 
Schede Animali  Schede Animali      3) Un RPG in XNA - Basi del gioco: Input 
 



 Menù

Forum
Chat
Invertebrati
Mammiferi
Pesci
Rettili e anfibi
Uccelli

 Ultimi post forum

Avete tatuaggi?
Vi piacciono i tatuaggi?Ne avete? O ne...

Idea per le firme...
Allora, attualmente le firme degli utenti di...

Idee per il nome...
 Stiamo cercando un buon titolo al...

Che birra...
Che birra preferite???? oOo oOo Oo...

Tutto su Mariah...
Mariah Carey a chi piace?

Materialismo
Topic provocatorio Basta con questo...

wi-fi e reti...
chiedo aiuto a voi....ma il wi-fi o le reti...

Tra poco... Pasqua!
Come passerete le feste di Pasqua e...

Chi mi vuole...
Chi mi vuole uccidere? -> Jenas

aiutatemi vi...
vi espongo il problema:sono completamente...

Cos'è la musica?
Che cos'è la musica per voi?

 


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à

La Giraffa:...
La giraffa è un animale, come noto a tutti,...

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

Se la punta di una...
L'arte non ha confini. Mai massima è stata...

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

Come pagare meno...
Pagare le tasse è uno dei doveri più scomodi...

 




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

Web Design by ArcadiA Club

Powered by:
Spazi pubblicitari di alto livello