Problem bei vergrössern eines Vierecks
Übersicht

TichaBetreff: Problem bei vergrössern eines Vierecks |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute
nach langem hin und her hab ich mich jetzt doch durchgerungen mir BlitzMax zu kaufen um mein Projekt in BM umzusetzen. Dafür würde ich aber gerne ein eigen geschreibens GUI integrieren. Das Projekt hat ähnlichkeit mit "Uplink" falss das jmd kennt, jedoch in einem ganz anderen Kontext. Es wäre ja langweilig das Menüs einfach plötzlch auftauchen oder einfach so erscheinen, deshalb habe ich daran gedacht Menüs einfach aufklappen zu lassen. Um dies zu üben versuche ich erstmal ein Viereck sich aufklappen zu lassen. Im Grunde denkt man es sei so einfach dass man einfach die Höhe und die Breite mit einer Variable vertauscht und die dann inkrementiert. Wenn ich das in einfach in die Main-Schleife hineinschreibe, funktioniert das auch ohne probleme. Aber dieses Quadrat soll sich ja auf Knopfdruck vergrössern. Somit habe ich Q als ausgangs Input zur aktivierung dessen genommen und eine IF abfrage davor gesetzt, daraufhin wird dann eine For schleife aktiviert die dann wiederum die variabeln inkrementiert. Naja nur funktioniert das ganze nicht so wie ich es will. 1. Der Zähler läuft erst druch ohn auch nur das Quadrat zu zeiogen, stellt es aber nachdem er durchgelaufen ist kruz dar. Man sieht aber keienn grafischen effekt 2. Das Quadrat verschwindet direkt wieder, logisch da sobald das For durchgelaufen ist und das Quadrat angeteigt wurde, dieses auch sofort wieder verschwindert da ein CLS initialisiert wurde. Aber wie kann ich das ändern? Was muss ich tun das das Quadrat auch danach wieder stehen bleibt? Hier der Code Code: [AUSKLAPPEN] Global i# , a# , b# Global laenge#, breite# laenge = 0 breite = 0 While Not KeyHit( KEY_ESCAPE ) Cls 'DrawImage(Bild:TImage[i],0,0) 'If KeyHit (KEY_I) i = 0 'EndIf 'If KeyHit (KEY_O) i = 1 'EndIf 'If KeyHit (KEY_P) i = 2 'EndIf 'DrawRect( 350, 200 , laenge , breite ) If KeyHit (KEY_Q) While breite < 300 'Cls laenge = laenge + 1 breite = breite + 1 DrawRect( 350, 200 , laenge , breite ) Wend EndIf DrawRect (350, 200, laenge, breite) Flip Wend Die ausgeklammerten Programierzeilen sollen die vorigen versuche darstellen mit denen ich es schon versucht habe :-I |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Rechteck wird in einem While gezeichnet, was bedeutet das er nicht ausgegeben wird, außer das Endresultat da nach dem While in der Hauptschleife erst ein Flip kommt.
Am besten wäre es wenn du eine Status variable hast, die sagt ob es jetzt Erscheinen oder nicht erscheinen soll. (hier "fade") Wenn der Status auf Erscheinen ist soll pro Schleifendurchgang das Rechteck vergrößert werden. Code: [AUSKLAPPEN] Framework BRL.GLMax2D
Graphics 800,600 Global i# , a# , b# Global laenge#, breite# Global fade:Byte laenge = 0 breite = 0 While Not KeyHit( KEY_ESCAPE ) Cls If KeyHit(KEY_Q) fade=True If fade If breite < 300 laenge = laenge + 1 breite = breite + 1 DrawRect( 350, 200 , laenge , breite ) Else DrawRect (350, 200, laenge, breite) EndIf EndIf Flip Wend Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
Ticha |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey cool danke. Ich werde mich wohl erst ein bisschen an BM gewöhnen müssen. Hab auch schon mit einer funktion versucht aber ohne viel erfolg. Danke für dein beispeil es hat mir sehr weitergeholfen ![]() EDIT: Ich hab einen Fehler in deinem Code gefunden. Das Quadrat imkrementtiert zwar nur gibt es dabei ein kleines Problem. Es hört nicht mehr auf. Ich habe schon versucht das fade im ELSE teil auf FALSE zu stellen... nur da tut sich gar nix :-I gibt es in BM nich sowas wie Break? was muss ich tun um das inkremntieren zu stoppen? EDIT2: sry war fehler von mir. Hab falsch herum inkrementiert :-I Nur is wieder das Problem aufgetreten wie vorher das das Viereck einfach verschwindet. Wie kann ich das Beheben? EDIT3: hat sich auch erledigt... hatte ein fehler eingebaut-. Dein Code fuktioniert zu 100% danke nochma ![]() |
||
Ticha |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jetzt habe ich versucht das mit der Maus zu kombinieren. Dazu hab ich extra 2 Variaben für die X,Y Koordinaten der Maus zusammengestellt. MausX und MAusY.
Als nächstes wollte ich, dass wenn die Maus über einen bestimmten Breich geht, das Viereck sich vergrössert und wenn die Maus nicht mehr drüber ist verkleinert es sich wieder. Aber irgendwie funktioniert das nicht ganz. Ich habe die Wert der Y achse auf ein niedriges Niveu gehalten aber irgednwie scheint er mir in dieser Fläche die Y achse nicht auf die Fläche zu begrenzen die ich eigentlich benutzen bzw als Aktionsfläche benutzen will. hier der Code dazu: Code: [AUSKLAPPEN] mausx = MouseX() mausy = MouseY() 'if KeyHit(KEY_Q) fade = True 'if KeyHit(Key_W) fade = False If mausx >= 100 Or mausx <= 200 And mausy >= 500 Or mausy <= 450 fade=False Else fade=True EndIf wo liegt mein Fehler? |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist nichts weiter als eine kleine Abfrage nach der Breite. ![]() Ich hab den Code ein bisschen übersichtlicher gemacht (für mich). Code: [AUSKLAPPEN] Framework BRL.GLMax2D
Graphics 800,600 Global i# , a# , b# Global laenge#, breite# Global fade:Byte laenge = 0 breite = 0 While Not KeyHit( KEY_ESCAPE ) Cls If MouseX()>100 And MouseX()<200 And MouseY()>100 And MouseY()<200 fade = True Else fade = False EndIf SetColor 255,0,0 DrawRect 100,100,100,100 SetColor 255,255,255 If fade If laenge<300 laenge:+1 If breite<300 breite:+1 Else If laenge>0 laenge:-1 If breite>0 breite:-1 EndIf DrawRect (350, 200, laenge, breite) Flip Wend Ich denke der Code erklärt alles. Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
Ticha |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey cool danke ![]() ich dachte ich muss das mit OR unterscheiden...aber jetzt macht das auch Sinn ![]() danke für deine Hilfe ![]() ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group