1 # Copyright (C) 2007 www.rubykids.de
  2 $KCODE='UTF-8'
  3 require 'jcode'
  4 begin
  5   require 'Win32API'
  6 rescue LoadError
  7   # Unter Linux gibt es Win32API nicht, daher
  8   # den LoadError hier abfangen.
  9 end
 10
 11 # Damit Ein- und Ausgabe auch in der Eclipse Console funktionieren:
 12 $stdout.sync = true
 13
 14 class Array
 15   def laenge
 16     self.size
 17   end
 18   def jedes
 19     self.each do |elm|
 20       yield(elm)
 21     end
 22   end
 23 end
 24
 25 class Liste < Array
 26   def self.neu(anInteger=0, anObject=nil)
 27     self.new(anInteger, anObject)
 28   end
 29 end
 30
 31 class String
 32   def laenge
 33     self.jlength
 34   end
 35   def buchstaben_klein
 36     self.downcase
 37   end
 38   def buchstaben_gross
 39     self.upcase
 40   end
 41   def ohne_enter
 42     self.chomp
 43   end
 44 end
 45
 46 class Fixnum
 47   def mal
 48     self.times do |cnt|
 49       yield(cnt)
 50     end
 51   end
 52   def biszu(target)
 53     self.upto(target) do |cnt|
 54       yield(cnt)
 55     end
 56   end
 57   def rest_bei_div(zahl)
 58     self % zahl
 59   end
 60 end
 61
 62 class Bignum
 63   def mal
 64     self.times do |cnt|
 65       yield(cnt)
 66     end
 67   end
 68 end
 69
 70 class Zeit < Time
 71   def self.jetzt
 72     self.now
 73   end
 74 end
 75
 76
 77 def schreib(*elemente)
 78   elemente.each do |t|
 79     print t
 80   end
 81 end
 82
 83 def schreibe(*elemente)
 84   schreib(elemente)
 85   puts
 86 end
 87
 88 def schreibe_leer(lines = 1)
 89   1.upto(lines) { puts }
 90 end
 91
 92 # Diese Methode liest ein Zeichen ohne Zeilenvorschub (Enter).
 93 # Das funktioniert leider bisher nur unter MS Windows.
 94 def lies_ein_zeichen
 95   begin
 96     (Win32API.new("crtdll", "_getch", [], "L").Call).chr
 97   rescue NameError
 98     # Wenn Fehler, dann wohl kein Microsoft Windows da draußen.
 99     state = `stty -g`
100     begin
101       system = "stty raw -echo cbreak"
102       STDIN.getc.chr
103     ensure
104       system "stty #{state}"
105     end
106   end
107 end
108
109 def lies_eine_zeichenkette
110   gets
111 end
112
113 def schlafe(sekunden = 0)
114   sleep(sekunden)
115 end
116
117 def schlafe_kurz
118   sleep(0.08)
119 end