Brauche ein wenig Hilfe
Übersicht

FredbufferBetreff: Brauche ein wenig Hilfe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Leute
ich bin ganz neu mit dem programmieren beschäftigt, erst seit ein paar Tagen ,also verzeiht mir, dass ich noch so gut wie überhaupt nichts kann ![]() also ich wollte ein Spielchen machen, nur ein kleines, feines, ohne grafik.. .hat auch alles ganz gut funktioniert, irgendwann hab ich über das gesammte programm eine repeat until schleife gelegt, sodass sich ein riesen abschnitt immer wiederholt. das problem war nur: es waren auch andere repeat until schleifen in der großen drin. Doch am anfang hat es funktioniert, auch im programm selber, aber als ich dann außerhalb der großen schleife zwei prints hinzugefügt habe und das starten wollte, sagt der plötzlich immer, dass er zu dem until ganz unten im code, kein repeat findet...kp wieso... also ich poste mall den code, soltet ihr ne lösung haben, bitte sagts mir, und es wäre auch nett, wenn ihr, sofern ihr das zum laufen kriegt (wovon ich ausgehen ![]() Code: [AUSKLAPPEN] Graphics 1020, 740
SeedRnd MilliSecs() Write "Name für Spieler 1 eingeben: " name1$ = Input ( "-> " ) Cls Write "Name für Spieler 2 eingeben: " name2$ = Input ( "-> " ) Cls Locate 1,1 Write "Welche Rasse will " + name1 + " spielen?" Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat rasse1$ = Input ( "-> " ) If rasse1 = "Ork" Cls ElseIf rasse1 = "Mensch" Cls ElseIf rasse1 = "Elf" Cls Else Print "Ungültige Eingabe, nochmal!" EndIf Until rasse1 = "Ork" Or rasse1 = "Mensch" Or rasse1 = "Elf" Cls Locate 1,1 Write "Welche Rasse will " + name2 + " spielen?" Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat rasse2$ = Input ( "-> " ) If rasse2 = "Ork" Cls ElseIf rasse2 = "Mensch" Cls ElseIf rasse2 = "Elf" Cls Else Print "Ungültige Eingabe, nochmal!" EndIf Until rasse2 = "Ork" Or rasse2 = "Mensch" Or rasse2 = "Elf" Cls If rasse1 = "Ork" staerke1% = 3 verteidigung1% = 2 geschicklichkeit1% = 1 geschwindigkeit1% = 2 ElseIf rasse1 = "Mensch" staerke1% = 2 verteidigung1% = 2 geschicklichkeit1% = 3 geschwindigkeit1% = 1 ElseIf rasse1 = "Elf" staerke1% = 1 verteidigung1% = 2 geschicklichkeit1% = 2 geschwindigkeit1% = 3 EndIf If rasse2 = "Ork" staerke2% = 3 verteidigung2% = 2 geschicklichkeit2% = 1 geschwindigkeit2% = 2 ElseIf rasse2 = "Mensch" staerke2% = 2 verteidigung2% = 2 geschicklichkeit2% = 3 geschwindigkeit2% = 1 ElseIf rasse2 = "Elf" staerke2% = 1 verteidigung2% = 2 geschicklichkeit2% = 2 geschwindigkeit2% = 3 EndIf Locate 1,1 Repeat Print name1 + ", du hast einen Skillpunkt." Print "Um deine Fähigkeiten zu verbessern, Gib einer der Zahlen ein (nur die Zahlen): " Print "-1- für Stärke," Print "-2- für Verteidigung," Print "-3- für Geschicklichkeit und " Print "Dein " + rasse1 + " besitzt folgende Werte: " Print staerke1 + " Stärke" Print verteidigung1 + " Verteidgung" Print geschicklichkeit1 + " Geschicklichkeit" Repeat skill1a% = Int ( Input ( "-> " ) ) If skill1a = "1" staerke1 = staerke1 + 1 ElseIf skill1a = "2" verteidigung1 = verteidigung1 + 1 ElseIf skill1a = "3" geschicklichkeit1 = geschicklichkeit1 + 1 Else Print "Falsche Zahl, probiers nochmal!" EndIf Until skill1a = "1" Or skill1a = "2" Or skill1a = "3" Or skill1a = "4" Cls Locate 1,1 Print name2 + ", du hast einen Skillpunkt." Print "Um deine Fähigkeiten zu verbessern, Gib einer der Zahlen ein (nur die Zahlen): " Print "-1- für Stärke," Print "-2- für Verteidigung," Print "-3- für Geschicklichkeit und " Print "Dein " + rasse2 + " besitzt folgende Werte: " Print staerke2 + " Stärke" Print verteidigung2 + " Verteidgung" Print geschicklichkeit2 + " Geschicklichkeit" Repeat skill2a% = Int ( Input ( "-> " ) ) If skill2a = "1" staerke2 = staerke2 + 1 ElseIf skill2a = "2" verteidigung2 = verteidigung2 + 1 ElseIf skill2a = "3" geschicklichkeit2 = geschicklichkeit2 + 1 Else Print "Falsche zahl, probiers nochmal!" EndIf Until skill2a = "1" Or skill2a = "2" Or skill2a = "3" Or skill2a = "4" Cls Locate 1,1 Print "Es wird gewürfelt, wer als erstes angreift." aw1 = Rand ( 1 , 6 ) aw2 = Rand ( 1 , 6 ) Print name1 + " hat eine " + aw1 + " gewürfelt." Print name2 + " hat eine " + aw2 + " gewürfelt." If aw1 > aw2 Print name1 + " darf anfangen!" name1da% = 1 name2da% = 0 ElseIf aw1 < aw2 Print name2 + " darf anfangen!" name2da% = 1 name1da% = 0 ElseIf aw1 = aw2 Print "Untenschieden, es wird noch mal gewürfelt!" EndIf Until aw1 <> aw2 WaitKey() Cls Locate 1,1 If name1da% = 1 Print name1 + ", du greifst mit deinem " + rasse1 + " an. Er hat eine Stärke von " + staerke1 + "!" Print name2 + " hat eine Verteidigung von " + verteidigung2 + "!" staerke1 = staerke1 - verteidigung2 Print name1 + ", deine effektive Angriffskraft beträgt " + staerke1 + "." ElseIf name2da% = 1 Print name2 + ", du greifst mit deinem " + rasse2 + " an. Er hat eine Stärke von " + staerke2 + "!" Print name1 + " hat eine Verteidigung von " + verteidigung1 + "!" staerke2 = staerke2 - verteidigung1 Print name2 + ", deine effektive Angriffskraft beträgt " + staerke2 + "." EndIf If name1da = 1 And staerke1 < 0 Print name1 + ", du würdest diesen Angriff verlieren." ElseIf name1da = 1 And staerke1 >= 1 Print name1 + ", du hast den Angriff gewonnen." punkte1% = punkte1 +1 ElseIf name1da = 1 And stearke1 = 0 Print "Unentschieden. Ab in die nächste Runde!" ElseIf name2da = 1 And staerke2 < 0 Print name2 + ", du würdest diesen Angriff verlieren." ElseIf name2da = 1 And staerke2 >= 1 Print name2 + ", du hast den Angriff gewonnen." punkte2% = punkte2 +1 ElseIf name2da = 1 And stearke2 = 0 Print "Unentschieden. Ab in die nächste Runde!" EndIf If name1da = 1 And staerke < 0 staerke1 = staerke1 + geschicklichkeit1 ElseIf name2da = 1 And staerke2 < 0 staerke2 = staerke2 + geschicklichkeit2 If name1da = 1 And staerke1 < 0 Print name1 + ", deine effektive Angriffskraft + Geschicklichkeit ergibt: " + staerke1 + "! Du verlierst also den Angriff!" punkte2% = punkte2 + 1 ElseIf name2da = 1 And staerke2 < 0 Print name2 + ", deine effektive Angriffskraft + Geschicklichkeit ergibt: " + staerke2 + "! Du verlierst also den Angriff!" punkte1% = punkte1 + 1 EndIf If name1da = 1 And staerke1 > 0 Print "Deine effektive Angriffskraft beträgt " + staerke1 + "! Du hast also gewonnen!" punkte1% = punkte1 + 1 ElseIf name2da = 1 And staerke2 > 0 Print "Deine effektvie Angriffskraft beträgt " + staerke2 + "! Du hast also gewonnen!" punkte2% = punkte2 +1 If name1da = 1 And staerke1 = 0 staerke1 = staerke1 + verteidigung2 ElseIf name1da = 1 And staerke1 <> 0 staerke1 = staerke1 + verteidigung2 - geschicklichkeit1 ElseIf name2da = 1 And staerke2 = 0 staerke2 = staerke2 + verteidigung1 ElseIf name2da = 1 And staerke2 <> 0 staerke2 = staerke2 + verteidigung1 - geschicklichkeit2 EndIf WaitKey() Cls Locate 1,1 Print "Der Punktestand:" Print name1 + " hat: " + punkte1 + " Punkte" Print name2 + " hat: " + punkte2 + " Punkte" WaitKey() Cls Locate 1,1 Until punkte1 = 10 Or punkte2 = 10 If punkte1 = 10 Print "Glückwunsch! " + name1 + " hat gewonnen!" ElseIf punkte2 = 10 Print "Glückwunsch! " + name2 + " hat gewonnen!" EndIf WaitKey() End ich hab halt tausend if-then strukturen, weil ich mir dachte so gehts auch, und mit dem ersten spieler klappt eigentlich auch fast immer alles, nur mit dem zweiten spieler manchmal nicht... ich hoffe der post gehört hierhin, wusste nicht, wo sonst ![]() mfg Fredbuffer |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich sehe da zwei fehlende EndIf's... ![]() Code: [AUSKLAPPEN] If name1da = 1 And staerke < 0
staerke1 = staerke1 + geschicklichkeit1 ElseIf name2da = 1 And staerke2 < 0 staerke2 = staerke2 + geschicklichkeit2 Code: [AUSKLAPPEN] If name1da = 1 And staerke1 > 0
Print "Deine effektive Angriffskraft beträgt " + staerke1 + "! Du hast also gewonnen!" punkte1% = punkte1 + 1 ElseIf name2da = 1 And staerke2 > 0 Print "Deine effektvie Angriffskraft beträgt " + staerke2 + "! Du hast also gewonnen!" punkte2% = punkte2 +1 ENDIF ! und ein fehlendes Repeat Code: [AUSKLAPPEN] Print "Es wird gewürfelt, wer als erstes angreift."
aw1 = Rand ( 1 , 6 ) aw2 = Rand ( 1 , 6 ) Print name1 + " hat eine " + aw1 + " gewürfelt." Print name2 + " hat eine " + aw2 + " gewürfelt." If aw1 > aw2 Print name1 + " darf anfangen!" name1da% = 1 name2da% = 0 ElseIf aw1 < aw2 Print name2 + " darf anfangen!" name2da% = 1 name1da% = 0 ElseIf aw1 = aw2 Print "Untenschieden, es wird noch mal gewürfelt!" EndIf Until aw1 <> aw2 Funktionierender Code (afaik) Code: [AUSKLAPPEN] Graphics 1020, 740
SeedRnd MilliSecs() Write "Name für Spieler 1 eingeben: " name1$ = Input ( "-> " ) Cls Write "Name für Spieler 2 eingeben: " name2$ = Input ( "-> " ) Cls Locate 1,1 Write "Welche Rasse will " + name1 + " spielen?" Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat rasse1$ = Input ( "-> " ) If rasse1 = "Ork" Cls ElseIf rasse1 = "Mensch" Cls ElseIf rasse1 = "Elf" Cls Else Print "Ungültige Eingabe, nochmal!" EndIf Until rasse1 = "Ork" Or rasse1 = "Mensch" Or rasse1 = "Elf" Cls Locate 1,1 Write "Welche Rasse will " + name2 + " spielen?" Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat rasse2$ = Input ( "-> " ) If rasse2 = "Ork" Cls ElseIf rasse2 = "Mensch" Cls ElseIf rasse2 = "Elf" Cls Else Print "Ungültige Eingabe, nochmal!" EndIf Until rasse2 = "Ork" Or rasse2 = "Mensch" Or rasse2 = "Elf" Cls If rasse1 = "Ork" staerke1% = 3 verteidigung1% = 2 geschicklichkeit1% = 1 geschwindigkeit1% = 2 ElseIf rasse1 = "Mensch" staerke1% = 2 verteidigung1% = 2 geschicklichkeit1% = 3 geschwindigkeit1% = 1 ElseIf rasse1 = "Elf" staerke1% = 1 verteidigung1% = 2 geschicklichkeit1% = 2 geschwindigkeit1% = 3 EndIf If rasse2 = "Ork" staerke2% = 3 verteidigung2% = 2 geschicklichkeit2% = 1 geschwindigkeit2% = 2 ElseIf rasse2 = "Mensch" staerke2% = 2 verteidigung2% = 2 geschicklichkeit2% = 3 geschwindigkeit2% = 1 ElseIf rasse2 = "Elf" staerke2% = 1 verteidigung2% = 2 geschicklichkeit2% = 2 geschwindigkeit2% = 3 EndIf Locate 1,1 Repeat Print name1 + ", du hast einen Skillpunkt." Print "Um deine Fähigkeiten zu verbessern, Gib einer der Zahlen ein (nur die Zahlen): " Print "-1- für Stärke," Print "-2- für Verteidigung," Print "-3- für Geschicklichkeit und " Print "Dein " + rasse1 + " besitzt folgende Werte: " Print staerke1 + " Stärke" Print verteidigung1 + " Verteidgung" Print geschicklichkeit1 + " Geschicklichkeit" Repeat skill1a% = Int ( Input ( "-> " ) ) If skill1a = "1" staerke1 = staerke1 + 1 ElseIf skill1a = "2" verteidigung1 = verteidigung1 + 1 ElseIf skill1a = "3" geschicklichkeit1 = geschicklichkeit1 + 1 Else Print "Falsche Zahl, probiers nochmal!" EndIf Until skill1a = "1" Or skill1a = "2" Or skill1a = "3" Or skill1a = "4" Cls Locate 1,1 Print name2 + ", du hast einen Skillpunkt." Print "Um deine Fähigkeiten zu verbessern, Gib einer der Zahlen ein (nur die Zahlen): " Print "-1- für Stärke," Print "-2- für Verteidigung," Print "-3- für Geschicklichkeit und " Print "Dein " + rasse2 + " besitzt folgende Werte: " Print staerke2 + " Stärke" Print verteidigung2 + " Verteidgung" Print geschicklichkeit2 + " Geschicklichkeit" Repeat skill2a% = Int ( Input ( "-> " ) ) If skill2a = "1" staerke2 = staerke2 + 1 ElseIf skill2a = "2" verteidigung2 = verteidigung2 + 1 ElseIf skill2a = "3" geschicklichkeit2 = geschicklichkeit2 + 1 Else Print "Falsche zahl, probiers nochmal!" EndIf Until skill2a = "1" Or skill2a = "2" Or skill2a = "3" Or skill2a = "4" Cls Locate 1,1 Repeat Print "Es wird gewürfelt, wer als erstes angreift." aw1 = Rand ( 1 , 6 ) aw2 = Rand ( 1 , 6 ) Print name1 + " hat eine " + aw1 + " gewürfelt." Print name2 + " hat eine " + aw2 + " gewürfelt." If aw1 > aw2 Print name1 + " darf anfangen!" name1da% = 1 name2da% = 0 ElseIf aw1 < aw2 Print name2 + " darf anfangen!" name2da% = 1 name1da% = 0 ElseIf aw1 = aw2 Print "Untenschieden, es wird noch mal gewürfelt!" EndIf Until aw1 <> aw2 WaitKey() Cls Locate 1,1 If name1da% = 1 Print name1 + ", du greifst mit deinem " + rasse1 + " an. Er hat eine Stärke von " + staerke1 + "!" Print name2 + " hat eine Verteidigung von " + verteidigung2 + "!" staerke1 = staerke1 - verteidigung2 Print name1 + ", deine effektive Angriffskraft beträgt " + staerke1 + "." ElseIf name2da% = 1 Print name2 + ", du greifst mit deinem " + rasse2 + " an. Er hat eine Stärke von " + staerke2 + "!" Print name1 + " hat eine Verteidigung von " + verteidigung1 + "!" staerke2 = staerke2 - verteidigung1 Print name2 + ", deine effektive Angriffskraft beträgt " + staerke2 + "." EndIf If name1da = 1 And staerke1 < 0 Print name1 + ", du würdest diesen Angriff verlieren." ElseIf name1da = 1 And staerke1 >= 1 Print name1 + ", du hast den Angriff gewonnen." punkte1% = punkte1 +1 ElseIf name1da = 1 And stearke1 = 0 Print "Unentschieden. Ab in die nächste Runde!" ElseIf name2da = 1 And staerke2 < 0 Print name2 + ", du würdest diesen Angriff verlieren." ElseIf name2da = 1 And staerke2 >= 1 Print name2 + ", du hast den Angriff gewonnen." punkte2% = punkte2 +1 ElseIf name2da = 1 And stearke2 = 0 Print "Unentschieden. Ab in die nächste Runde!" EndIf If name1da = 1 And staerke < 0 staerke1 = staerke1 + geschicklichkeit1 ElseIf name2da = 1 And staerke2 < 0 staerke2 = staerke2 + geschicklichkeit2 EndIf If name1da = 1 And staerke1 < 0 Print name1 + ", deine effektive Angriffskraft + Geschicklichkeit ergibt: " + staerke1 + "! Du verlierst also den Angriff!" punkte2% = punkte2 + 1 ElseIf name2da = 1 And staerke2 < 0 Print name2 + ", deine effektive Angriffskraft + Geschicklichkeit ergibt: " + staerke2 + "! Du verlierst also den Angriff!" punkte1% = punkte1 + 1 EndIf If name1da = 1 And staerke1 > 0 Print "Deine effektive Angriffskraft beträgt " + staerke1 + "! Du hast also gewonnen!" punkte1% = punkte1 + 1 ElseIf name2da = 1 And staerke2 > 0 Print "Deine effektvie Angriffskraft beträgt " + staerke2 + "! Du hast also gewonnen!" punkte2% = punkte2 +1 EndIf If name1da = 1 And staerke1 = 0 staerke1 = staerke1 + verteidigung2 ElseIf name1da = 1 And staerke1 <> 0 staerke1 = staerke1 + verteidigung2 - geschicklichkeit1 ElseIf name2da = 1 And staerke2 = 0 staerke2 = staerke2 + verteidigung1 ElseIf name2da = 1 And staerke2 <> 0 staerke2 = staerke2 + verteidigung1 - geschicklichkeit2 EndIf WaitKey() Cls Locate 1,1 Print "Der Punktestand:" Print name1 + " hat: " + punkte1 + " Punkte" Print name2 + " hat: " + punkte2 + " Punkte" WaitKey() Cls Locate 1,1 Until punkte1 = 10 Or punkte2 = 10 If punkte1 = 10 Print "Glückwunsch! " + name1 + " hat gewonnen!" ElseIf punkte2 = 10 Print "Glückwunsch! " + name2 + " hat gewonnen!" EndIf WaitKey() End Am besten wäre nun, du würdest dein Spiel ganz neuprogrammieren. Mit dem Einsatz von [Function] , [Select] , Kommentaren. Dies wird dir beim Debuggen sehr helfen... eigentlich solltest das ja auch du machen... ist ne sehr lehrreiche Sache für Beginner ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Fredbuffer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, vielen dank für die schnelle antwort ![]() ja dann mach ich es nochmal neu, und sobald ich es fertig hab, poste ich es hier einfach nochmal, oder wenn ich probleme hab halt ![]() mfg Fredbuffer |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. ...und auch du: Rechtschreibung und Zeichensetzung bitte nicht vernachlässigen, danke. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Fredbuffer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, ich habs mal versucht, aber ich hab i-wie keinen plan, was ich jetzt mit Funktionen machen soll...?
als ich weiß, wie man Funktionen verwendet, aber nicht, wie ich das halt jetzt bei meinem..."spiel" einfügen soll.... Fredbuffer |
||
feiderehemals "Decelion" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eigentlich ganz einfach - lagere einzelne Programmteile in Funktionen aus, die du dann von der Hauptschleife aus aufrufst. Du kannst sogar die Hauptschleife in eine Funktion packen - Das könnte nützlich werden, wenn das Programm aus mehreren Teilen besteht und somit mehrere Hauptschleifen hat.
lg Dece |
||
![]() |
Sir Gauss der III |
![]() Antworten mit Zitat ![]() |
---|---|---|
Functionen sind Programmteile die
-> 1) Häufig gebraucht werden -> 2) eine zusammenhängende Einheit bilden um es bei 2 oder mehr Spieler gut zu verwenden, sieh dir mal die dim-Variablen an. als Beispiel für 1 (in deinem Programm): Code: [AUSKLAPPEN] Cls
Locate 1,1 Write "Welche Rasse will " + name1 + " spielen?" Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat rasse1$ = Input ( "-> " ) If rasse1 = "Ork" Cls ElseIf rasse1 = "Mensch" Cls ElseIf rasse1 = "Elf" Cls Else Print "Ungültige Eingabe, nochmal!" EndIf Until rasse1 = "Ork" Or rasse1 = "Mensch" Or rasse1 = "Elf" Cls Locate 1,1 Write "Welche Rasse will " + name2 + " spielen?" Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat rasse2$ = Input ( "-> " ) If rasse2 = "Ork" Cls ElseIf rasse2 = "Mensch" Cls ElseIf rasse2 = "Elf" Cls Else Print "Ungültige Eingabe, nochmal!" EndIf Until rasse2 = "Ork" Or rasse2 = "Mensch" Or rasse2 = "Elf" kann so gekürzt werden: Code: [AUSKLAPPEN] ;NEU "DIM-Befehl" ->
;Dim packt mehrere Variable in eine Bezeichnung. statt ;spieler1, spieler2 ;nun ;spieler(1), Spieler(2) ;Vorteil bei dim ist, dass mit einer anderen Variable die Spielervariable gewechselt werden kann: ;Spieler(nummer) Dim spieler(2),rasse(2) ;.... Starteinstellungen ;Hauptprogramm ;.... ;Einsatz der Function: rasse(1)=rasse_geben(1) rasse(2)=rasse_geben(2) ;oder, besser noch: ;n=0 ;Repeat ; n=n+1 ; rasse(n)=rasse_geben(n) ;Until n=2 Or KeyHit(1) ;.... ;Hauptprogrammende ;Einsatz der Functionen ;.... ;Bezeichnung der Function (Ihr Name) und welche werte der Function übergeben werden. diese hier ;braucht die nummer des Spielers. es können auch meherere Werte übergeben werden. Function rasse_geben(spieler) Cls Locate 1,1 Write "Welche Rasse will " + name(spieler) + " spielen?" ;hier wäre besser: ;write 1,1,"Welche Rasse will " + name(spieler) + " spielen?" ;write 1,10,"Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" ;"Write x,y" positioniert den Text schon dort wo du ihn haben willst. Input kannst du dann mit ;locate woanders setzen. Z.B. größerer Zeilenabstand. Print "Es stehen -Ork- , -Mensch- und -Elf- zur Verfügung!" Repeat les$ = Input ( "-> " ) ;Besser: Auswahl über Nummern, so muss weniger auf Rechtschreibubg geachtet werden If les = "Ork" Then Cls Return les ;"Return" beendet die Function und gibt den dahinter stehenden wert zurück. es ist dann also nichts ;anderes wie: ;rasse(1)=les ElseIf les = "Mensch" Then Cls Return les ElseIf les = "Elf" Then Cls Return les Else Print "Ungültige Eingabe, nochmal!" EndIf Until KeyHit(1) ;WICHTIG !!! jede schleife sollte mit einem Notschalter beendbar sein. Keyhit(1) wartet auf ;ESC (bzw. liest aus, ob ESC gedrückt wurde). So kann man ein Programm beenden, auch wenn es eine ;unendliche Schleife hat. ;damit hört diese Function auf End Function Das schaut jetzt nach mehr aus, kürzt aber den Code duetlich wenn du meine Kommentare rausnimmst. Das selbe Prinzip kannst du mit Programmteilen machen, die du zwar nur einmal nutzt, aber die doch als ein Plock zusammen gehören. so kannst du dich dann schneller im Programm zurecht finden. Z.B. kann der Teil des Codes der den kampf berechnet in eine Function geschrieben werden. im Hauptcode steht dann z.B. nur noch: Kampf() Wenn du dann den kampf ändern möchtes must du nur den Code in dieser Function anschauen. TIPP: Achte darauf, dass wenn du Variable sowohl in der Function als auch im Hauptprogramm nutzen willst, müssen diese Global sein. d.H. am Anfang deines Programms als Globale definiert werden: Global Spieleranzahl TIPP: nutze die Komentarfunktion. kleine Bemerkungen und Gedächtnisstützen sind sehr hilfreich wenn du später mal ein Programm anschaust. So erkennst du schneller was wo gemacht wird. z.B. so: Code: [AUSKLAPPEN] ;*******************
;Variable ... ... ;******************* ;Spieler eingabe ... ... ;******************* ;hier wird der Kampf berechnet .... ;hier wird die stärke um die Geschicklichkeit erhöht If name1da = 1 And staerke < 0 staerke1 = staerke1 + geschicklichkeit1 ElseIf name2da = 1 And staerke2 < 0 staerke2 = staerke2 + geschicklichkeit2 EndIf TIPP: definiere deine Variable immer gleich zu beginn deines Programms. so weißt du immer, welche Variabeln gerade im Programm rumschwirren, für was sie sind, und wie sie geschreiben werden. gewöhn dir gleich einen Aufbau deines Programms an, den du beibehälst. es gibt da mehrere Ansätze, so im Groben: Code: [AUSKLAPPEN] ;Süstemeinstellung
Graphics 640, 480, 16, 2 ;führt das Programm im Fenster aus (4. Wert), Hilfreich während des Testzeitraum SeedRnd MilliSecs() ;schaltet den Zufall ein ;Variable Global Spieleranzahl ;überall verwendbar Local Tag ;nur im Hauptprogramm verwendbar Dim spieler(3) ;Überall verwendbar= 3 Variable Spieler(1), Spieler(2), Spieler(3) ;Vorausgehende Einstellungen ;Hauptschleife Repeat ;Spiel Until KeyHit(1) ;Functionen Function test() ;.... End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group