Columns

From TedTycoon.co.uk

Jump to: navigation, search
Screenshot of the PopCap Framework version of Columns

Columns is one of my longest projects which I have worked on with many different versions I have written in the past using different languages and libraries. The objective of the game is to place the falling jewels so that there are three or more jewels of the same colour in a row horizontally, vertically or diagonally on the 6x13 tile board. When there is a match, all the matching jewels disappear and the jewels above it fall down by the work of gravity. If any jewels are placed and go past the top of the board then the player loses. Higher scores are given when chain reactions happen, i.e. matches that cause jewels to fall and make other matches in the same move.

Contents

VB6 1 Version

Screenshot of the original Columns

The first version I wrote was in VB6 in mid 2006. The game was poorly written and most of it unfinished. The game allowed you to play against a computer or on your own. One of the main problems was that the time it took for jewels to crush and disappear took a long time as well as waiting for the jewels above it to fall. When playing the computer, it would also only do one jewel animation at the time, the other player would have to wait for the opponent's animation to finish.

C++ Version

Screenshot of the second version of Columns

The second version I wrote was in C++ a year later. Most of the problems were fixed that occurred in the previous version and allowed you to have up to three boards asynchronously without any delays or problems. The game was abandoned after the core gameplay was implemented.

PopCap Framework Version

The third version I wrote was in C++ using the PopCap Framework. It was written in the summer of 2008 to the end of 2008 and had much of the game finished before it was abandoned. The design of the game was much more object orientated then the VB6 versions and allowed computer players to control boards as well as multiple humans. It also featured different graphic sets for jewels, levels, highscores, multiple users and an adventure mode.

NET Compact Framework Version

Photograph of Columns on Windows Mobile

The forth version of Columns I wrote was in CSharp for Windows Mobile / PocketPC. After getting my new windows mobile phone I wrote a nearly finished version of Columns for it. This version was a recreation from scratch and was more object orientated than the PopCap Framework version where each jewel was a separate object and each had its own animation and falling members. The code was more efficient and used GDI to render the game by double buffering. The game has two versions, a standard survival mode and a timed mode. The survival mode would allow you to play until you lose going up an infinite amount of levels with increasing difficulty. The timed mode would be a five minute game where you have to achieve the highest score you can get.

The scoring of this version is different from previous versions. Every time a move consists of a match the move score is added to the chain score. This chain score will keep getting incremented until there is a move that does not cause a match. Each score that is achieved every move is multiplied by the chain score. This adds a strategy where you have to keep getting matches for as long as you can to get a large score multiplier. Every move that is a match also increments the special counter. When the special counter reaches 50 the game will grant the player a special jewel and then the process will repeat. Each level must also be played to reach the next level, i.e. no levels can be skipped like on the PopCap Framework version.

Controlling the jewels was done using finger gestures. To move the jewels left and right you tap the left and right arrow either side of the board. To rotate the jewels you tap the board once. To make the jewels go straight down you press the top of the board and drag your finger down to the bottom of the board.

Java Port

In September 2010, I ported the .NET Framework version to Java so that it can run as a web application and be used on mobile phones running Android. It was essentially my first Java application. I eventually wrote the Android version in May 2011.

See Also

Personal tools