<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-913254962310372085</id><updated>2024-09-04T16:50:01.399+02:00</updated><category term="C#"/><category term="Gioco"/><category term="Helper"/><category term="WindowsForm"/><category term="Command"/><category term="Matematica"/><category term="XNA"/><category term="C"/><category term="C++"/><category term="Computers"/><category term="DoodleJump"/><category term="Excel"/><category term="Fibonacci"/><category term="Fisica"/><category term="HowSecureIsMyPassword"/><category term="Invaders"/><category term="JumpingJump"/><category term="Mail"/><category term="Primi"/><category term="Seriale"/><category term="Space"/><category term="Tetris"/><title type='text'>XNA Projects - ITA</title><subtitle type='html'>Progetti creati in XNA 4.0, completamente gratuiti e anche opensource.&#xa;Da ora anche progetti in C# e C++ !!!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-3742717104831434748</id><published>2013-03-31T21:10:00.003+02:00</published><updated>2013-04-24T18:31:11.207+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Gioco"/><title type='text'>Prato Fiorito</title><content type='html'>Beh, non tutti sanno giocare al fantastico gioco Prato Fiorito. Questa è una versione basilare, ma completamente funzionane in linea di comando programmata in C.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Non sono riuscito a farla nella libreria standard, la funzione gotoxy non è presente nella libreria conio.h ma in conio2.h. Io non sono riuscito ad installarla sul Dev quindo per utilizzare la funzione gotoxy l&#39;ho dovuta scrivere usando delle API di windows. Un altro intoppo per la portabilità è il cambio di colore nella linea di comando, supportato solo dalla libreria &#39;windows.h&#39;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;ATTENZIONE&lt;/span&gt;&lt;/b&gt;: il programma funziona solo sotto Windows per le motivazioni di prima...&lt;/blockquote&gt;
&lt;br /&gt;
Credo che sia meglio fare una piccola introduzione al gioco del Prato Fiorito. Il gioco si svolge in una tabella (nel nostro caso 9x9) dove sono presenti alcuni fiori nascosti, l&#39;obbiettivo è identificare la loro posizione senza cliccarli. Per fare ciò il gioco prevede che le caselle che non contengano un fiore, contengano un numero. Questo numero identifica il numero di fiori attorno a quella casella.&lt;br /&gt;
&lt;br /&gt;
I comando per giocare a questo gioco su windows sono basilari (punti e clicchi con il mouse). A linea di comando invece è meno intuitivo. Le frecce spostano il cursore, con &#39;a&#39; si segna o si toglie il segno dalla posizione come fiore, con &#39;b&#39; si apre e si legge il contenuto della casella. Il senso di segnare i fiori con &#39;a&#39; è quello di non premerli per errore, infatti, se una casella è segnata non si può aprire.&lt;br /&gt;
Passiamo ora al funzionamento. Il sistema della grafica è lo stesso identico del Tetris: scrive su una matrice quello da stampare nelle coordinate esatte. Ad ogni ciclo pulisce la console e stampa carattere a carattere il contenuto della matrice.&lt;br /&gt;
La gestione dell&#39;input è abbastanza semplice, associa al codice delle frecce lo spostamento del cursore (tramite gotoxy). La posizione viene gestita semplicemente da due interi curX e curY che rappresentano ovviamente le coordinate del cursore. La funzione &#39;generateBoard&#39; viene chiamata solo dopo aver aperto la prima casella, in modo tale da non perdere al primo turno. La board vera e propria vene memorizzata in una matrice (in questo caso 9x9), un fiore ha codice 0, una casella che è vicina ad n blocchi ha codice n, una casella che non è adiacente ad alcun blocco ha codice -1. Tramite questa matrice diventa veramente facile gestire l&#39;input, quando viene aperta una casella, se è 0 il gioco termina perché è un fiore, se è un numero positivo apre la casella e visualizza il numero, se è -1 apre tutte le caselle attorno a quella con un funzione ricorsiva. Questa funzione può sembrare complicata perché è ricorsiva, in realtà è veramente semplice, ripete semplicemente la stessa operazione per tutte le caselle attorno. Non può uscire dalla matrice con gli indici perché vengono verificati con una serie di if, non può nemmeno aprire un fiore perché attorno ad una casella con codice -1 non ci sono fiori. Appena più complicata è la funzione di generazione della board, il funzionamento però è facile da comprendere leggendo i commenti. Inizialmente imposta la matrice con soli valori -1. Poi genera a caso il numero deciso di fiori, evita che due fiori si sovrappongano e che il fiore venga generato nella posizione del cursore (per evitare una sconfitta al primo turno). Ora inizia un ciclo che scorre tutte le caselle della board: se il contenuto è zero ignora la cella (un fiore ha distanza zero), se è -1 (non è un fiore) allora conta quanti fiori ci sono attorno e salva il valore nella cella. Appena viene concluso il ciclo per debug salva il contenuto della board in un file. Sarà facile capire cosa c&#39;è dentro ogni singola cella in caso di crash o di bug...&lt;br /&gt;
La funzione che controlla la vittoria e quindi la fine del gioco è molto semplice, scorre tutte le caselle del modello e della board, se una casella che non è un fiore è ancora chiusa allora la partita non è terminata. Per uscire rapidamente dai due cicli ho usato un goto...&lt;br /&gt;
Quando il gioco si conclude mostra la board con segnate le posizioni dei fiori. Per questioni estetiche ho anche messo i colori alla linea di comando... La funzione che imposta il colore della console non l&#39;ho scritta io &amp;nbsp;ma l&#39;ho cercata su google... Non è difficile da comprendere, ottiene l&#39;handle dell&#39;stdout e chiama la funzione &#39;SetConsoleTextAttribute&#39; della libreria &#39;wincon.h&#39; che imposta le proprietà della linea di comando. L&#39;intero color a parametro è definito in &#39;wincon.h&#39; e può essere: FOREGROUND_XXX dove XXX può essere RED, GREEN, BLUE, INTENSITY. Eventualmente i colori possono essere uniti con l&#39;operatore |.&lt;br /&gt;
Per il disegno della board ho usato un piccolo trucco che mi hanno suggerito: ho disegnato la board in un file di testo (board9x9.txt) e il suo contenuto l&#39;ho caricato nel modello... Il file contiene anche delle informazioni sulla board, la prima linea contiene cinque numeri: la larghezza del campo di gioco, la sua altezza, la coordinata x della prima casella, la sua y, ed il numero di fiori. Non ho ancora provato, ma si potrebbe provare a modificare il file board9x9 per aggiungere altri livelli di difficoltà con più fiori e più caselle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropboxusercontent.com/u/56258058/Projects/PratoFiorito/PratoFiorito.rar&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6WUQ1VEYxa3EzVUU/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZYBvVjCGjfP7DpGtp7gZrLZO2zxi9L5ZgT9O-jxN3y7aHzNu_Euweoa64Fj4qqPMnyiBRrsiUERjyUbt5p36YlkVHxKVltdoCRQKj39AkzKc2kXk9MHIzCw4mumAsvi8bZvIRGUxzCA/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZYBvVjCGjfP7DpGtp7gZrLZO2zxi9L5ZgT9O-jxN3y7aHzNu_Euweoa64Fj4qqPMnyiBRrsiUERjyUbt5p36YlkVHxKVltdoCRQKj39AkzKc2kXk9MHIzCw4mumAsvi8bZvIRGUxzCA/s320/Immagine.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/3742717104831434748/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2013/03/prato-fiorito.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/3742717104831434748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/3742717104831434748'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2013/03/prato-fiorito.html' title='Prato Fiorito'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZYBvVjCGjfP7DpGtp7gZrLZO2zxi9L5ZgT9O-jxN3y7aHzNu_Euweoa64Fj4qqPMnyiBRrsiUERjyUbt5p36YlkVHxKVltdoCRQKj39AkzKc2kXk9MHIzCw4mumAsvi8bZvIRGUxzCA/s72-c/Immagine.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.686930500000003 -8.0869170000000423 54.0569495 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-6903161569789745400</id><published>2013-03-30T19:38:00.002+01:00</published><updated>2013-04-24T18:31:05.413+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Gioco"/><category scheme="http://www.blogger.com/atom/ns#" term="Tetris"/><title type='text'>Tetris</title><content type='html'>&lt;span style=&quot;text-align: justify;&quot;&gt;Ecco a vuoi un giochino programmato in C. Si tratta del famosissimo tetris!&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Questa è la seconda versione che ho scritto del tetris. La prima era solo per sperimentare il disegno su console con un model e la gestione dell&#39;input. Apprese queste conoscenze ed altre ho scritto una versione seria di questo gioco.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Penso non sia necessario spiegare che cosa sia il tetris, quindi passiamo subito al&amp;nbsp;funzionamento.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Il tetris che ho programmato è&amp;nbsp;una versione&amp;nbsp;Multiplayer&amp;nbsp;su console. I due giocatori giocano su una stessa&amp;nbsp;tastiera&amp;nbsp;premendo i caratteri per&amp;nbsp;spostare&amp;nbsp;il proprio tetramino. Chi fa più punti vince.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Nelle versioni precedenti dei giochi su console che ho programmato si manifestava un problema: ad ogni aggiornamento della grafica del gioco (ad ogni ciclo del while) tutto lo schermo veniva cancellato e riscritto. Questa operazione ha dei tempi non lunghissimi ma non invisibili. Per evitare questo problema ho pensato di utilizzare uno stack ed un buffer per gestire la console. Lo schermo viene quasi mai riscritto completamente, quando si deve fare una modifica allo schermo viene chiamata la funzione editBuffer che, come spiegato nei commenti, scrive nello stack la modifica da fare; quando si finisce di modificare il buffer si chiama flush che si occupa di disegnare solo le modifiche fatte nello stack.&amp;nbsp;Gran parte&amp;nbsp;dello schermo quindi non viene quasi mai modificata. Però un approccio del genere darebbe seri problemi a gestire le collisioni del blocco che scende. Per il blocco in caduta ho usato un approccio un po&#39; diverso: memorizzo la posizione del blocco, il suo id e la sua forma (in una matrice 4x4). Per disegnare questo blocco non uso il buffer ma una funzione indipendente. Questa funzione stampa semplicemente nello schermo il tetramino. Non è sufficiente&amp;nbsp;stamparlo&amp;nbsp;così come ci capita, bisogna anche fare delle considerazioni: non si devono stampare gli spazi, infatti, andrebbero a sostituire dei caratteri che non vanno modificati; per questioni di sicurezza non scrive nulla se nel carattere di destinazione c&#39;è già qualcosa. Per questioni puramente estetiche ho aggiunto anche la possibilità di cambiare il colore di ciò che viene disegnato con questo metodo. Se si deve spostare il blocco (ad esempio un po&#39; più in basso) è necessario cancellare il blocco attuale per poi ridisegnare quello nuovo. Per eseguire ciò ho scritto anche un&#39;altra funzione che fa proprio questo, riceve in input un blocco e cancella dallo schermo i caratteri che nel blocco sono diversi dallo spazio. Gli spazi nel blocco potrebbero infatti non essere spazi nello schermo...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sinteticamente questo è il funzionamento della grafica del gioco...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Passiamo ora all&#39;analisi del main. L&#39;inizializzazione del gioco è abbastanza semplice. Pulisce il buffer dello schermo e ci inserisce la board. Non sarebbe necessario cancellare il buffer&amp;nbsp;perché&amp;nbsp;viene&amp;nbsp;comunque&amp;nbsp;sostituito dal file letto. Non è garantito però che il file sia perfetto, quindi per sicurezza è meglio spendere qualche millisecondo in più... ;)&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ora che il gioco è pronto bisogna iniziare la partita: si crea un nuovo blocco per A e per B.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Inizia quindi il ciclo del gioco, il quale continua&amp;nbsp;finché almeno un giocatore sta giocando. Il ciclo è strutturato per funzionare anche se un giocatore ha perso. Non spendo troppo tempo a spiegarlo qui dato che è commentato bene ed è abbastanza semplice.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Un altro passo fondamentale per capire questo programma è l&#39;analisi del metodo che gestisce le collisioni. I commenti ci sono ma credo sia meglio spendere un paio di parole in più su ciò.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La funzione riceva da input due interi: dX e dY (delta-x e delta-y). Con ciò intendo lo spostamento che avrebbero i blocchi. Restituisce un valore che è zero se non ci sono collisioni, uno altrimenti. Per verificare ciò è necessario scorrere tutte le caselle del blocco. Nel codice questo è rappresentato da un ciclo for annidato in un altro. Viene quindi dichiarato un carattere (a) che rappresenta il carattere letto dal blocco ed un carattere (b) che rappresenta il corrispondente carattere del buffer dello schermo. Se il carattere del blocco e/o il carattere dello schermo sono spazi allora non c&#39;è collisione. Infatti la collisizone avviene solo se entrambi i caratteri non sono degli spazi.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La gestione dell&#39;input non è difficile da capire, fatta eccezione per il meccanismo di rotazione del blocco. Il metodo che ho usato non è forse il migliore ma il più semplice che mi è venuto in mente... per prima cosa salva il blocco attuale in una variabile di backup nel caso si dovesse ripristinare. Effettua la rotazione del blocco cambiano il suo id e il suo buffer. Ora controlla se nella nuova posizione avviene una collisione, se dovesse esserci allora ripristina il backup che aveva fatto, annullando quindi la modifica. Per lo spostamento a destra e a sinistra il funzionamento è più semplice:&amp;nbsp;controlla&amp;nbsp;la collisione si si spostasse di dX, sposta il blocco solo ne non si&amp;nbsp;sovrapporrebbe&amp;nbsp;a nulla.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Il prossimo passo è comprendere come funziona il metodo update. Non è difficile: se abbassando il blocco non c&#39;è collisione allora è possibile farlo scendere. Se dovesse sovrapporsi allora il blocco è arrivato a fine corsa ed è necessario generarne un&#39;altro. Il metodo update però ha anche un&#39;altra funzione: quella di controllare se si ha riempito una riga e quindi di cancellarla. Per fare ciò controlla tutte le righe partendo dall&#39;ultima e se ne trova una completa sposta tutto quello sopra di lui verso il basso di uno. E&#39; necessario ripetere la verifica un&#39;altra volta su questa riga dato che se non si facesse, il controllo verrebbe effettuato una riga sopra, la quale però è stata spostata verso il basso, quindi verrebbe&amp;nbsp;saltata&amp;nbsp;un&#39;intera riga...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Per generare un nuovo blocco è necessario stampare nel model quello vecchio, per fare ciò ho usato lo stack del buffer dello schermo che avevo scritto. Scorre tutte le caselle del blocco e stampa nel buffer solo quelle diverse dallo spazio. Chiamando la funzione flush vengono rese definitive le modifiche. Per generare a caso il blocco ho usato la funzione rand per la x e per il tipo di blocco, per la y il valore è costante (4). Questo&amp;nbsp;perché&amp;nbsp;l&#39;altezza di caduta dei blocchi è sempre la stessa. La chiave di questa funzione stà nell&#39;eseguire il controllo di collisione: se nella posizione generato, il blocco generato dovesse collidere allora il gioco per quel giocatore finisce.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La funzione per la stampa dei punteggi è abbastanza semplice. Con degli if stabilisce quale giocatore stà vincendo ed imposta il colore del punteggio in base a ciò.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Per il comparto grafico vi do qualche cenno. Il file board.txt contiene lo schermo per tutta la durata del gioco. Viene infatti disegnata la board e le scritte in base a quel file.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo stack e le funzioni pop e push sono semplici e ben commentate e non richiedono particolare spiegazione. La funzione writeWithoutBuf e molte altre funzioni utilizzano gotoxy(int x, int y) la quale è definita in conio2.h. Questa libreria però non è presente in quelle del mio compilaotre quindi ho cercato una versione da mettere nel programma senza includere questo file. Come per setColor si basa su delle API della console di Windows, quindi non sono compatibili con altri sistemi operativi. Il programma l&#39;ho testato sotto windows 7 e windows 8 a 64 bit. Compilato con il DevC++ versione 4.9.9.2 (portatile).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Normalmente uso la versione 5.4.0 di questo compilatore, ma per qualche strana ragione l&#39;output con questa versione mi pesa quasi due megabyte mentre con quella precedente solo una ventina di kilobyte...&lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/Tetris/Tetris.zip&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6anR2aGF5S2VyeHc/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Screen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiavsEdcXdWUqAdWtAjImx_PKfHrYem8D-JcJQeXmM0WNyKGPIr0wWdgUd47bdKj0BI67MLhsIGpacZJ92EK5vhH0fPCo3rlcNOLIBqXNo7vI_tNK9NlOjQrrkEfzPg1-092MIqYiTH0W8/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiavsEdcXdWUqAdWtAjImx_PKfHrYem8D-JcJQeXmM0WNyKGPIr0wWdgUd47bdKj0BI67MLhsIGpacZJ92EK5vhH0fPCo3rlcNOLIBqXNo7vI_tNK9NlOjQrrkEfzPg1-092MIqYiTH0W8/s400/Immagine.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/6903161569789745400/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2013/03/tetris.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/6903161569789745400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/6903161569789745400'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2013/03/tetris.html' title='Tetris'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiavsEdcXdWUqAdWtAjImx_PKfHrYem8D-JcJQeXmM0WNyKGPIr0wWdgUd47bdKj0BI67MLhsIGpacZJ92EK5vhH0fPCo3rlcNOLIBqXNo7vI_tNK9NlOjQrrkEfzPg1-092MIqYiTH0W8/s72-c/Immagine.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-1199501827318351460</id><published>2012-05-30T19:39:00.001+02:00</published><updated>2013-04-24T19:04:19.091+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Helper"/><category scheme="http://www.blogger.com/atom/ns#" term="Matematica"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsForm"/><title type='text'>Risolutore di equazioni</title><content type='html'>&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 15px; line-height: 20px;&quot;&gt;Ho scritto un (assolutamente non) semplice programma che risolve equazioni fino al terzo grado sia in R che in C.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 15px; line-height: 20px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 15px; line-height: 20px;&quot;&gt;Come avevo già scritto tempo&amp;nbsp;fa&amp;nbsp;(parte in grigio in fondo)&amp;nbsp;sto&amp;nbsp;lavorando ad una libreria per creare giochi in XNA 4.0. Questa libreria curerà molto l&#39;aspetto matematico della creazione di giochi e non solo, la parte più completa che ho prodotto è sicuramente quella riguardo le espressioni con le lettere. Questa libreria supporta i seguenti elementi matematici:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; list-style-image: initial; list-style-position: initial; margin: 0.5em 0px; padding: 0px 2.5em;&quot;&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;Lettere: variabile con relativo esponente (inutile o quasi da sola...) formato: &quot;a^2&quot;&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;Monomi: aggregati di lettere e un coefficiente. Formato: &quot;-3a^2bc&quot;&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;Polinomi: aggregati di monomi. Formato: &quot;3a^2bc-5a+6bc&quot;&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;Parentesi: classe per la gestione dei prodotti. Formate da un coefficiente, il contenuto della parentesi e l&#39;esponente della parentesi. Formato: &quot;5ab(7ab+3bc)^2&quot;&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;Espressione: aggregato di valori*&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;Equazione: uguaglianza di due valori* (risoluzione fino al terzo grado)&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;(update) Disequazione: disuguaglianza di due valori* (primo grado sicuramente funzionante, altri gradi non è garantito...)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
*Con valore intendo la classe astratta Valore da cui derivano tutti gli elementi&amp;nbsp;precedenti&amp;nbsp;(ad esclusione delle lettere e delle equazioni)&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
Inoltre la classe possiede un primo approccio alle frazioni. Se la stringa da convertire in un valore contenesse una scrittura di questo genere &quot;[5/3]&quot; verrebbe interpretata come 5 diviso 3 quindi 1.6666666...&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
Con le classi derivate da Valore (Monomio, Polinomio, Parentesi, Espressione) è possibile effettuare le operazioni normali come somma o differenza oppure prodotto... Non è possibile effettuare ancora la divisione di due polinomi....(devo ancora studiare la divisione di Ruffini....), invece le operazioni più comuni sono disponibili. Inoltre qualunque valore può essere trasformato in un Polinomio avviando la funzione Semplifica() che esegue i calcoli... E&#39; possibile inoltre se si&amp;nbsp;sta&amp;nbsp;programmando un gioco avere un impatto grafico superiore utilizzando la funzione Draw(...) che disegna sullo schermo il valore (compresi esponenti e quant&#39;altro).&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
Per coloro che non hanno le capacità tecniche di scriversi un programma per provare la libreria, ho scritto una semplice applicazione che risolve le equazioni (fino al terzo grado) sia nell&#39;insieme R (&lt;a href=&quot;http://it.wikipedia.org/wiki/Numeri_reali&quot; style=&quot;color: #c95f5f; text-decoration: none;&quot;&gt;numeri reali&lt;/a&gt;) che nell&#39;insieme C (&lt;a href=&quot;http://it.wikipedia.org/wiki/Numeri_complessi&quot; style=&quot;color: #c95f5f; text-decoration: none;&quot;&gt;numeri complessi&lt;/a&gt;).&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Per un problema che presto cercherò di risolvere alcune equazioni di terzo grado che hanno una&amp;nbsp;soluzione&amp;nbsp;reale vengono interpretate solo con soluzioni immaginarie... in parole povere anche se un&#39;equazione è possibile, non riesce a risolverla... per superare questo problema è possibile mettere una spunta su &quot;Complessi&quot; e quindi iniziare a lavorare con i numeri complessi. Se una o più delle soluzioni complesse ha la parte immaginaria uguale a zero ( &quot;+0 i&quot;) allora la soluzione è reale e si considera solo la parte a sinistra....&lt;/blockquote&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b style=&quot;color: red;&quot;&gt;ATTENZIONE:&amp;nbsp;&lt;/b&gt;Il progetto è avanzato parecchio dopo aver scritto questo post. Il progetto originario non è più presente nel mio pc ma è stato inglobato da una libreria più grande che ho scritto. Nei file sotto ho usato l&#39;ultima versione della libreria. Quest&#39;ultima comprende numerosissime funzioni in più che riguardano la creazione di un gioco. Non le tratterò in questo post (e forse nemmeno in altri) e per ora non pubblicherò il sorgente completo dato che è parecchio complicato. Se qualcuno fosse interessato può inviarmi una mail e gli farò sapere.&lt;/blockquote&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/56258058/Projects/Risolutore%20di%20equazioni/Risolutore%20di%20equazioni.rar&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6eVlIZndhMEVDNHM/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&amp;nbsp;&lt;/blockquote&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
SCREEN:&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiKBxd4o8Sp2WDNd1_yh0Ir-wIhY-tOibLO3_I9oiQjPo9V23RINn-M3fP2_TOoSctCuw58S6ZTnG3pq-ZKU-rEIzQ2nFd3Yqr73ZcROQXz_7sIv0lz6A6rz7cbF0ZbXiRmbsn_Trl8ME/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiKBxd4o8Sp2WDNd1_yh0Ir-wIhY-tOibLO3_I9oiQjPo9V23RINn-M3fP2_TOoSctCuw58S6ZTnG3pq-ZKU-rEIzQ2nFd3Yqr73ZcROQXz_7sIv0lz6A6rz7cbF0ZbXiRmbsn_Trl8ME/s200/Immagine.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8QTJiugZxYRcwx69fOjEDOjedPlZr4mRbYi3ft5KmZruqolP6USaLkiwz6DwUsRrbpcBYdFzMU5qLfbEArSc7jnHVCbK2b3pfT8QlirJbpBQ7PfH7vTeL3o5Dzwr30fGKh0IHr08w09Y/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8QTJiugZxYRcwx69fOjEDOjedPlZr4mRbYi3ft5KmZruqolP6USaLkiwz6DwUsRrbpcBYdFzMU5qLfbEArSc7jnHVCbK2b3pfT8QlirJbpBQ7PfH7vTeL3o5Dzwr30fGKh0IHr08w09Y/s200/Immagine.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot; /&gt;
&lt;i style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
VECCHIO:&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: small;&quot;&gt;&lt;span style=&quot;line-height: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;i style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Salve a tutti!!&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;In questo periodo sto lavorando ad una libreria (in realtà questa è solo una parte...) che serve ad aiutare a creare giochi in XNA. Questa parte della libreria si occupa di gestione di monomi e polinomi.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;In questo momento non ho molto tempo di scrivere, quindi aggiornerò questa pagina tra qualche giorno... per ora ecco i sorgenti e la dll.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;
&lt;i style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;DOWNLOAD&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/56258058/Projects/MathHelper/MathHelper.dll&quot; style=&quot;background-color: white; color: #c95f5f; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-decoration: none;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;DLL&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/56258058/Projects/MathHelper/MathHelper.rar&quot; style=&quot;background-color: white; color: #c95f5f; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px; text-decoration: none;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;Source&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/1199501827318351460/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/05/gamehelper.html#comment-form' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/1199501827318351460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/1199501827318351460'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/05/gamehelper.html' title='Risolutore di equazioni'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiKBxd4o8Sp2WDNd1_yh0Ir-wIhY-tOibLO3_I9oiQjPo9V23RINn-M3fP2_TOoSctCuw58S6ZTnG3pq-ZKU-rEIzQ2nFd3Yqr73ZcROQXz_7sIv0lz6A6rz7cbF0ZbXiRmbsn_Trl8ME/s72-c/Immagine.png" height="72" width="72"/><thr:total>2</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.686933500000002 -8.0869170000000423 54.0569465 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-3062069001004460465</id><published>2012-04-20T18:02:00.002+02:00</published><updated>2013-04-24T18:30:52.619+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="HowSecureIsMyPassword"/><category scheme="http://www.blogger.com/atom/ns#" term="Matematica"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsForm"/><title type='text'>HowSecureIsYourPassword?</title><content type='html'>Con questo semplice programma è possibile scoprire quanto tempo è necessario ad un hacker per scoprire la vostra password.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Un&#39;oretta di tempo per programmare una semplice applicazione praticamente inutile...&lt;br /&gt;
Online esistono servizi che calcolano il tempo necessario a trovare una password tramite un BruteForceAttack come ad esempio l&#39;ottimo&amp;nbsp;&lt;a href=&quot;http://howsecureismypassword.net/&quot;&gt;howsecureismypassword.net&lt;/a&gt;, il mio programma è una semplice versione per Windows.&lt;br /&gt;
Il&amp;nbsp;Brute Force&amp;nbsp;o attacco a forza bruta è un metodo con il quale trovare una password. Il BF funziona provando tutte le combinazioni di caratteri del charset (caratteri consentiti). Ovviamente da più tipi di caratteri è composta la password più questa sarà robusta. Per questioni di semplicità ho&amp;nbsp;sintetizzato il charset in questo modo:&lt;br /&gt;
- 26 caratteri minuscoli (obbligatori)&lt;br /&gt;
- 26 caratteri maiuscoli&lt;br /&gt;
- 10 cifre&lt;br /&gt;
- 170 simboli e caratteri speciali&lt;br /&gt;
Se la password contiene almeno un carattere maiuscolo, un numero oppure un simbolo il charset conterrà l&#39;intera categoria di&amp;nbsp;appartenenza.&lt;br /&gt;
Il primo obbiettivo del programma è calcolare la lunghezza del charset. Tramite questa informazione è possibile risalire al numero totale di combinazioni. Per fare ciò bisogna applicare la seguente formula
&lt;br /&gt;
&lt;blockquote&gt;
combinazioni = charset&amp;nbsp;&lt;sup&gt;lenght&lt;/sup&gt;&lt;/blockquote&gt;
charset è la lunghezza del charset, lenght è la lunghezza della password.&lt;br /&gt;
I numeri risultanti da questa operazione sono enormi, per gestirli un long non basterebbe. Mi sono appoggiato a BigInteger (System.Numerics). Un tipo di intero che non ha limite di dimensione.&lt;br /&gt;
Ok, si hanno tutte le password possibili, non resta che dividere per il numero di password al secondo per ottenere quanto tempo è necessario. Il risultato sarà ovviamente in secondi... Per dare un piccolo tocco grafico ho scritto una funzione che converte i secondi in minuti, ore, giorni, mesi, anni ecc..&lt;br /&gt;
Il codice è semplicissimo, gli unici commenti che ho inserito sono quelli per i codici&amp;nbsp;ASCII&amp;nbsp;dei simboli che potrebbero non essere immediati...&lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/HowSecureIsYourPassword/HowSecureIsYourPassword.rar&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6N05uSU9LMDZWNzg/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
Screen:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH2715m8T_YX4H17G6EtVgJBghcZnlAGZoUjXfyuBZNdAhyphenhyphenE9Qg_qM0blHilyKoYd5DbddtWxgwxECBCfn8QC0hy5imXRISG6IVVDd4RLKG_aXd3MaJLw-wUaqu4xghwqzw27HRKheVkQ/s1600/Screen1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;66&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH2715m8T_YX4H17G6EtVgJBghcZnlAGZoUjXfyuBZNdAhyphenhyphenE9Qg_qM0blHilyKoYd5DbddtWxgwxECBCfn8QC0hy5imXRISG6IVVDd4RLKG_aXd3MaJLw-wUaqu4xghwqzw27HRKheVkQ/s320/Screen1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-t86qkX5iSqdqQfFAq1PQblOcN1i21jRvWFWrE7msVl9CO4SpuILEtS3i7XRGTAB9z5Rw7YpPoRMteXihUSbt_yVUvNW7rvNcdUvKjUByrBX2gZH-4szy5OhltwFEVFW36MUiE3ocWM4/s1600/Screen2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;66&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-t86qkX5iSqdqQfFAq1PQblOcN1i21jRvWFWrE7msVl9CO4SpuILEtS3i7XRGTAB9z5Rw7YpPoRMteXihUSbt_yVUvNW7rvNcdUvKjUByrBX2gZH-4szy5OhltwFEVFW36MUiE3ocWM4/s320/Screen2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/3062069001004460465/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/howsecureismypassword.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/3062069001004460465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/3062069001004460465'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/howsecureismypassword.html' title='HowSecureIsYourPassword?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH2715m8T_YX4H17G6EtVgJBghcZnlAGZoUjXfyuBZNdAhyphenhyphenE9Qg_qM0blHilyKoYd5DbddtWxgwxECBCfn8QC0hy5imXRISG6IVVDd4RLKG_aXd3MaJLw-wUaqu4xghwqzw27HRKheVkQ/s72-c/Screen1.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.6724235 -8.0869170000000423 54.071456500000004 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-4452585153642923191</id><published>2012-04-10T17:47:00.002+02:00</published><updated>2013-04-01T18:18:19.850+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Helper"/><category scheme="http://www.blogger.com/atom/ns#" term="Matematica"/><category scheme="http://www.blogger.com/atom/ns#" term="Primi"/><title type='text'>Numeri primi</title><content type='html'>Ecco un&#39;altro programma in stile benchmark. Effettua alcuni calcoli e mostra a linea di comando i numeri primi minore di un numero in input.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Questo programma l&#39;ho scritto perché dovevo fare pratica con un sistema multi-thread. In input questo programma chiede quanti thread utilizzare e un limite massimo da non superare.&lt;br /&gt;
Credo si meglio fare delle piccole precisazioni riguardo i numeri primi. Un numero primo è un numero che si può dividere interamente solo per 1 e per se stesso. Ne deriva che l&#39;unico numero primo pari è 2. Si può anche &lt;a href=&quot;http://it.wikipedia.org/wiki/Numero_primo#Prime_propriet.C3.A0&quot;&gt;dimostrare&lt;/a&gt; che se un numero ha dei fattori almeno uno di questi è minore o uguale alla radice del numero.&lt;br /&gt;
Con queste considerazioni si può scrivere il programma. Il linguaggio che ho utilizzato è il C# dato che ha delle utili funzioni che permettono semplicemente la manipolazione dei thread. Ogni funzione eseguita da un thread ha un parametro, il numero da cui iniziare. Questo serve per evitare che i thread facciano più volte lo stesso lavoro dato che possiedono lo stesso incremento non si sovrapporranno mai.&lt;br /&gt;
Per verificare la&amp;nbsp;primitività&amp;nbsp;del numero ogni thread chiama una funzione che calcola il resto della divisione del numero per tutti i numeri dispari (escluso 1) minori o uguali della radice del numero, se dovesse risultare resto 0 allora il numero non è primo.&lt;br /&gt;
Inoltre salva il risultato nel file &quot;file.txt&quot; nel caso si dovessero fare dei calcoli a parte.&lt;br /&gt;
Appena ha finito di eseguire i calcoli mostra il tempo impiegato ad eseguirli, la precisione è forse eccessiva (decimi di microsecondo...)&lt;br /&gt;
Nel programma ho anche inserito una funzione che effettua la scomposizione di un numero in fattori primi. Accetta numeri anche abbastanza grandi, la dimensione di un long.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/Numeri%20primi/Numeri%20primi.rar&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6dmJWdFc2Y2hlNUE/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHU9vlHPCFoKVeuR5mM1JM3xFs40ruRQ6CphsXf2X8IBYARSyv9CrKiKJUwerwNvQcGdweHdyWaX-TQMiDzigN_K-i9hkAUW14gOPOQr7OAEf0eor-pddKbKjRvX2g4ekeSDyTqOEunMc/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHU9vlHPCFoKVeuR5mM1JM3xFs40ruRQ6CphsXf2X8IBYARSyv9CrKiKJUwerwNvQcGdweHdyWaX-TQMiDzigN_K-i9hkAUW14gOPOQr7OAEf0eor-pddKbKjRvX2g4ekeSDyTqOEunMc/s320/Immagine.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsJmDQtOXd1aqOjDYaacO98fENbuviKz8StYTqhmKce3-Kb9hAbFTnFBXNT4weEBFMooaOZhCfKdt2S90xjKM-7jBDqLx8BLA1HgWWTAZ7OKU23SbMpshUAM6ulA2NBNZCv2obUQCKqg/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsJmDQtOXd1aqOjDYaacO98fENbuviKz8StYTqhmKce3-Kb9hAbFTnFBXNT4weEBFMooaOZhCfKdt2S90xjKM-7jBDqLx8BLA1HgWWTAZ7OKU23SbMpshUAM6ulA2NBNZCv2obUQCKqg/s320/Immagine.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/4452585153642923191/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/numeri-primi.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/4452585153642923191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/4452585153642923191'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/numeri-primi.html' title='Numeri primi'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHU9vlHPCFoKVeuR5mM1JM3xFs40ruRQ6CphsXf2X8IBYARSyv9CrKiKJUwerwNvQcGdweHdyWaX-TQMiDzigN_K-i9hkAUW14gOPOQr7OAEf0eor-pddKbKjRvX2g4ekeSDyTqOEunMc/s72-c/Immagine.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.674835 -8.0869170000000423 54.069045 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-4626811132306321015</id><published>2012-04-10T17:19:00.001+02:00</published><updated>2013-04-01T17:24:29.049+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Helper"/><category scheme="http://www.blogger.com/atom/ns#" term="Mail"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsForm"/><title type='text'>AnoniMail</title><content type='html'>Ho scritto un programma che permette di inviare delle email tramite SMTP.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Il vantaggio (?) di questo programma è quello di poter inviare email anche con un indirizzo di posta inventato o non esistente anche senza avere la password. Questo perché si basa sulla tecnologia &lt;a href=&quot;http://it.wikipedia.org/wiki/SMTP&quot;&gt;SMTP&lt;/a&gt;, la quale non richiede un login. Il funzionamento del programma è veramente banale dato che il .Net Framework integra delle funzioni apposite.&lt;br /&gt;
Il cuore del programma è la variabile di tipo SmtpClient. Questa variabile fa appunto da tramite tra il server&amp;nbsp;SMTP&amp;nbsp;e il computer. Il primo passo da fare è impostare l&#39;host del server, per fare ciò basta assegnare un valore alla proprietà smtp.Host. Si può anche abilitare la crittografia SSL (facoltativo). Il passo successivo è creare il messaggio email da inviare. Per fare ciò serve un oggetto di tipo MailMessage inizializzato così:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MailMessage&lt;/span&gt;&amp;nbsp;message&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;MailMessage&lt;/span&gt;(mittente,&amp;nbsp;destinatario);
message.Subject&amp;nbsp;=&amp;nbsp;oggetto;
message.Body&amp;nbsp;=&amp;nbsp;corpo;&lt;/pre&gt;
&lt;/blockquote&gt;
Si può anche aggiungere qualche allegato al messaggio con la funzione&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;message.Attachments.Add(&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #2b91af;&quot;&gt;Attachment&lt;/span&gt;(path));&lt;/pre&gt;
&lt;/blockquote&gt;
path è il percorso del file da allegare.&lt;br /&gt;
&lt;br /&gt;
Per inviare il messaggio ci sono due metodi: quello classico con smtp.Send(message) oppure uno asincrono. Io ho utilizzato il secondo per il semplice motivo che non blocca il programma durante l&#39;invio del messaggio. Infatti l&#39;invio viene eseguito in un thread separato da quello principale, in questo modo se si preme sul pulsante annulla viene bloccato il thread secondario e si può fermare l&#39;invio del messaggio. Appena viene inviato il messaggio verrà chiamato l&#39;evento smtp.SendCompleted, il quale ho intercettato all&#39;inizio del programma. Appena il messaggio viene inviato verrà mostrato un messaggio di riuscito inoltro.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b style=&quot;color: red;&quot;&gt;ATTENZIONE: &lt;/b&gt;questo programma non va utilizzato per inviare alcun tipo di SPAM! Le email non sono inviate anonimamente, è possibile risalire all&#39;identità del mittente dalle forze dell&#39;ordine. Non mi assumo nessuna responsabilità per l&#39;utilizzo che ne farete, l&#39;unica utilità è quella didattica.&lt;/blockquote&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/AnoniMail/AnoniMail.rar&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6Z3NjdE5iaUNhVXM/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQem2YvHXrqr626x53oOFHxBPemMXOkDAfwZabKCXLbYFjplhtJKpBjabipXTVbZ9n8_i_nqCV4ajR-I-fdE1yl1c7nYiyQKrC8I2SO1g94B_H1pSeYVpTvD9UKGr1zNCyfBWhUc-rdI/s1600/Screen.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;282&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQem2YvHXrqr626x53oOFHxBPemMXOkDAfwZabKCXLbYFjplhtJKpBjabipXTVbZ9n8_i_nqCV4ajR-I-fdE1yl1c7nYiyQKrC8I2SO1g94B_H1pSeYVpTvD9UKGr1zNCyfBWhUc-rdI/s320/Screen.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/4626811132306321015/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/anonimail.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/4626811132306321015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/4626811132306321015'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/anonimail.html' title='AnoniMail'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQem2YvHXrqr626x53oOFHxBPemMXOkDAfwZabKCXLbYFjplhtJKpBjabipXTVbZ9n8_i_nqCV4ajR-I-fdE1yl1c7nYiyQKrC8I2SO1g94B_H1pSeYVpTvD9UKGr1zNCyfBWhUc-rdI/s72-c/Screen.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>41.87194 12.567379999999957 41.87194 12.567379999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-9055308172069710656</id><published>2012-04-09T20:25:00.001+02:00</published><updated>2013-04-01T16:43:12.512+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Gioco"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsForm"/><title type='text'>100</title><content type='html'>Chi ha mai giocato a &quot;100&quot;? Quel gioco dove rispettando delle regole si deve riempire la tabella di numeri progressivi.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Il nome originale non lo conosco, io l&#39;ho chiamato 100 perché è una tabella 10x10 e quindi ci sono 100 caselle...&lt;br /&gt;
Le regole del gioco sono molto semplici. L&#39;obiettivo del gioco è appunto riempire la tabella di numeri. Per farlo bisogna rispettare queste regole:&lt;br /&gt;
- Si può iniziare da una casella qualsiasi&lt;br /&gt;
- La casella successiva deve essere distante 3 caselle in orizzontale o verticale oppure 2 caselle in diagonale&lt;br /&gt;
Ricordarsi queste regole non è necessario dato che il programma vi aiuta a scegliere tra le caselle selezionabili da quelle non selezionabili. E&#39; infatti possibile premere solo le caselle che appaiono di colore verde cioè quelle che rispettano le regole. Il gioco termina quando non ci sono più caselle selezionabili oppure appena si completa la tabella. Ovviamente meno tempo ci si impiega a finire meglio è!&lt;br /&gt;
Ho inserito anche la funzione undo che permette di tornare indietro se si commettono degli errori.&lt;br /&gt;
&lt;br /&gt;
Il funzionamento è abbastanza semplice. Ovviamente non ho creato 100 Button, o preferito usare una funzione (Initialize) che mi crea una matrice di pulsanti automaticamente all&#39;avvio del gioco. Questi pulsanti sono&amp;nbsp;accessibili&amp;nbsp;tramite la proprietà Controls del Form. Quando vengono premuti chiamano tutti lo stesso metodo che ricava la posizione del button tramite le sue coordinate. E&#39; così possibile operare sulla matrice 10x10 di caselle che rappresenta lo stato del gioco.&lt;br /&gt;
Per la funzione undo ho usato un approccio facile ma dispendioso. Ogni volta che viene premuta una casella salva lo stato della board in una lista. Se viene premuto UNDO ripristina lo stato salvato e lo cancella dalla lista.&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/100/100.rar&quot;&gt;Dropbox&lt;/a&gt; - &lt;a href=&quot;http://google%20drive/&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeSXOw5HuOL-21G5hnbVE_AJbtrHyHGfpU6kaO0kFLIE7XO6iODP00YndEhJmPdnXKBxLiveAlgnNvfQ9tdXpctWUBeEKYaWarMbcVct3-hKqjC4sAEnBk3itUMWE-5e1t5TTaRb1DavM/s1600/Screen.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;268&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeSXOw5HuOL-21G5hnbVE_AJbtrHyHGfpU6kaO0kFLIE7XO6iODP00YndEhJmPdnXKBxLiveAlgnNvfQ9tdXpctWUBeEKYaWarMbcVct3-hKqjC4sAEnBk3itUMWE-5e1t5TTaRb1DavM/s320/Screen.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/9055308172069710656/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/100.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/9055308172069710656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/9055308172069710656'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/04/100.html' title='100'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeSXOw5HuOL-21G5hnbVE_AJbtrHyHGfpU6kaO0kFLIE7XO6iODP00YndEhJmPdnXKBxLiveAlgnNvfQ9tdXpctWUBeEKYaWarMbcVct3-hKqjC4sAEnBk3itUMWE-5e1t5TTaRb1DavM/s72-c/Screen.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.6726765 -8.0869170000000423 54.0712035 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-5241150515768283731</id><published>2012-01-10T17:04:00.002+01:00</published><updated>2013-04-01T16:16:35.734+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="Helper"/><category scheme="http://www.blogger.com/atom/ns#" term="Seriale"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsForm"/><title type='text'>Parametri in MODBUS</title><content type='html'>Un giorno mi serviva inviare ad un dispositivo bluetooth delle stringhe in Modbus&amp;nbsp;ASCII&amp;nbsp; Allora mi sono messo a scrivere un&#39;interfaccia grafica che mi facilitasse il compito...&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Il dispositivo che avevo costruito era un &quot;semplice&quot; termometro sonda con molte funzioni. Si interfacciava con alcune (mi sembra 4) termometri e con diversi relè che permettevano di controllare il sistema di riscaldamento/raffreddamento di qualsiasi cosa. A questo dispositivo avevo connesso un&#39;interfaccia seriale&amp;nbsp;Bluetooth. Tramite questa porta seriale era possibile configurare ed utilizzare questo dispositivo. Ad esempio inviando una certa stringa nella porta COM esatta era possibile ricevere come risposta la temperatura della prima sonda. Era anche possibile configurare il comportamento nel caso in cui la temperatura superasse certe soglie ad esempio accendendo una ventola.&lt;br /&gt;
Non tratterò la codifica dei messaggi&amp;nbsp;perché&amp;nbsp;è per voi totalmente inutile dato che codifica dei dati in input (decimali) e li formatta in esadecimale e calcola i relativi checksum per inviare al dispositivo una stringa corretta.&lt;br /&gt;
Più interessante è invece il sistema di invio/ricezione tramite una porta COM seriale. In questo caso si tratta di una Bluetooth ma il funzionamento è assolutamente identico ad una porta cablata (dato che il dispositivo bluetooth crea una connessione seriale standard).&lt;br /&gt;
Il primo passo necessario per fare tutto ciò è creare un oggetto di tipo SerialPort. Questa classe gestisce la comunicazione attraverso una porta seriale e tutte le funzioni che ne derivano.&lt;br /&gt;
Appena si ha creato una porta seriale è necessario configurare le impostazioni di base. Tali impostazioni sono :&lt;br /&gt;
- PortName (la porta COM)&lt;br /&gt;
- BaudRate (la velocità della porta in baud)&lt;br /&gt;
- DataBits (la lunghezza standard di bit in ogni byte di dati)&lt;br /&gt;
- StopBits (il numero di bit di stop per ogni byte)&lt;br /&gt;
- Parity (il protocollo di controllo della parità)&lt;br /&gt;
- ReadTimeout (il timeout in lettura)&lt;br /&gt;
- WriteTimeout (il timeout in scrittura)&lt;br /&gt;
&lt;br /&gt;
Bene ora che la nostra porta è configurata bisogna aprirla. Basta chiamare&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;portaSeriale.Open();&amp;nbsp;&lt;/pre&gt;
&lt;/blockquote&gt;
Ok, la connessione è stata aperta, ora è possibile leggere e scrivere attraverso questa porta.&lt;br /&gt;
Per scrivere del testo basta eseguire un&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: Consolas; font-size: 13px;&quot;&gt;portaSeriale.Write(text&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas; font-size: 13px;&quot;&gt;);&lt;/span&gt;&lt;/blockquote&gt;
text è la stringa di caratteri ASCII da inviare. E&#39; bene ricordare che nella maggior parte dei casi per funzionare text deve terminare con CRLF (Carriage Return e Line Feed). Per inserire questi codici basta modificare text così:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;text&amp;nbsp;+&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;\r\n&quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
Il sistema di lettura è anch&#39;esso molto semplice. Chiamando la funzione&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;msgTextRx&amp;nbsp;=&amp;nbsp;portaSeriale.ReadExisting();&lt;/pre&gt;
&lt;/blockquote&gt;
Si assegna a msgTextRx il contenuto del buffer di lettura della porta seriale.&lt;br /&gt;
Basta per quanto riguarda l&#39;apparato di invio/ricezione seriale è tutto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutto ciò però è abbastanza scomodo da usare: bisognerebbe premere ogni volta &quot;Calcola e invia&quot; per leggere la temperatura. Allora ho pensato di aggiungere una funzione molto interessante: Esegue un loop e ogni n secondi esegue la lettura della temperatura e la scrive in un file&amp;nbsp;Excel&amp;nbsp;(o un altro formato). Il vantaggio di questo metodo è quello di avere un file&amp;nbsp;Excel&amp;nbsp;con i valori delle temperature, diventa quindi semplicissimo creare un grafico che rappresenta l&#39;andamento termico delle sonde.&lt;br /&gt;
Per creare, modificare e salvare un file in formato Excel mi sono appoggiato alla libreria GemBoxSpreadsheet. Tramite questa libreria si può accedere ad una tabella tramite le coordinate delle celle, rendendo la modifica dei valori una vera sciocchezza. Il primo passo da compiere è dichiarare un&#39;oggetto di tipo ExcelFile, il quale conterrà il nostro file. Poi bisogna creare un foglio di lavoro per farlo bisogna chiamare:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;excelFile.Worksheets.Add(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Data&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/blockquote&gt;
Verrà quindi creato un foglio di nome &quot;Data&quot;. In questo foglio ho aggiunto la prima linea che contiene le intestazioni delle colonne:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;A1&quot;&lt;/span&gt;].Value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Ora&quot;&lt;/span&gt;;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;B1&quot;&lt;/span&gt;].Value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Indirizzo&quot;&lt;/span&gt;;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;C1&quot;&lt;/span&gt;].Value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Funzione&quot;&lt;/span&gt;;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;D1&quot;&lt;/span&gt;].Value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Valore&quot;&lt;/span&gt;;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;E1&quot;&lt;/span&gt;].Value&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Data&quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;/blockquote&gt;
Sulle celle identificate da A1, B1, C1... sono stati scritti i valori corrispondenti. In ogni riga sotto verranno inserite le informazioni relative ai dati letti:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;A&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;i.ToString()].Value&amp;nbsp;=&amp;nbsp;ora;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;B&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;i.ToString()].Value&amp;nbsp;=&amp;nbsp;indirizzo;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;C&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;i.ToString()].Value&amp;nbsp;=&amp;nbsp;funzione;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;D&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;i.ToString()].Value&amp;nbsp;=&amp;nbsp;valore;
excelFile.Worksheets.ActiveWorksheet.Cells[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;E&quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;i.ToString()].Value&amp;nbsp;=&amp;nbsp;data;&lt;/pre&gt;
&lt;/blockquote&gt;
Incrementando i &amp;nbsp;si andrà a scrivere una riga sotto.&lt;br /&gt;
Non resta altro che salvare il file. I formati supportati sono Csv, Html, Ods, Xls, Xlsx. Per salvare in un file&amp;nbsp;Excel&amp;nbsp;2010 (o 2007) basta chiamare:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;excelFile.SaveXlsx(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;file.xlsx&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/blockquote&gt;
Tutto qua, questa libreria è davvero utile e semplice da usare. Nel mio programma la ho usata per salvare il file in tutti i formati supportati, basta scegliere dal menu opzioni quello desiderato. Le opzioni vengono salvate in un file ini. Per leggere e scrivere in questo file mi sono basto sulla libreria kernel32 di windows. Il file di impostazioni è salvato in &quot;D:/settings.ini&quot;.&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/Parametri%20in%20MODBUS/Parametri%20in%20MODBUS.rar&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;- &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6RkJxNk5kU05GYVU/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl1FBcE7BvC3mV95Ps_N0EhYhcBv3d5QYQHHtNy6EXuCGJZMEnR0dmzIvJb_-i8zLCHX4duijG4jkNR9PagxOzdN77lOvuzIV9SMsDF6E9jVqiNagDuKxp3c5ZFIE79pHX0tD0wXMdTtA/s1600/Screen1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl1FBcE7BvC3mV95Ps_N0EhYhcBv3d5QYQHHtNy6EXuCGJZMEnR0dmzIvJb_-i8zLCHX4duijG4jkNR9PagxOzdN77lOvuzIV9SMsDF6E9jVqiNagDuKxp3c5ZFIE79pHX0tD0wXMdTtA/s1600/Screen1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvLVuX3Nl9y7xlADhw_UPLcTeV_fI-_2epe8PmYGaVVfOXnnSEDRtGU7-qxe3eIBWv2jDN3-ahLAcFn0sw7tk5uiWmRqEXlxj3Z95m7A3oWZYPSzbgxrGFaZkDLShSb4BfHCs0nzz5Noo/s1600/Screen2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;285&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvLVuX3Nl9y7xlADhw_UPLcTeV_fI-_2epe8PmYGaVVfOXnnSEDRtGU7-qxe3eIBWv2jDN3-ahLAcFn0sw7tk5uiWmRqEXlxj3Z95m7A3oWZYPSzbgxrGFaZkDLShSb4BfHCs0nzz5Noo/s320/Screen2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/5241150515768283731/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/parametri-in-modbus.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/5241150515768283731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/5241150515768283731'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/parametri-in-modbus.html' title='Parametri in MODBUS'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl1FBcE7BvC3mV95Ps_N0EhYhcBv3d5QYQHHtNy6EXuCGJZMEnR0dmzIvJb_-i8zLCHX4duijG4jkNR9PagxOzdN77lOvuzIV9SMsDF6E9jVqiNagDuKxp3c5ZFIE79pHX0tD0wXMdTtA/s72-c/Screen1.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.687939500000002 -8.0869170000000423 54.055940500000005 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-3466001751646478358</id><published>2012-01-09T20:59:00.002+01:00</published><updated>2013-04-01T16:08:10.228+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Fibonacci"/><category scheme="http://www.blogger.com/atom/ns#" term="Matematica"/><category scheme="http://www.blogger.com/atom/ns#" term="WindowsForm"/><title type='text'>Fibonacci</title><content type='html'>Siete curiosi di sapere la sequenza di Fibonacci fino al 10000 elemento?&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Ho scritto un semplice programma che calcola e trova i primi 10000 numeri della sequenza di Fibonacci. La sequenza di&amp;nbsp;Fibonacci&amp;nbsp;è una successione di numeri tali che:&lt;br /&gt;
- Il primo elemento è 0&lt;br /&gt;
- Il secondo è 1&lt;br /&gt;
- I successivi sono la somma dei due che li precedono&lt;br /&gt;
La sequenza inizia quindi così: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34...&lt;br /&gt;
Questa sequenza apparentemente banale ed inutile nascone alcune importati proprietà nascoste. Una delle quali è lo stretto legame con il numero d&#39;oro (sezione aurea: 1.6180339...). Spiegarle tutte sarebbe un lavoro eterno ed inutile dato che sono dettagliatamente trattate su Wikipedia a &lt;a href=&quot;http://it.wikipedia.org/wiki/Successione_di_Fibonacci#Propriet.C3.A0&quot;&gt;questo&lt;/a&gt; indirizzo. Una delle proprietà più interessanti è quella che riguarda la sezione aurea. In questa successione il rapporto tra due elementi consecutivi della successione si avvicina sempre di più a questa costante.&lt;br /&gt;
&lt;br /&gt;
Ovviamente un semplice intero o anche un long non può contenere dei numeri così grandi (stiamo parlando di oltre duemila cifre all&#39;elemento 10000). Per risolvere questo problema mi sono affidato ad un tipo di intero diverso: il BigInteger (presente in System.Numerics)&lt;br /&gt;
Questo tipo di numero non ho un limite per la sua grandezza, l&#39;unico limite è la memoria di sistema!&lt;br /&gt;
Bene ora è tutto più semplice, basta iterare la funzione che calcola il numero sommando i due precedenti ed il gioco è fatto!&lt;br /&gt;
&lt;br /&gt;
Non credo sia necessario commentare il codice vista la sua semplicità (anche se devo ammettere che l&#39;ho scritto parecchio male....). Nel codice è presente un solo commento. Se togliete il commento animerete la ListBox che focalizzerà sempre l&#39;ultimo numero della sequenza senza bloccarsi. Quando finisce di calcolare la sequenza il programma vi mostrerà un messaggio che vi dice quanto tempo ci ha messo (molto preciso...) e quante cifre ha l&#39;ultimo termine della sequenza.&lt;br /&gt;
A chi interessasse questo software può essere usato come benchmark&amp;nbsp;ritoccando&amp;nbsp;ed ottimizzando il codice. Per il calcolo del tempo impiegato ho usato una classe che è precisa al decimo di microsecondo... Forse un po&#39; troppo...&lt;br /&gt;
Il mio computer ha un Intel Core i5 2500K da 3.3GHz e per eseguire questo&amp;nbsp;calcolo&amp;nbsp;impiega 22.5669408 secondi.&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/Fibonacci/Fibonacci.rar&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;- &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6Yk1LMVp4UVgwNDA/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrRL7X14ACNtbgRixPyXaECYtCDIRRfRTT_yuaFemMk2MZvDIiMlZxwkAqMj3tLb2Ye0FSo9OJxZzVGIVZ7NKMvtttwlSmGhh_LbfiI8bcqaNfdWauMZpQhayJtzaF8y_bXxXQXHxQRcM/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrRL7X14ACNtbgRixPyXaECYtCDIRRfRTT_yuaFemMk2MZvDIiMlZxwkAqMj3tLb2Ye0FSo9OJxZzVGIVZ7NKMvtttwlSmGhh_LbfiI8bcqaNfdWauMZpQhayJtzaF8y_bXxXQXHxQRcM/s400/Immagine.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/3466001751646478358/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/fibonacci.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/3466001751646478358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/3466001751646478358'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/fibonacci.html' title='Fibonacci'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrRL7X14ACNtbgRixPyXaECYtCDIRRfRTT_yuaFemMk2MZvDIiMlZxwkAqMj3tLb2Ye0FSo9OJxZzVGIVZ7NKMvtttwlSmGhh_LbfiI8bcqaNfdWauMZpQhayJtzaF8y_bXxXQXHxQRcM/s72-c/Immagine.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.687939500000002 -8.0869170000000423 54.055940500000005 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-8269381278578083834</id><published>2012-01-09T20:27:00.000+01:00</published><updated>2013-04-01T16:11:18.056+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="DoodleJump"/><category scheme="http://www.blogger.com/atom/ns#" term="Gioco"/><category scheme="http://www.blogger.com/atom/ns#" term="JumpingJump"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Jumping Jump</title><content type='html'>Ecco a voi uno dei miei più grandi progetti. Si tratta di un clone del gioco DoodleJump. E&#39; stato programmato in XNA 4.0 e C#.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;Piccola introduzione: questo articolo è stato riscritto il 31/03/2013 per migliorarne la forma e i contenuti. Dato che ora è in versione quasi finale, ho ritenuto meglio aggiornare...&lt;/span&gt;&lt;/blockquote&gt;
&amp;nbsp;Per chi avesse visto il post nella vecchia versione (che lascio disponibile a &lt;a href=&quot;http://xnaprojects-ita.blogspot.it/p/jumping-jump-pc.html&quot;&gt;questo&lt;/a&gt;&amp;nbsp;indirizzo) ecco un changelog:&lt;br /&gt;
- Supporto al mouse&lt;br /&gt;
- Salvataggio della classifica e delle statistiche di gioco&lt;br /&gt;
- Implementate quelle che chiamavo tabelle (le spiego più&amp;nbsp;giù...)&lt;br /&gt;
- Aggiornata la funzione che fa rimbalzare il doodle&lt;br /&gt;
- Migliorata la grafica e la &quot;schermata&quot; iniziale&lt;br /&gt;
- Aggiunti i nemici&lt;br /&gt;
- Aggiunti gli oggetti bonus&lt;br /&gt;
- Aggiunti vari tipi di piattaforme&lt;br /&gt;
- Aggiunto file di configurazione&lt;br /&gt;
- Aggiunto menu di pausa&lt;br /&gt;
- Rewrite completo del codice e rimosse le inutili librerie che avevo messo per separare le funzioni&lt;br /&gt;
- E forse altro ancora...&lt;br /&gt;
&lt;br /&gt;
Ok come ho già detto si tratta di un gioco clone di DoodleJump sulla piattaforma PC. Non avendo trovato questo gioco per computer ho pensato di iniziare a programmarlo io...&lt;br /&gt;
Per creare JumpingJump ho utilizzato:&lt;br /&gt;
- Microsoft Visual Studio 2010 Express&lt;br /&gt;
- Microsoft XNA 4.0&lt;br /&gt;
- Programmi di grafica &amp;nbsp;(Paint.net e altri...)&lt;br /&gt;
- Mia cugina (grazie Anna!)&lt;br /&gt;
- Tanta pazienza e voglia di pensare ed impegnarsi (e di sbattere la testa sulle funzioni matematiche....)&lt;br /&gt;
&lt;br /&gt;
Bene, chi non avesse mai giocato a DoodleJump l&#39;obbiettivo è quello di raggiungere un punto più alto possibile. Per farlo bisogna spostare il personaggio a destra e a sinistra per farlo saltare su delle piattaforme sempre più rare e difficili da raggiungere. Come se non bastasse ci sono anche dei mostri alieni che ostacolano il percorso, bisogna ucciderli per non rischiare di morire... fortunatamente il nostro doodle spara delle micidiali palline di gomma (lo so, ho una grande fantasia.... xD ). Ci sono vari tipi di nemici, da quelli più semplici, per cui basta un proiettile, a quelli più impegnativi, ai quali ne servono di più. Ad ulteriore difficoltà i blocchi non sono tutti uguali. Ci sono vari tipi di blocchi: quelli solidi, dove ci si può saltare quanto si vuole, quelli meno solidi, ci si può saltare solo un numero limitato di volte, quelli falsi, sui quali è inutile provare a saltare, quelli che si spostano&amp;nbsp;orizzontalmente&amp;nbsp;e verticalmente, e quelli fragili, ci si può saltare solo una volta.&lt;br /&gt;
La grafica non è ai livelli dell&#39;originale, ma rimane comunque interessante, tutto merito del team grafico (io e mia cugina...). Ci sono anche dei bonus che si possono incontrare durante il gioco: un cappellino che ti permette di volare per brevi tratti, un piccolo jetpack che ti fa risalire in fretta, una molla che ti fa compiere un balzo verso l&#39;alto, ed infine un mega razzo, con il quale puoi percorrere molta più strada...&lt;br /&gt;
&lt;br /&gt;
Dopo questa spiegazione teorica passiamo ai fatti: come funziona?&lt;br /&gt;
Ovviamente se spiegassi passo per passo tutto il funzionamento diventeremmo tutti vecchi, parlerò quindi delle strategie più interessanti e delle funzioni clou.&lt;br /&gt;
Il primo problema che mi si è presentato quando ho iniziato a programmare la prima versione di questo gioco è stato quello di far saltare il nostro doodle. Mi serviva una funzione matematica che mi facesse muovere fluidamente e come volevo il personaggio. Quello che mi interessava era farlo salire partendo da una certa velocità fino ad una certa altezza, farlo poi scendere con velocità sempre maggiore. Quando ho programmato questa funzione ero ancora in prima superiore e non conoscevo bene le parabole e le loro applicazioni, quindi il metodo che ho usato è abbastanza sbagliato.&amp;nbsp;Vabbè. Allora, ho diviso il movimento in due parti. La prima è la salita, la seconda la discesa. Per salire avevo usato un pezzo della funzione seno (in realtà coseno...). Precisamente un quarto di quella funzione, quella di risalita. Ripensandoci era meglio usare anche qui una parabola... Ok, non è difficile adesso, arrivarci alcuni anni fa invece lo è stato un po&#39; di più. Per la discesa non potevo usare ancora il seno, se lo avessi usato avrei ottenuto un movimento fluido ma che si sarebbe fermato in caduta per poi risalire e continuare ciclicamente. Allora ho dovuto cambiare funzione. Per la discesa ho utilizzato la funzione della parabola. Il suo funzionamento è abbastanza ovvio e non mi dilungherò. Per quanto riguarda i salti penso che basti così, non c&#39;è molto altro da dire.&lt;br /&gt;
Un altro grande problema che dovevo risolvere era quello di evitare che il player possa uscire dalla parte superiore dello schermo. Per fare ciò mi sono messo a giocare a DoodleJump e ho cercato di capire come i&amp;nbsp;creatori&amp;nbsp;possano aver risolto questo grande problema. Devo dire che hanno avuto un&#39;idea veramente geniale. Ci ho messo un po&#39; a capirla dato che è stata realizzata veramente benissimo. Il concetto è semplice, far salire il giocatore, se non c&#39;è spazio allora facciamo scendere il resto... Quando l&#39;ho capito sono rimasto veramente stupefatto, è assolutamente un&#39;idea geniale... Applicare questa soluzione è stato abbastanza facile. Appena il giocatore arriva ad una quota limite il suo spostamento viene reindirizzato al mondo che lo circonda con segno opposto. Il risultato è un&#39;illusione ottica veramente ottima.&lt;br /&gt;
Il problema più grande che affliggeva la versione precedente era quello delle piattaforme che si sovrapponevano e che si mettevano come gli pareva... Per risolvere ho dovuto adottare una strtegia un po&#39; scomoda. Dentro la cartella Content/Data/Posizioni ci sono dei file in formato pck che contengono delle informazioni riguardo le piattaforme e i nemici. Se ci fossero molti di questi file il le posizioni delle piattaforme apparirebbero come generate a caso dato che non sarebbero facilmente distinguibili. Per generare questi file è necessario un altro programma che ho scritto, si tratta di &quot;JumpingJump Piattaforme&quot;. Questo editor si aggancia all&#39;eseguibile del gioco per creare e visualizzare i livelli. Forse il programma non è proprio intuitivo e forse non funziona troppo bene, ma il grande del suo lavoro la fa bene (si spera...). Devo ancora ringraziare mia cugina che mi ha dato una mano a creare un po di file di piattaforme... Se vi dovesse interessare come sono strutturati i file pck non vi preoccupate, il funzionamento è banale. In realtà sono file zip che contengono un file&amp;nbsp;omonimo in un formato diverso. Il file decompresso è un XML generato da JumpingJump Piattaorme... Li ho compressi per due ragioni: risparmiare spazio (falso! hanno un peso irrisorio!) e per avere dei file impacchettati e difficilmente modificabili...&lt;br /&gt;
Ho scritto anche un altro programmino per i devloper di questo gioco, si chiama JumpingJumpIniEditor, è solo un editor che permette di editare il file settings.ini con un GUI... praticamente inutile ma utile (xD)&lt;br /&gt;
Per gli appassionati del cheating ho inserito anche un file (GodMode.bat) che permette di avviare il gioco in modalità immortale (easteregg anche qua...). Praticamente quando si cade sotto il limite inferiore non si perde ma si viene teletrasportati più in alto. Ha solo un misero e insignificante problema... quando si avvia questa modalità non carica le posizioni dei blocchi e quindi è totalmente inutile.... xD&lt;br /&gt;
&lt;br /&gt;
Mi sembra di aver detto tutto quello che era importante sapere, ovviamente vi do anche l&#39;intero codice sorgente. I commenti non sono completi, tutte le funzioni ed i campi pubblici hanno un commento che ne descrive la funzione.&lt;br /&gt;
Ah si la cosa più&amp;nbsp;importante... 8300 righe di codice!!!! xD xD&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/JumpingJump/JumpingJump.rar&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;- &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6dU9BZExVSk1YZGM/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbI1-QXscrjPhI72cYw5eTQgOng3FgAGBmjhujZqd2wWRdqA8bJszQL57MKyWgUclMk8eRl7zjrqorpzK9abkUA5Go9sRGyFJzBfi-7ulyKJyJKekNKaaAqsFHgCIpyg-ZryFlLOVhAac/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbI1-QXscrjPhI72cYw5eTQgOng3FgAGBmjhujZqd2wWRdqA8bJszQL57MKyWgUclMk8eRl7zjrqorpzK9abkUA5Go9sRGyFJzBfi-7ulyKJyJKekNKaaAqsFHgCIpyg-ZryFlLOVhAac/s320/Immagine.png&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Schermata principale&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHI5j62Lvop7vEOv4gBVUXVz_lI_vqEVqeAq3FAvIsFejRVC_z_8Ij_gMFr9yHsPc86lKrJHxYExkvHXcV5vB7omABXascVDOgqR88ic1AoUR2rkGa64_z-_utYXRC0VOYw8CWobeqqM/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHI5j62Lvop7vEOv4gBVUXVz_lI_vqEVqeAq3FAvIsFejRVC_z_8Ij_gMFr9yHsPc86lKrJHxYExkvHXcV5vB7omABXascVDOgqR88ic1AoUR2rkGa64_z-_utYXRC0VOYw8CWobeqqM/s320/Immagine.png&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;In gioco&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHI5j62Lvop7vEOv4gBVUXVz_lI_vqEVqeAq3FAvIsFejRVC_z_8Ij_gMFr9yHsPc86lKrJHxYExkvHXcV5vB7omABXascVDOgqR88ic1AoUR2rkGa64_z-_utYXRC0VOYw8CWobeqqM/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQHI5j62Lvop7vEOv4gBVUXVz_lI_vqEVqeAq3FAvIsFejRVC_z_8Ij_gMFr9yHsPc86lKrJHxYExkvHXcV5vB7omABXascVDOgqR88ic1AoUR2rkGa64_z-_utYXRC0VOYw8CWobeqqM/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;
&lt;/a&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxFIWiF9U0fA5sIe4Cg1mOJpyfhGewXIyrR3P8t7TfZOwHds_gfB_Bp5dXPLK2VNX010IKKoGZN2mKiJtP-3tTABOvf2LCkriGUURaAOrwnEefxkYewMWpSRra7xnAGbTeTegx5r0rlqY/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxFIWiF9U0fA5sIe4Cg1mOJpyfhGewXIyrR3P8t7TfZOwHds_gfB_Bp5dXPLK2VNX010IKKoGZN2mKiJtP-3tTABOvf2LCkriGUURaAOrwnEefxkYewMWpSRra7xnAGbTeTegx5r0rlqY/s320/Immagine.png&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Nel menu della classifica&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje0OKvQxKhfLcL6iQLIMcXNmuz23F3wcOHeOuj730jGbr0VqmgaKxTQauEtatt659sg-NUToA5hbp6UT0-AN0KWxnlenOGDrINxCr0AggP0QWEMZQ_cCrWKqN0UIhupMhQmroUesfYMV8/s1600/Immagine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje0OKvQxKhfLcL6iQLIMcXNmuz23F3wcOHeOuj730jGbr0VqmgaKxTQauEtatt659sg-NUToA5hbp6UT0-AN0KWxnlenOGDrINxCr0AggP0QWEMZQ_cCrWKqN0UIhupMhQmroUesfYMV8/s320/Immagine.png&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Nel menu delle statistiche&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/8269381278578083834/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/jumping-jump-pc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/8269381278578083834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/8269381278578083834'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/jumping-jump-pc.html' title='Jumping Jump'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbI1-QXscrjPhI72cYw5eTQgOng3FgAGBmjhujZqd2wWRdqA8bJszQL57MKyWgUclMk8eRl7zjrqorpzK9abkUA5Go9sRGyFJzBfi-7ulyKJyJKekNKaaAqsFHgCIpyg-ZryFlLOVhAac/s72-c/Immagine.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.674835 -8.0869170000000423 54.069045 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-8080956506023083616</id><published>2012-01-09T19:49:00.003+01:00</published><updated>2013-04-01T16:10:19.143+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Gioco"/><category scheme="http://www.blogger.com/atom/ns#" term="Helper"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>AudioTest</title><content type='html'>Un altro progetto banale... Oggi vi presento come aggiungere dell&#39;audio di sottofondo (e non solo) nei vostri giochi XNA.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Ok, forse per molti di voi tutto quello che sto per dire è inutile, io però ci ho perso un po&#39; per capire come aggiungere dell&#39;audio in sottofondo. Quindi non fa male a nessuno se condivido i risultati delle mie ricerche.&lt;br /&gt;
Per scrivere questo &quot;gioco&quot; ho utilizzato:&lt;br /&gt;
- Microsoft Visual C# 2010 Express&lt;br /&gt;
- Microsoft XNA Framework 4.0&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Allora, per iniziare, è necessario aggiungere un riferimento:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt;&amp;nbsp;Microsoft.Xna.Framework.Audio;
&lt;/pre&gt;
&lt;/blockquote&gt;
Bene, fatto ciò bisogna creare una variabile di tipo&amp;nbsp;&lt;span style=&quot;background-color: white; color: #2b91af; font-family: Consolas; font-size: 13px;&quot;&gt;SoundEffect&lt;/span&gt;. Questa variabile conterrà la nostra canzone che verrà riprodotto quando daremo il Play.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SoundEffect&lt;/span&gt;&amp;nbsp;sound;
&lt;/pre&gt;
&lt;/blockquote&gt;
E&#39; il momento di compilare la nostra canzone aggiungendo il file wav nel progetto content. Mi sembra che il file debba essere un&amp;nbsp;PCM wave, ma non vorrei dire una castroneria, prendete questa affermazione con le pinze...&lt;br /&gt;
Il passo successivo è caricare la canzone nel gioco. Per fare ciò bisogna aggiungere nel LoadContent l&#39;istruzione che carica il file &quot;Sonoro&quot; (il nome del file audio)&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;sound&amp;nbsp;=&amp;nbsp;Content.Load&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SoundEffect&lt;/span&gt;&amp;gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Sonoro&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/blockquote&gt;
&amp;nbsp;Poi bisogna avviare la riproduzione della canzone con il comando:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre style=&quot;background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;&quot;&gt;sound.Play();&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
Ho anche scritto questo programmino se qualcuno volesse sperimentarlo...&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/AudioTest/AudioTest.rar&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;- &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6ZEV1VEtTOVdVSjg/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/8080956506023083616/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/audiotest.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/8080956506023083616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/8080956506023083616'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2012/01/audiotest.html' title='AudioTest'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.674835 -8.0869170000000423 54.069045 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-8749350138304088343</id><published>2011-12-21T15:16:00.000+01:00</published><updated>2013-04-01T16:06:09.788+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Command"/><category scheme="http://www.blogger.com/atom/ns#" term="Fisica"/><category scheme="http://www.blogger.com/atom/ns#" term="Helper"/><title type='text'>Fisica</title><content type='html'>Un programmino che effettua alcuni semplicissimi calcoli fisici come il peso o la forza d&#39;attrito. Inutile dal punto di vista pratico ma interessante per iniziare a programmare.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Questo programma è stato sviluppato soprattutto per i ragazzi delle scuole superiori che hanno problemi con i compiti di fisica... (o di informatica?)&lt;br /&gt;
Ho sviluppato un piccolo programmino in C++ che vi aiuta a CONTROLLARE (e non a svolgere) gli esercizi di fisica. Attualmente lo sto facendo per divertimento e per sperimentare le funzioni di seno e coseno in C++...&lt;br /&gt;
Il programma è di una banalità assurda, lo ho fatto anche per ripassare la lezione di fisica di ieri e per poter controllare se eseguivo correttamente i calcoli.&lt;br /&gt;
Passiamo al dunque, il programma alla versione attuale permette solo di applicare 2 formule fisiche. La prima trasforma la massa in input in peso, con gravità predefinita (9.81 m/s^2) oppure con una gravità a piacere.&lt;br /&gt;
Questa prima parte del programma la ho scritta in 10 minuti scarsi per dedicarmi al lavoro sulla seconda: calcolare la forza che bisogna applicare ad un corpo per non farlo scivolare da un piano inclinato. Nel programma questa forza la ho chiamata forse impropriamente attrito, perché era il vicino termine che mi veniva in mente.&lt;br /&gt;
Ho utilizzato molto più tempo per lavorare su questa funzione, infatti è &quot;molto&quot; più complessa ed elaborata. Inizialmente il programma chiede di inserire il peso (oppure la massa selezionando l&#39;apposita funzione), poi si devi indicare l&#39;inclinazione del piano. Questo è possibile farlo inserendo: l&#39;ampiezza in gradi, l&#39;ampiezza in radianti, oppure la lunghezza del piano e il relativo dislivello.&lt;br /&gt;
Basta, tutto qui. In circa 30-60 minuti ho finito questo programma che a molti più essere utile per ripassare fisica.&lt;br /&gt;
Il link al file rar contiene anche il file sorgente main.cpp&lt;br /&gt;
Chiunque essendo un progettino banale è libero di effettuare modifiche al codice senza problemi.. ;)&lt;br /&gt;
&lt;br /&gt;
CIAO E SPERO CHE VI SIA UTILE!!&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/Fisica/Fisica.zip&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;- &lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6YXJpWTJ3dnRUTFk/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/56258058/Projects/Fisica/Screen.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;http://dl.dropbox.com/u/56258058/Projects/Fisica/Screen.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/8749350138304088343/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2011/12/fisica.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/8749350138304088343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/8749350138304088343'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2011/12/fisica.html' title='Fisica'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.687939500000002 -8.0869170000000423 54.055940500000005 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-1718829122955446979</id><published>2011-12-15T19:35:00.001+01:00</published><updated>2013-04-01T16:44:45.744+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Computers"/><category scheme="http://www.blogger.com/atom/ns#" term="Gioco"/><category scheme="http://www.blogger.com/atom/ns#" term="Invaders"/><category scheme="http://www.blogger.com/atom/ns#" term="Space"/><category scheme="http://www.blogger.com/atom/ns#" term="XNA"/><title type='text'>Computers Invaders</title><content type='html'>Primo gioco in XNA!!!&lt;br /&gt;
Salve gente, questo è il primo progetto che pubblico sull&#39;XNA framework. Si tratta di un giochino in stile space invaders...&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Software utilizzato:&lt;br /&gt;
- Microsoft Visual C# 2010 Express&lt;br /&gt;
- Microsoft XNA Framework 4.0&lt;br /&gt;
- Software di disegno per le immagini (paint, gimp, ....)&lt;br /&gt;
&lt;br /&gt;
Per chi non lo sapesse, XNA sono delle librerie Microsoft per i programmatori di videogiochi. Sono state sviluppate in diverse versioni, XNA 3.0 è quella più ampiamente argomentata nel web, si utilizza con vecchie versioni di Visual Studio che non sono molto diverse dall&#39;ultima disponibile, ma io preferisco tenermi aggiornato, quindi io userò le librerie XNA aggiornate all&#39;ultima versione disponibile, la 4.0 installate all&#39;interno di Visual Studio 2010. Tutto il software che ho utilizzato è gratuito, quindi spesa per programmare anche giochi di successo uguale zero.&lt;br /&gt;
&lt;br /&gt;
Arriviamo subito al dunque. Computers Invaders è un piccolo progetto che ho intrapreso qualche mese fa per scopo autodidattico (ehh sì, mi sarebbe piaciuto programmare videogiochi). Ora non ci lavoro più perchè stò lavorando su un altro progetto che presto pubblicherò. Beh comunque, tutti avrete già sicuramente sentito parlare di Space Invaders quel vecchissimo gioco dove tu devi evitare dei blocchi (solitamente asteroidi) che scendevano dalla parte superiore dello schermo. Praticamente è il suo clone in una versione completamente programmata e disegnata da me.&lt;br /&gt;
&lt;br /&gt;
Ci avrò messo un paio di settimante in tutto tra disegni e codice. Solitamente sono abbastanza disordinato nel codice, molto raramente metto i commenti, quindi eviterò di pubblicare i file sorgente per non complicare la vita dei più inesperti. Ma se proprio siete curiosi, siete dei temerari e non vi interessa il mio disordine, fatemi una richiesta (con un commento sotto) e vedrò di pubblicare anche i file del codice.&lt;br /&gt;
&lt;br /&gt;
Perchè Computers Invaders? Forse qualcuno di voi si sarà fatto questa domanda e anche provando il gioco non avrà trovato una risposta. Molto semplice, perchè quando ho iniziato a programmare ho preferito (essendo da solo) partire direttamente con il codice, e guarda che ironia, la prima cosa che ti chiede Visual Studio è di inserire il nome dell&#39;applicazione, io non volendo perdere del tempo a disegnare tutte le immagini che ci sono, ho fatto riferimento a delle immagini che avevo già. Queste immagini erano proprio immagini di piccoli computer che mi sembravano perfetti per cominciare. E quindi è questo il motivo del nome....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DOWNLOAD:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://dl.dropbox.com/u/56258058/Projects/ComputersInvaders/ComputersInvaders.zip&quot;&gt;Dropbox&lt;/a&gt;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://docs.google.com/file/d/0B-Pf5EgjXue6U29mWGV0UkdaWW8/edit?usp=sharing&quot;&gt;Google Drive&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Ovviamente per funzionare si deve avere installato il .Net Framework 4 e XNA Framework 4.0&lt;br /&gt;
&lt;br /&gt;
Se avete domante, fatele!!&lt;br /&gt;
&lt;br /&gt;
SCREEN:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://dl.dropbox.com/u/56258058/Projects/ComputersInvaders/Screen.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;http://dl.dropbox.com/u/56258058/Projects/ComputersInvaders/Screen.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/1718829122955446979/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2011/12/computers-invaders.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/1718829122955446979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/1718829122955446979'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2011/12/computers-invaders.html' title='Computers Invaders'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Italia</georss:featurename><georss:point>41.87194 12.567379999999957</georss:point><georss:box>29.687939500000002 -8.0869170000000423 54.055940500000005 33.221676999999957</georss:box></entry><entry><id>tag:blogger.com,1999:blog-913254962310372085.post-2679555603667572704</id><published>2011-12-14T18:42:00.000+01:00</published><updated>2011-12-14T18:43:37.026+01:00</updated><title type='text'>Un, due, tre, prova</title><content type='html'>:)&lt;br /&gt;Primo post di prova...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;&lt;img src=&quot;http://www.feedburner.com/fb/images/pub/feed-icon32x32.png&quot; alt=&quot;&quot; style=&quot;border:0&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;http://feeds.feedburner.com/XnaProjects-Ita&quot; title=&quot;Subscribe to my feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot;&gt;Subscribe in a reader&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xnaprojects-ita.blogspot.com/feeds/2679555603667572704/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://xnaprojects-ita.blogspot.com/2011/12/un-due-tre-prova.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/2679555603667572704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/913254962310372085/posts/default/2679555603667572704'/><link rel='alternate' type='text/html' href='http://xnaprojects-ita.blogspot.com/2011/12/un-due-tre-prova.html' title='Un, due, tre, prova'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/03833029271586885580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>