Gusub geht nur 1x
Übersicht

![]() |
maboxBetreff: Gusub geht nur 1x |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
maboxBetreff: Sorry |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bevor ich mich mit Go beschäftige, mach ich dir ein Funktionen-Tutorial ![]() 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 |
![]() |
maboxBetreff: Ok |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ... |
||
![]() |
maboxBetreff: noch ne Frage zu Funktionen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
maboxBetreff: Egal |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
probier mal eine funktion in die hauptschleife zu sezten... | ||
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
maboxBetreff: Danke |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group