Problem mit Cls und Darstellung im Vollbildmodus

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Vidde

Betreff: Problem mit Cls und Darstellung im Vollbildmodus

BeitragMi, Aug 04, 2010 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum läuft folgende Code nur dann sauber ab, wenn ich den Befehl "Cls" in eine übergeordnete While/Wend - Schleife lege?

Code: [AUSKLAPPEN]
Graphics 800,600,0,1
SetBuffer BackBuffer()

Global Wert


Repeat
   Wert = 0
   
   While MouseDown(1)            ; <-- warum wird diese Schleife notwendig?
      Cls

      While MouseDown(1)
         Color 0,0,0
         Rect 0,0, 50,40
      
         Color 255,255,255
         Text 10,10, Wert
         Wert = Wert + 1
         Line 50,50, 50,80

            If    Wert < 100 Then      
               Color 100+(0.5*Wert),255,100+(0.5*Wert)
               Line Wert,50,Wert,60
            End If
         
            If   Wert = 50 Then
               Color 100,100,255
               Line Wert,50,Wert,60
               Oval 100,100,20,20
            End If
         
         Flip
      Wend   
   Wend
Until MouseHit(2)


Des Weiteren wird der Wertebalken im Vollbildmodus nur bei geradem Wert gelöscht. Bei ungeraden Werten bleibt der Balken sichtbar und ist unterbrochen (nur jede zweite Linie wird dargestellt).

Und warum wird der blaue Kreis bei einem Wert von 49 gezeichnet, obwohl die If-Bedingung den Wert 50 fordert?
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins.

gameworx

BeitragMi, Aug 04, 2010 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Und warum wird der blaue Kreis bei einem Wert von 49 gezeichnet, obwohl die If-Bedingung den Wert 50 fordert?
Deine Textausgabe erfolgt vor dem erhöhen des Wertes: Nachdem du den Wert 49 am Bildschirm ausgegeben hast erhöhst du ihn um 1 und erfüllst somit noch in der gleichen Schleife die Bedingung zum Zeichnen des blauen Kreises.


Guck dir mal bitte folgendes an, vielleicht bringt dich das weiter:
Code: [AUSKLAPPEN]
Graphics 800,600,0,1
SetBuffer BackBuffer()

Global Wert



While Not KeyDown(1) ; ESCAPE
  Cls
 
  If MouseDown(1) Then Wert = Wert + 1
  If MouseDown(2) Then wert = wert - 1

  Color 255,255,255
  Text 10,10, Wert
   
  Line 50,50, 50,80

  If Wert < 100 Then       
    Color 100+(0.5*Wert),255,100+(0.5*Wert)
    Line Wert,50,Wert,60
  End If

  If Wert = 50 Then
    Color 100,100,255
    Line Wert,50,Wert,60
    Oval 100,100,20,20
  End If

  Flip
Wend

Vidde

BeitragMi, Aug 04, 2010 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank gameworx. Das 49/50er Problem ist mir ja fast peinlich - welch simpler Fehler meinerseits.
Ähnlich weit, wie Dein Alternativcode war ich auch schon. Leider verschwindet dabei der Balken.

Nochmals besten Dank für Deine Mühe.
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins.

gameworx

BeitragMi, Aug 04, 2010 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
welchen balken genau meinst du?

Diesen?
Color 0,0,0
Rect 0,0, 50,40

Den habe ich im "Alternativcode" weg gelassen, weil der ein schwarzes Rechteck auf einen schwarzen Hintergrund (cls) zeichnet. Wink

Entweder du benutzt eine andere Hintergrundfarbe für CLS oder für das Rechteck.

Vidde

BeitragMi, Aug 04, 2010 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, ich meine den Balken, der durch das Zeichnen einzelner Linien entsteht.

Code: [AUSKLAPPEN]
Line Wert,50,Wert,60


So wie Du das Cls einpflanzt, löscht es diese leider permanent.


HALT: Balkenproblem gelöst.
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins.
  • Zuletzt bearbeitet von Vidde am Mi, Aug 04, 2010 15:20, insgesamt einmal bearbeitet

ToeB

BeitragMi, Aug 04, 2010 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz doch Rect ?
Code: [AUSKLAPPEN]
Rect 0,100,wert,20


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

gameworx

BeitragMi, Aug 04, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Befehl "Line Wert,50,Wert,60" zeichnet nur eine 1 Pixel breite senkrechte Linie an der Position X, die 10 Pixel hoch ist.

Einen Balken (Statusbalken oder sowas) machst du genau so, wie ToeB es sagt.

Ich würde allerdings "Line Wert,50,Wert,60" bevorzugen.
  • Zuletzt bearbeitet von gameworx am Mi, Aug 04, 2010 15:28, insgesamt einmal bearbeitet

Vidde

BeitragMi, Aug 04, 2010 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Moment des Absendens kam mir auch die Lösung - daher der Nachtrag. Dies löst alle Folgeprobleme.

Ich bedanke mich für den Denkanstoß.
Gern der Zeiten gedenk ich, als alle Glieder gelenkig - bis auf eins. Diese Zeiten kehren nie wieder, steif sind nun alle Glieder - bis auf eins.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group