Noob braucht Hilfe

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Brillux

Betreff: Noob braucht Hilfe

BeitragFr, Apr 28, 2006 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich versuche gerade Blitz Basic mit dem Buch "Spiel programmieren mit Blitz Basic"(gutes Buch Wink ) zu lernen.
Ich bin Jetzt bei Kapitel 12, bei der Aufgabe ein kleines Spiel zu programmieren, das für anderthalb Sekunden ein Quadrat in der linken oder in der rechten hälfte des Bildschirms erscheinen lässt.
Man bekommt einen Punkt wenn das Quadrat in der Linken Hälfte ist und man die linke Maustaste drückt, oder die rechte Maustaste für ein Quadrat in der Rechten hälfte. Minuspunkte gibt es wenn falsch oder in anderthalb Sekunden gar nicht gerückt wurde.

Ich hoffe ihr habt das Spielprinzip verstanden. Very Happy

So hier mein bisheriger Code:
Code: [AUSKLAPPEN]

Graphics 1024,768,32,2
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls
Color 255,255,0
schrift = LoadFont("Arial",40)
SetFont  schrift
punkte = 0
SeedRnd MilliSecs()

Repeat
  Cls
  Text 200,0,"Punkte: " + punkte
  x = Rand(974)
  y = Rand(40,718)
  Rect x,y,50,50
  anfang = MilliSecs()
  taste = 0

  Repeat
    taste = GetMouse() 
    ende = MilliSecs()
  Until ende-anfang > 1500 Or taste <> 0
 
  pause = 1500-(ende-anfang)
   
  If (taste = 1 And x < 500) Or (taste = 2 And y >= 500) Then
    punkte = punkte + 1
  Else
    punkte = punkte - 1
  EndIf

  Delay pause

  Flip
Until KeyHit(1)

 


Da besteht jetzt folgendes Problem das es nur beim ersten Versuch klappt.
Bei den folgenden Versuchen wird immer nur die Maustaste des vorherigen Versuchs mit dem aktuell angezeigten Quadrat verglichen. Sodass die Punkte Falsch angezeigt werden.

Ich hoffe das es so verständlich genug erklärt ist, wenn nicht nachfragen. Wink

Wäre schön wenn mir jemand bei dem Problem helfen könnte.

Gruß

Brillux

Blitzcoder

Newsposter

BeitragFr, Apr 28, 2006 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Bau mal ein Flushmouse() ein.
Das löscht den Zwischenspeicher. AUsserdem funzt dein Code bei mir einwandfrei

Und schön, alle die hier posten sind Blitz-Noobs. na schön, das war jeder hier mal, aber könntet ihr bitte aufhören eu Beiträge immer "Noob braucht Hilfe" "Anfänger frage" etc. zu nennen. Schreit doch im Titel worum es geht Wink

Nicht persönlich nehmen Wink

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

Gerhard

BeitragFr, Apr 28, 2006 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es nur um die linke und rechte Bildhälfte geht, muss es dann
nicht heissen:

If (taste = 1 And x < 500) Or (taste = 2 And X >= 500) Then ...

anstelle von:

If (taste = 1 And x < 500) Or (taste = 2 And Y >= 500) Then...?

BladeRunner

Moderator

BeitragFr, Apr 28, 2006 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Gerhard hat einen der Fehler genannt: es muss tatsächlich x statt y heissen.
Zweiter Punkt: Gewöhne Dir beim benutzen von and , or und not an die Bedingungen sehr sorgfältig mit Klammern zu setzen. Erspart einem oftmals sehr unliebsame Überraschungen.
Code: [AUSKLAPPEN]
If ((taste = 1) And (x < 500)) Or ((taste = 2) And (X >= 500)) Then ...


Hier mag es nicht ins Gewicht fallen, aber grad anfangs sollte man auf Nummer sicher gehen.

Wo allerdings der Fehler lag:
Die Prüfung auf die Punkte ist korrekt, allerdings wird das aktuelle Quadrat immer erst nach dieser Prüfung sichtbar, da das Flip am Ende des codes steht.
Setze das flip direkt nachdem alles gezeichnet ist und der Code läuft Wink
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
 

Brillux

BeitragFr, Apr 28, 2006 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt da müsste bei beiden x stehen Rolling Eyes

Aber es besteht bei mir trotzdem noch immer das Problem, dass es teilweise einen Minuspunkt gibt obwohl ich richtig klicke. Question
FlushMouse() habe ich auch eingebaut.
 

Brillux

BeitragFr, Apr 28, 2006 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok jetzt funktionert es Very Happy

Danke BladeRunner.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group