Gesamt Spielzeit anzeigen aber wie?
Übersicht

DesantesBetreff: Gesamt Spielzeit anzeigen aber wie? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moin,moin
folgendes, ich habe mein Spiel nun endlich mit Hilfe einiger wirklich hilfsbereiten Leute aus diesem Forum zuende gestellt. Nun is mir aber doch aufgefallen das noch eine 2 sequentielle Datei fehlt die entweder gelesen oder geschrieben wird oder auch beides. Also habe ich mir gedacht ich baue einen Zähler ein der mir nach Spielende ausgibt wie lange ich gespielt habe. Und zwar hätte ich die Anzeige gerne dort wo ich meinen Namen für die Highscoreliste eingebe. Nur habe ich keinen blassen schimmer wie ich das coden soll. Vielleicht kann mir hier jemand weiter helfen, da ich das Spiel am Freitag abgeben muß und nun voll mit dem Technischen Bericht involviert bin. Wäre echt super wenn mir da jemand weiterhelfen könnte. Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() Dim Punkte(11) Dim Namen$(11) Global Anleitung=LoadImage("Anleitung.bmp") 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 ;Ball Geschwindigkeit 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(4,20);Image Collision If ImagesCollide(BAll,Ball_x,Ball_y,0,Computer,Computer_x,Computer_y,0) Then SpeedX=Rand(-4,-12) 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 Zufall = Rand(1,3) If Ball_y>Computer_y Then If Zufall = 1 Then Computer_y=Computer_y ;Computerbewegung der Y Koordinate+Verzögerung Else Computer_y=Computer_Y-6 EndIf If Ball_y<Computer_y Then If Zufall = 1 Then Computer_y = Computer_y Else Computer_y=Computer_y+6 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(100,200) Ball_y=Rand(30,300) Speedx=Rand(4,6) Speedy=Rand(4,6) 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 ;Randbegrenzung der Y Koordinaten 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 If KeyDown (4) Then Anleitung 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 j = 1 To 10 For i = 1 To 10 If j < 10 Then Text 200,(j*16)+100, j + ".)" ; 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 Function Anleitung() While Not KeyHit(1) Cls DrawImage Anleitung,Anleitung_y,Anleitung_x Flip Wend End Function Mfg Desantes |
||
roaches |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
als funktion für die zeitformatierung
Code: [AUSKLAPPEN] Function MillisecsToTime$(msecs%) Local seconds%,minutes%,hours% Local timestring$ msecs = msecs/1000 DebugLog msecs DebugLog msecs DebugLog (msecs Mod 60) minutes = (msecs - (msecs Mod 60))/60 DebugLog minutes msecs = msecs - minutes*60 DebugLog msecs seconds = msecs DebugLog seconds If hours < 10 End If If minutes < 10 timestring$ = timestring$ + "0"+Str$(minutes)+":" Else timestring$ = timestring$ + Str$(minutes)+":" End If If seconds < 10 timestring$ = timestring$ + "0"+Str$(seconds) Else timestring$ = timestring$ + Str$(seconds) End If Return timestring$ End Function am spiel anfang (jedoch nich in der hauptschleife) Code: [AUSKLAPPEN] start=MilliSecs()
und am ende Code: [AUSKLAPPEN] ende=MilliSecs() zeit=ende-start und mit Code: [AUSKLAPPEN] Print MillisecsToTime$(zeit)
die zeit ausdrucken. anstoss zur lösung kam glaub ich von bruzard |
||
Desantes |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal vielen dank, das sieht ja schon wirklich genial aus. Nun muß ich das aber halt als sequentielle datei ändern. D.h. ich müßte den Wert in eine externe DAtei schreibenbzw. speichern z.B. blabla.txt und hinterher wieder auslesen. IS is das irgendwie möglich?
Mfg Desantes |
||
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, ganz einfach. also, entweder du möchtest immer die alte Datei überschreiben, dann benutzt du einfach writefileCode: [AUSKLAPPEN] date=writefile(blabla.txt) du kannst per Openfile vorher prüfen ob die Datei vorhanden ist und nur dann erstellenCode: [AUSKLAPPEN] datei=openfile(blabla.txt) if datei=0 Then datei = writefile(blabla.txt) end if und dann kannst du mit den schreibebefehlen alles reinschreiben, z.B: Code: [AUSKLAPPEN] writeline datei, "Die Zeit beträgt" + Zeit
so benutzt du auch die anderen schreibbefehle, schau einfach mal auf http://blitzbase.de welchen du am besten gebrauchen kannst |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group