Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Maus, Rechteck zeichnen[gelöst],neues Problem mit Beenden
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 13.03.2010, 21:36    Titel: Maus, Rechteck zeichnen[gelöst],neues Problem mit Beenden Antworten mit Zitat

Hi, gleich das nächste Problem. Ich möchte, dass man mit der Maus bei gedrückter linker Maustaste, ein Rechteck zeichnen kann(wie man es auf dem Desktop auch machen kann). Dazu habe ich folgendes gemacht:
Code:
if buttons and 1 then
   tx=mousex
   ty=mousey
   line(tx,ty)-(mousex-tx,mousey-ty),&hFFFFFF,B
end if
Put (mousex,mousey),mousep,Trans

mousex und mousey sind die Koordinaten der Maus, mousep ist das Mausbild.

Mein Problem ist folgendes: Immer wenn ich versuche ein Rechteck zu zeichnen, fängt es in der linken oberen Ecke an, und nicht an der Mausposition, Was habe ich also falsch gemacht?


Zuletzt bearbeitet von Westbeam am 20.03.2010, 16:30, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 13.03.2010, 21:45    Titel: Antworten mit Zitat

du verwechselst line und line step
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 13.03.2010, 21:54    Titel: Antworten mit Zitat

Meinst du das Gummiband (falls das noch so heißt)?
Code:
dim as integer tx, ty, mousex, mousey, buttons
getmouse mousex, mousey,, buttons
if buttons = 1 then
   ' Startposition festlegen
   tx = mousex
   ty = mousey
   ' Gummiband ziehen
   do while buttons and 1
      getmouse mousex, mousey,, buttons
      line(tx,ty)-(mousex,mousey),&hFFFFFF,B
      sleep 1
      line(tx,ty)-(mousex,mousey),0,B
   loop
end if

Ich habe mal buttons = 1 statt buttons AND 1 genommen, weil ich mich sonst auch außerhalb des Fensters (buttons == -1) "die Maustaste drücke".
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 13.03.2010, 22:02    Titel: Antworten mit Zitat

@nemored
Ja, so ungefähr. Allerdings hängt sich dein Beispiel bei mir kurz auf. Danach erscheint kurz ein schwarzer Kasten und dann läuft das Programm weiter ...

@MisterD
Wie wende ich Line Step an?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 13.03.2010, 22:35    Titel: Antworten mit Zitat

Code:
LINE(startX,startY)-step(laenge,breite)

(genaueres siehe Referenz)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 13.03.2010, 23:03    Titel: Antworten mit Zitat

Ich habe das jetzt so gemacht:
Code:
LINE (tx,ty)-step(mousex,mousey),&hFFFFFF,B


Das entspricht schon etwas mehr meinen Vorstellungen. Aber die Maus soll unten rechts in der ecke des zeichnende Dreiecks sein, während es gezeichnet wird, und nicht links oben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 14.03.2010, 00:14    Titel: Antworten mit Zitat

Das wundert mich nicht ...
Hast du den Referenzeintrag gelesen?
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 14.03.2010, 12:25    Titel: Antworten mit Zitat

Ja
Da steht(bei Step), dass die Ausgabe sich relativ zur aktuellen Mausposition verhält. Das bedeutend unhilfreich. Das Problem ist, dass sich die Variablen tx und ty sich verändern, also sie haben den selben Wert wie mousex und mousey und sie verändern sich so auch. Das sollen sie aber nicht, deswegen habe ich versucht, sie als Konstanten(mit Const) zu benutzen, das funktioniert aber leider auch nicht:
Code:
const as integer tx=mousex
const as integer ty=mousey
if buttons and 1 and mousex>20 then
   LINE (tx,ty)-step(mousex,mousey),&hFFFFFF,B
end if
Put (mousex,mousey),mousep,Trans

Gibt bei mir den Error: unbenannt.bas(114) error 11: Expected constant, tx in 'const as integer tx=mousex'. Ich bin aber sicher, dass es auch ohne Konstanten gehen muss. Ich habe mir einen alten BltizBasic-Code angeschaut, da wird das so gelöst, wie ich es am Anfang hatte(nur das das ja in FreeBasic nicht funktioniert):
Code:
Local mx, my, tx, ty



While Not KeyHit( 1 )
   Cls
   DrawImage mouse,MouseX(),MouseY()

   mx = MouseX( )
   my = MouseY( )

   If MouseHit( 1 )
      tx = mx
      ty = my
   EndIf

   If MouseDown( 1 )
      Rect tx, ty, mx-tx, my-ty,0
   EndIf

   Flip
Wend

End
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 14.03.2010, 13:52    Titel: Antworten mit Zitat

Mit Const geht es nicht, weil einer Konstante nur ein fester Wert zugeordnet werden kann, deswegen auch Const = Konstante.

Der Code von nemored funktioniert doch prima, hab ihn etwas ausgebaut, damit ein fertiges Programm entsteht:
Code:
ScreenRes 200, 200, 32
Dim As Integer tx, ty, mousex, mousey, buttons

Do
   GetMouse mousex, mousey,, buttons
   If buttons = 1 Then
      ' Startposition festlegen
      tx = mousex
      ty = mousey
      ' Gummiband ziehen
      Do While buttons And 1
         GetMouse mousex, mousey,, buttons
         Line(tx, ty)-(mousex, mousey), &hFFFFFF, B
         Sleep 1
         Line(tx, ty)-(mousex, mousey), &h000000, B
      Loop
   End If
   Sleep 1
Loop Until InKey = "a"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 14.03.2010, 14:20    Titel: Antworten mit Zitat

Ich habe aber die Maus ausgestellt und eine eigene Maus wird geladen(Put (mousex,mousey),mousep,Trans), wenn ich also ein Rechteck zeichnen will, bleibt die Maus trotzdem in der linken oberen Ecke. traurig

Dein Lösungsversuch ist ja ganz gut, aber ich schreibe eine (DOS)GUI. Da bei DOS standardmäßig kein Mauszeiger vorhanden ist, muss ich einen eigenen zeigen. So, das ist der ganze Code:
Code:
Screen 18,24,2

dim shared as string taste,dateiname,dateiname2,mouse,dateiname22
dim as integer breit,hoch,breit2,hoch2,mouseb,mouseh,breit22,hoch22
dim shared as integer mousex,mousey,buttons,menu,tx,ty

Dim As Integer ff = Freefile 'Anfrage welcher Übertragungsweg ist frei?
dateiname="Gfx/PANEL.bmp"
Open dateiname For Input As #ff 'öffne die Datei zum lesen
Get #ff, 19, breit 'Breite aus der BMP-Datei auslesen
Get #ff, 23, hoch 'Höhe aus der BMP-Datei auslesen
Close #ff 'schließe die Datei

Dim As Integer fm = Freefile 'Anfrage welcher Übertragungsweg ist frei?
mouse="Gfx/MOUSE.bmp"
Open mouse For Input As #fm 'öffne die Datei zum lesen
Get #fm, 19, mouseb 'Breite aus der BMP-Datei auslesen
Get #fm, 23, mouseh 'Höhe aus der BMP-Datei auslesen
Close #fm 'schließe die Datei

Dim As Integer ff2 = Freefile 'Anfrage welcher Übertragungsweg ist frei?
dateiname2="Gfx/B1.bmp"
Open dateiname2 For Input As #ff2 'öffne die Datei zum lesen
Get #ff2, 19, breit2 'Breite aus der BMP-Datei auslesen
Get #ff2, 23, hoch2 'Höhe aus der BMP-Datei auslesen
Close #ff2 'schließe die Datei

Dim As Integer ff3 = Freefile 'Anfrage welcher Übertragungsweg ist frei?
dateiname22="Gfx/B2.bmp"
Open dateiname22 For Input As #ff3 'öffne die Datei zum lesen
Get #ff3, 19, breit22 'Breite aus der BMP-Datei auslesen
Get #ff3, 23, hoch22 'Höhe aus der BMP-Datei auslesen
Close #ff3 'schließe die Datei

Dim shared bild As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
bild = ImageCreate(breit,hoch) 'reserviert und berechnet den erforderlichen Speicher
'und gibt an den Zeiger die Adresse des reservierten Speichers. 'lade das Bild in den Speicher, der Zeiger 'bild' hat die Adresse.

Dim shared bild2 As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
bild2 = ImageCreate(breit2,hoch2)

Dim shared bild22 As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
bild22 = ImageCreate(breit22,hoch22)

Dim shared mousep As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
mousep = ImageCreate(mouseb,mouseh)

Type sysinfo
uptime As Long
loads(2) As ULong
totalram As ULong
freeram As ulong
sharedram As ULong
bufferram As ULong
totalswap As ULong
freeswap As ULong
procs As UShort
f(22) As UByte
End Type


Declare Function Info CDecl Alias "sysinfo" (ByRef Return As sysinfo) As Integer

Dim MySysInfo As sysinfo

info mysysinfo

Function set_fbfont (ByVal x As Integer) As Integer
Dim As Integer breit2, hoch2
ScreenInfo breit2, hoch2
Select Case x
Case 8, 14, 16 'nur 8, 14 oder 16 funktioniert richtig
Width breit2\8, hoch2\x ' hier wird auto. Cls ausgeführt
Case Else
Return 0 'etwas lief schief
End Select
Return 1 'Font erfolgreich gesetzt
End Function
set_fbfont(8)
Bload dateiname, bild
bload dateiname2,bild2
bload dateiname22, bild22
bload mouse, mousep

setmouse 310,230,0
do
   info mysysinfo
   getmouse mousex,mousey,,buttons
   taste=inkey()
   IF buttons = 1 THEN
      ' Startposition festlegen
      tx = mousex
      ty = mousey
      ' Gummiband ziehen
      DO WHILE mousex>20 and buttons AND 1
         GETMOUSE mousex, mousey,, buttons
         LINE(tx, ty)-(mousex, mousey), &hFFFFFF, B
         SLEEP 1
         LINE(tx, ty)-(mousex, mousey), &h0054A8, B
      LOOP
     end if
   screenlock
      cls
      Put(0,460), bild
      put (0,460), bild2,Trans
      Line(0,0)-(640,459),&h0054A8,BF   
      Color &h000000   
      Draw String (460,466), Date
      Draw String (570,466), Time
      Draw string (46,466), "DESTOP GUI[V.0.0.2]"
      with mysysinfo
         Draw String (240,466),"Freier RAM: "&.freeram &" KB"
      end with
      if mousex<20 and mousey>460 and buttons and 1 and menu=0 then
         menu=1
         sleep 150
      elseif mousex<20 and mousey>460 and buttons and 1 and menu=1 then
         menu=0
         sleep 150
      end if
      if menu=1 then
         Put (0,460),bild22,Trans
      elseif menu=0 then
         Put (0,460),bild2,Trans
      end if
      'const as integer tx=mousex
      'const as integer ty=mousey
      'if buttons and 1 and mousex>20 then
      '   LINE (tx,ty)-step(mousex,mousey),&hFFFFFF,B
      'end if
      Put (mousex,mousey),mousep,Trans
   screenunlock
   sleep 1
loop until taste=chr(27)

imagedestroy mousep
imagedestroy bild
imagedestroy bild2
imagedestroy bild22
End
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 14.03.2010, 14:25    Titel: Antworten mit Zitat

Zur Erläuterung des Codes:
Wenn die Maustaste niedergedrückt wird, dann - und nur dann - werden tx und ty auf die aktuelle Mauskoordinaten gesetzt. Solange die Maustaste gedrückt ist (wir befinden uns innerhalb der zweiten Schleife) werden zwar weiterhin die Mauskoordinaten abgefragt, aber eben nicht tx und ty neugesetzt. Das heißt, der Startpunkt bleibt gleich, der Endpunkt liegt bei der aktuellen Mausposition.

edit: ist schon wieder nicht mehr aktuell ... cool Aber jetzt ist zumindest die Problemstellung klarer.


edit2
Dass die Maus nicht mitwandert, liegt daran, dass du sie im Bereich
Code:
' Gummiband ziehen
      DO WHILE mousex>20 AND buttons AND 1
         GETMOUSE mousex, mousey,, buttons
         LINE(tx, ty)-(mousex, mousey), &hFFFFFF, B
         SLEEP 1
         LINE(tx, ty)-(mousex, mousey), &h0054A8, B
      LOOP

ebenfalls (nach dem GETMOUSE) neu zeichnen musst.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 14.03.2010, 14:59    Titel: Antworten mit Zitat

Hm, ja. Ich habs jetzt. So hab ichs gemacht(der ganze Code):
Code:
Screen 18,24,2

dim shared as string taste,dateiname,dateiname2,mouse,dateiname22
dim shared as integer breit,hoch,breit2,hoch2,mouseb,mouseh,breit22,hoch22
dim shared as integer mousex,mousey,buttons,menu,tx,ty
declare sub machbild()

Dim As Integer ff = Freefile 'Anfrage welcher Übertragungsweg ist frei?
dateiname="Gfx/PANEL.bmp"
Open dateiname For Input As #ff 'öffne die Datei zum lesen
Get #ff, 19, breit 'Breite aus der BMP-Datei auslesen
Get #ff, 23, hoch 'Höhe aus der BMP-Datei auslesen
Close #ff 'schließe die Datei

Dim As Integer fm = Freefile 'Anfrage welcher Übertragungsweg ist frei?
mouse="Gfx/MOUSE.bmp"
Open mouse For Input As #fm 'öffne die Datei zum lesen
Get #fm, 19, mouseb 'Breite aus der BMP-Datei auslesen
Get #fm, 23, mouseh 'Höhe aus der BMP-Datei auslesen
Close #fm 'schließe die Datei

Dim As Integer ff2 = Freefile 'Anfrage welcher Übertragungsweg ist frei?
dateiname2="Gfx/B1.bmp"
Open dateiname2 For Input As #ff2 'öffne die Datei zum lesen
Get #ff2, 19, breit2 'Breite aus der BMP-Datei auslesen
Get #ff2, 23, hoch2 'Höhe aus der BMP-Datei auslesen
Close #ff2 'schließe die Datei

Dim As Integer ff3 = Freefile 'Anfrage welcher Übertragungsweg ist frei?
dateiname22="Gfx/B2.bmp"
Open dateiname22 For Input As #ff3 'öffne die Datei zum lesen
Get #ff3, 19, breit22 'Breite aus der BMP-Datei auslesen
Get #ff3, 23, hoch22 'Höhe aus der BMP-Datei auslesen
Close #ff3 'schließe die Datei

Dim shared bild As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
bild = ImageCreate(breit,hoch) 'reserviert und berechnet den erforderlichen Speicher
'und gibt an den Zeiger die Adresse des reservierten Speichers. 'lade das Bild in den Speicher, der Zeiger 'bild' hat die Adresse.

Dim shared bild2 As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
bild2 = ImageCreate(breit2,hoch2)

Dim shared bild22 As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
bild22 = ImageCreate(breit22,hoch22)

Dim shared mousep As Any Ptr 'Zeiger erstellen der die Bildadresse speichert
mousep = ImageCreate(mouseb,mouseh)

Type sysinfo
uptime As Long
loads(2) As ULong
totalram As ULong
freeram As ulong
sharedram As ULong
bufferram As ULong
totalswap As ULong
freeswap As ULong
procs As UShort
f(22) As UByte
End Type


Declare Function Info CDecl Alias "sysinfo" (ByRef Return As sysinfo) As Integer

Dim shared MySysInfo As sysinfo

info mysysinfo

Function set_fbfont (ByVal x As Integer) As Integer
Dim As Integer breit2, hoch2
ScreenInfo breit2, hoch2
Select Case x
Case 8, 14, 16 'nur 8, 14 oder 16 funktioniert richtig
Width breit2\8, hoch2\x ' hier wird auto. Cls ausgeführt
Case Else
Return 0 'etwas lief schief
End Select
Return 1 'Font erfolgreich gesetzt
End Function
set_fbfont(8)
Bload dateiname, bild
bload dateiname2,bild2
bload dateiname22, bild22
bload mouse, mousep

setmouse 310,230,0
do
   info mysysinfo
   getmouse mousex,mousey,,buttons
   taste=inkey()
   IF buttons = 1 THEN
      ' Startposition festlegen
      tx = mousex
      ty = mousey
      ' Gummiband ziehen
      DO WHILE mousex>20 and buttons AND 1
         GETMOUSE mousex, mousey,, buttons
         screenlock
         machbild()
       screenunlock
         LINE(tx, ty)-(mousex, mousey), &hFFFFFF, B
         SLEEP 1
         LINE(tx, ty)-(mousex, mousey), &h0054A8, B
      LOOP
     end if
   screenlock
      machbild()
   screenunlock
   sleep 1
loop until taste=chr(27)

imagedestroy mousep
imagedestroy bild
imagedestroy bild2
imagedestroy bild22
End

Sub machbild()
      cls
      Put(0,460), bild
      put (0,460), bild2,Trans
      Line(0,0)-(640,459),&h0054A8,BF   
      Color &h000000   
      Draw String (460,466), Date
      Draw String (570,466), Time
      Draw string (46,466), "DESTOP GUI[V.0.0.2]"
      with mysysinfo
         Draw String (240,466),"Freier RAM: "&.freeram &" KB"
      end with
      if mousex<20 and mousey>460 and buttons and 1 and menu=0 then
         menu=1
         sleep 150
      elseif mousex<20 and mousey>460 and buttons and 1 and menu=1 then
         menu=0
         sleep 150
      end if
      if menu=1 then
         Put (0,460),bild22,Trans
      elseif menu=0 then
         Put (0,460),bild2,Trans
      end if
      'const as integer tx=mousex
      'const as integer ty=mousey
      'if buttons and 1 and mousex>20 then
      '   LINE (tx,ty)-step(mousex,mousey),&hFFFFFF,B
      'end if
      Put (mousex,mousey),mousep,Trans
end sub

'until mousex<20 and mousey>460 and buttons and 1


Funktioniert besser als der BlitzBasic-Code grinsen

Danke, dass ihr euch die Zeit genommen habt, mir zu helfen. Ich weiß, ich kann schwierig sein. zwinkern

EDIT: Gleich ein neues Problem. Ich möchte bei geöffneten Menü und einem Druck auf einen Menüeintrag, sich das Programm beendet. Dazu habe ich folgende Zeile als Schleifenende:
Code:
loop until (menu=1 and mousex>4 and mousex<94 and mousey>448 and mousey<456 and buttons=1) or (taste=chr(27))

Leider passiert garnichts, wenn ich auf den Menüeintrag klicke(der an der Position ist, die angegeben wurde). Ich kann das Programm lediglich über die Escape-Taste beenden. verwundert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 14.03.2010, 22:46    Titel: Antworten mit Zitat

menu = 1 tritt wohl nur ein, wenn mousex < 20, wenn ich das beim Überfliegen richtig gesehen habe:
Code:
if mousex<20 and mousey>460 and buttons and 1 and menu=0 then
   menu=1
   sleep 150
[...]

Dann wäre der ganze Bereich 20<=mousex<94 nicht betroffen.

[edit: noch schlimmer - du bist ja gar nicht im richtigen mousey-Bereich! mousey<456 versus mousey>460]

Nebenbei was anderes: Ich würde das lieber als
Code:
if mousex<20 and mousey>460 and (buttons and 1) = 1 and menu=0 then

schreiben, damit dir nicht irgendwann die bitweise Verknüpfung einen Strich durch die Rechnung macht.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.03.2010, 23:08    Titel: Antworten mit Zitat

Zitat:
...damit dir nicht irgendwann die bitweise Verknüpfung einen Strich durch die Rechnung macht.

...Hab ich ihm in einem anderen Thread auch schon empfohlen, aber scheint ihm ja scheinbar nichts zu machen!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 19.03.2010, 16:50    Titel: Antworten mit Zitat

@nemored
Das klappt aber so, wie es da steht. Mein Problem liegt bei der Zeile wo die Schleife endet (loop until ...). Da passiert leider gar nichts neutral
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 19.03.2010, 18:01    Titel: Antworten mit Zitat

Genau auf diese LOOP beziehe ich mich. Der Fehler entsteht aber nun mal schon vorher. Bzw. im Zusammenspiel beider Zeilen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 19.03.2010, 19:29    Titel: Antworten mit Zitat

Naja Westbeam, solange es läuft, sollte man nicht auf andere und erfahrenere Leute hören.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 20.03.2010, 10:22    Titel: Antworten mit Zitat

Es soll sich aber nicht beenden, wenn man auf bild2 klickt, sondern wenn man auf den Schriftzug "Beenden" klickt. Und der ist nun einmal an der angegebenen Position zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 20.03.2010, 11:27    Titel: Antworten mit Zitat

Das mag ja sein, aber du erwartest beim LOOP ein menu=1, und aufgrund deines Codes ist, wenn sich die Maus an der gewünschten Position befindet, eben menu<>1. Du prüfst auf eine Bedingung, die nie eintritt.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 20.03.2010, 14:18    Titel: Antworten mit Zitat

Das menu ist aber 1. Sonst würde es nicht da sein.
Das ganze funktioniert auch ohne menu=1 nicht:
Code:
if (mousex>583 and mousex<615 and mousey>428 and mousey<460 and buttons=1) then quit()

sub quit()
imagedestroy progpic
imagedestroy quitpic
imagedestroy aboutpic
imagedestroy mousepic
end
end sub

Ich habe ein Icon für das Beenden gemacht, welches an x=583 und y=428 angezeigt wird. Diesmal hängt sich das ganze Programm auf. Komisch ist nur das folgendes sich nicht aufhängt:
Code:
if (mousex>583 and mousex<615 and mousey>428 and mousey<460 and buttons=1) then draw string(100,100),"Test"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz