Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Klasse in Ruby/Shoes
BeitragVerfasst: 21 Jan 2014, 19:39 
Offline
Schüler

Registriert: 15 Jan 2014, 22:22
Beiträge: 24
Hallo ihr,

ich bin gerade dabei eine Klasse Quadrat mit Ruby/Shoes zu erstellen. Das Quadrat soll sich dann bewegen können. Ich bin jetzt so weit, allerdings, komme ich nicht weiter. Würde mich über Hilfe freuen.



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
#Ziel  ist es, ein Quadrat
#das sich mit Hilfe der Pfeiltasten bewegen l��sst.
class Quadrat < Shoes::Widget #erzeugt die Klasse Quadrat
@x
@y
@a
@farbe
@objekt

def initialize(x,y,a,farbe) # Konstruktor
@x=x
@y=y
@a =a
@farbe=farbe
@objekt=rect(x,y,a,a) #gibt Gr����e und Standpunkt des Quadrates an
end

def nach_oben ()
@y=@y-10 #verschiebt das Quadrat um 10 auf der Y-Achse nach oben
@objekt.move(@x,@y)
end

def nach_unten()
@y=@y+10 # verschiebt das Quadrat um 10 auf der y-Achse nach unten
@object.move(@x,@y)
end

def nach_links()
@x=@x-10 # verschiebt das Quadrat um 10 auf der x-Achse nach links
@object.move(@x,@y)
end

def nach_rechts()
@x=@x+10 #verschiebt das Quadrat um 10 auf der y-Achse nach rechts
@object.move(@x,@y)
end
end

Shoes.app width: 200, height: 200 do
Shoes.show_log #zeigt eine Fehlermeldung an
background black
a=Quadrat.new(100,150,30,green)
end


Zuletzt geändert von NobbZ am 21 Jan 2014, 20:47, insgesamt 1-mal geändert.
Code Tags eingefügt, Einrückung an rb-Konventionen angepasst


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Klasse in Ruby/Shoes
BeitragVerfasst: 21 Jan 2014, 21:01 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Was exakt bedeutet „Allerdings komme ich nicht weiter“?

Bitte stelle konkretere Fragen!

Ich möchte mir hier jetzt nicht Shoes installieren, nur um am Ende dann festzustellen, dass das Problem irgendwo anders liegt…

Allerdings würde ich die Bewegungsfunktionen anders bauen, das wird aber nicht dein Problem sein…



1
2
3
4
5
6
7
8
9
10
11
12
def move(direction, speed)
step = 10 * speed

case direction
when :left then @x-=step
when :right then @x+=step
when :up then @y-=step
when :down then @y+=step
end

@object.move @x, @y
end


Wenn du jetzt die Schrittweite ändern willst, dann brauchst du das nur an einer Stelle (step = …), ausserdem wiederholt sich nicht die Zeile „@object.move @x, @y“ in 4 von 5 Methoden, sondern steht nur in 1 von 2! Das zum allgemeinen Stil. Aber zurück zu deinem Problem, bitte schildere es doch noch mal genauer!

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

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Klasse in Ruby/Shoes
BeitragVerfasst: 21 Jan 2014, 21:10 
Offline
Schüler

Registriert: 15 Jan 2014, 22:22
Beiträge: 24
Danke schon mal für deine Hilfe! Das ist echt super lieb, dass du dir die Mühe machst.

Das Problem ist, ich habe ja jetzt meine Klasse Quadrat und auch die Methoden für das Quadrat. Allerdings wird mir das Quadrat nicht angezeigt, wenn ich das Programm in Shoes öffene. Ich weiß nicht ob ich durch den Konstruktor alles richtig übergeben habe. Könntest du das mal nachschauen?Ich hab schon zehn mal geschaut, aber man sieht dann immer den Wald vor lauter Bäumen nicht. Also ich weiß eben nicht was ich machen soll, dass mir das Quadrat dann auch wirklich angezeigt wird und ich es bewegen kann. Den Shoes Event-Handler keypress muss ich ja auch noch irgendwo integrieren. --> also den



1
2
3
4
5
6
Shoes.app do
@info = para "NO KEY is PRESSED."
keypress do |k|
@info.replace "#{k.inspect} was PRESSED."
end
end


Ich weiß aber überhaupt nicht wo und wie. Bin total verzweifelt.Ich will doch einfach nur ein Quadrat das sich bewegt und ich bin ja schon ganz weit gekommen. Aber irgendwas geht einfach nicht :/


Zuletzt geändert von NobbZ am 21 Jan 2014, 21:29, insgesamt 1-mal geändert.
Code Tags eingefügt


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Klasse in Ruby/Shoes
BeitragVerfasst: 21 Jan 2014, 21:49 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Da die Maintainer von Shoes es nach 2 Jahren immer noch nicht geschafft haben ein funktionierendes Gem auf die Beine zu stellen, kann ich es gerade nicht ausprobieren.

Was mir aber gerade aufgefallen ist, ist dass inzwischen an Shoes4 gearbeitet wird, nutzt du shoes 4 oder 3? Das ist eine Information die nicht vorenthalten werden darf (da du aber im Ruby 1.8 Forum gepostet hast, gehe ich von Shoes 3 aus, denn Shoes 4 erfordert so wie ich das gerade überblicke JRuby im 19-mode).

Ansonsten kann ich dir leider nicht helfen, die einzige Dokumentation zu Shoes die ich finde, kennt kein Shoes::Widget und erst recht kein Shoes::Widget#rect… (http://rdoc.info/github/shoes/shoes/frames)

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

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Klasse in Ruby/Shoes
BeitragVerfasst: 22 Jan 2014, 11:40 
Offline
Schüler

Registriert: 15 Jan 2014, 22:22
Beiträge: 24
Und wenn man jetzt mal nur von dem Quadrat ausgeht. Bei uns zeigt es schon kein Quadrat an? Kannst du uns da vielleicht helfen, woran es liegt?



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

class Quadrat < Shoes::Widget #erzeugt die Klasse Quadrat
@x
@y
@a
@farbe
@objekt


def initialize( x, y, a, farbe) # Konstruktor
@x = x
@y = y
@a = a
@farbe = farbe
@objekt = x, y, a, farbe


end

end


Shoes.app width: 200, height: 200 do
Shoes.show_log
background red


x = Quadrat.new( 10, 10, 30, green)

end


Zuletzt geändert von NobbZ am 22 Jan 2014, 13:45, insgesamt 1-mal geändert.
Code Tags eingefügt


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Klasse in Ruby/Shoes
BeitragVerfasst: 22 Jan 2014, 13:49 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Bitte benutze in Zukunft Code-Tags! Ich musste jetzt jeden einzelnen Post von dir editieren um den Code lesbar zu haben…

Aber zu deinem Problem:
Bitte beantworte meine Frage ob du Shoes 3 oder 4 benutzt! Auch wenn ich eine Annahme getroffen habe, möchte ich bitte von dir hören ob diese Annahme stimmt.

Aber davon abgesehen, ich kann dir bei dem Problem insgesamt nicht weiterhelfen, weil ich schlicht keine Lust habe mich durch den Shoes Installationsirrsinn zu schlagen für nur einen einzigen Testlauf. Ich kann mich lediglich an der spärlichen Dokumentation orientieren, und in eben der finde ich nichts zu Shoes::Widget. Also bitte zeige mir die entsprechende Stelle in der Dokumentation oder das Tutorial aus dem du diese Variante herausgezogen hast!

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

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Klasse in Ruby/Shoes
BeitragVerfasst: 22 Jan 2014, 16:10 
Offline
Schüler

Registriert: 15 Jan 2014, 22:22
Beiträge: 24
Ich habe Shoes drei. Das mit dem ::widget heißt einfach nur: Klassen, die graphische Elemente auf dem Shoes-Anzeigefenster erzeugen oder dessen Eigenschaften ändern, müssen als sogenanntes Shoes-Widget definiert werden.
Des haben wir von unserer Dozentin gesagt bekommen. Das Hauptproblem ist eben, dass man das Rechteck zwar nach links und nach rechts fahren kann, aber nicht durchgängig. Die Methode haben wir dazu verwendet:http://shoesrb.com/manual/Events.html . Also die des mit Keypress, wie oben schon beschrieben...


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder 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: