New Project: Expeditus

Versione italiana (english version below)

Salve a tutti!

Oggi voglio parlarvi del progetto a cui sto lavorando in questi giorni: Expeditus. Il titolo è latino, e sta per agile, armato, pronto.

Si tratta di un piccolo videogioco d’avventura in 2D, con vista dall’alto in stile Pokémon. Alla base del gioco vi sono delle carte, che il giocatore potrà collezionare, scambiare, ed utilizzare per compiere qualsiasi azione.

Esistono quattro tipi di carte:

object_cardCarte oggetto: rappresentano un oggetto che può essere utilizzato dal giocatore, come una pozione o un indumento;

utility_cardCarte utilità: rappresentano strumenti utilizzabili dal giocatore, come la capacità di spostarsi velocemente da un punto ad un altro della mappa;

battle_cardCarte combattimento: rappresentano i tipi di attacchi (o difesa) utilizzabili dal giocatore in combattimento;

special_cardCarte speciali: sono carte molto rare e potenti, che danno grande vantaggio al giocatore che le utilizza.

Ulteriori dettagli sulla struttura del gioco verranno condivise appena disponibili.

Ci tengo a sottolineare che in questo progetto non ho come obiettivo quello di produrre un videogioco nel tentativo di competere con gli altri, di ottenere numerosi download, né tantomeno vendite. L’obiettivo principale di Expeditus è fornirmi una base di sperimentazione per le mie capacità di programmazione, che spero miglioreranno con l’aiuto di questo gioco.

Proprio per questo motivo, cercherò di non utilizzare librerie esterne (al limite del possibile), ma di produrre io stesso tutto il codice. Il linguaggio di programmazione utilizzato è C++, con Lua per la parte di scripting relativa all’utilizzo delle carte.

A breve sarà disponibile un repository pubblico su bitbucket.org, tramite cui sarà possibile visionare e scaricare il codice sorgente.

Stay tuned!

Update: Il repository è ora online!


English version

Hello everybody!

Today I want to talk about a new project I am currently working on: Expeditus. This title is latin for quick, armed, ready.

It is a small 2D adventure videogame, with a bird’s-eye view style like Pokémon. Fundamental is the trading-card system: the player will be able to collect and use cards in order to perform every action.

There are four classes of cards:

object_cardObject cards: they represent an object that can be used by the player, like a potion or a dress;

utility_cardUtility cards: they represent utilites and tools that can be used by the player, like the ability to quickly travel to any point of the map.

battle_cardBattle cards: they represents attacks or defense that can be performed by the player during battles;

special_cardSpecial cards: they are rare and powerful cards, that give a great advantage to the player.

Further details on the game will be shared as soon as possible.

I want to highlight that my aim is not to produce a great videogame, trying to compete with other games, obtain a lot of downloads, nor sales. The major aim of Expeditus is to give me a place where I can experiment, improving my programming skills.

In fact, I will not use external libraries (as far as possible), but I will write myself all the code. I am using C++ programming language, and Lua for cards’s scripting.

A public repository on bitbucket.org will be available soon: you will able to view and download Expeditus source code.

Stay tuned!

Update: Repository is now online!

KnockBox – Final report

Versione italiana

Scrivo questo post per chiudere definitivamente il progetto KnockBox, allegando una relazione scritta in occasione della presentazione del progetto alla commissione per il mio esame di maturità.

Stay tuned!


English version (report is italian only!)

I am writing this post in order to close definitively the KnockBox project: a final report written for my high school diploma exam is attached (italian only).

Stay tuned!

Sudoku Solver

Versione italiana (english version below)

Oggi voglio presentarvi un risolutore di sudoku che ho scritto in C++. Si tratta di un programma non troppo complicato, ma che consente di esercitarsi bene nell’utilizzo del linguaggio.

Nota: risolve solo i sudoku più semplici

Il funzionamento è molto semplice: per ogni cella, il programma considera tutte le possibilità, da 1 a 9. Poi, per ogni cella, esclude le alternative impossibili: così via per tutte le celle, fino a risolvere il sudoku.

Il software ricava l’input dal file di testo ‘sudoku.txt’, che contiene il sudoku nella forma mostrata in figura.

sudokuOgni cella è separata da una virgola, ogni riga da un a capo;

le x rappresentano le celle vuote che il software dovrà riempire.

Il software è molto veloce: tutti i sudoku che ho provato sono stati risolti in meno di un secondo.

Il codice dovrebbe risultare abbastanza chiaro e di facile lettura. All’interno della funzione main(), durante la lettura del testo dal file, vi è un comando all'interno della direttiva #ifdef _WIN32. Quando si utilizza Windows, infatti, il carattere "a capo" è reso con la coppia CRLF (o '\r\n'), mentre su sistemi Unix solo con '\n'. Tale comando serve a rimuovere il carattere '\r' e proseguire con il normale svolgimento del programma.

Stay tuned!


English version

Hi guys! Today I want to show you a sudoku solver I just wrote in C++. It is a software pretty simple, but that helps you to exercise using of the language.

Note: it can solve only simple sudoku

The idea is simple: for every cell, the software considers all the possibilities, from 1 to 9. Then, for every cell, it discards the impossible alternative: and so on, processing every cell, until the puzzle is solved.

The software takes input from the text file 'sudoku.txt', that contains the sudoku formatted as shown in the following picture:

sudoku

Every cell is separated by each other by a comma, every row by a new line;

x's represent empty cells that the software will fill.

This software is really fast: it solved every sudoku I gave as input in less than one second.

The code should be easy to read. In the main() function, while reading the input file, there is an instruction inserted under the directive #ifdef _WIN32. When you use Windows, in fact, "new line" is achieved with the couple CRLF (that is '\r\n'), while on Unix with the only '\n'. This instruction removes the character '\r', so the software can go on.

Stay tuned!