next up previous contents index
Search Next: Operatoren Up: Arrays und Hashtabellen Previous: Iteratoren für Hashtabellen   Contents   Index


Miniprojekt: Papier, Schere und Stein

Ein Kinderspiel: Zwei Personen sitzen sich gegenüber und schütteln ihre geschlossene Faust drei Mal. Auf drei wird die Hand geöffnet (Papier), bleibt geballt (Stein) oder imitiert mit Zeige- und Mittelfinger eine Schere. Papier wickelt den Stein ein, der Stein schleift die Schere ab und die Schere schneidet das Papier.

Wir haben dieses Spiel mit Arrays und Hashtabellen implementiert:

$gewinn = {'Papier' => 'Stein',
    'Stein' => 'Schere', 'Schere' => 'Papier'}
$erlaubt = $gewinn.keys + ['Ende']
$score = {'computer' => 0, 'mensch' => 0}

def auswerten(menschAuswahl, computerAuswahl)
  if menschAuswahl == computerAuswahl
    print "Unentschieden "
  elsif $gewinn[menschAuswahl] == computerAuswahl
    $score['mensch'] += 1
    print "Gewonnen "
  else
    $score['computer'] += 1
    print "Verloren "
  end
end

def status(m, c)
  print "Es steht #{m} : #{c} "
  print ((m>c) ? ':-)' : ':-('), "\n\n"
end

def input
  puts "Auswahl: (#{$erlaubt.join(',')}) "
  print "Deine Wahl? "
  return STDIN.gets.chomp.capitalize
end

while eingabe = input
  next unless $erlaubt.include?(eingabe)
  break if eingabe == 'Ende'
  computerAuswahl = $erlaubt[rand(3)]
  auswerten(eingabe, computerAuswahl)
  status($score['mensch'], $score['computer'])
end



(C) 2002 by dpunkt.de, Armin Roehrl, Stefan Schmiedl, Clemens Wyss 2002-01-20