Mousehit-Problem
Übersicht

BigfreddyBetreff: Mousehit-Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab keine Ahnung, warum mir die Lösung nicht einfällt(, vielleicht, weil ich beim Landesfestval NM unter Zeitdruck steh)
Also hier der Code: Code: [AUSKLAPPEN] Function spiel() Bildhoehe=400 Bildbreite=300 Local freddy,malik,bild,zeit,druck1,druck3,score freddy=LoadImage("C:\Blitzbasic\bin\freddy_bild.bmp") malik=LoadImage("C:\Blitzbasic\bin\malik_bild.bmp") zeit=3000 Repeat SetBuffer BackBuffer() Color 255,255,255 ClsColor 0,0,0 Cls Delay 200 Rect 20,20,bildbreite+5,bildhoehe+5 Rect 450,20,bildbreite+5,bildhoehe+5 bild=Rnd(0,1) If bild=0 Then DrawImage malik,23,23 If bild=1 Then DrawImage freddy,453,23 Color 255,255,0 Text 40,500,"Punktestand: "+score Flip MouseHit(1) MouseHit(3) anfang=MilliSecs() While MilliSecs()<anfang+zeit Wend SetBuffer BackBuffer() Cls Text 20,50,""+MouseHit(1) Text 200,50,""+MouseHit(3) Flip Delay 200 Until KeyHit(1) auswahl_menue End Function Hier: Text 20,50,""+MouseHit(1) Text 200,50,""+MouseHit(3) zeigt er (meistens (nur ganz selten mal)) nur Nullen an! Ich hoffe auf schnelle Hilfe! Und sag schonmal Danke! |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja weil du nicht draufdrückst auf die maus nehm ich an...
wenn du draufdrückst wird doch wahrscheinlich 200 millisekunden eine 1 angezeigt, oder? naja, abgesehen davon ist der code auch müll. Mehrmals in einer schleife Clst du und flipst... |
||
D²O |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vieleicht weil Mousehit() nur einmal min der schleife aktiviert ist und beim nächsten schleifendurchgang wieder 0 ist, auch wenn die Mousetaste immer noch gedrückt ist ![]() Der schleifen durchgang ist so schnell das Dein Auge das gar nicht mit bekommt das da mal ne 1 war. Benutzmal anstatt mousehit() das Mousedown() dan wirst Du sehen das sich doch was Tut oder mach einen counter ala "if moushit() Then a = a + 1" Dann solltest Du die Funktionen lieber einer Variablen übergeben, mouse1 = mousehit(1).. ... Aber ich Denke, wenn man so den Code anschaut, musst Du noch einiges Lernen ![]() (Ist nicht Böse gemeint ![]() |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soviel ich festgestellt habe, kann in einem Programdurchlauf "MouseHit(x)" nur einmalig abgefragt werden. Fragst Du also mehrfach z.B "MouseHit(1)" ab, wird es nur in der ersten Abfrage funktionieren, in den anderen jedoch nicht mehr, und MouseHit liefert dann eine 0 zurück.
Willst Du also mehrfach MouseHit(x) abfragen, lege Dir, wie D²O es schon erwähnte, eine Varibale dafür ab, am besten eine Globale, dann kannst Du den MouseHit auch in Funktionen abfragen. Bei einer Globale solltest Du jedoch am Ende des Programms die Variable wieder auf 0 setzten, sonst wenn MouseHit einmal aktiviert wurde, würde das Program denken, daß MouseHit immer aktiv ist. oder am besten in der Mainschleife es so lösen Code: [AUSKLAPPEN] Globale MausHit1
If MouseHit(1) Then MausHit1 = True Else MausHit1 = False |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, das ist nicht ganz korrekt: Mousehit(1) ist ein Speicher, der die Anzahl der Mausklicks seit dem letzten Aufruf speichert...
Spike |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Benutzung der ![]() https://www.blitzforum.de/viewtopic.php?t=8345 Wäre dementsprechend mal nicht schlecht, wenn man diese tolle Suche auch benutzen würde ... ![]() MfG D2006 |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und was ist mit diesem Code?
Code: [AUSKLAPPEN] Delay 5000
Print MouseHit(1) Delay 2000 Print MouseHit(1) WaitKey Die neue MouseHit(1)-Abfrage löscht den speicher wieder. Weil, wenn Mousehit(1) in einer Schleife steht, in einem Bruchteil einer Sekunde Mousehit(1) abgefragt wird, ist der Speicher praktisch ständig 0, es sei denn man drückt die linke Maustaste, dann wird Mousehit(1) für einen Schleifendurchlauf 1 (oder mehr, falls man schnell klicken kann) korrigiert mich, falls ich falsch liege Spike |
||
Bigfreddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also erstmal wollt ich mich für die Antworten bedanken...
DANKE! Ich weiß auch nicht was da los war, ich hab da schon ein paar Stunden programmiert und war höllisch gestresst, wie gesagt das musste bis zum nächsten Tag fertig werden ( aber nicht nur des, nicht das ihr meint des war nur dieses kleine Spiel ) ... wir haben die ganze Nacht durch programmiert und kamen auf rund 16 Stunden dauer programmiert... Ergebnis: rund 1000 Zeilen und 4.Platz (die anderen ham mit Flash oder ähnlichem gearbeitet => viel weniger Zeitaufwand als alles selber zu programmieren und die "Jury" waren andere Teilnehmer) Also in diesem Sinne verzeit mir...! MfG, Bigfreddy |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group