Hey I need help with my code

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/.

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@hotmail.com> wrote:

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/\.

Hi,

do yourself the favour and make your code more readable.

UNTESTED.

# dice face rows

frame = "+-----+\n"
blank = "| |\n"
center = "| * |\n"
left = "|* |\n"
right = "| *|\n"
both = "|* *|\n"

  FRAME = "+-----+"
  BLANK = "| |"
  CENTER = "| * |"
  LEFT = "|* |"
  RIGHT = "| *|"
  BOTH = "|* *|"

# 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.

points = 0
puts 'Would you like the roll or pass?'
user_turn = gets.chomp()

`gets' may return nil (EOF == Ctrl-D).

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

···

Am Mittwoch, 28. Okt 2009, 12:25:41 +0900 schrieb Brian Geds:

--
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de

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/.

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@hotmail.com> wrote:

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/\.