ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Ruby Shoes Tetris
BeitragVerfasst: 06 Feb 2014, 12:25 
Offline
Nuby

Registriert: 06 Feb 2014, 12:15
Beiträge: 1
Ich bin gerade dabei ein Tetris spiel mit Shoes zu schreiben.
Jedoch komme ich hier in ein paar Stellen nicht weiter.
Das Spielfeld ist als ein Array aufgebaut,der Tetrisstein läuft als Objekt oben drüber.
Die Frage ist wie ich das Objekt in das Array übertrage wenn es unten angekommen ist.
Jemand eine Idee?

Hier ist der Code:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
class TetrisI

def initialize
@form = [
[1,0,0,0],
[1,0,0,0],
[1,0,0,0],
[1,0,0,0]
]
@form2= [
[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[1,1,1,1]
]
@farbe ="#ffd700"
end
def get_form
return @form
end
def get_form2
return @form2
end
def get_farbe
return @farbe
end
end

# -------Spielfeld-------

Shoes.app width: 230, height: 450 do

background "#848484"
b=20 #Breite K��stchen
n=9 # Spalten
m=20 #Zeilen
RAND=0

$feld = Array.new(m) {Array.new(n) {|f| f=0 }}
m.times do |i|
n.times do |j|
fill green
rect(j*b+20, i*b+20, b, b)
end
end

#-----klotz anzeigen-----

klotz = TetrisI.new
form = klotz.get_form

anzahl_zeilen = form.length
anzahl_spalten = form[0].length # an der Arraystelle 0


@stack=stack left: 80, top: 0 do
anzahl_zeilen.times do |y|

anzahl_spalten.times do |x|
if form[y][x]>0 then
fill klotz.get_farbe # klotz weil ganzes Steinchen
rect(x*b+20, y*b+20, b, b)
end
end
end

end

# Schnelligkeit Klotz, bewegung rechts/links, Rand rechts/links/unten

x = 80
y = 20
speed = 20

@animation = animate(4) do |i|
y += speed
if x>= 160 then
x=160
end

if x<=0 then
x=0
end
@stack.move(x, y)

#Pr��fen ob Stein am Ende liegen bleibt und sich nicht mehr bewegt
if y >= height() -120 then
@animation.stop
end

if y >= height() -120 then
animation.locked
end

end

RAND_links = 20
RAND_rechts = 160

#Keypress - Event
keypress do |k|
case k
when :left then
x=x-20
if x<=0 then
x=0
end
@stack.move(x, y)

when :right then
x= x+20
if x>= 160 then
x=160
end
@stack.move(x, y)

when:up then
@stack.clear
@stack.append do
form = klotz.get_form2
anzahl_zeilen = form.length
anzahl_spalten = form[0].length # an der Arraystelle 0
anzahl_zeilen.times do |y|
anzahl_spalten.times do |x|
if form[y][x]>0 then
fill klotz.get_farbe # klotz weil ganzes Steinchen
rect(x*b+20, y*b+20, b, b)
end
end
end
end
end
end
end


Zuletzt geändert von Quintus am 06 Feb 2014, 14:06, insgesamt 1-mal geändert.
Code-Tags eingefügt.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron