2016-09-23 5 views
0

Ich bin ein Anfänger in Ruby und ich mache ein wirklich einfaches "Spiel".Undefinierte Methode in Ruby

Mein Problem ist, dass ich testen möchte, ob der Benutzer 1 drücken dann einige Würfel rollen, aber ich kann meine Methode nicht verwenden. Bitte beachten Sie den Code unten für weitere Informationen:

class Player 
#i have some methods but it work 
end 

class Game 
    tot = 0 
     def rollDice 
      tot = 0 
      puts "You roll the dices" 
      d1 = rand(1..6) 
      puts "Dice 1: #{d1}" 
      d2 = rand(1..6) 
      puts "Dice 2: #{d2}" 
      d3 = rand(1..6) 
      puts "Dice #{d3}" 
      tot = d1 + d2 + d3 
      puts "Your score is #{tot}" 
      return tot 
     end 

    #some puts but not important for the coding 

    puts "Press 1 to play or 2 to leave" 
    value = gets.chomp 
     if value == "1" 
      s1 = rollDice 
      puts "Why it doesnt work :C#{s1}" 

    #[i have a player class but its not important for the moment] 
      #player1 = Joueur.new(j1) 
      #player2 = Joueur.new(j2) 

      #player1.score 
      #player2.score 
     elsif value== "2" 
      exit 
     end 
end 

aber ich habe das nicht definierte Methode Fehler für meine Methode rolldice wirklich danke

Antwort

2

Ihr Code funktioniert. Ihre rollDice Definition ist jedoch eingerückt (und Sie haben eine zweite tot=0 Aufruf), also denke ich, Sie haben es tatsächlich in etwas anderes definiert (eine Klasse?), Die zum Zeitpunkt des Schreibens nicht in Ihrem veröffentlichten Codebeispiel enthalten ist.

Btw, folgende Konventionen/style guides Ich würde vorschlagen, dass Sie rollDice in roll_dice umbenennen.

Der Code, den ich erfolgreich getestet ist dieses:

def rollDice 
    tot = 0 
    puts "You roll the dices" 
    d1 = rand(1..6) 
    puts "Dice 1: #{d1}" 
    d2 = rand(1..6) 
    puts "Dice 2: #{d2}" 
    d3 = rand(1..6) 
    puts "Dice #{d3}" 
    tot = d1 + d2 + d3 
    puts "Your score is #{tot}" 
    return tot 
end☠ 

puts "Press 1 to play or 2 to leave" 
value = gets.chomp 
if value == "1" 
    s1 = rollDice 
    puts "Why it doesnt work :C#{s1}" 

elsif value== "2" 
    exit 
end 

Beispielsitzung:

$ Press 1 to play or 2 to leave 
> 1 
You roll the dices 
Dice 1: 5 
Dice 2: 5 
Dice 2 
Your score is 12 
Why it doesnt work :C 12 
+0

Also ja i 2 Klasse in der gleichen Datei haben, aber ich habe immer noch den Fehler .... Ich kann alle meine Datei kopieren, wenn Sie möchten? Ich bin ein bisschen verloren, weil dieses "Spiel" so einfach für mich wäre, es in Java zu programmieren, aber in Ruby ist es ziemlich schwer http://www.filedropper.com/projeddes – Jerome

+0

teilen Sie bitte als Github Gist oder etwas Ähnliches Pastebin. Auch in Java können Sie keine Methode in einer Klasse definieren und sie von irgendwo ausführen, Sie benötigen eine Instanz davon. Fügen Sie Ihrem Beispielcode wahrscheinlich nur die Klasse "blocks" hinzu, damit Sie sehen können, wohin was geht. – Felix

+0

http://pastebin.com/DiGV4nHC, aber die Methode ist in der Klasse, so dass ich es in der Klasse verwenden könnte? Danke für die Zeit, die du gibst, um mir zu helfen – Jerome

Verwandte Themen