Bei umschalten auf Vollbildmodus tauchen probleme auf???

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Desantes

Betreff: Bei umschalten auf Vollbildmodus tauchen probleme auf???

BeitragDo, Feb 19, 2004 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mein Proggie läuft im Fenstermodus "Graphics 640,480,16,2" einwandfrei. Wenn ich jedoch in den Vollbildmodus umschalte ergibt sich das Problem das es nach spielende nicht mehr in die Namenseingabe wechselt. Genauso wenig komme ich im Vollbildmodus, vom Menü aus in die Highscore anzeige, ich bekomme lediglich die Anzeige von der Highscoreliste am unteren Bildschirmrand " -- Drücken Sie eine Taste um ins Menü zurück zu kommen ---" mehr aber auch nicht.

Hat einer ne Ahnung woran das liegen kann?


Code: [AUSKLAPPEN]

Graphics 640,480,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Dim Punkte(11)
Dim Namen$(11)
 

Global fntArialI=LoadFont("Arial",20,False,True,False)   
Global Spielerpunkte
Global Computerpunkte
Global spielername$
Global StopBall
Global Hintergrund = LoadImage("Startbild.bmp") ;Zuweisen des Hintergrundbildes
Global Name=LoadImage ("Nameneingabe.bmp")
Global BAll = LoadImage("ball.bmp") ; zuweisen der Bilder
Global Computer=LoadImage ("Schläger.bmp")
Global Spieler=LoadImage("Schläger.bmp")


Liste_laden() ; highscore einlesen ; highscore einlesen muss existieren sonst fehler

Menü() ;Spiel starten



Function Spiel()

FlushKeys
frameTimer=CreateTimer(75)


Speedx=5
Speedy=5

BAll_x = 300 ; Ball Position
BAll_y = 220

Spielerpunkte = 00
Computerpunkte = 00


AppTitle "Pong" ;Titel
 
Spieler_x=30    ;Variable und Position des Spielers
Spieler_y=400

Computer_x=600    ;Variable und position des Computers
Computer_y=420



 
While Not KeyHit(1) ;Hauptspielschleife


If KeyDown (200)    ;Schläger bewegung des Spielers
   Spieler_y=Spieler_y-12
   If Spieler_y<0 Then Spieler_y=0
EndIf

If KeyDown (208)
   Spieler_y=Spieler_y+12
   If Spieler_y>400 Then Spieler_y=400
EndIf


If ImagesCollide(Spieler,Spieler_x,Spieler_y,0,BAll,Ball_x,Ball_y,0) Then SpeedX=Rand(5,12);Image Collision 
If ImagesCollide(BAll,Ball_x,Ball_y,0,Computer,Computer_x,Computer_y,0) Then SpeedX=Rand(-5,-8)

If BAll_x>600 Then Spielerpunkte=Spielerpunkte+10  ;Punktezähler

If Ball_x<1 Then Computerpunkte=Computerpunkte+10 


If Computer_y>400 Then Computer_y=400 ; Bewegungsende des Computer
If Computer_y<0 Then Computer_y=0






If Ball_y>Computer_y Then ;
   If random = 1 Then Computer_y=Computer_y ;Computerbewegung der Y Koordinate
   Else Computer_y=Computer_Y-Rand(4,7) 
EndIf

If Ball_y<Computer_y Then
   If random = 1 Then Computer_y = Computer_y
   Else Computer_y=Computer_y+Rand(4,7) 
EndIf


WaitTimer (frameTimer) ; Geschwindigkeit des Spieles

Cls
 


DrawImage Ball,Ball_x,Ball_y ;laden des Designs für den Ball



If Ball_x<1 Or Ball_x>GraphicsWidth()-40 Then

   Ball_x=Rand(150,300)
   Ball_y=Rand(60,250)
   Speedx=Rand(6,10)
   Speedy=Rand(6,10)

   StopBall = 200 

EndIf

If StopBall > 0 Then
   StopBall = StopBall - 1
Else


   Ball_x = BAll_x + SpeedX ;Modernisieren der Ballposition
   Ball_y = Ball_y + SpeedY
   
EndIf

If Ball_y<1 Or Ball_y>GraphicsHeight()-40 Then SpeedY =- SpeedY



DrawImage Spieler,Spieler_x,Spieler_y ; Design des Spielers laden

DrawImage Computer,Computer_x,Computer_y ; Design des Computer laden




Text 300,0,Spielerpunkte,1  ;Positionen für die Punkteanzeige
Text 340,0,Computerpunkte,1


Text 220,1,"Player"    ;Positionen der Namensanzeige
 

Text 370,1,"Hall3000"
 


If Computerpunkte=50 Then ;Balllimit

Name()

Exit
End If
 
Flip 

Wend ; Wiederholung der While Schleife()


End Function




Function Name() ; Function der Namenseingabe

   Cls
   FlushKeys()
   DrawImage Name, Name_x, Name_y
   Locate 200,350                ;Namenseingabe
   spielername$ = Input(" ")       ;Variablenname des Spielers
   Highscore ()                ; Spielende - daten neu sortieren
   
End Function




Function Menü() ; Function des Hauptmenüs

   While Not KeyHit(1)
   Cls
   DrawImage Hintergrund,Hintergrund_y,Hintergrund_x
   If KeyDown(2) Then Spiel
   If KeyDown (1) Then Menü
   If KeyDown (5) Then End
   If KeyDown (3) Then Highscore
   Flip
   Wend
End Function



Function Highscore() ;Highscoreliste Alte anzeigen und dann neue anzeigen

   Cls
   AppTitle "Highscore"
   punkte(11) = spielerpunkte
   Namen$(11) = spielername$
   For i = 1 To 11 ; unsortiert dann mit dem neuen wert anzeigen sonst sieht man nichts!!
   ;punkte(i) = spielerpunkte :; hier wird ja jeder neu zugewiesen der Fehler den du angesprochen hast
   ;Namen$(i) = spielername$ + i ; mit (+i) werden die Namen immer länger, das soll bestimmt nicht sein
   ;Print i + "." +" " + Namen$(i) + " " + "hat" + " " + punkte(i) + " " + "Punkte"
   Next

   ;Print "Taste für weiter"
   ;WaitKey
   FlushKeys
   Liste_sortieren (); --- Liste sortieren
   Liste_speichern(); --- Liste speichern
   Liste_anzeigen (); --- Liste laden + anzeigen

   WaitKey
   Cls
End Function




Function Liste_laden(); --- Liste laden + anzeigen

   Datei = ReadFile("Highscore.dat")
   For i = 1 To 10
   Namen$(i) = ReadLine(Datei)
   punkte(i) = ReadLine(Datei)
   ;Print i + "." + spielername$ + " " + "hat" + " " + spielerpunkte
   Next
   CloseFile Datei
   ;Print "Datei eingelesen --Tatse für weiter---"

End Function


 
Function Liste_anzeigen() ;Anzeige der Highscoreliste
   SetFont fntArialI
   Text 260,10, "Highscoreliste"
   For i = 1 To 10
   For i = 1 To 10
   If i < 10 Then Text 200,(i*16)+100, i + ".)" ; Rang anzeigen
   If i = 10 Then Text 200,(i*16)+100, i + ".)" ; Rang anzeigen
   Text 300,(i*16)+100, Namen$(i) ; Namen anzeigen
   Text 450,(i*16)+100, punkte(i) ; Punkte anzeigen
   Next
   Locate 80,400
   Print  " --  Drücken Sie eine Taste um ins Menü zurück zu kommen ---"
    Next 
End Function





Function Liste_sortieren (); --- Liste sortieren
   For I = 1 To 11
   For J = I To 11
   If punkte(I) < punkte(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst
   X = punkte(I) : punkte(I) = punkte(J) : punkte(J) = X
   xx$ = Namen$(i) : Namen$(i) = Namen$(j): Namen(j) = xx$
   EndIf
   Next
   Next
End Function


Function Liste_speichern(); --- Liste_speichern
   Datei = WriteFile("Highscore.dat")
   For i = 1 To 10
   WriteLine Datei, Namen$(i)
   WriteLine Datei, punkte(i)
   Next
   CloseFile Datei
End Function

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Feb 19, 2004 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
mit welcher BB Version arbeitest du?
denn bei mir geht das.... alledings mit Ersatzbildern!

was mir alledings sofort aufgefallen ist :
Code: [AUSKLAPPEN]
Text 260,10, "Highscoreliste"
For i = 1 To 10
For i = 1 To 10
....
next
...
next

diese beiden schleifen werden nicht voll durchlaufen sondern nur die innere , die äußere wird nur einmal benutzt
also eine andere Variable nehmen!

das mit der Highscore anzeige
kann es sein das du es nicht mit flip machst oder sofort wieder den hintergrund drübermalst,
denn text schreit in den eingestellten Buffer
Print immer in den Frontbuffer also der sichtbare!
[BB2D | BB3D | BB+]
 

Desantes

BeitragDo, Feb 19, 2004 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Arbeite mit Ver. 1.66 Blitz 3D.

Wie gesagt bei mir läuft es zwar im Fenstermodus einwandfrei aber im Vollbildmodus nicht.
Hab echt keine Ahnung wieso.
Aber es muß irgendwas mit dem Print Befehl bei der Liste_anzeigen funktion zu tun haben. Denn ich habe ébend mal ausprobiert das Print und das Locate durch "text 80,400, "........" zu ersetzten und siehe da es kam garnichts mehr zur anzeige (im Vollbild sowie im Fenstermodus).
Hmm, wie gesagt ich habe echt kein Plan was das ein kann.

Mfg

Desantes

soli

BeitragFr, Feb 20, 2004 2:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Vollbildmodus wird der Front- und der Backbuffer auf andere Weise getauscht als im Fenstermodus. Bei den meisten funktioniert das Programm dann trotzdem, bei mir leider nicht.

Knall mal Flip woanders hin, vielleicht hast du ein ähnliches Problem.
solitaire

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group