Difference between revisions of "Roulette"

From CompSciWiki
Jump to: navigation, search
m (int money is 100 changed to int money = 100;)
(You already have a word description of the code, I'm changing it to actual code. You have code in some places, words in other.)
Line 107: Line 107:
 
<br/>
 
<br/>
 
<pre>
 
<pre>
for(int j running 6 times, incremented by 1)
+
for(int j=0; j<20, j++)
 
{
 
{
 
}
 
}

Revision as of 11:51, 8 April 2010

Back to the Program-A-Day homepage

Problem

Please read the following carefully, and write a complete program Roulette that prints out
total gained from player.

Each game will be running for 6 turns. Player will take the first turn
followed by the opponent. You need to generate a double random number
each time that will represent the chance of getting shot.
If the chance is smaller than the probability, then the bullet is fired.
First turn, the probability starts at 0.2. After the first turn, you have to increase the probability.
It will increase 0.1 for first four times, then, it will increase 0.25 for the 5th and the 6th time.
If the player wins the player gets $ 50 dollars, otherwise the player loses $ 50 dollars.
The starting money of the player will be $ 100 dollars.

Example. 1st(player, 0.2), 2nd(opponent, 0.3), 3rd(player, 0.4), 4th(opponent, 0.5), 5th(player, 0.75), 6th(opponent, 1.0)

Run this game for 20 times, and print out the output (money of the player) using JOPtionPane.

 

...by students

Wiki trays01.jpg


Solution

First, analyize what you need to import. It tells you to generate random numbers.
You will need to import Math class which is in java.lang. Also, you will need swing
for printing out the money using JOptionPane.

import java.lang.*;
import javax.swing.*;


After imporing java.lang.Math.Random and javax.swing.JOptionPane, figure out which variables you will need.

You will need the initial money which is 100 as integer.

int money = 100;


Then, you will need a for loop to run the games 20 times.
Inside the for loop, you will need to declare another variable for the probability.
The probability will start from 0.2, so set the probability variable equal to 0.2.

for(int i running 20 times, incremented by 1)
{
	double probability is 0.2
}


Once you set up the outer loop, you will need an inner loop for each game.
There will 6 turns for each game which means the loop will run 6 times.

for(int j=0; j<20, j++)
{
}


What you need to do inside the inner loop, you will need to generate random numbers.
Random numbers can be generated by using

double probability = Math.random();


The numbers are generated by Math.Random are double values.
You need double values for chances, so it's ok to leave it by itself.
However, if you want a random generator that generates integers between 1 - 99,
you will need to put:

int random = (int)(Math.random() * 99)


The reason for this is, Math.random() will generate numbers between 0.0 < x < 1.0.
You will need to multiply by 99 to make the generate numbers 0.0 < x < 99.0.
Remember, you must CAST the random numbers to int if you will assign the value to int.

Now, once you generate the random numbers, you will need to use some conditions to check who won.
As it says on the question, if the given probability is greater than
the randomly generated double value, there was gun fire.

You will also need to consider whose turn it is.
The player takes first turn, for example
1st = Player, 2nd = Opponent, 3rd = player, 4th = Opponent, 5th = Player, 6th = Opponent.
We can find out whose turn it is by using mod (%).
If your loop starts from 0, then the player will take turns when the loop counter is even.
Here is the pseudo-code for the condition.

if(probability > chance)
{
	if(j % 2 == 0)
		money -= 50
	else
		money += 50
}

This pseudo-code means if there was a gun fire, check whose turn it is.
Then if it was the player's turn, he loses money.
Otherwise, he wins money.
Note that money -= 50 is equal to:

money = money - 50;


After setting up the condition, we need to increase the probability.
If there was no gun fire, another person needs to take the next turn.
For the first four times, it will increase by 0.1.
For the fifth and the sixth time, it will increase by 0.25.

if(j < 4) 
	probability += 0.1
else
	probability += 0.25


The code above is assuming that it starts from 0.
j < 4 will be 0, 1, 2 and 3 which is four times and increase the probability by 0.1.
Otherwise, by 0.25 by setting else.

After increasing the probability, we are done with loops.
Now, the last step is printing out the money using simple JOptionPane method.

JOptionPane.showMessageDialog(null, money);


See below for the solution code.

Code

Solution Code

Back to the Program-A-Day homepage