Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: farbige Kästchen zufällig anordnen
BeitragVerfasst: 20 Feb 2013, 17:21 
Offline
Nuby

Registriert: 20 Feb 2013, 17:07
Beiträge: 1
Hallo zusammen,

wir sind gerade dabei für's Studium ein Spiel mit Ruby (Shoes) zu programmieren. Dass es einen Random-Befehl in Ruby gibt, ist mir klar, aber ich hab absolut keine Ahnung, wie ich den in meinem Fall anwenden muss. Ich möchte ein Spielfeld mit farbigen Quadraten. Die Farben sollen zufällig angeordnet sein. Momentan sieht das noch so aus:



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

$b = blue
$r = red
$y = yellow
$g = green
$o = orange

$status = 0

Array_1 = [$r, $y, $g, $b, $b, $y, $g, $b]
Array_2 = [$b, $g, $b, $y, $r, $r, $o, $r]
Array_3 = [$y, $o, $r, $y, $b, $g, $g, $r]
Array_4 = [$g, $r, $b, $o, $y, $b, $r, $o]
Array_5 = [$r, $o, $y, $b, $r, $g, $b, $y]
Array_6 = [$y, $b, $r, $g, $g, $r, $y, $o]
Array_7 = [$r, $r, $o, $y, $b, $y, $r, $g]
$feld = [Array_1, Array_2, Array_3, Array_4, Array_5, Array_6, Array_7]
@groesse = 50

def zeichne_spielfeld
xkoordinate = 0
ykoordinate = 200
$feld.length.times do |k|
Array_1.length.times do |i|
stroke black
fill $feld [k][i]
rect(xkoordinate, ykoordinate, @groesse, @groesse)
xkoordinate += @groesse
end
xkoordinate = 0
ykoordinate += @groesse
end

end
zeichne_spielfeld


click do |but, top, left|
if $status == 0 then #wenn einmal geklickt wird, dann schauen wo geklickt wurde
debug "erster klick"
y = top
x = left
$klick1_zeile = (x/@groesse)
$klick1_spalte = (y/@groesse)
debug "#{$klick1_zeile}"
debug "#{$klick1_spalte}"
#$kaestchen1 = $feld[$klick1_zeile][$klick1_spalte]
#debug "#{$kaestchen1}"
$status = 1 #im status einmal geklickt


elsif $status == 1 then #wenn zweimal geklickt wird, dann schauen wo geklickt wurde
debug "zweiter klick"
y = top
x = left
$klick2_zeile = (x/@groesse)
$klick2_spalte = (y/@groesse)
debug "#{$klick2_zeile}"
debug "#{$klick2_spalte}"
#$kaestchen2 = $feld[$klick2_zeile][$klick2_spalte]
$status = 0 #nach dem zweiten klick wieder von vorne anfangen

end
end


end


Die Farben, die benutzt werden sollen sind also definiert, aber wie kann ich jetzt im Array angeben, dass das Programm diese zufällig anordnet?

Und wenn mir auch noch jemand sagen kann, wie zwei farbige Kästchen miteinander den Platz tauschen, wenn man diese anklickt wäre das noch großartiger. ;)

Danke schon im Voraus für etwaige Hilfe. Die Zeit läuft uns bald davon. :P


Nach oben
 Profil  
 
BeitragVerfasst: 22 Feb 2013, 12:51 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Da ich nicht deine Hausaufgaben machen möchte, gibt es hier nur Pseudocode:



1
2
3
4
5
6
7
8
array colors = [red, green, blue]
array map[10][10]

for i = 0 to 9
for j = 0 to 9
map[i][j] = colors[random(colors.count)-1]
next
next


Und das tauschen bei Klick ist eigentlich noch trivialer…

Ich gehe davon aus, dass du das Click-Event bereits zwei Feldern zuordnen kannst:



1
2

swap(map[Stein1.x][Stein1.y], map[Stein2.x][Stein2.y]


Aber mal ganz ehrlich, beide Aufgaben sind ansich so trivial, dass ich nicht verstehe wie man sich als studierender trauen kann so etwas öffentlich zu fragen…

Dennoch hoffe ich geholfen zu haben,

NobbZ

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 5 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: