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  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 07 Okt 2016, 13:21 
Offline
Nuby

Registriert: 07 Okt 2016, 13:13
Beiträge: 5
hallo leute,
ich versuche mich zur zeit an meinem ersten programm (eine art ping pong, ein "bild" darf nicht runterfallen und dazu muss man den "schläger" unten hin und her bewegen... blöd erklärt, aber ihr wisst vlt was ich meine)

hier einmal mein code (das markierte soll das erzeugte rote rechteck nach links verschieben)


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
require 'gosu'

class MyWindow < Gosu::Window

def initialize
super(640,400,false)
self.caption = "PONG!"
@image = Gosu::Image.new self, "ohm.png"

@x=self.width/2-@image.width/2
@y=self.height/2-@image.height/2

@dy=2
@dx=2




end

def button_down id
close if id==Gosu::KbEscape



end

def update

@x=@x+@dx
@y=@y+@dy

if @x>(self.width-@image.width)
@dx=@dx*-1
end

if @x<=(0)
@dx=@dx*-1
end

if @y<=(0)
@dy=@dy*-1
end

if @y>=(self.height-@image.height)
@dy=@dy*-1



end

if Gosu::button_down? Gosu::KbLeft #
#
# HIER
@x1=@x1-2 #
@x2=@x2-2 #
end #





end




def draw

@x1=150
@x2=250
@y1=370
@y2=390


draw_quad(@x1,@y1,Gosu::Color::RED,
@x2,@y1,Gosu::Color::RED,
@x1,@y2,Gosu::Color::RED,
@x2,@y2,Gosu::Color::RED,0)

@image.draw @x,@y,0


end

end

window=MyWindow.new
window.show



danke für eure hilfe.

gruß hidden


Zuletzt geändert von NobbZ am 07 Okt 2016, 20:30, insgesamt 1-mal geändert.
code-tags ergänzt


Nach oben
 Profil  
 
BeitragVerfasst: 07 Okt 2016, 20:42 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Ich kenne keine Gosu spezifika, aber aus anderen Frameworks kenne ich die grobe Architektur, und dort ist es üblich in einer "update"-Methode alle Objekte in den nächsten Zustand zu überführen und in einer "draw"-Methode diese nur noch darzustellen.

In der "draw"-Methode sollten dabei nur Werte gelesen werden und nicht geschrieben. Schaue ich allerdings in deine "draw" sehe ich dort, dass du die Werte die du in der "update" veränderst mit festen Werten wieder überschreibst.

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

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
BeitragVerfasst: 10 Okt 2016, 08:52 
Offline
Nuby

Registriert: 07 Okt 2016, 13:13
Beiträge: 5
danke dir! du hast recht,... wenn ich die werte in der zeichnen funktion immer wieder auf die gleichen werte setze, kann es nicht gehen.

die werte dürfen in der update funktion nicht überschrieben werden. jetzt gehts. danke


Nach oben
 Profil  
 
BeitragVerfasst: 10 Okt 2016, 09:26 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Nein! Die Werte dürfen in der draw nicht überschrieben werden.

Bitte beachte die Hinweise die unter https://github.com/gosu/gosu/wiki/Window-Main-Loop zu finden sind!

Ausserdem versuche bitte ordentlich zu separieren.

Keyboard-handling zu den Events, Logik in die Update und in die Draw nur noch wirklich Darstellung!

Die Draw kann aufgerufen werden, ohne dass wirklich ein Tick-vergangen ist, zB weil das Fenster in dem Deine Anwendung läuft partiell verdeckt war und nun voll Sichtbar wird. Genau so, kann es aber passieren, dass die Draw mal einige Minuten gar nicht aufgerufen wird, weil dein Fenster vollständig verdeckt wird.

Die update dagegen wird garantiert aufgerufen und erhält in den meisten Frameworks die ich kenne auch noch Informationen darüber wie viel Zeit seit dem letzten Update vergangen sind. Diese Information ist in der Regel notwendig um Animationen zu erschaffen, die auch bei unterschiedlichen Belastungssituationen des Rechners immer gleich lang dauern.

_________________
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  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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: