<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>the void. &#187; tastiera</title>
	<atom:link href="http://francescomalatesta.net/tag/tastiera/feed/" rel="self" type="application/rss+xml" />
	<link>http://francescomalatesta.net</link>
	<description>&#34;La Mia Ignoranza Non Ha Lacune.&#34;</description>
	<lastBuildDate>Sat, 21 Aug 2010 09:42:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Input &#8211; Mouse e Tastiera &#8211; Guida SDL.NET</title>
		<link>http://francescomalatesta.net/2009/11/21/input-mouse-e-tastiera-guida-sdl-net/</link>
		<comments>http://francescomalatesta.net/2009/11/21/input-mouse-e-tastiera-guida-sdl-net/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 10:02:45 +0000</pubDate>
		<dc:creator>FrancescoMalatesta</dc:creator>
				<category><![CDATA[SDL.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[giochi]]></category>
		<category><![CDATA[guida]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[librerie]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sdl]]></category>
		<category><![CDATA[tastiera]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://francescomalatesta.net/?p=85</guid>
		<description><![CDATA[Ora cambiamo un po argomento. Abbiamo visto tutto (o quasi) ciò che poteva riguardare l&#8217;output: abbiamo imparato a caricare un immagine sullo schermo, come renderla trasparente, come caricare un font e scriverci qualcosa ed anche aprire un file audio per usare un effetto sonoro nei nostri programmi. Sapete bene però che un gioco non è [...]]]></description>
			<content:encoded><![CDATA[<p>Ora cambiamo un po argomento. Abbiamo visto tutto (o quasi) ciò che poteva riguardare l&#8217;output: abbiamo imparato a caricare un immagine sullo schermo, come renderla trasparente, come caricare un font e scriverci qualcosa ed anche aprire un file audio per usare un effetto sonoro nei nostri programmi.</p>
<p>Sapete bene però che un gioco non è solo Output. Un gioco è interazione, un gioco è anche Input. Per cui, adesso inizieremo a guardare le varie alternative che ci vengono proposte per gestire al meglio il modo in cui l&#8217;utente interagisce con il nostro gioco. Vi ricordate il sistema degli eventi, che avevo descritto ed introdotto qualche tempo fa? Inizieremo proprio da lì.</p>
<p>Riprendiamo l&#8217;esempio dell&#8217;Hello World, apportando però qualche modifica al codice:</p>
<p>[code]]czo3OTg6XCINCnVzaW5nIFN5c3RlbTsNCg0KdXNpbmcgU2RsRG90TmV0LkNvcmU7DQp1c2luZyBTZGxEb3ROZXQuR3JhcGhpY3M7DQp7WyYqJl19DQpuYW1lc3BhY2UgU2RsRG90TmV0RXhhbXBsZXMuU21hbGxEZW1vcw0Kew0KICAgIHB1YmxpYyBjbGFzcyBIZWxsb1dvcmxkDQogIHtbJiomXX0gIHsNCiAgICAgICAgW1NUQVRocmVhZF0NCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQ0KICAgICAgICB7DQogICAge1smKiZdfSAgICAgICAgSGVsbG9Xb3JsZCBhcHAgPSBuZXcgSGVsbG9Xb3JsZCgpOw0KICAgICAgICAgICAgYXBwLkdvKCk7DQogICAgICAgIH17WyYqJl19DQoNCiAgICAgICAgcHVibGljIEhlbGxvV29ybGQoKQ0KICAgICAgICB7DQogICAgICAgICAgICBWaWRlby5TZXRWaWRlb01vZGUoNHtbJiomXX0wMCwgMzAwKTsNCiAgICAgICAgICAgIFZpZGVvLldpbmRvd0NhcHRpb24gPSBcIkhlbGxvIFdvcmxkIVwiOw0KICAgICAgICB9DQoNCiB7WyYqJl19ICAgICAgIHB1YmxpYyB2b2lkIEdvKCkNCiAgICAgICAgew0KICAgICAgICAgICAgRXZlbnRzLktleWJvYXJkRG93biArPSBuZXcgRXtbJiomXX12ZW50SGFuZGxlcihFdmVudHNfS2V5Ym9hcmREb3duKTsNCiAgICAgICAgICAgIEV2ZW50cy5SdW4oKTsNCiAgICAgICAgfQ0KDQoge1smKiZdfSAgICAgICB2b2lkIEV2ZW50c19LZXlib2FyZERvd24ob2JqZWN0IHNlbmRlciwgU2RsRG90TmV0LklucHV0LktleWJvYXJkRXZlbnR7WyYqJl19QXJncyBlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoZS5LZXkgPT0gU2RsRG90TmV0LklucHV0LktleS5Fc2NhcGUpIEV2ZXtbJiomXX1udHMuUXVpdEFwcGxpY2F0aW9uKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQpcIjt7WyYqJl19[[/code]</p>
<p>Dunque, cosa abbiamo di diverso? Sicuramente l'istruzione</p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;"><span style="font-size: small;"><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx"><span>Events</span></span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"><span>.KeyboardDown += </span></span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx"><span>new</span></span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"><span> </span></span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx"><span>EventHandler</span></span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"><span>&lt;SdlDotNet.Input.</span></span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx"><span>KeyboardEventArgs</span></span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"><span>&gt;(Events_KeyboardDown);</span></span></span></span></span></p>
<p style="margin-bottom: 0cm;"><span style="font-size: small;"><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"><span><br />
</span></span></span></span></span></p>
<p>E... cosa vorrebbe dire?</p>
<p>Semplicemente, che abbiamo gestito l'evento che si verificherà alla pressione di un tasto sulla nostra  tastiera.<br />
Ehm... cioè? <img src='http://francescomalatesta.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Spieghiamoci meglio: ogni volta che il nostro giocatore premerà un pulsante sulla tastiera, verrà eseguito il metodo Events_KeyboardDown. Ecco quindi che troviamo il codice del metodo:</p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;"><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">void</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> Events_KeyboardDown(</span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">object</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> sender, SdlDotNet.Input.</span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">KeyboardEventArgs</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> e)</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"><span style="font-size: x-small;">{</span></span></p>
<p style="margin-bottom: 0cm;"><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">if</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> (e.Key == SdlDotNet.Input.</span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Key</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">.Escape) </span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Events</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">.QuitApplication();</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"><span style="font-size: x-small;">}</span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx">Come parametri in ingresso passeremo un oggetto sender e un KeyboardEventArgs chiamato “e”. Soprattutto questo sarà importantissimo, come vedremo tra poco. Ed infatti ecco l'istruzione chiave che spiega questo nuovo concetto:</p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"><span style="font-size: small;"><span style="color: #0000ff;"><span style="font-size: x-small;"><span>if</span></span></span><span style="font-size: x-small;"><span> (e.Key == SdlDotNet.Input.</span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span>Key</span></span></span><span style="font-size: x-small;"><span>.Escape) </span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span>Events</span></span></span><span style="font-size: x-small;"><span>.QuitApplication();</span></span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx">Non è molto difficile da capire: in poche parole qui si dice al nostro caro programma che ogni volta che l'utente premerà il tasto Escape (ESC) il programma dovrà terminare, tramite la chiamata al metodo QuitApplication, già menzionato precedentemente.</p>
<p>Avviando il nostro programma di prova premendo F5, potremo subito verificare i risultati. Premendo Esc, infatti, l'applicazione terminerà facendoci tornare alla schermata del nostro IDE (ho scritto F5 perchè do per scontato l'uso del Visual C# Express, che agevola di molto le cose).</p>
<p style="margin-bottom: 0cm;" lang="zxx">L'oggetto "e" che passiamo, inoltre, offre svariate possibilità grazie alle sue proprietà: la booleana Down, che restituisce true se un tasto è stato premuto. Oppure ancora Unicode ed UnicodeCharacter, che forniscono informazioni sul carattere Unicode rappresentato dal tasto appena premuto. Ciò, quindi, lascia spazio per un buon numero di possibilità e personalizzazioni.</p>
<p style="margin-bottom: 0cm;" lang="zxx">Passiamo ora a dare un occhiata al Mouse: anche in questo caso abbiamo un buon numero di eventi da gestire e metodi pronti da usare per facilitare il nostro lavoro. Un esempio pratico è rappresentato dal codice di seguito.</p>
<p style="margin-bottom: 0cm;" lang="zxx">
<p>[code]]czoxNjg0OlwiDQp1c2luZyBTeXN0ZW07DQoNCnVzaW5nIFNkbERvdE5ldC5Db3JlOw0KdXNpbmcgU2RsRG90TmV0LkdyYXBoaWNzOw17WyYqJl19Cg0KbmFtZXNwYWNlIFNkbERvdE5ldEV4YW1wbGVzLlNtYWxsRGVtb3MNCnsNCnB1YmxpYyBjbGFzcyBIZWxsb1dvcmxkDQp7DQpGb3tbJiomXX1udCBmMSA9IG5ldyBGb250KFwiQ2FsaWJyaS50dGZcIiwgMTIpOw0KDQp1c2luZyBTeXN0ZW07DQoNCnVzaW5nIFNkbERvdE5ldC5Db3J7WyYqJl19ZTsNCnVzaW5nIFNkbERvdE5ldC5HcmFwaGljczsNCg0KbmFtZXNwYWNlIFNkbERvdE5ldEV4YW1wbGVzLlNtYWxsRGVtb3MNCnsNCntbJiomXX0gICAgcHVibGljIGNsYXNzIEhlbGxvV29ybGQNCiAgICB7DQogICAgICAgIEZvbnQgZjEgPSBuZXcgRm9udChcIkNhbGlicmkudHRmXCJ7WyYqJl19LCAxMik7DQoNCiAgICAgICAgc3RyaW5nIHBvc2l6aW9uZSA9IFwiXCI7DQoNCiAgICAgICAgW1NUQVRocmVhZF0NCiAgICAgICAgcHVie1smKiZdfWxpYyBzdGF0aWMgdm9pZCBNYWluKCkNCiAgICAgICAgew0KICAgICAgICAgICAgSGVsbG9Xb3JsZCBhcHAgPSBuZXcgSGVsbG9Xb3J7WyYqJl19bGQoKTsNCiAgICAgICAgICAgIGFwcC5HbygpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIEhlbGxvV29ybGQoKQ0KICAgIHtbJiomXX0gICAgew0KICAgICAgICAgICAgVmlkZW8uU2V0VmlkZW9Nb2RlKDQwMCwgMzAwKTsNCiAgICAgICAgICAgIFZpZGVvLldpbmRvd0Nhe1smKiZdfXB0aW9uID0gXCJIZWxsbyBXb3JsZCFcIjsNCiAgICAgICAgfQ0KICAgICAgICBwdWJsaWMgdm9pZCBHbygpDQogICAgICAgIHsNCiAgIHtbJiomXX0gICAgICAgICBFdmVudHMuS2V5Ym9hcmREb3duICs9IG5ldyBFdmVudEhhbmRsZXIoRXZlbnRzX0tleWJvYXJkRG93bik7DQogICAge1smKiZdfSAgICAgICAgRXZlbnRzLk1vdXNlTW90aW9uICs9IG5ldyBFdmVudEhhbmRsZXIoRXZlbnRzX01vdXNlTW90aW9uKTsNCiAgICAgICB7WyYqJl19ICAgICBFdmVudHMuVGljayArPSBuZXcgRXZlbnRIYW5kbGVyKEV2ZW50c19UaWNrKTsNCiAgICAgICAgICAgIEV2ZW50cy5SdW4oKXtbJiomXX07DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIEV2ZW50c19UaWNrKG9iamVjdCBzZW5kZXIsIFRpY2tFdmVudEFyZ3MgZSkNCiAge1smKiZdfSAgICAgIHsNCiAgICAgICAgICAgIFZpZGVvLlNjcmVlbi5GaWxsKFN5c3RlbS5EcmF3aW5nLkNvbG9yLkJsYWNrKTsNCiAgICAgICB7WyYqJl19ICAgICBWaWRlby5TY3JlZW4uQmxpdChmMS5SZW5kZXIocG9zaXppb25lLCBTeXN0ZW0uRHJhd2luZy5Db2xvci5XaGl0ZSksIG5ld3tbJiomXX0gU3lzdGVtLkRyYXdpbmcuUG9pbnQoMjAsIDIwKSk7DQogICAgICAgICAgICBWaWRlby5TY3JlZW4uVXBkYXRlKCk7DQogICAgICAge1smKiZdfSB9DQoNCiAgICAgICAgdm9pZCBFdmVudHNfTW91c2VNb3Rpb24ob2JqZWN0IHNlbmRlciwgU2RsRG90TmV0LklucHV0Lk1vdXNlTW97WyYqJl19dGlvbkV2ZW50QXJncyBlKQ0KICAgICAgICB7DQogICAgICAgICAgICBwb3NpemlvbmUgPSBcIk1vdXNlIC0gWDogXCIgKyBlLlkuVG9Te1smKiZdfXRyaW5nKCkgKyBcIiwgWTogXCIgKyBlLlguVG9TdHJpbmcoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgRXZlbnRzX0tleWJvYXtbJiomXX1yZERvd24ob2JqZWN0IHNlbmRlciwgU2RsRG90TmV0LklucHV0LktleWJvYXJkRXZlbnRBcmdzIGUpDQogICAgICAgIHsNCiAgICAge1smKiZdfSAgICAgICBpZiAoZS5LZXkgPT0gU2RsRG90TmV0LklucHV0LktleS5Fc2NhcGUpIEV2ZW50cy5RdWl0QXBwbGljYXRpb24oKTsNCiB7WyYqJl19ICAgICAgIH0NCiAgICB9DQp9DQpcIjt7WyYqJl19[[/code]<br />
Qui cosa abbiamo fatto? Andiamo con ordine. L'obiettivo di questo programma non è niente di eccezionale: leggendo ogni spostamento del mouse, riportiamo a schermo le sue coordinate. Queste saranno memorizzate in una stringa che verrà utilizzata con un font.</p>
<p>Ecco che dichiariamo la nostra stringa (inizialmente vuota) “posizione” e il nostro font f1(ricordate che il file del carattere da utilizzare dovrà essere ubicato nella stessa cartella dell'eseguibile che compileremo):</p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;"><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Font</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> f1 = </span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">new</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> </span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Font</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">(</span></span></span><span style="color: #a31515;"><span style="font-size: x-small;"><span lang="zxx">"Calibri.ttf"</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">, 12);</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"><span style="font-size: small;"><span style="color: #0000ff;"><span style="font-size: x-small;">string</span></span><span style="font-size: x-small;"> posizione = </span><span style="color: #a31515;"><span style="font-size: x-small;">""</span></span><span style="font-size: x-small;">;</span></span></span></p>
<p>Adesso andiamo a gestire l'evento relativo al movimento del mouse, che si chiama MouseMotion:</p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;"><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">public</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> </span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">void</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> Go()</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"><span style="font-size: x-small;">{</span></span></p>
<p style="margin-bottom: 0cm;"><span style="color: #000000;"> </span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Events</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">.KeyboardDown += </span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">new</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> </span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">EventHandler</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">&lt;SdlDotNet.Input.</span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">KeyboardEventArgs</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">&gt;(Events_KeyboardDown);</span></span></span></p>
<p style="margin-bottom: 0cm;"><span style="color: #000000;"> </span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Events</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">.MouseMotion += </span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">new</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> </span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">EventHandler</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">&lt;SdlDotNet.Input.</span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">MouseMotionEventArgs</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">&gt;(Events_MouseMotion);</span></span></span></p>
<p style="margin-bottom: 0cm;"><span style="color: #000000;"> </span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Events</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">.Tick += </span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">new</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> </span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">EventHandler</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">&lt;</span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">TickEventArgs</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">&gt;(Events_Tick);</span></span></span></p>
<p style="margin-bottom: 0cm;"><span style="color: #000000;"> </span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">Events</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx">.Run();</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"><span style="font-size: x-small;">}</span></span></p>
<p>Il metodo che lanceremo per gestire la procedura sarà Events_MouseMotion. Il nome è creato automaticamente dal sistema, ma potete crearne uno direttamente voi. L'ho fatto per comodità e per il fatto che viene generato al volo dall'Intellisense del Visual Studio, alla semplice pressione del tasto Tab. Comunque, ecco il nostro codice:</p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm;"><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">void</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> Events_MouseMotion(</span></span></span><span style="color: #0000ff;"><span style="font-size: x-small;"><span lang="zxx">object</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> sender, SdlDotNet.Input.</span></span></span><span style="color: #2b91af;"><span style="font-size: x-small;"><span lang="zxx">MouseMotionEventArgs</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> e)</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"> <span style="font-size: x-small;">{</span></span></p>
<p style="margin-bottom: 0cm;"><span style="color: #000000;"> <span style="font-size: x-small;"><span lang="zxx">posizione = </span></span></span><span style="color: #a31515;"><span style="font-size: x-small;"><span lang="zxx">"Mouse - X: "</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> + e.X.ToString() + </span></span></span><span style="color: #a31515;"><span style="font-size: x-small;"><span lang="zxx">", Y: "</span></span></span><span style="color: #000000;"><span style="font-size: x-small;"><span lang="zxx"> + e.Y.ToString();</span></span></span></p>
<p style="margin-bottom: 0cm;" lang="zxx"><span style="color: #000000;"> <span style="font-size: x-small;">}</span></span></p>
<p>Anche stavolta abbiamo un oggetto sender ed uno “e”, stavolta però di tipo MouseMotionEventArgs. Quindi, cosa fa questo metodo? Semplicemente, ogni volta che il sistema rileva uno spostamento del mouse assegneremo alla stringa “posizione” i valori di X ed Y che il mouse assume in quel momento. Finchè il mouse non verrà mosso, i valori non cambieranno ulteriormente.</p>
<div id="attachment_96" class="wp-caption aligncenter" style="width: 427px"><img class="size-full wp-image-96" title="finestra1" src="http://francescomalatesta.net/wp-content/uploads/2009/11/finestra1.jpg" alt="Una schermata del programma di Prova." width="417" height="336" /><p class="wp-caption-text">Una schermata del programma di Prova.</p></div>
<p>Occorre anche in questo caso fare una bella scarrellata di proprietà che ci vengono messe a disposizione dall'oggetto “e”. Non le riporto tutte ovviamente, ma solo alcune:</p>
<ul>
<li>X ed Y: due proprietà che indicano la posizione sull'asse X ed Y del mouse allo stato attuale del sistema;</li>
<li> Button: restituisce il nome del pulsante del mouse attualmente premuto usando come valori possibili l'enumerazione Input.MouseButton;</li>
<li> ButtonPressed: booleana che restituisce True nel caso un pulsante sia stato premuto.</li>
</ul>
<p>Questi strumenti permettono di gestire al meglio l'input da parte dell'utente, sfruttando le potenzialità del classico metodo “mouse più tastiera” tipico della grande maggioranza di giochi in circolazione negli ultimi anni.</p>
<p>Spero di essere stato chiaro in queste spiegazioni. Vi consiglio assolutamente di fare molte prove e, come già detto precedentemente, sperimentare per bene il sistema ad eventi se non lo si è capito bene. Specialmente adesso, forti di queste nuove piccole nozioni. Con queste basi, molto presto saremo pronti ad affrontare la creazione di un piccolo gioco vero e proprio.</p>
<p>Alla prossima!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Ffrancescomalatesta.net%2F2009%2F11%2F21%2Finput-mouse-e-tastiera-guida-sdl-net%2F&amp;linkname=Input%20%26%238211%3B%20Mouse%20e%20Tastiera%20%26%238211%3B%20Guida%20SDL.NET"><img src="http://francescomalatesta.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://francescomalatesta.net/2009/11/21/input-mouse-e-tastiera-guida-sdl-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
