Noob braucht Hilfe
Übersicht

GastBetreff: Noob braucht Hilfe |
![]() Antworten mit Zitat |
|
---|---|---|
Hi, also das ist mein erster Beitrag. Ich bin noch ein totaler Blitz Newbie und hab volgendes Problem:
Wenn man das Programm startet erscheint das Image "start". Wenn man jetzt darauf klickt, sollte die Schleife beendet werden. Aber es gibt keine Reaktion. Könnte mir bitte jemand helfen und sagen wo der Fehler ist? Hier ist der Code: Code: [AUSKLAPPEN] Graphics 1024, 768, 16, 3 SetBuffer BackBuffer() Global befehl = 1 ;Wenn befehl = 0, dann Ende der Hauptschleife Global menue = 1 ;Zum oeffnen des Menues beim Start Global mouse = LoadImage("mouse.bmp") ;Laedt Image fuer den Mauszeiger Function menu() ;Menue befehl2 = 1 Repeat ClsColor 0, 0, 0 Cls ;Laedt Menueteile ;allgemein optionEnd = LoadImage("ende.bmp") DrawImage optionEnd, 40, 700 ;Erste Anwendung start = LoadImage("optionen1.bmp") If menue = 1 Then DrawImage start, 50, 100 EndIf ;Wiederholte Anwendung zu = LoadImage("optionen2.bmp") If menue = 0 Then DrawImage zu, 50, 500 EndIf ;Zeichnet Mauszeiger DrawImage mouse, MouseX(), MouseY() ;Kontrolliert Menueauswahl ;allgemein If ImagesOverlap(optionEnd, 40, 700, mouse, MouseX(), MouseY()) And MouseHit(1) Then befehl = 0 EndIf ;Erste Anwendung If menue = 1 Then If ImagesOverlap(start, 50, 100, mouse, MouseX(), MouseY()) And MouseHit(1) Then befehl2 = 0 EndIf EndIf Flip Until KeyHit(1) Or befehl = 0 Or befehl2 = 0 FlushKeys FlushMouse End Function Repeat ;Oeffnet Menue If KeyHit(1) Or menue = 1 Then menu() EndIf ;Gibt an, ob dass Menue offen war menue = 0 Cls DrawImage mouse, MouseX(), MouseY() ;Zeichnet Mauszeiger Flip Until befehl = 0 FlushKeys FlushMouse End |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
jede variable ist am anfang 0 (sprich:NULL)
damit bleibt die variable befehl2 0 und wird auch bis zum schleifenende nicht geändert somit ist es auch bei der abfrage 0 und somit wird die schleife beendet |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Shark
Versuche das mal so umzuändern das das Menü nicht in einer Funktion stecken bleibt in Repeat Until . Was ich meine ist eine Hauptschleife reicht und dort das Menü aufrufen/anzeigen/abfragen wenn es offen ist . |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
meins war falsch, schuldige!
Hab aber den Fehler gefunden Wie kann man so noobig sein und in die Hauptschleife LoadImage setzen ![]() [edit] wieso zeichnest du zweimal den mauszeiger?? [edit2] HAbs optimiert: Code: [AUSKLAPPEN] Graphics 1024, 768, 16, 3
SetBuffer BackBuffer() Global befehl = 1 ;Wenn befehl = 0, dann Ende der Hauptschleife Global menue = 1 ;Zum oeffnen des Menues beim Start Global mouse = LoadImage("mouse.bmp") ;Laedt Image fuer den Mauszeiger Function menu() ;Menue befehl2 = 1 optionEnd = LoadImage("ende.bmp") start = LoadImage("optionen1.bmp") zu = LoadImage("optionen2.bmp") ClsColor 0, 0, 0 Repeat Cls ;Laedt Menueteile ;allgemein DrawImage optionEnd, 40, 700 ;Erste Anwendung If menue = 1 Then DrawImage start, 50, 100 EndIf ;Wiederholte Anwendung If menue = 0 Then DrawImage zu, 50, 500 EndIf ;Zeichnet Mauszeiger DrawImage mouse, MouseX(), MouseY() ;Kontrolliert Menueauswahl ;allgemein If ImagesOverlap(optionEnd, 40, 700, mouse, MouseX(), MouseY()) And MouseHit(1) Then befehl = 0 EndIf ;Erste Anwendung If menue = 1 Then If ImagesOverlap(start, 50, 100, mouse, MouseX(), MouseY()) And MouseHit(1) Then befehl2 = 0 EndIf EndIf Flip Until KeyHit(1) Or befehl = 0 Or befehl2 = 0 FlushKeys FlushMouse End Function Repeat ;Oeffnet Menue If KeyHit(1) Or menue = 1 Then menu() EndIf ;Gibt an, ob dass Menue offen war ;menue = 0;<-------------Das WEGGGGGGGGGGGGGGGGGGGG!!!!!!!!!!!!!!!!!! Cls DrawImage mouse, MouseX(), MouseY() ;Zeichnet Mauszeiger Flip Until befehl = 0 FlushKeys FlushMouse End |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
- Zuletzt bearbeitet von Kryan am Mi, Mai 19, 2004 19:36, insgesamt einmal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
kryan, lach nit zu laut.
Jeder hat mal angefangen - auch du. Und deine Codes sind mit Verlaub auch nit immer sehr Pro... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Na, so meinte ich es ja nicht
Nicht sooooooooooooo fies ![]() @Shark Hoffenlich klappt es jetzt |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
sry, aber wenn ich deinen Code verwende und auf Start drücke, dann passiert immer noch nix. ![]() Ich kapier das nicht, da vom logischen Ablauf alles stimmen müsste, glaub ich zumindest ![]() |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich denk mal dass es dadran liegt, dass du die Funktion immer wieder aufrufst ![]() Die Funktion selbst stimmt zwar, aber sie wird sofort neu aufgerufen wenn du sie einmal beendet hast, ohne dass du etwas davon merkst. |
||
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das glaube ich nicht. Das wäre doch nur der Fall, wenn das Menü ohne Bedingung aufgerufen wird. Es gibt aber eine Bedingung:
Code: [AUSKLAPPEN] If KeyHit(1) Or menue = 1 Then menu() EndIf Außerdem in der Funktion: Code: [AUSKLAPPEN] FlushKeys |
||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nur ist die Bedingung immer wahr ![]() |
||
tipfehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du überprüfst die Kollision mit folgendem Code:
Code: [AUSKLAPPEN] ;Kontrolliert Menueauswahl allgemein If ImagesOverlap(optionEnd, 40, 700, mouse, MouseX(), MouseY()) And MouseHit(1) Then befehl = 0 EndIf ;Erste Anwendung If menue = 1 Then If ImagesOverlap(start, 50, 100, mouse, MouseX(), MouseY()) And MouseHit(1) Then befehl2 = 0 EndIf EndIf Doch MouseHit(1) überprüft, ob die Maus seit dem letzten Aufruf dieses Befehls gedrückt wurde. Und da die erste Überprüfung immer abläuft, musst du immer zwischen diesen zwei Befehlen die Maus drücken, und das ist fast unmöglich. versuch's mal so: Code: [AUSKLAPPEN] If Mousehit(1) Then If ImagesOverlap(optionEnd, 40, 700, mouse, MouseX(), MouseY()) Then befehl = 0 EndIf If menue = 1 Then If ImagesOverlap(start, 50, 100, mouse, MouseX(), MouseY()) Then befehl2 = 0 EndIf EndIf EndIf |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group