Tutorials – Un Gioco in XNA 4.0 – Tutorial 2

Filed in Game Programming, ProgrammazioneTags: , , , ,

Allora, la prima cosa da fare in tutti i progetti è appunto, mettere in piedi il progetto :P . Questo non è un immenso lavoro in xna. Vi serve Microsoft Visual studio 2010 e XNA game studio 4.0.

 Una volta aperto visual studio, andiamo su nuovo, progetto 

nuovo progetto

selezionata la voce progetto vediamo che è presente tutta una tipologia di progetti propria di XNA chiamata XNA Game Studio 4.0, come si può vedere nell’elenco a sinistra.

XNA projects

Qui ci sono un po’ di cose interessanti. Si possono immediatamente notare i due tipi di progetto “Windows Game” e “XBox 360 Game”. Questi due tipi di progetto, abbastanza autoesplicativi, sono i progetti principali che dovrete utilizzare per la creazione di un gioco, in quanto creano gli eseguibili veri e propri del vostro gioco. I Progetti “Library” immediatamente sotto i progetti “Game”, servono anch’essi per contenere codice utile per i vostri giochi, ma esse non creano un eseguibile, bensì, come dice appunto il nome, creeranno una libreria che potrete usare nei vostri giochi.

I progetti rimanenti, “Content Pipeline Extention Library” ed “Empty Content Project” servono per gestire gli Asset del vostro gioco. Infatti tutto ciò che è una risorsa utilizzabile all’interno del gioco, sia esso un suono, un modello, una texture o anche solo un xml, viene visto da XNA come un “Content”. Queste risorse vengono incluse nel progetto e convertite in un formato XNA durante la compilazione. Non mi dilungo oltremodo ora su questo argomento che riprenderò in seguito. Vi basti sapere che i progetti di cui sopra vi saranno utili per intervenire sul risultato della conversione dei vostri asset, per poterli poi usare all’interno del vostro gioco.

Ora vi basterà selezionare “Windows Game(4.0)”, dare un nome al gioco, nel mio caso SpaceWar, e selezionare una cartella dove creare il progetto. Fatto questo premete pure su OK.

Questo sarà il risultato:

risultato creazione progetto

Quello che avete ottenuto è un progetto pronto per poter essere eseguito, sostanzialmente non farà null’altro che crearvi una finestra vuota ma è esattamente quello che ci serve come punto di partenza.

All’interno del Solution Explorer potete vedere che sono stati creati due progetti, il primo è il vostro gioco con tutti i sorgenti pregenerati da Visual Studio, il secondo è il progetto che si occupa dei vostri asset e da cui il vostro progetto game dipende. Infatti potete vedere sotto la voce “Content References” che il progetto content è referenziato da quello game.

Il codice di partenza

Ora aprendo Program.cs vedrete sostanzialmente una cosa importante:

01
using System;
02
 
03
namespace SpaceWar
04
{
05
#if WINDOWS || XBOX
06
    static class Program
07
    {
08
        /// <summary>
09
        /// The main entry point for the application.
10
        /// </summary>
11
        static void Main(string[] args)
12
        {
13
            using (Game1 game = new Game1())
14
            {
15
                game.Run();
16
            }
17
        }
18
    }
19
#endif
20
}

La funzione Main è il punto di partenza del vostro programma, qui viene creato un oggetto di tipo Game1, cioè il vostro gioco. Subito dopo essere creato viene eseguito con il metodo .Run();

Ora immagino che Game1 non sia il nome che avevate ipotizzato per il vostro gioco, per modificarlo è sufficiente cliccare con il tasto destro del mouse sul file Game1.cs all’interno del Solution Explorer e selezionare Rinomina, una volta che avrete inserito il nuovo nome della classe [NOME CLASSE].cs VS (visual studio) vi chiederà di confermare l’operazione con una dialog, selezionate SI e vedrete che la classe all’interno di Program.cs non sarà più Game1 ma il nome che avete dato alla vostra classe, nel mio caso SpaceWar.

Ora passiamo ad analizzare questa classe generata da Visual studio

1
    /// <summary>
2
    /// This is the main type for your game
3
    /// </summary>
4
    public class SpaceWar : Microsoft.Xna.Framework.Game
5
    {

Come si può vedere, la nostra classe deriva dalla classe Game di XNA. Questa classe rappresenta un gioco nel framework di XNA, è necessario ereditare da essa per poter creare un nostro gioco e con poche funzioni da implementare ci mette fin da subito in condizione di poter gestire le nostre logiche e contenuti.

1
 GraphicsDeviceManager graphics;
2
        SpriteBatch spriteBatch;
3
 
4
        public SpaceWar()
5
        {
6
            graphics = new GraphicsDeviceManager(this);
7
            Content.RootDirectory = "Content";
8
        }

Il GraphicsDeviceManager identifica il device che useremo per renderizzare le nostre risorse. Ne viene creata una istanza nel costruttore e viene assegnata a graphics. In più possiamo vedere che viene assegnato “Content” come RootDirectory di Content, che è il content manager che useremo per caricare le risorse di gioco. “Content” è la directory dove il nostro Content project mette le risorse alla fine del processo di build, ed è dove troviamo le nostre risorse una volta create.

01
        /// <summary>
02
        /// Allows the game to perform any initialization it needs to before starting to run.
03
        /// This is where it can query for any required services and load any non-graphic
04
        /// related content.  Calling base.Initialize will enumerate through any components
05
        /// and initialize them as well.
06
        /// </summary>
07
        protected override void Initialize()
08
        {
09
            // TODO: Add your initialization logic here
10
 
11
            base.Initialize();
12
        }

La funzione Initialize ci offre un buon punto per inizializzare tutti gli oggetti e i componenti del nostro gioco. Viene chiamata una sola volta all’inizio dell’esecuzione, prima ancora di mostrare la finestra di gioco. Tutto ciò che deve essere sempre in vita durante tutto il gioco lo possiamo inizializzare o creare qui.

01
 /// <summary>
02
        /// LoadContent will be called once per game and is the place to load
03
        /// all of your content.
04
        /// </summary>
05
        protected override void LoadContent()
06
        {
07
            // Create a new SpriteBatch, which can be used to draw textures.
08
            spriteBatch = new SpriteBatch(GraphicsDevice);
09
 
10
            // TODO: use this.Content to load your game content here
11
        }

LoadContent ci fornisce un punto base dove caricare le risorse necessarie al nostro gioco, come prima istanza possiamo mettere tutte le risorse di cui abbiamo bisogno in questo punto, in modo da aver assicurato il loro caricamento prima dell’utilizzo nel gioco. Questo metodo viene anche usato nel caso sia necessario ricaricare una parte, o tutte le risorse del nostro gioco, per esempio dopo la gestione di un errore grave, quindi è consigliabile metterevi la gestione delle risorse, in modo da non incorrere in brutte sorprese.

1
        /// <summary>
2
        /// UnloadContent will be called once per game and is the place to unload
3
        /// all content.
4
        /// </summary>
5
        protected override void UnloadContent()
6
        {
7
            // TODO: Unload any non ContentManager content here
8
        }

UnloadContent è la funzione opposta a LoadContent. Come abbiamo appena visto, LoadContent viene usato per caricare le risorse. Questa funzione serve per scaricare le risorse precedentemente caricate, o alla fine dell’esecuzione del gioco, o in seguito ad un errore grave da gestire che comporti il ricaricamento delle risorse. In questo caso infatti viene chiamato UnloadContent seguito da LoadContent, in modo da ripristinare le risorse del vostro gioco. Se avete messo dei caricamenti di risorse all’interno della funzione di LoadContent, ricordatevi di scaricarli in questo metodo.

01
        /// <summary>
02
        /// Allows the game to run logic such as updating the world,
03
        /// checking for collisions, gathering input, and playing audio.
04
        /// </summary>
05
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
06
        protected override void Update(GameTime gameTime)
07
        {
08
            // Allows the game to exit
09
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
10
                this.Exit();
11
 
12
            // TODO: Add your update logic here
13
 
14
            base.Update(gameTime);
15
        }

La funzione di Update vi servirà per aggiornare il vostro gioco in ogni suo aspetto prima di renderizzarlo a schermo. Questa viene chiamata all’interno di un ciclo continuo del vostro gioco, e qui potete aggiornare ogni singolo oggetto o logica di gioco, aggiornare l’audio e leggere l’input dell’utente, come spiegato dal commento che VS vi ha messo sopra la funzione. In ingresso vi viene passata la variabile gameTime, questa variabile di tipo GameTime contiene diverse informazioni tra cui una essenziale per la corretta gestione dello trascorrere del tempo. Infatti, dato che la funzione Update viene chiamata a frequenza diversa a seconda della macchina su cui il vostro gioco viene eseguito, la quantità di upate per secondo che avete sulla vostra macchina non sarà uguale a quella che ci sarà sulla macchina di qualcun’altro.

Molti vecchi giochi hanno sofferto del fatto che i programmatori non hanno tenuto in conto che la frequenza di aggiornamento dei loro giochi non sarebbe stata sempre la stessa. Ai tempi i processori avevano più o meno tutti una velocità simile, quindi non c’era il problema di mantenere sotto controllo con che velocità veniva aggiornato un gioco. Questo è emerso in seguito, quando la velocità dei processori è andata aumentando e diversificando, i giochi programmati per le vecchie macchine, sulle nuove erano ingestibili, perchè il tempo di gioco risultava accelerato in una maniera tale da rendere impossibile l’interazione dell’utente. 

Per evitare questo, all’interno della variabile gameTime trovate ElapsedGameTime, questa variabile rappresenta il tempo trascorso dall’ultima volta che è stata chiamata la funzione di Update e la potrete usare per mantenere sotto controllo il trascorrere del tempo in gioco. Per esempio, nello spostare un oggetto nello spazio, basterà aggiungere alla sua posizione la velocità con cui si muove, moltiplicando quest’ultima per un valore float in cui  un secondo è rappresentato da 1.0, ricavabile dai millisencondi in ElapsedGameTime. In questo modo l’oggetto si sposterà tenendo conto del reale trascorrere del tempo percepito dal giocatore e non rispetto a quante volte viene chiamata la funzione di Update sulla macchina.

1
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
2
                this.Exit();

Legge l’input dell’utente, se esso preme sul pad il bottone back il programma viene terminato.

01
        /// <summary>
02
        /// This is called when the game should draw itself.
03
        /// </summary>
04
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
05
        protected override void Draw(GameTime gameTime)
06
        {
07
            GraphicsDevice.Clear(Color.CornflowerBlue);
08
 
09
            // TODO: Add your drawing code here
10
 
11
            base.Draw(gameTime);
12
        }

Ultima ma non meno importante è la funzione di Draw. Qui disegneremo tutti gli oggetti del nostro mondo e creeremo gli effetti visivi necessari al nostro gioco. Questa funzione è volutamente separata dalla funzione di Update in modo da avere due momenti distinti tra l’aggiornamento del gioco e la sua fase di Rendering, anch’essa viene chiamata in continuazione all’interno del ciclo di gioco. Anche qui ci viene passata una variabile gameTime identica a quella di Update, questa volta per poter gestire correttamente le animazioni della nostra grafica.

1
 GraphicsDevice.Clear(Color.CornflowerBlue);

Dice al device di pulire il nostro render Targhet, quindi nel nostro caso la finestra di gioco, con un colore blu. Provate a sostituire al blu un alto colore, per esempio BurlyWood, e vedrete che il colore all’interno della finestra di gioco cambierà. Dopo questa operazione di Clear possiamo inserire il disegno delle nostre risorse, prima della funzione base.Draw(gameTime) , questo perchè la funzione Draw della classe Game è quella che “Convalida” tutto quello che abbiamo scritto nella nostra funzione di Draw ed è l’ultima cosa che dobbiamo chiamare al suo interno. 

Conclusione

Abbiamo visto come cominciare un progetto XNA, senza modificare una riga di codice abbiamo una finestra a video che viene aggiornata ( anche se senza nessun contenuto :P ) possiamo leggere l’input dell’utente e abbiamo la gestione del rendering pronta per poter essere usata.

Alla prossima per le prime modifiche al progetto :P

Share

Tutorials – Un Gioco in XNA 4.0 – Tutorial 1b – Design del gioco

Filed in Game Programming, ProgrammazioneTags: , , ,

Bene, eccoci qua,

Allora, tra i giochi proposti alla fine farò una sparatutto a scorrimento verticale arcade, come molti che in passato hanno riempito le sale giochi e le nostre ore da bravi giocatori. Fondamentalmente questo genere non richiede molte regole per essere divertente ( come ogni cosa può essere complicato fino all’inverosimile, ma non è questo il nostro scopo ), ciò di cui abbiamo bisogno per certo consiste in un personaggio da muovere e con cui sparare, ed una buona serie di nemici e boss di vario genere con cui cimentarci un livello dopo l’altro. Anche un buon sistema di power up ci può interessare, ma questo è già un passo successivo e lo possiamo affrontare successivamente.

La prima regola nello sviluppo dei videogiochi, e più in generale nello sviluppo del software, è avere le idee chiare. Iniziare un progetto senza aver fatto un po’ di design su carta renderà le cose molto più complicate di quanto non siano, il mio consiglio, prima di mettersi davanti al PC e cominciare a scrivere codice, è sempre SEMPRE mettersi davanti ad un foglio di carta con una penna e pensare per un bel po’ a ciò che si vuol fare. Buttare giù le idee, vedere quali sono buone e quali no, decidere cosa si vuole implementare e farsi un idea di come farlo. Questa fase è importantissima e ci sono libri e libri che spiegano i vari passaggi, da libri di game design per quanto riguarda il come e cosa fare in un videogioco, a libri di code design per come scrivere le vostre classi. Non è il mio scopo spiegarvi ora tutte queste cose, vi consiglio di leggervi un sacco di libri su questi argomenti, e per farvi un idea abbastanza vaga prendete spunto da ciò che brevemente posto di seguito. Quello che segue è una bozza di design, approssimativa e molto lontana dal livello di un documento di design completo, ma contiene tutto quello di cui abbiamo bisogno per farci un’idea di quello che sarà necessario implementare.

Design Sketch

Allora cominciamo. Il gioco è uno sparatutto in terza persona a scorrimento verticale, il giocatore interagisce con gli elementi nel gioco attraverso una navicella che può muovere attraverso i comandi ( tastiera o pad ). I livelli evolveranno nel classico stile da sala giochi, questo significa un movimento costante della camera, in una direzione, normalmente verso l’alto, dall’inizio del livello fino ad arrivare alla sua fine. La navicella può muoversi in tutte le direzioni sul piano orizzontale, ma non può muoversi verticalmente, in più la direzione verso cui essa è rivolta sarà sempre nella direzione in cui il livello si muove, ovviamente la navicella non può uscire dalla visuale del giocatore e quindi non più stazionare in un punto del livello, tornare indietro o anticipare l’evoluzione del livello.

Mentre il giocatore percorre un livello con la sua navicella deve affrontare una serie di nemici, questi possono essere volanti o di terra e di varie dimensioni. Alcuni nemici spareranno alla navicella del giocatore mentre altri cercheranno il contatto diretto. Se la navicella viene colpita da un proiettile o da un nemico, essa perde un quantitativo di energia definito come danno ( minimo 1 – massimo 1000 ), se l’energia della navicella arriva a 0 essa esplode ed il giocatore perde una vita ( l’energia della navicella e le vite del giocatore non sono ancora state definite, per ora possiamo tenere come riferimento 1000 per la prima e 3 per la seconda ). Quando il numero di vite del giocatore arriva a 0 la partita finisce.

Il giocatore avrà a disposizione diversi tipi di armi da fuoco per poter uccidere i nemici, con diversa potenza, precisione e direzione di fuoco, ogni colpo andato a segno infliggerà danno al nemico, con lo stesso principio dei danni arrecati alla navicella del giocatore. Il Tipo di arma che la navicella utilizza viene definito dall’ultimo power up di tipo arma raccolto dal giocatore, più power up dello stesso tipo di arma aumentano la potenza dell’arma, mentre se viene raccolto un power up di una diversa arma non c’è upgrade di potenza.

Ogni nemico ucciso da un valore di punteggio che si somma al punteggio del giocatore, in oltre c’è la possibilità che con la morte il nemico lasci nel livello un power up che il giocatore può prendere urtandolo con la navicella. A certi punti di un livello possono essere presenti dei nemici di difficoltà maggiore, questi mini boss devono essere sconfitti per progredire nel livello. Alla fine del livello è necessario affrontare il nemico più potente di tutto il livello, denominato boss, per completare un livello va sconfitto il suo boss.

I boss, i mini boss ed i nemici grandi, hanno delle zone in cui il danno subito è ridotto a zero, in oltre delle parti che li compongono hanno energia separata e possono o devono essere distrutte per poter uccidere il nemico.

Per riassumere

Allora da quello che ho scritto in precedenza possiamo individuare diversi elementi:

  • Il giocatore controlla una navicella, con cui può muoversi e sparare.
  • durante l’evoluzione di un livello, il giocatore deve affrontare dei nemici e distruggerli senza farsi colpire.
  • la navicella ha a disposizione diversi tipi di armi.
  • I nemici quando muoiono rilasciano power ups che il giocatore può raccogliere. In oltre il punteggio del giocatore aumenta
Direi che abbiamo una vaga idea dei componenti sulla quale dobbiamo lavorare. 
Alla prossima per l’inizio del progetto ;)
Share

Tutorials – Un Gioco in XNA 4.0 – Tutorial 1a

Filed in Game Programming, ProgrammazioneTags: , ,

Ciao a tutti,

Ho deciso, con tutta la mia buona volontà, di provare a mettere in piedi un giochino in XNA tanto per scoprire come funziona questo fantomatico framework per lo sviluppo di videogiochi rilasciato da Microsoft ed arrivato oramai alla versione 4.0.

Per fare ciò il metodo migliore è mettere in piedi un piccolo progetto completo, in modo da affrontare tutte le problematiche che esso prevede, e quindi constatare come si comporta XNA con tutte quelle cose che gli “esperimenti” non mettono in risalto.

L’idea di fondo è sviluppare un piccolo gioco in tutti i suoi aspetti, nulla di complicato, ma comunque un prodotto completo.

Ad Ora le idee che mi vengono in mente sono:

  1. Uno sparatutto di navicelle / robot a scorrimento verticale /orizzontale in stile sala giochi.
  2. Un gioco di corsa arcade ( lo eviterei dato che ne faccio fin troppi al lavoro XD ).
  3. Un picchiaduro.
  4. Un adventure game in stile monkey island.
Se l’idea vi alletta ed avete preferenze sul tipo di gioco potete proporre quale vi interessa o proporre un altro genere che non ho elencato, basta che non sia un progetto troppo ambizioso :)
A presto.
Share

Enter Title Here

Filed in Cazzate quotidiane

Time BarSiamo da capo, mi ritrovo ancora davanti a questo blog, che oramai aggiorno una se non due volta all’anno, ripromettendomi di cercare di renderlo più vivo, con post più frequenti e argomentazioni interessanti.

Sono tutti bei propositi, ma come al solito devo trovare il tempo e la voglia per poterlo fare, nelle giornate lavorative le ore scorrono via inesorabili e si arriva a sera senza aver avuto un minimo di tempo per pensare a qualcosa di diverso dal lavoro. In queste due settimane di pausa, a casa per malattia, le giornate si sono dilatate, la fretta e l’ansia della produzione hanno lasciato per un po’ spazio allo svago, alla curiosità ed alla creatività.

Mi sono riscoperto ad interessarmi a ciò che oramai avevo accantonato bollandolo come “lavoro” e basta, ho ritrovato la curiosità e la voglia di fare che mi spingevano a provare e riprovare, la voglia di sperimentare le tecnologie che continuano ad evolvere. Tutto questo legato ad un polso ed una mano che non posso utilizzare, quindi tutti i miei buoni propositi devono aspettare quanto meno che possa utilizzare entrambe le mani senza fastidio. Quello che mi aspetto stavolta è trovare e ritagliarmi un po’ di tempo per non arenami un’altra volta nella routine quotidianda del casa-lavoro, lavoro-casa.

Ho cercato un programma che mi potesse aiutare a catalogare e gestire i filmati che ho collezionato sul pc, non trovandone uno adatto ai miei scopi ho deciso di scriverne uno che faccia ciò che serve a me. Magari ne verrà fuori qualcosa di buono, se particolarmente buono potrei anche venderlo.

A parte questa parentesi al di fuori del mondo ludico, mi sono installato tools e sdk di nvidia, per guardarmi un po’ come funziona CUDA e Phisyx e tutti quei begli strumenti che non ho avuto modo di studiarmi da quando ho finito l’università. Ho iniziato a guardare un po’ XNA per lo sviluppo di qualche piccolo progetto, più del design su carta e protopizzazione di un gioco che sembra uscire bene.

Insomma nel momento in cui trovo un po’ di tempo, ritrovo anche la voglia di fare e la mia creatività, vediamo di non perderla nuovamente quando ricomincierò a lavorare.

Ho anche deciso che da novebre comincierò un corso di nuoto, anche se qualcuno pensa che sia solo una voglia passeggiera e che non mi iscriverò quando sarà il momento :P insomma devo trovare le energie per poter trovare i miei spazi fuori dal lavoro.

Share

Troppo lavoro e mattacchioni

Filed in Cazzate quotidiane

Truffatore

Non aggiorno il blog da un mucchio di tempo, nonostante buoni propositi e tante idee l’ho un po’ abbandonato, lo so, qualcuno mi ha sgridato diverse volte per questo. Rinnovando i buoni propositi voglio scrivere questo breve post per parlare di quel mattacchione che si è fatto prestare dal qui presente pollo i manuali del master e dei mostri di d&d 3.5 e non li ha più restituiti.

Doppiamente pollo io in fiducia non mi sono scritto il nome del suddetto e quelli che potevano essere i possibili furboni hanno negato o non hanno risposto, quindi alla fine ho dovuto ricomprarmi i due manuali per rendere la mia collezione completa come lo era felicemente un tempo.

Penso che creerò un bel registro prestiti per la fiducia degli amici.

Share

I libri che DOVETE leggere

Filed in Code Design, ProgrammazioneTags:

Forse non tutti sanno che programmare non significa solo scrivere il codice, anzi, forse quella è la parte più banale di tutto il processo che porta alla realizzazione di un buon programma.

La cosa che meno si insegna è guarda caso la cosa più importante: Il design del codice.

Il più grave errore che ogni programmatore alle prime armi compie ( e non solo quelli alle prime armi ;) ) è quello di non spendere abbastanza tempo nel progettare il codice che andrà a scrivere. Io stesso in prima persona ho commesso questo errore innumerevoli volte, per poi trovarmi a dover sbrogliare matasse di codice sporco e difficilmente leggibile, per colpa delle innumerevoli modifiche fatte in corso d’opera non previste alla partenza del progetto.

Questo approccio, sebbene sbagliato, purtroppo viene adottato da diverse aziende, perchè convinte che in questo modo riescano ad arrivare al prodotto finito in meno tempo, ma proprio qua sta l’errore. Ovviamente si è cercato di porre rimedio a questo comportamento errato, tanto da essere addirittura arrivati a definire quali sono gli errori che normalmente vengono compiuti e quando e come è possibile porvi rimedio. Naturalmente il metodo migliore è non commetterli proprio, è necessario quindi spendere molto tempo sul design delle classi ( nella programmazione OO ) che si andrà poi a scrivere.

Quindi, oltre ai manuali dei vari linguaggi, è buona norma che un programmatore abbia nella propria biblioteca almeno i seguenti volumi:

Design Patterns

Questo libro raccoglie tutta una serie di pratiche di design del codice adottate dai programmatori come metodologie corrette e di buon uso. Esistono pattern focalizzati alla creazione di oggetti, alla gestione di dati ed alla gestione generica di problemi. Ad ogni pattern è assegnato un nome, le possibili applicazioni, punti a favore e possibili varianti, un esempio ed uno schema UML.

Conoscere i pattern ed applicarli ai problemi che si cerca di risolvere all’interno del proprio applicativo non puòche portare un considerevole miglioramento nella qualità e leggibilità del proprio codice.

AntiPatterns

Qui sono raccolti tutti i metodi sbagliati e gli errori più o meno gravi che solitamente vengono compiuti. Per ogni antipattern è scritto se è possibile recuperare la situazione e come correggere l’errore.

Refactoring

Consigliato da tutti :D ma non l’ho ancora letto :P cmq so a spanne il contenuto ed è a metà tra i precedenti 2 libri. Da leggere sicuramente infatti lo farò presto, magari se vi capita di farlo prima di me potete suggerirmi una buona descrizione :)

UML

Un Qualsiasi manuale di UML, deve essere abbastanza esplicativo e scendere nel dettaglio nei casi in cui usare ogni specifico diagramma. L’UML è uno standard ed è utilissimo nella fase di design del codice per definire bene la struttura e l’utilizzo di ogni specifica feature, fino alla descrizione generica di tutto l’applicativo. Sebbene possa sembrare superfluo e noioso imparare l’UML, esso è fondamentale, in quanto più cose vengono affrontate durante la fase di design e meno problemi e casi imprevisti salteranno fuori poi in fase di sviluppo.

Buon divertimento ;)

 

Ste

Share

La Programmazione, consigli utili e cose spicce, presentazione

Filed in ProgrammazioneTags:

 

Voglio aprire questa rubrica :)

Giusto per avere qualcosa di diverso e più tecnico di cui parlare oltre a cose di attualità. Mi sarò molto utile come argomento di cui scrivere, oltre che per fornire supporto e consigli a chi è interessato alla nobile arte della programmazione, anche per tenermi allenato e ripassare argomenti che magari non affronto da un po’ di tempo.

Spero di trovare il tempo di farlo :P ma se non ci si da un obiettivo. Chi vuol dare una mano è il ben venuto. Sarei ben felice che questo blog diventasse anche un punto di discussione.

Alla Prossima

Ste

Share

Susan Boyle da record in UK: batte Leona Lewis (e Dido)

Filed in Musica

Susan Boyle da record in UK: batte Leona Lewis (e Dido).

Una notizia che può solo fare piacere.

Susan Boyle è una cantante, non si presenta con l’aspetto ne il portamento. Si presenta con la voce perché lei è questo.

Scrivo questo post dal contenuto che dovrebbe essere scontato, in realtà così non è, per lo meno nella cultura musicale italiana. Da noi il talento passa in secondo piano rispetto all’estetica, un cantante diventa famoso per il bel sorriso e lo sguardo che fa impazzire le ragazzine, non per la sua voce.

Susan Boyle è diventata famosa per la sua voce e nient’altro, questo è un avvenimento che non può che rendermi contento. Spero che prima o poi questo avvenga anche in una nazione troppo votata al bello, com’è l’Italia in cui oggi viviamo.

Share

Bastardo!

Filed in Cazzate quotidiane

 

Bastardi Senza Gloria

Caro mio bel meccanico sei un pezzo di merda.



Non so quanto posso raccontare di questa storia senza auto censurarmi, sta di fatto che venerdì sera sfiga vuole che abbia bucato di ritorno da cremona. E va beh, capita, il giorno dopo si fa riparare e bona.


E invece no caro mio bel bastardo, perchè a te non bastava vero? ci sono le viti spanate! bisogna cambiarle! e va beh (porca puttana) lunedì la macchina è li, cambia le viti ed è tutto a posto…



Lunedì sera mi squilla il cellulare sul treno, è la mamma, “Il meccanico mi chiede se ti eri mai accorto che la spia dell’abs si accende”…. spia dell’abs? quale FOTTUTA SCHIFOSA spia dell’abs! non so neanche di averla una spia dell’abs! questo implica che non si è mai accesa prima!!!!!


Arrivo a casa dopo la palestra. L’aver faticato e sudato non mi ha aiutato. Scendo, accendo la macchina… Individuo la spia dell’abs…. è accesa….


Santi giù scendete perchè ho imprecato a lungo e maledetto con fervore! Perchè non so quanto mi costerà riparare la porcata di quel bastardo, di certo non da lui perchè le mani sulla mia macchina non le metterà mai più. Ma adesso che ho problemi di soldi ci mancava solo un pezzo di merda che ha ben pensato ci farsi i soldi della vacanza natalizia sulla mia macchina.


Io non so se esiste o sia mai esistito un caso di morte per emorroidi su questa terra. Ma se è possibile, e magari mai successo. Caro Paro, vorrei tanto che la persona a cui capitasse fossi tu…


Questo è il mio primo post dopo parecchi mesi, avevo intenzione di ricominciare a scrivere, magari anche di roba interessante o che so io sull’informatica e sui videogiochi. Mai avrei pensato di ricominciare con un post del genere, ma come non dare onore al merito di un bastardo.

Chiudo

Share

Sospiri

Filed in Poesie

“E ci sfioriamo ancora, lontano nella nebbia
che sia stato uno sguardo di un momento
un sorriso soffocato forse sfugggito alle catene della ragione
un ricordo riemerso dalla corrente del tempo.
l’ho sentito davvero li sotto la pelle
in quel posto nascosto alla mente
dove l’anima conserva quello che il corpo non vuole.
oppure è stato solo un pugno uscito dal profondo,
tirato con rabbia a colpire quel muro
che con tanta premura abbiamo costruito insieme
e che ora accarezzo dal mio lato in cerca di una crepa
uno spiraglio dal quale poter avvertire una volta ancora un tuo bisbiglio,
una parola da imparare e recitare, da aggiungere al mio bagaglio
lungo questa strata che con amara consapevolezza
sto imparando sempre meglio a percorrere da solo.”

è strano come ultimamente l’ispirazione che mi porta scrivere sia sempre legata a momenti di malinconia.  Non sputo in faccia a ciò che mi è dato e non soffoco quello che la mia mente partorisce, quindi, questo è, anche se forse un po’ scontato, una piccola cosa scritta prima di andare a dormire,  di getto in un momento d’ispirazione. Prendetela così perchè è così che è nata, senza correzioni o ripensamenti, così ve la condivido, sperando di farvi un gradito omaggio.

Ste

Share
Oenology Categories
Click to view / hide

Oenology Tags
Click to view / hide

Oenology Post Formats
Click to view / hide

 
May 2012
M T W T F S S
« Nov    
 123456
78910111213
14151617181920
21222324252627
28293031  
Oenology Links by Cat
Click to view / hide