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