If-Abfragen nicht hintereinander ausführbar

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Whitey

Betreff: If-Abfragen nicht hintereinander ausführbar

BeitragDo, Jul 24, 2008 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute Wink

muss für ein Uniprojekt ein bissl was proggen.
Man sollte dazu sagen das ich es nur als notlösung mache Wink

wie auch immer, hab mich so gut es geht selber eingearbeitet... klappt soweit auch ganz gut (dank robsite und einigen anderen tuts)

Bis ich auf ein mir völlig unerklärliches Problem gestossen bin.
Hab bestimmt schon um die hundert If-Abfragen in meinem Programm drin. Alle funktionieren sie wie sie sollen bis auf folgende:

Code: [AUSKLAPPEN]
If ImagesOverlap(cursoropen,MouseX(),MouseY(),d1, 120, 920) And GetMouse()=1  Then
buildstate=1
EndIf

If buildstate=1 Then
DrawImage d1,MouseX()+20, MouseY()+10
EndIf


If buildstate=1 And MouseDown(2) Then
Umgebung(MouseX()/50, MouseY()/50) = "12"
buildstate=0
EndIf

If ImagesOverlap(cursoropen,MouseX(),MouseY(),d2, 190, 920) And GetMouse()=1  Then
buildstate=2
EndIf   

If buildstate=2 Then
DrawImage d2,MouseX()+20, MouseY()+10
EndIf


If buildstate=2 And MouseDown(2) Then
Umgebung(MouseX()/50, MouseY()/50) = "13"
buildstate=0
EndIf


If ImagesOverlap(cursoropen,MouseX(),MouseY(),d3, 260, 920) And GetMouse()=1  Then
buildstate=3
EndIf   

If buildstate=3 Then
DrawImage d3,MouseX()+20, MouseY()+10
EndIf


If buildstate=3 And MouseDown(2) Then
Umgebung(MouseX()/50, MouseY()/50) = "14"
buildstate=0
EndIf

If ImagesOverlap(cursoropen,MouseX(),MouseY(),d4, 330, 920) And GetMouse()=1  Then
buildstate=4
EndIf   

If buildstate=4 Then
DrawImage d4,MouseX()+20, MouseY()+10
EndIf


If buildstate=4 And MouseDown(2) Then
Umgebung(MouseX()/50, MouseY()/50) = "15"
buildstate=0
EndIf


zusatzinfo: buildstate wird vor der schleife als buildstate=0 definiert


Was funktioniert nicht?

Er führt die ersten drei abfragen ohne problem durch, setzt den buildstate danach auch wieder auf 0
aber alle weiteren wollen nicht.
Wenn ich jetzt aber die Reihenfolge ändere (sprich die nächsten drei) vor die ersten drei setze funktionieren diese einwandfrei, die nachfolgenden jedoch wieder nicht.

Bisher wollte ich das immer alles selber lösen...aber da ich nur noch wenige Tage Zeit hab wird mir das zu riskant Sad

Und wenn ich so dreist sein darf Wink
hab bei der gleichen Abfrage noch ein Problem Wink
Und zwar funktioniert das ja momentan nur mit linksklick (getmouse=1) und dann rechtsklick(mousedown(2)) ... irgendwer ne Idee wie ich das mit zweimal linksklick hinkriege (so wie in nahezu jedem strategie spiel gebäude gebaut werden?

Mfg Whitey

Und schon mal vieeelen Dank im voraus!!!!
  • Zuletzt bearbeitet von Whitey am Do, Jul 24, 2008 21:36, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragDo, Jul 24, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich Mausklicks richtig abfragen ? wird dir helfen (sofern sich getmouse nicht zufällig anders verhält als mousehit), am besten alle Mausvariablen Global initialisieren und in jedem Durchlauf der Hauptschleife aktualisieren...

Ist buildstate nun Int oder String? buildstate=1 spricht für Int, buildstate="0" für String...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Whitey

BeitragDo, Jul 24, 2008 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hi Wink danke für die schnelle Antwort!

hab es mal mit mousehit versucht aber das wollte genauso wenig... das is aber nicht ganz so wichtig da werd ich mich schon reinfuchteln irgendwie...
ausser irgendwer hat ne super einfach lösung^^ aber das wird schon ...vllt krieg ichs ja hin wenn ich mir nochmal das mouseclick faq anschau.


wegen dem buildstate:

da buildstate nur in den paar zeilen benutzt wird is das ja an sich egal...habs mal als string und mal als integer getestet beides reagiert gleich.... hab auch schon für jedes 3er Set der If Abfragen eigene Statenamen gegeben um auf nummer sicher zu gehen aber das hat auch nicht geholfen

Edit: hab grade gesehen was du gemeint hast^^ die "0" sollte natürlich nur 0 sein... habs im ersten post geändert Wink is auch so im Programm drin


mfg Whitey

Blackside

BeitragFr, Jul 25, 2008 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier mal am anfang der Schleife Mousehit(1) zu definieren:
Code: [AUSKLAPPEN]

While Not KeyDown(1)
   
   mh = MouseHit(1)
   
   If mh = 1 Then
      Print "Test"
   End If
   
Wend


und mit den buildstate würde ich nicht jeden einzelnen mit if abfragen sondern:
Code: [AUSKLAPPEN]

Select buildstate
   Case 1
      ;Was wenn buildstate = 1
   Case 2
      ;Was wenn buildstate = 2...
   Default
      ;Wenn es keins von denen ist
End Select
Hier sollte eigentlich eine Signatur stehen!
 

Whitey

BeitragSa, Jul 26, 2008 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hey Wink hab jetzt beides anders gelöst ^^
Aber ohne deinen Ansatz wär ich nicht auf die Lösung gekommen !!! muchos grazias!!!
vielleicht nicht ganz optimal aber fürs erste reichts...und aufgrund des Zeitdrucks gehts nicht mehr anders...

Aber ich hab schon wieder ein Problem (lol...da schreibt man mittlerweile tausende Zeilen code und dann haperts auf einmal hintereinander grrr)

und zwar hat jemand eine Idee wie man folgendes Umsetzen kann (eigentlich müsste das einfach sein aber ich steh auf der Leitung:

Achtung Pseudocode!!!

Code: [AUSKLAPPEN]
 If Rechte Maustastegeklickt und gehalten und Maus sich in Richtung<x bewegt dann mache state=mauslinks
Else mache state=mausrechts


Hoffe das versteht man... habs mit Mousespeed versucht und hab auch versucht die Mauspositionen miteinander zu vergleichen aber das wollte beides nicht... jemand noch ne idee???

mfg Whitey

Der Eisvogel

BeitragSa, Jul 26, 2008 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich glaube du meinst sowas:
Code: [AUSKLAPPEN]
SetBuffer BackBuffer()
While Not KeyDown(1)
Cls
If MouseDown(1) And MouseXSpeed()<0 Then Text 0,0,"Links" : Else : Text 0,0,"Rechts"
Flip
Wend
End


Bei mir geht dieser Code.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group