Namenseingabe für spätere Highscoreliste??

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Desantes

BeitragFr, Feb 13, 2004 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will das er mir die Gesamtpunkte später in einer Highscoretabelle anzeigt. Ich hab schon spasseshalber mal In der Function Menü() Print
Spieler_punkti% eingegeben, leider ohne Wirkung . Er zeigt mir dann immer 0 Punkte an.

Woran kann das liegen?

Mfg

Desantes

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Feb 13, 2004 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du die variable als Global deklariert?
Global Spieler_punkti%
[BB2D | BB3D | BB+]
 

Desantes

BeitragFr, Feb 13, 2004 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich das Global in der Schleife davor setze bekomme ich folgende Fehlermeldung.


"Global can only appear in main programm"

Hab schon versucht das Gloabbl inkl .der Variablen in das Hauptprogramm zu schreiben, was aber leider auch ohne Wirkung blieb.

Mfg

Desantes

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Feb 13, 2004 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Global muß die Variable gemacht werden im Haiuptteil
bevor diese benutzt wird und das nur einmal
wenn es dann nicht geht,
hast du der Variablen noch keinen Wert zugewiesen
oder diesen vorher wieder zurück gesetzt auf 0 bevor du ihn mit Print ausgibst
[BB2D | BB3D | BB+]
 

Desantes

BeitragFr, Feb 13, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Es klappt einfach nicht hat den keiner NE Idee zur Lösung des Problems?


Mfg

Desantes

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Feb 13, 2004 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn der letzte code den du hier gepostet hast der aktuelle ist dann scau dir mal die Variablennamen mal genauer an
Spieler_punkti%
und
Spieler_punktei%
fällt dir was auf

ja... sind veschieden
dann sag mal ob der code aktuell ist oder nicht?!
[BB2D | BB3D | BB+]
  • Zuletzt bearbeitet von Rallimen am Fr, Feb 13, 2004 23:13, insgesamt einmal bearbeitet
 

Desantes

BeitragFr, Feb 13, 2004 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich schon abgeändert, leider ohne erfolg.
Zudem tritt noch ein anderes Phänomen auf, ich hab den Code mal nen bisschen abgespeckt und einfach mal die in Function Spiel() nen
"Print Computerpunkte" eingesetzt. Nun gibt er mir in der mitte des Bildschirmes zwar Punkte aus nur sind das leider nicht die Punkte des Computers sondern die des Spielers und zweitens habe ich den Punktezähler nirgends in der Schleife als Variable definiert , wie kommt er dann an die Ausgabewerte?



Code: [AUSKLAPPEN]
;Start Menü


SetBuffer BackBuffer()

Graphics 640,480,16,2

Hintergrund = LoadImage("Startbild.bmp") ;Zuweisen des Hintergrundbildes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x  ;Starten des Hintergrundbildes

While Not KeyHit(1)

If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End




Wend





;Das eigentliche Spiel

Function Spiel()

Graphics 640,480,16,2 ;Grafik und Auflösung

AppTitle "Pong" ;Titel

SetBuffer BackBuffer() ; Buffer für die Grafik

BAll = LoadImage("Ball.bmp") ; zuweisen der Bilder
Computer=LoadImage ("Schläger.bmp")
Spieler=LoadImage("Schläger.bmp")

Spieler_x=30 ;Variable und Position des Spielers
Spieler_y=400
 
Computer_x=600    ;Variable und position des Computers
Computer_y=420


SpeedX = 7  ; Anfangsgeschwindigkeit
SpeedY = 7

BAll_x = 50  ; Ball Position
BAll_y = 100


While Not KeyHit(1) ;Ende des Spieles durch drücken von ESC



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

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

; Collison zwischen Schläger und Ball
If ImagesCollide(Spieler,Spieler_x,Spieler_y,0,BAll,Ball_x,Ball_y,0) Then SpeedX= SpeedX-(2*SpeedX)
If ImagesCollide(BAll,Ball_x,Ball_y,0,Computer,Computer_x,Computer_y,0) Then SpeedX= SpeedX-(2*SpeedX)

If BAll_x<1 Then Spielerpunkte=Spielerpunkte+10 ; Punktezähler des Players   
If Ball_x>600 Then Computerpunkte=Computerpunkte+10 ; Punktezähler des Computer

 


If Computer_y>400 Then Computer_y=400 ; Bewegungsende des Computer
If Computer_y<0 Then Computer_y=0     ; Nicht über den Rand hinaus gehen

random = Rand(1,10) ; Zufalls generator

If Ball_y>Computer_y Then                ;
   If random = 1 Then Computer_y=Computer_y 
Else Computer_y=Computer_y-Rand(4,10)                     
EndIf

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

Cls

 

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

;Collsion mit den Rändern oder dem BAll
If Ball_x<1 Or Ball_x>GraphicsWidth()-40 Then Ball_x=Rand(50,300) Ball_y=Rand(60,400) VelX=Rand(5,8) VelY=Rand(5,8)   
If Ball_y<1 Or Ball_y>GraphicsHeight()-40 Then SpeedY =- SpeedY

;Modernisieren der Ball position
Ball_x = BAll_x + SpeedX
Ball_y = Ball_y + SpeedY

DrawImage Spieler,Spieler_x,Spieler_y ; Design des Spielers

DrawImage Computer,Computer_x,Computer_y    ; Design des Computer

; Tabellen Position
Text 300,0,Computerpunkte,1 
Text 340,0,Spielerpunkte,1

; Tabellen Text
Locate 220,1
Print "Player"

Locate 370,1
Print"Hall 3000"

Locate 300, 200
Print Computerpunkte


   If  Spielerpunkte=>30 Then Name     ;Spielende bei 1 Ball im aus


; Buffer
Flip
Wend ; Wiederholung der While Schleife()


End Function






;Spielende und Namenseingabe für die Highscore


Function Name() ; Function der Namenseingabe
FlushKeys()
Graphics 640,480,16,2
SetBuffer  BackBuffer()

Name=LoadImage ("Nameneingabe.bmp")
Print Computer_punkti
DrawImage Name, Name_x, Name_y


Locate 200,350            ;Namenseingabe
spielername$ = Input(" ")    ;Variablenname des Spielers

End                ; Spielende - Sprung aus der Schleife (muß später versetzt werden)
                  
                  
 
End Function


; Function des Hauptmenüs, bis jetzt noch ohne Funktion

Function Menü()

SetBuffer BackBuffer()

Graphics 640,480,16,2

Hintergrund = LoadImage("Startbild.bmp") ;Laden des Startbilschirmes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x

While Not KeyHit(1)


If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End

Wend

End Function






Mfg

Desantes
 

Desantes

BeitragFr, Feb 13, 2004 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß den keiner RAt?
Ich bin echt schon am verzweifeln!!

Desantes

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Feb 13, 2004 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
setz das ganz oben rein
Code: [AUSKLAPPEN]
Global Spielerpunkte,Computerpunkte

und so mußt du das ändern dann gehts auch
Code: [AUSKLAPPEN]
Function Name() ; Function der Namenseingabe
FlushKeys()
Graphics 640,480,16,2
SetBuffer BackBuffer()

Name= LoadImage ("Gfx/Auswahlpfeil.bmp")
;Color 100,100,100
Locate 10,250 ;Namenseingabe
Print Computerpunkte +  " PC Punkte";<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  fehler
Print Spielerpunkte +  " Player Punkte"
Locate 200,350 ;Namenseingabe
DrawImage Name, Name_x, Name_y
spielername$ = Input(" ") ;Variablenname des Spielers
End ; Spielende - Sprung aus der Schleife (muß später versetzt werden)

End Function

und mach das besser mit text und Flip ; hab mich jetzt allerdings an deinen Programmstiel gehalten
[BB2D | BB3D | BB+]
 

Desantes

BeitragFr, Feb 13, 2004 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin dir zu tausendfachen Dank verfallen. Es funzt nu einwandfrei.
NAchdem ich den alten Printbefehl gegen "Print punkte + Spielerpunkte"
ersetzt habe und die sortieroutine des Punktezählers beglichen habe funzt alles einwandfrei und ich kann endlich die Variable in die Bubble Sort übernehmen.

Vielen Dank nochmal für deine Mühe

Sascha

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group