Conkaz JavaME(J2ME) proof of concept

Project Requirements


Proof of concept for a simple 2 player turn-based mobile phone game. For this proof of concept no graphics are required, simple text display is fine. As this is only a proof of concept a wide variety of phones need not be coded for. I have a PocketPC(320x240, Windows Mobile 2003) and Sony Ericsson W300i(128x160) which can be used for my testing. Coding to CLDC1.0 and MIDP 1.0.

The winning developer could be interested in taking the project to completion if the proof of concept works and we want to take the project to full commercial realisation. This will be on a % share of the business rather than paid. If you are handy with graphics then so much the better for both of us. Writing modular code is a requirement as this could be the first of a more advanced game. All values must be implemented as constants no hard coding of values. The code must be self documenting or well documented(Javadoc not needed).

Please Note: just because the application works on a JavaME emulator, it may not necessarily work on an actual device. The application must work on an actual device to be considered as complete.

Project Overview


Based on the traditional game of Conkers, users have a bag of 5 conkers and play against each other(see wiki - [url removed, login to view]). This is a turn based game and will use Bluetooth to play against another player.

Where screens haven't been detailed the developers choice is acceptable.

Project Details


A conker has several attributes;

o UID - unique ID for central server tracking; for future use

o name - user can give each conker a name(max 20 chars??), initialised to "Conka x" where x=1-5

o number of games played - initialised to zero, integer only

o score - initialised to zero, integer only

o health - range 0-1024, integer only

o diameter - range 1-1024, integer only

o weight - range 1-1024, integer only

o length of string - range 1-1024, integer only

o activated - boolean, determines wether conker has been activated and therefor eligible to play a game(may not be required, developer decides)

Options available;

menu1 View conker bag

menu1.1 View conker details

menu1.2 Rename conker

menu1.3 Activate conker(detailed below)

menu1.3.1 Remote Control

menu1.3.2 Random

menu2 Play Game

menu1 View Conker Bag


This option will display a list of all conkers by name. The conkers will be selectable, when selecting a conker a popup/secondary menu(menu1.x as above) is displayed.

This screen will be displayed as follows;


Conker Name Score Health

----------- ----- ------

<conker name> <score> <health>

<conker name> <score> <health>

... repeated for all available conkers


<conker name> will be a selectable field(i.e. EXCLUSIVE IMPLICIT list type) and sorted by descending score(highest first).

menu1.1 View conker details


Displays all attributes of the conker(excluding UID);

Name: <name>

Games played: <games played>

Score: <score>

Health: <health or 'not activated'>

... etc ...

String length: <string length>

If a conker hasn't been activated yet then 'not activated' will be displayed. The 2 options available for this screen will be 'back' or 'activate'. When selecting 'activate' see menu1.3 below.

menu1.2 Rename conker


This menu option allows the user to rename a conker. The display will be as follows;


Name: <conker name>


<conker name> is an editable field type that displays the current name and allows editing.

menu1.3 Activate conker


This option will only be visible if a conker hasn't been activated, i.e. a conker can only be activated once. Upon selecting this menu option a further 2 options could be available.

Once a conker has been activated it can be used to play a game. Only activated conkers can play games.

For each conker, the initial values for health, diameter, weight and string length are to be initialised by one of the following 2 methods(user will decide which method if option 2 is available);

menu1.3.1 Remote Control


If the phone has IR(infra red port) then the game will read in 2 remote control button presses from a remote control(any remote control lying around the home). If the device doesn't have IR then this submenu will not be displayed.

A common used standard protocol for infrared data communication is the RC5 code, originally developed by Philips. This code has an instruction set of 2048 different instructions and is divided into 32 address of each 64 instructions. Every kind of equipment manufacturer uses their own address, so this makes it possible to change the volume of the TV without changing the volume of the hifi.

The transmitted code is a dataword which consists of 14 bits and is defined as:

2 startbits for the automatic gain control in the infrared receiver.

1 toggle bit (change everytime when a new button is pressed on the ir transmitter)

5 address bits for the systemaddress

6 instructionbits for the pressed key

To generate the starting values for health, diameter, weight and string length;

From the 11 bits(5 addr + 6 instr) take the least significant 10 bits and the most significant 10 bits to give 2 numbers each in the range 0-1024(2^10). Each of these values will give the initial values.


1024 512 256 128 64 32 16 8 4 2 1

1 1 0 1 0 0 0 1 0 1 0

n1 = 1101000101 = 512+256+64+4+1=837

n2 = 1010001010 = 512+128+8+2=650

Note - I haven't found an IR API, but this site could be useful; [url removed, login to view]

menu1.3.2 Random


The game will randomly generate the initial values. If the device doesn't have IR then this submenu option will not be displayed, rather the processing for this submenu will be processed, i.e. random values are calculated and call 'menu1.1 View conker details' to display the newly initialised values.

menu2 - Play game


To start a game a player must select one of their conkers from their bag of conkers and have someone to play against. The game should use bluetooth to list any Conka games in range. Conka games are other devices on which the game 'Conkaz' is installed. The player(challenger) selects a player from the list of available Conka games in range.

NB - If it is not possible to detect if other Bluetooth devices have Conkaz installed then simply list all available Bluetooth devices in range.

The selected Conka device(opponent) will display a challenge message showing the details of the challenger's conker and if they would like to accept the challenge.

The opponent either accepts the challenge or declines. If declining, the challenger is given a declined message and asked if they want to change their conker and re-challenge or go back to the list of Conka games to challenge another Bluetooth device.

If the opponent accepts then they should choose one of their own conkers from their bag of conkers. Once the conker has been selected, the game can begin. The opponent device will send the challenger all of the attributes of the selected conker. The challenger is now committed to play the opponent.

The challenger device will act as the bluetooth server during the game.

The server randomly decides who goes first.

The player taking a turn will be presented with a moving up-down gauge that corresponds to the power that they will strike the other conker. They watch the gauge and press a button when they think it is full. The gauge stops moving when the player presses the button and the value of the gauge and therefore power is known. The gauge should be slower moving for the bottom 60-70% of the gauge and get faster as it gets closer to 100%. Thereby not giving the user the ability to consistently get a maximum power every time.

The power, along with the health, diameter, weight and string length for both conkers will decide how much damage is done to each conker(calculations used for the conker strike are detailed below). Both conkers attributes on the respective devices are modified according to the damage done. i.e. the state of each conker will be persisted after each turn. Their is no requirement to keep track of what games have been played or those been disconnected at all. If the connection is lost, c'est la vie, tough conkaz!

The result of the turn is shown to both players. There are 3 possible outcomes for a turn;

o a hit

o a miss

o 'strings', where conkers miss but the strings get twisted

The display will be;

In the event of a hit;


Last hit had <x>% power.

<y> damage to <name of conker that was just hit>

<z> damage to <name of conker that did the hitting>

Conkers now look like this;

<challenger conker name> has <a> health left

<opponent conker name> has <a> health left


In the event of a miss;


Last hit had <x>% power.

Conker missed!

Conkers now look like this;

<challenger conker name> has <a> health left

<opponent conker name> has <a> health left


In the event of 'strings';


Last hit had <x>% power.

Conker missed and strings got twisted!

Conkers now look like this;

<challenger conker name> has <a> health left

<opponent conker name> has <a> health left


If there is still health left on both conkers, the game continues with the next players turn. The game is finished when one of the conkers has zero health.

The winning conker has it's score incremented by the value of the losing conkers score plus 1(for this win).

The winning conkers' number of played games is incremented by 1.

The losing conker is deleted from the losing players bag of conkers.

The result of the game is displayed on both devices as;


<winning conker name> has won!!

<losing conker name> is smushed on the ground!

<winning conker name> is now a <winning conker score>er




The calculations aren't complicated by any means, but to make the game not appearing to have random outcome, the attributes of the conkers are taken into consideration.

If the conkers are small there is less chance of a hit, conversely for large diameter conkers. The weight of the conker will increase the damage caused by virtue of force=mass x acceleration(power gauge for our purposes). We will uplift the damage score depending on the length of the string, longer and shorter strings are better than medium length strings. We take into account if we just glanced the other conker or hit it full on.

When a conker has a lot of health left, then if it takes any damage it takes limited damage. The more battered a conker is, the more any amount of damage will make it even worse. This also(hopefully) will make the game end after a reasonable amount of turns; we don't want school kids missing lessons because their conker game lasts for 40 minutes! I expect a game to last at most around 10 turns. To achieve this a log() function is used.

I'm happy to help out with the code for the calculations if need be and at the end of the day the calculations don't have to be 100% accurate for the prototype as I'm sure they will need to be changed depending on test results. With all the above in mind here are the calculations.

NB - conker1 is used to mean the conker doing the hitting, conker2 is used to mean the conker that has been hit.

There is an 80% chance of hit, 10% chance of a miss and 10% chance of getting 'strings'. For the misses and strings no further calculations are performed and the turn ends.

Where a conker has been hit calculate the following 3 values;

1. '% area' of conker2 that is hit - can be 100%, 75%, 50% or 25% with equal probability(1 in 4 chance of either).

2. 'force' of the hit = (conker1 weight) x (power from gauge)

3. 'force uplift' due to conker1 string length -

if the string length is in the lower 25% of max string length(ie 25% of 1024, <= 256) then apply an uplift of 0.25

if the string length is in the upper 25% of max string length(ie 75% of 1024, >= 768) then apply an uplift of 0.25

if the string length is >25% or <75% of max string length(ie 257 - 767) then there is no uplift.

From the calculated '% area' and 'force' calculate the damage caused as;

force% = (force) / (MAX_WEIGHT x MAX_POWER_FROM_GAUGE) note this will be force/(1024 x 100)

% of health conker2 = conker2 health / MAX_HEALTH(i.e. 1024)

log value = exp(% of health conker2)

log value = 1 / (log value)

damage % = 20(use a constant for this value) x (log value)

absolute damage = MAX_HEALTH x (damage % / 100)

absolute damage = (absolute damage) x (force uplift) x (% area) x (force%)

conker2 health is reduced by (absolute damage)

There is a 50% chance that conker1 sustains 10% of the absolute damage.

Again I must stress the use of constants when coding. I'm sure the values will need to be changed or tweaked to get something that works properly.

Evner: Java, Mobile App Development

Se mere: writing score, writing out numbers, writing numbers 1 20, writing numbers 1 10, writing lessons, writing games for kids, writing devices, writing challenge, writing a to z, work from home phones, work from home org, work from home no phone needed, work from home java developer, work from home java, work at home options, work at home game testing, windows volume display, wiki challenge, where to look for mobile developers, where to get developers

Om arbejdsgiveren:
( 0 bedømmelser ) Gloucester, United Kingdom

Projekt ID: #190219

5 freelancere byder i gennemsnit $94 på dette job


Have expirience in multiplayer mobile projects.

$100 USD in 10 dage
(0 bedømmelser)

We are a group of experienced J2ME developers. We would be glad to work with you in that project. We may receive the devices you want to target to test the application directly on them. Regards, Alberto Andreotti.

$100 USD in 10 dage
(0 bedømmelser)

check [login to view URL] this link. I developed this game and some other projects of this web. So give me chance to develop.

$80 USD in 10 dage
(0 bedømmelser)

Hi, please come to PM to more [login to view URL] are ready to give screen flow for your application. Regards J2me team

$100 USD in 30 dage
(0 bedømmelser)

We have already developed many J2ME games for MIDP1.0 and MIDP2.0, and it's easy for us to develop this game for you

$90 USD in 15 dage
(0 bedømmelser)