Difference between revisions of "Roulette"
m |
m |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
|ProblemName=Roulette | |ProblemName=Roulette | ||
− | |Problem= Please read the following carefully | + | |Problem= Please read the following carefully. Write a complete Roulette program that prints out the total gained from player.<br> |
<br> | <br> | ||
− | Each game will | + | Each game will consist of six turns. <br> |
− | + | The player will take the first turn, followed by the opponent. <br> | |
− | + | For each turn you will need to generate a double random number, which will represent the chance of getting shot. <br> | |
If the chance is smaller than the probability, then the bullet is fired.<br> | If the chance is smaller than the probability, then the bullet is fired.<br> | ||
First turn, the probability starts at 0.2. <br> | First turn, the probability starts at 0.2. <br> | ||
After the first turn, you have to increase the probability. <br> | After the first turn, you have to increase the probability. <br> | ||
− | + | The probability is increased by 0.1 for the first four turns, and increased by 0.25 for the 5th and the 6th turn.<br> | |
If the player wins the player gets $50 dollars, otherwise the player loses $50 dollars.<br> | If the player wins the player gets $50 dollars, otherwise the player loses $50 dollars.<br> | ||
− | The starting | + | The starting amount of money for the player is be $100 dollars.<br> |
<br> | <br> | ||
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)<br> | 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)<br> | ||
<br> | <br> | ||
− | Run this game | + | Run this game 20 times and print the output (money of the player) using [[JOptionPane_Methods|JOptionPane]] method.<br> |
|SolutionCode= | |SolutionCode= | ||
Line 70: | Line 70: | ||
} | } | ||
− | |SideSectionTitle= | + | |SideSectionTitle=Mid-term Review |
|SideSection= | |SideSection= | ||
[[Image:Wiki_trays01.jpg|center]]<BR> | [[Image:Wiki_trays01.jpg|center]]<BR> | ||
− | |Solution=First, analyze | + | |Solution=First, analyze the question and determine the structure and the types of variables you will need.<br> |
It tells you to generate random numbers. <br> | It tells you to generate random numbers. <br> | ||
− | You will need to import < | + | You will need to import <b>''Math''</b> class which is in <b>''java.lang''</b>. <br> |
− | Also, you will need swing for printing out the money using < | + | Also, you will need swing for printing out the money using <b>''JOptionPane''</b>.<br> |
<br> | <br> | ||
<pre> | <pre> | ||
Line 85: | Line 85: | ||
</pre> | </pre> | ||
<br> | <br> | ||
− | After importing < | + | After importing <b>''java.lang.Math.Random''</b> and <b>''javax.swing.JOptionPane''</b>, figure out which variables you will need.<br> |
<br> | <br> | ||
− | You will need the initial money | + | You will need a variable for the player's initial money. Because this program does increments and decrements in non-decimal values, we will use integer. Initialize the starting amount at 100 for the starting amount.<br> |
<br> | <br> | ||
<pre> | <pre> | ||
Line 113: | Line 113: | ||
</pre> | </pre> | ||
<br> | <br> | ||
− | What you need to do inside the inner loop, you will need to generate random numbers. <br> | + | What you need to do is inside the inner loop, you will need to generate random numbers. <br> |
Random numbers can be generated by using <br> | Random numbers can be generated by using <br> | ||
<br> | <br> | ||
Line 120: | Line 120: | ||
</pre> | </pre> | ||
<br> | <br> | ||
− | The numbers are generated by < | + | The numbers are generated by <b>''Math.Random()''</b>, which are double type values. <br> |
− | + | This function will generate a number between 0 and 1. Because this function generates decimal numbers, make sure you store it in a double type variable.<br> | |
However, if you want a random generator that generates integers between 1 - 99, you will need to put: <br> | However, if you want a random generator that generates integers between 1 - 99, you will need to put: <br> | ||
<br> | <br> | ||
Line 128: | Line 128: | ||
</pre> | </pre> | ||
<br> | <br> | ||
− | The reason for this is, < | + | The reason for this is, <b>''Math.random()''</b> will generate numbers between 0.0 < x < 1.0. <br> |
You will need to multiply by 99 to make the generate numbers 0.0 < x < 99.0. <br> | You will need to multiply by 99 to make the generate numbers 0.0 < x < 99.0. <br> | ||
− | Remember, you must | + | Remember, you must <b>CAST</b> the random numbers to int if you will assign the value to int. <br> |
<br> | <br> | ||
− | Now, once you generate the random numbers, you will need to use some conditions to check who | + | Now, once you generate the random numbers, you will need to use some conditions to check who the winner is. <br> |
− | As | + | As stated in the question, if the given probability is greater than the randomly generated double value, there was gun fire. <br> |
<br> | <br> | ||
You will also need to consider whose turn it is. <br> | You will also need to consider whose turn it is. <br> | ||
The player takes first turn, for example 1st = Player, 2nd = Opponent, 3rd = player, 4th = Opponent, 5th = Player, 6th = Opponent. <br> | The player takes first turn, for example 1st = Player, 2nd = Opponent, 3rd = player, 4th = Opponent, 5th = Player, 6th = Opponent. <br> | ||
− | We can find out whose turn it is by using | + | We can find out whose turn it is by using <b>'%'</b> which is mod in java. <br> |
If your loop starts from 0, then the player will take turns when the loop counter is even. <br> | If your loop starts from 0, then the player will take turns when the loop counter is even. <br> | ||
Here is the pseudo-code for the condition. <br> | Here is the pseudo-code for the condition. <br> | ||
Line 151: | Line 151: | ||
</pre> | </pre> | ||
This pseudo-code means if there was a gun fire, check whose turn it is. <br> | This pseudo-code means if there was a gun fire, check whose turn it is. <br> | ||
− | + | If the result was the player's turn then the player loses money, otherwise the player wins money. <br> | |
− | + | Note that money -= 50 is equal to: <br> | |
<br> | <br> | ||
<pre> | <pre> | ||
Line 170: | Line 170: | ||
</pre> | </pre> | ||
<br> | <br> | ||
− | The code above | + | The code above does the proper increments when j starts at 0. <br> |
− | j < 4 will | + | j < 4 will include turns 0, 1, 2 and 3, which is four times, and each turn will increase the probability by 0.1. <br> |
− | + | When j is greater than 4, the probability will be increased by 0.25 for the remaining turns(in the else statement). <br> | |
<br> | <br> | ||
After increasing the probability, we are done with loops. <br> | After increasing the probability, we are done with loops. <br> | ||
− | Now, the last step is | + | Now, the last step is to print out the amount of money the player has, use the <b>''JOptionPane''</b> method. <br> |
<br> | <br> | ||
<pre> | <pre> | ||
Line 181: | Line 181: | ||
</pre> | </pre> | ||
<br> | <br> | ||
+ | This problem was the review of 'Problem Solving with Nested Loops'. <br> | ||
See below for the solution code. | See below for the solution code. | ||
}} | }} |
Latest revision as of 23:11, 10 April 2010
Back to the Program-A-Day homepage
ProblemPlease read the following carefully. Write a complete Roulette program that prints out the total gained from player. First turn, the probability starts at 0.2. |
Mid-term Review | |
---|---|---|
SolutionFirst, analyze the question and determine the structure and the types of variables you will need. import java.lang.*; import javax.swing.*;
int money = 100;
for(int i=0; i<20; i++) { double probability is 0.2 }
for(int j=0; j<6, j++) { }
double probability = Math.random();
int random = (int)(Math.random() * 99)
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. money = money - 50;
if(j < 4) probability += 0.1 else probability += 0.25
JOptionPane.showMessageDialog(null, money);
| ||
Code |