 |
|
| Computers Forum Index » Computer Languages (Ruby) » Hey I need help with my code.... |
|
Page 1 of 1 |
|
| Author |
Message |
| Brian Geds... |
Posted: Wed Oct 28, 2009 5:17 am |
|
|
|
Guest
|
Hello guys I am doing a little something for class but I need help
Okay the point of the game is to roll to random dice and if the dice
lands on [one] you lose or if you dont you get to add up the two sums of
what you did roll. or you get the option to choose to roll again or
pass. heres that my code looks like....it will do the while, but when it
gets to the if(and lands on 1) it will stay in the while for some
reason. Here is what my code looks like
# roll or pass
#
# A Ruby dice game. Each turn you can play it safe and keep your score,
# or roll again to rack up points. But watch out! A roll of 1 could
cost
# you everything!
# dice face rows
frame = "+-----+\n"
blank = "| |\n"
center = "| * |\n"
left = "|* |\n"
right = "| *|\n"
both = "|* *|\n"
# dice faces
one = frame + blank + center + blank + frame
two = frame + left + blank + right + frame
three = frame + left + center + right + frame
four = frame + both + blank + both + frame
five = frame + both + center + both + frame
six = frame + both*3 + frame
weird = frame + blank*3 + frame
faces = [one, two, three, four, five, six]
points = 0
puts 'Would you like the roll or pass?'
user_turn = gets.chomp()
while (user_turn != 'pass') do
result1= faces[(rand(6))]
result2= faces[(rand(6))]
puts result1
puts result2
puts 'current score is'
if (result1 result2 != faces[0])
puts 'Would you like to roll again?'
user_turn = gets.chomp
end
end
--
Posted via http://www.ruby-forum.com/. |
|
|
| Back to top |
|
|
|
| Zundra Daniel... |
Posted: Wed Oct 28, 2009 5:17 am |
|
|
|
Guest
|
[Note: parts of this message were removed to make it a legal post.]
The integer you want is the random number + 1. Just save the rand value.
On Wed, Oct 28, 2009 at 12:44 AM, Brian Geds <uforacer at (no spam) hotmail.com> wrote:
Quote: Hey I got it working now I need help with one last thing. The game is
suppose to take the number of the dice and put them into points, and
this gives you, your score. the numbers are suppose to be like this one
= *0, two = 2, and so oh. How can I do this?
# roll or pass
#
# A Ruby dice game. Each turn you can play it safe and keep your score,
# or roll again to rack up points. But watch out! A roll of 1 could
cost
# you everything!
# dice face rows
frame = "+-----+\n"
blank = "| |\n"
center = "| * |\n"
left = "|* |\n"
right = "| *|\n"
both = "|* *|\n"
# dice faces
one = frame + blank + center + blank + frame
two = frame + left + blank + right + frame
three = frame + left + center + right + frame
four = frame + both + blank + both + frame
five = frame + both + center + both + frame
six = frame + both*3 + frame
weird = frame + blank*3 + frame
faces = [one, two, three, four, five, six]
points = 0
puts 'Would you like the roll or pass?'
user_turn = gets.chomp()
while (user_turn != 'pass') do
result1= faces[(rand(6))]
result2= faces[(rand(6))]
puts result1
puts result2
if (result1 != faces[0]) and (result2 != faces[0])
puts 'current score is'
puts 'Would you like to roll again?'
user_turn = gets.chomp
else
break
end
end
--
Posted via http://www.ruby-forum.com/.
|
|
|
| Back to top |
|
|
|
| Bertram Scharpf... |
Posted: Wed Oct 28, 2009 5:17 am |
|
|
|
Guest
|
Hi,
do yourself the favour and make your code more readable.
UNTESTED.
Am Mittwoch, 28. Okt 2009, 12:25:41 +0900 schrieb Brian Geds:
Quote: # dice face rows
frame = "+-----+\n"
blank = "| |\n"
center = "| * |\n"
left = "|* |\n"
right = "| *|\n"
both = "|* *|\n"
FRAME = "+-----+"
BLANK = "| |"
CENTER = "| * |"
LEFT = "|* |"
RIGHT = "| *|"
BOTH = "|* *|"
Quote: # dice faces
one = frame + blank + center + blank + frame
two = frame + left + blank + right + frame
three = frame + left + center + right + frame
four = frame + both + blank + both + frame
five = frame + both + center + both + frame
six = frame + both*3 + frame
weird = frame + blank*3 + frame
faces = [one, two, three, four, five, six]
FACES = [
[ BLANK, CENTER, BLANK],
[ LEFT , BLANK , RIGHT],
[ LEFT , CENTER, RIGHT],
[ BOTH , BLANK , BOTH ],
[ BOTH , CENTER, BOTH ],
[ BOTH , BOTH , BOTH ],
]
FACES.map! { |a| ([ FACES] + a + [ FACES]).map { |x| x + $/ }.join "" }
# As it's a constant it is only evaluated once.
Quote: points = 0
puts 'Would you like the roll or pass?'
user_turn = gets.chomp()
`gets' may return nil (EOF == Ctrl-D).
Quote: while (user_turn != 'pass') do
result1= faces[(rand(6))]
result2= faces[(rand(6))]
puts result1
puts result2
puts 'current score is'
if (result1 result2 != faces[0])
puts 'Would you like to roll again?'
user_turn = gets.chomp
end
end
Argh. Indent the `if' correctly.
Just call `gets' in one place.
You should store and compare the _number_ of resulting eyes but
not the whole image. That's just for displaying.
Then the problem will be obvious, I bet.
Bertram
--
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de |
|
|
| Back to top |
|
|
|
| Brian Geds... |
Posted: Wed Oct 28, 2009 5:17 am |
|
|
|
Guest
|
Hey I got it working now I need help with one last thing. The game is
suppose to take the number of the dice and put them into points, and
this gives you, your score. the numbers are suppose to be like this one
= *0, two = 2, and so oh. How can I do this?
# roll or pass
#
# A Ruby dice game. Each turn you can play it safe and keep your score,
# or roll again to rack up points. But watch out! A roll of 1 could
cost
# you everything!
# dice face rows
frame = "+-----+\n"
blank = "| |\n"
center = "| * |\n"
left = "|* |\n"
right = "| *|\n"
both = "|* *|\n"
# dice faces
one = frame + blank + center + blank + frame
two = frame + left + blank + right + frame
three = frame + left + center + right + frame
four = frame + both + blank + both + frame
five = frame + both + center + both + frame
six = frame + both*3 + frame
weird = frame + blank*3 + frame
faces = [one, two, three, four, five, six]
points = 0
puts 'Would you like the roll or pass?'
user_turn = gets.chomp()
while (user_turn != 'pass') do
result1= faces[(rand(6))]
result2= faces[(rand(6))]
puts result1
puts result2
if (result1 != faces[0]) and (result2 != faces[0])
puts 'current score is'
puts 'Would you like to roll again?'
user_turn = gets.chomp
else
break
end
end
--
Posted via http://www.ruby-forum.com/. |
|
|
| Back to top |
|
|
|
| Zundra Daniel... |
Posted: Wed Oct 28, 2009 5:17 am |
|
|
|
Guest
|
[Note: parts of this message were removed to make it a legal post.]
You need a break in your loop. Also the conditional syntax is wrong
it should be something like:
unless result1 == faces[0] or results2 == faces[0]
puts 'Would you like to roll again?'
else
break
end
On Tue, Oct 27, 2009 at 11:25 PM, Brian Geds <uforacer at (no spam) hotmail.com> wrote:
Quote: Hello guys I am doing a little something for class but I need help
Okay the point of the game is to roll to random dice and if the dice
lands on [one] you lose or if you dont you get to add up the two sums of
what you did roll. or you get the option to choose to roll again or
pass. heres that my code looks like....it will do the while, but when it
gets to the if(and lands on 1) it will stay in the while for some
reason. Here is what my code looks like
# roll or pass
#
# A Ruby dice game. Each turn you can play it safe and keep your score,
# or roll again to rack up points. But watch out! A roll of 1 could
cost
# you everything!
# dice face rows
frame = "+-----+\n"
blank = "| |\n"
center = "| * |\n"
left = "|* |\n"
right = "| *|\n"
both = "|* *|\n"
# dice faces
one = frame + blank + center + blank + frame
two = frame + left + blank + right + frame
three = frame + left + center + right + frame
four = frame + both + blank + both + frame
five = frame + both + center + both + frame
six = frame + both*3 + frame
weird = frame + blank*3 + frame
faces = [one, two, three, four, five, six]
points = 0
puts 'Would you like the roll or pass?'
user_turn = gets.chomp()
while (user_turn != 'pass') do
result1= faces[(rand(6))]
result2= faces[(rand(6))]
puts result1
puts result2
puts 'current score is'
if (result1 result2 != faces[0])
puts 'Would you like to roll again?'
user_turn = gets.chomp
end
end
--
Posted via http://www.ruby-forum.com/.
|
|
|
| Back to top |
|
|
|
|
|
All times are GMT
The time now is Tue Dec 01, 2009 5:58 am
|
|