Gusub geht nur 1x

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mabox

Betreff: Gusub geht nur 1x

BeitragMi, Apr 18, 2007 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum funktioniert der folgende Code nur zweimal nacheinander beim drücken der Leertaste ? Liegt das an Gusub, oder an Waitkey ? was kann ich ändern damit der Code jedesmal beim Leertaste drücken wiederholt wird ?
Code: [AUSKLAPPEN]
Gosub blabla
;code
.blabla

Graphics 1024,768
SetBuffer BackBuffer()

;code

k = WaitKey()
If k = 32 Then Return
If k <> 32 Then End
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
  • Zuletzt bearbeitet von mabox am Mi, Apr 18, 2007 21:23, insgesamt einmal bearbeitet

Eingeproggt

BeitragMi, Apr 18, 2007 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn da zwischen den ersten beiden Zeilen nix mehr steht, hinterfrage ich mal den Sinn der Sache. Der geht mir nämlich nicht ein. Ein Gosub in die nächste Zeile? Und warum überhaupt Goto/Gosub? Warum verwendet man in der heutigen Zeit keine Funktionen?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

mabox

Betreff: Sorry

BeitragMi, Apr 18, 2007 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry zwischen den ersten beiden Zeilen hab ich vergessen den Code reinzuschreiben und mit den Funktionen kenn ich mich leider noch nicht gut genug aus.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Eingeproggt

BeitragMi, Apr 18, 2007 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Bevor ich mich mit Go beschäftige, mach ich dir ein Funktionen-Tutorial Very Happy

Code: [AUSKLAPPEN]

init()

Function init()
  Graphics 800,600
  SetBuffer Backbuffer()
  SeedRnd Millisecs()
  ;uvm
End Function


Soweit alles klar?
Dann mal was zum rechnen

Code: [AUSKLAPPEN]

berechne()
Print x ;Es wird 0 angezeigt, da x in der Funktion als lokale Variable gehandhabt wird.

Function berechne()
  x=10*10
End Function

Code: [AUSKLAPPEN]

Global x
berechne()
Print x ;Es wird 100 angezeigt, da x im gesamten Programm gültig ist

Function berechne()
  x=10*10
End Function


Dann komm ich mal schnell zum Variablen zurückgeben, da alles global manchmal unübersichtlich wird

Code: [AUSKLAPPEN]

x=berechne()
Print x ;Ergebnis: 100

Function berechne()
  egal_wie_ich_heisse=10*10
  Return egal_wie_ich_heisse
End Function


Mit Return kann man nicht nur ein Ergebnis zurückgeben, es wird auch automatisch die Ausführung der Funktion abgebrochen.

Letzter Punkt: Parameter
Code: [AUSKLAPPEN]

x=quad(5)
Print x ;Ergebnis=25

Function quad(parameter)
  irgendwas=parameter*parameter
  Return irgendwas
End Function


Ich hab so einfache Beispiele gemacht, die solltest du selbst ohne Kommentare verstehen. Übrigens kann man Parametern auch einen Standardwert geben, sodass die Eingabe eines Parameters optional wird. Das ist aber nicht so wichtig, wenn du erstmal Funktionen lernst.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

mabox

Betreff: Ok

BeitragDo, Apr 19, 2007 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank für das Tutorial.
Ich glaube ich habe die Funktionen verstanden, aber für mein eigentliches Problem hilft das nicht sehr viel. Ich habe viel hin und her überlegt und probiert aber nichts geht.
Ich will nämlich ein Spiel, wenn es durchgelaufen ist, durch drücken der Leertaste neustarten. Wenn man eine andere Taste drückt soll sich das Spiel beenden.
Soll ich dann eine funktion über den ganzen Code machen ? der ist ziemlich lang.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

PowerProgrammer

BeitragDo, Apr 19, 2007 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Repeat
   Gosub blabla
Forever
;code
.blabla

Graphics 1024,768
SetBuffer BackBuffer()

;code

k = WaitKey()
If k = 32 Then Return Else End

So meinst du das wahrscheinlich, so solltest dus aber nicht machen. Mach es doch direkt so:

Code: [AUSKLAPPEN]
Graphics 1024,768
SetBuffer BackBuffer()

; Dinge laden

Repeat
   ;Hauptschleife und sowas kommt jetzt
   ;...
   ;Spiel ende
   Key = WaitKey
Until Key <> 32
End


Oder habe ich dich falsch verstanden?
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

mabox

BeitragDo, Apr 19, 2007 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich meinte schon das was PowerProgrammer geschrieben hat, aber leider funktioniert es trotzdem nicht. Vielleicht liegt es daran, dass der Grafikmodus während dem spiel wechselt, oder nach der Hauptschleife noch Code steht?

Hier einmal der komplette Code: [AUSKLAPPEN]
Graphics 1024,768
SetBuffer BackBuffer()
SeedRnd MilliSecs()


fontno=LoadFont("Armalite Rifle",70)
SetFont fontno

screen = LoadImage ("screen.bmp")
hintergrund = LoadImage ("hintergrund.bmp")
muelltonne = LoadImage ("mülltonne.bmp")
kopf = LoadImage ("kopf.bmp" )
MaskImage muelltonne, 255, 255, 255
MaskImage kopf, 255, 255, 255

zeit = 0
score = 0  ;Punkte
muelltonne_y = 435;y Koordinate spieler
muelltonne_x = 430 ;x koordinate spieler
Const anz = 4 ;anzahl Gegner
Ms = MilliSecs()


Dim kopf_x(anz)
Dim kopf_y(anz)
Dim gegspeed(anz)

For i = 1 To anz
kopf_x(i) = Rand(0,924)
kopf_y(i) = -140
gegspeed(i) = Rnd(-3,-10)
Next



;Anfangsscreen zeigen
DrawImage screen,1,1
Flip
Delay 3000



Repeat
;Schleife !!!!!!!!!!!!!!!!!!!!!!!!
Repeat

Timescale = MilliSecs() - Ms
    Ms = MilliSecs()

Oval xcor+15,ycor+40,130,1

zeit = (zeit + 1 -0.001 * Timescale)

;Hintergrund anzeigen
DrawImage hintergrund, x=1,y=1

;score anzeigen
Color 0,0,0
Text 965,2,score,1

;Mülltonne anzeigen
DrawImage muelltonne, muelltonne_x,muelltonne_y

;gegner bewegung
For i = 1 To anz
If kopf_y(i) >= 740 Then
kopf_x(i) = Rand(0,924)
score = score -10
kopf_y(i) = -140
gegspeed(i) = Rnd(-3,-10)
Else
kopf_y(i) = ( kopf_y(i) - gegspeed(i) -0.001 * Timescale)
EndIf
Next

;gegnerspeed
For i = 1 To anz
DrawImage kopf, kopf_x(i),kopf_y(i)
Next

;zusammenstoss
For i = 1 To anz
If ImageRectCollide(kopf,kopf_x(i),kopf_y(i),0,muelltonne_x+10,muelltonne_y+130,130,1) Then
kopf_y(i) = -140
kopf_x(i) = Rand(0,924)
gegspeed(i) = Rnd(-3,-10)
score = score + 10
EndIf
Next

;spieler
If muelltonne_x >= 865 Then muelltonne_x = 865
If muelltonne_x <= 0 Then muelltonne_x = 0

If KeyDown(203) muelltonne_x = muelltonne_x -15;Links
If KeyDown(205) muelltonne_x = muelltonne_x +15;Rechts



Flip
Cls
Until zeit = 3000 Or KeyHit (1)
Color 255,0,0
Text 315,350,"GAME OVER"
Flip
Delay 2000
Cls
Graphics 800,600

fontno=LoadFont("Armalite Rifle",40)
SetFont fontno
Color 255,0,0
Text 270,10, "Bestenliste"

font=LoadFont("Arial",16)
SetFont font
Color 255,255,255

Locate 10,50
Print ("Deine Punkte: "+score)
Locate 10,63
eingabename$=Input$("Gib deinen Namen ein: ")


ladesav=ReadFile("datei")
   name1$=ReadLine(ladesav)
punkte1=ReadLine(ladesav)
   name2$=ReadLine(ladesav)
punkte2=ReadLine(ladesav)
   name3$=ReadLine(ladesav)
punkte3=ReadLine(ladesav)
   name4$=ReadLine(ladesav)
punkte4=ReadLine(ladesav)
   name5$=ReadLine(ladesav)
punkte5=ReadLine(ladesav)
   name6$=ReadLine(ladesav)
punkte6=ReadLine(ladesav)
   name7$=ReadLine(ladesav)
punkte7=ReadLine(ladesav)
   name8$=ReadLine(ladesav)
punkte8=ReadLine(ladesav)
   name9$=ReadLine(ladesav)
punkte9=ReadLine(ladesav)
   name10$=ReadLine(ladesav)
punkte10=ReadLine(ladesav)
CloseFile ladesav


If score >= punkte1 Then Goto schreiben1
If score >= punkte2 Then Goto schreiben2
If score >= punkte3 Then Goto schreiben3
If score >= punkte4 Then Goto schreiben4
If score >= punkte5 Then Goto schreiben5
If score >= punkte6 Then Goto schreiben6
If score >= punkte7 Then Goto schreiben7
If score >= punkte8 Then Goto schreiben8
If score >= punkte9 Then Goto schreiben9
If score >= punkte10 Then Goto schreiben10
If score <  punkte10 Then Goto schreiben11


.schreiben1
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben2
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben3
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben4
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben5
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben6
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben7
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben8
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben9
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
CloseFile schreibsav
Goto drucken
.schreiben10
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
   WriteLine (schreibsav),eingabename$
   WriteLine (schreibsav),score
CloseFile schreibsav
Goto drucken
.schreiben11
schreibsav = WriteFile("datei")
   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
   WriteLine (schreibsav),name10$
   WriteLine (schreibsav),punkte10
CloseFile schreibsav
Goto drucken

.drucken
printsav=ReadFile("datei")
   xname1$=ReadLine(printsav)
xpunkte1=ReadLine(printsav)
   xname2$=ReadLine(printsav)
xpunkte2=ReadLine(printsav)
   xname3$=ReadLine(printsav)
xpunkte3=ReadLine(printsav)
   xname4$=ReadLine(printsav)
xpunkte4=ReadLine(printsav)
   xname5$=ReadLine(printsav)
xpunkte5=ReadLine(printsav)
   xname6$=ReadLine(printsav)
xpunkte6=ReadLine(printsav)
   xname7$=ReadLine(printsav)
xpunkte7=ReadLine(printsav)
   xname8$=ReadLine(printsav)
xpunkte8=ReadLine(printsav)
   xname9$=ReadLine(printsav)
xpunkte9=ReadLine(printsav)
   xname10$=ReadLine(printsav)
xpunkte10=ReadLine(printsav)
CloseFile printsav

Print "    "
Print "    " + xname1$
Print "    " + xpunkte1
Print "    " + xname2$
Print "    " + xpunkte2
Print "    " + xname3$
Print "    " + xpunkte3
Print "    " + xname4$
Print "    " + xpunkte4
Print "    " + xname5$
Print "    " + xpunkte5
Print "    " + xname6$
Print "    " + xpunkte6
Print "    " + xname7$
Print "    " + xpunkte7
Print "    " + xname8$
Print "    " + xpunkte8
Print "    " + xname9$
Print "    " + xpunkte9
Print "    " + xname10$
Print "    " + xpunkte10


SetFont fontno
Color 255,0,0
Text 70,500, "Leertaste zum nochmal spielen"


;An dieser Stelle soll sich das Game, beim drücken der Leertaste neustarten.

Key = WaitKey
Until Key <> 32
End
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Apr 19, 2007 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Paradebeispiel für unübersichtlichen Code. Als erstes mal die ganzen Goto-Befehle, wo man garnicht weiß wohin die hinführen (Spaghetti-Code). Zum anderen, nicht eingerückte Schleifen etc., was eine Fehleranalyse recht schwer macht. Des weiteren, kaum Struktur im Code.

Zum ersten: Man kann auch Funktionen benutzen. Funktionen können sogar ein Rückgabewert haben, falls nötig. Functionen haben ihre eigenen Variablenumgebung, können aber (wenn deklariert) auch auf globale zugreifen. Wenn alles nichts nützt, so nehme man zumindest Gosub.^^

Zum anderen: Jede Schleife, If-Abfrage und sonstiges, was ein Anfang und ein Ende hat (zB auch OpenFile / CloseFile) sollte eingerückt werden, damit man erstmal nichts vergisst und besser eine Funktionsweise erkennt.

Zum weiteren: u.A. muß man zB nicht LoadFont jedesmal neu ausführen. In deinem Beispiel würde man es zB so machen können:
fontno40=LoadFont("Armalite Rifle",40)
fontno70=LoadFont("Armalite Rifle",70)
und dann, je nachdem, was man haben will mit SetFont setzen.

Zu deinen Fragen: Wenn der Grafikmodus zwischenzeitig neu gesetzt wird, so habe ich enorme Probleme damit gehabt. Bei mir wurden nicht nur Bilder raus geschmissen, sondern auch andere Dinge die ich dann nicht mehr neu laden konnte. Besonders in Verbindung von Include ist es 'tötlich'. Ich würde daher immer erst versuchen, ein Programm in nur einer Bildschirmauflösung zu bearbeiten. Es ist nicht nur so, dass man sich sein Bildschirm auf Dauer kaputt macht, wenn man 500mal am Tag die Auflösung ändert, nur weil man 500mal auf F5 gedrückt hat, sondern auch nervig wegen den Umschaltzeit die verschwendet wird.

Deine Highscore kann so nicht funktionieren, wenn ich es richtig sehe, weil du keinen 'Sortieralgorhytmus' hast. Hat zB ein Spieler Platz 1 erreicht und später ein anderer Platz 1 aber mit mehr Punkten, so dass der erste Spieler auf Platz 2 rutschen würde, wird er anstelle einfach nur überschrieben.

Wo ist deine Hauptschleife?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

darth

BeitragDo, Apr 19, 2007 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
kurz gesagt:
nach return springt er NACH das gosub und beim zweiten mal hat er kein gosub mehr, zu dem er springen könnte, daher macht er aus return eine art end.
so, ich habe den rest nicht gelesen, vllt wurde es schon beantwortet, aber 5mal gemoppelt hält besser als doppelt. (hahaha)
Diese Signatur ist leer.

mabox

BeitragFr, Apr 20, 2007 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@hectic
Ok ich geb zu dass mein Code sehr unübersichtlich ist. Aber ich weis nicht an welcher stelle ich eine Funktion hätte benützen oder brauchen können.
Vielen Dank trotzdem für die Tipps !

hectic hat Folgendes geschrieben:
Deine Highscore kann so nicht funktionieren, wenn ich es richtig sehe, weil du keinen 'Sortieralgorhytmus' hast. Hat zB ein Spieler Platz 1 erreicht und später ein anderer Platz 1 aber mit mehr Punkten, so dass der erste Spieler auf Platz 2 rutschen würde, wird er anstelle einfach nur überschrieben.
Meine Highscore funktioniert aber! Die alten Namen rutschen mit den Punkten eins runter wenn ein neuer Name mit mehr punkten kommt. Vielleicht hast du das in diesem unübersichtlichen Code übersehen.

hectic hat Folgendes geschrieben:
Wo ist deine Hauptschleife?
Ich dachte die Hauptschleife wäre die repeat Schleife. Hab ich da was falsch verstanden?
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

Dreamora

BeitragFr, Apr 20, 2007 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Hauptschleife ist ein abgeschlossenes Ding, du springst in dieser aber wild herum.

Der Code ist so beim besten Willen nicht zu debuggen.
Am besten Mal auf www.robsite.de die Tutorials machen damit du Grundstruktur von Code und Sinn von Funktionen etc siehst und den Code "lesbar" und nutzbar machen kannst ... das der Code geht kann bestenfalls als zufall angesehen werden ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Florian

BeitragFr, Apr 20, 2007 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

   WriteLine (schreibsav),name1$
   WriteLine (schreibsav),punkte1
   WriteLine (schreibsav),name2$
   WriteLine (schreibsav),punkte2
   WriteLine (schreibsav),name3$
   WriteLine (schreibsav),punkte3
   WriteLine (schreibsav),name4$
   WriteLine (schreibsav),punkte4
   WriteLine (schreibsav),name5$
   WriteLine (schreibsav),punkte5
   WriteLine (schreibsav),name6$
   WriteLine (schreibsav),punkte6
   WriteLine (schreibsav),name7$
   WriteLine (schreibsav),punkte7
   WriteLine (schreibsav),name8$
   WriteLine (schreibsav),punkte8
   WriteLine (schreibsav),name9$
   WriteLine (schreibsav),punkte9
   WriteLine (schreibsav),name10$
   WriteLine (schreibsav),punkte10


Weißt Du wofür es die Arrays gibt?

Code: [AUSKLAPPEN]

Const MaxIndex=10
Dim Punkte(MaxIndex)
Dim NAME$(MaxIndex)

Function Save(Datei$)
 Dim Punkte(MaxIndex)
 Dim NAME$(MaxIndex)
 DateiNr=WriteFile(Datei$)
  For Index=1 to MaxIndex
   Punkte(Index)  = readline(DateiNr)
   NAME$(Index)  = readline(DateiNr)
  next
 closefile DateiNr
end function

Function Load(Datei$)
 Dim Punkte(MaxIndex)
 Dim NAME$(MaxIndex)
 DateiNr=ReadFile(Datei$)
 While not(eof(DateiNr))
  Index=Index+1
  Punkte(Index)  = readline(DateiNr)
  NAME$(Index)  = readline(DateiNr)
 wend
 closefile DateiNr
end function
  • Zuletzt bearbeitet von Florian am Sa, Apr 21, 2007 11:04, insgesamt 2-mal bearbeitet

mabox

BeitragSa, Apr 21, 2007 7:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Soll das die ganze Bestenliste sein ?
ich hab zwar schon von arrays gehört, was aber nicht bedeutet dass ich den Code von Florian verstehe.
und was ist reDim?
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Eingeproggt

BeitragSa, Apr 21, 2007 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@Florian: Wieso verwendest du bei Save und Load "ReadLine"?

@Mabox: ReDim gibts in BB gar nicht.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Silver_Knee

BeitragSo, Apr 22, 2007 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
mit redm ist folgendes gemeint:
Code: [AUSKLAPPEN]
Dim array(50);nur von 0-50
;CODE
;CODE
;CODE
Dim array(655);ab sofort 0-655
;CODE
;CODE
;CODE
Dim array(0);und jetzt nur noch 0-0
...

mabox

Betreff: noch ne Frage zu Funktionen

BeitragDi, Apr 24, 2007 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreibt man funktionen in die Hauptschleife oder Ausserhalb?
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

mabox

Betreff: Egal

BeitragDi, Apr 24, 2007 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry habs schon rausgefunden
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Silver_Knee

BeitragDi, Apr 24, 2007 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
probier mal eine funktion in die hauptschleife zu sezten...

pile

BeitragMi, Apr 25, 2007 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mach es immer so:

Um die Hauptschleife kurz und übersichtlich zu halten schreibe ich nichts als Funktionen hinein.

Code: [AUSKLAPPEN]

--------------------------------------Variablen
Global v1
Global v2
Local v3
...
--------------------------------------Hauptschleife
Repeat
   Cls
      Function1()
      Function2()
   Flip
Until Keydown(1)=1
----------------------------------------Schleifenende
Function1()
    blabla
endfunction

Function2()
    blabla
endfunction


Und wenn ich dann ne neue Runde starten will, so wie du am Anfang geschrieben hast dann schreib ich über den Variablen n Label und in der Schleife ne Bedingung um mit Goto zum Label zu springen und dann fängt halt alles wieder von Vorn an.


Code: [AUSKLAPPEN]

.Spielstart
--------------------------------------Variablen
Global v1
Global v2
Local v3
...
--------------------------------------Hauptschleife
Repeat
   Cls
      Function1()
      Function2()
   Flip
        If GameOver=True Then Goto Spielstart
Until Keydown(1)=1
----------------------------------------Schleifenende
Function1()
    blabla
endfunction

Function2()
    blabla
endfunction

mabox

Betreff: Danke

BeitragMi, Apr 25, 2007 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank!
Obwohl ich schon gausgefunden habe, dass man funktionen nicht in die Hauptschleife schreiben kann ist mir der Code von Pile eine große Hilfe. Very Happy
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group