hilfe zu function
Übersicht

Killer999Betreff: hilfe zu function |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich weiß nicht genau wie ich jetzte weiter kommen soll mein code ausschnitt Code: [AUSKLAPPEN] ;frage 1
Function Frage1() ;Frage 1 frage1$ = "a) Carlo Pedersoli" frage12$ = "b) Franco Pedersoli" frage123$ = "c) Alessandro Pedersoli" frage1234$ = "Wie heisst Bud Spencer mit richtigem Namen? : " ;----------------------------------------------------------------------- Cls ; Spieler Namen Player$ = Input ("Spielernamen? : ") ;------------------------------------------- bild = LoadImage(Pak("\Bilder\test.kfg")) Pakclean() DrawImage bild,1,1 Locate 300,450 high$ = "1000" Print " 0 Punkte" stream = ReadFile(pak("frage.txt")) : DLPak() ; DLPak() deletes the last Unpacked File wert3$ = ReadLine$(stream) Pakclean() Locate 50,450 Color 0,0,0 Print wert3$ Print "" Print frage1$ Print frage12$ Print frage123$ Print "" nochmal$=Input (frage1234$) da ich ja ein quiz machen will mussen ja antworten usw gehen früher hab ihc das mit goto gemacht will es jetzt auf function schreiben. Hier stehen die fragen Code: [AUSKLAPPEN] Locate 50,450
Color 0,0,0 Print wert3$ Print "" Print frage1$ Print frage12$ Print frage123$ Print "" nochmal$=Input (frage1234$)[/ jetzt will ich machen das antwort a richtig ist aber wie ist der befehl das er zur nästen function rüber geht? |
||
TimoBetreff: Re: hilfe zu function |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So - vielleicht hilft dir das ja. Wenn du Fragen hast - melden ![]() Code: [AUSKLAPPEN] Global bild = LoadImage(pak("\Bilder\test.kfg"))
Pakclean() Cls ; Spieler Namen Player$ = Input ("Spielernamen? : ") ; so, entweder du hast eine Bestimmte Frage die du stellen möchtest oder Stellefrage(1) ;du stellst eine Frage per Zufall aus allen die du hast Repeat StelleFrage(Rand(1,10) ;in diesem Fall ist max=10 ;das heißt du brauchst auch ;10 Textdateien mit den namen ;frage1.txt ;frage2.txt ;... ;frage10.txt Until Keyhit(1) Function StelleFrage(nr) ;Frage file = readfile(pak("frage" + nr + ".txt")) ;bei 1 ist der pfad = frage1.txt ;du brauchst also für frage1 eine Datei im Pak-File ;namens frage + FrageNr + endung mit .txt ;In ihr sollten mit WriteString vorher die ;Antworten und die Frage hineingeschrieben werden... ;Fertig ;) Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Frage$ = ReadString(file) Closefile(file) ; Ganz Wichtig!! DlPak() ;----------------------------------------------------------------------- DrawImage bild,1,1 Locate 300,450 high$ = "1000" Print " 0 Punkte" Locate 50,450 Color 0,0,0 Print Frage$ Print "" Print Antwort1$ Print Antwort2$ Print Antwort3$ Print "" Print "Bitte Taste Drücken" waitkey() end function |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke für die Antwort aber ich habe noch ein problem festgestellt
und zwar benutze ich ja in der Code: [AUSKLAPPEN] Function Frage1()
Player$ = Input ("Spielernamen? : ") Dieses Player will ich aber unbedingt in Code: [AUSKLAPPEN] Function Frage2()
Text 0,50, Player$ denn Name auswerten dies geht aber nicht wie könnte man das hinbekommen? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Global Player$ am Anfang des Codes oder an die Function übergeben ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
stimmt, musst player noch global deklarieren, aber eigentlich wollte ich dir mit meiner Version die Vorzüge von Funktionen zeigen. Du brauchst nämlich nicht für jede Frage eine Funktion, sondern EINE Funktion, und du übergibst die Frage einfach.
Das spart Zeit,Nerven,Codezeilen und hilft den überblick zu behalten ![]() |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Timo hat Folgendes geschrieben: stimmt, musst player noch global deklarieren, aber eigentlich wollte ich dir mit meiner Version die Vorzüge von Funktionen zeigen. Du brauchst nämlich nicht für jede Frage eine Funktion, sondern EINE Funktion, und du übergibst die Frage einfach.
Das spart Zeit,Nerven,Codezeilen und hilft den überblick zu behalten ![]() Deine idee ist auch sehr gut ich will versuchen die zeilen zu verstehen aber dies dauert bei mir immer ^^ ich wolle auch diese functionen rein bauen mit zufall und aus txt daten lesen die dann in ein pak format hinzufügen. ich versuch mal zu beschreiben und ihr sagt mir wenn ich was flasch erklärt habe Also hier wie zufall ausgewählt aber nur wie soll ich jetzt diese Frage1.txt in diesesn Feature rein bringen? /Zufall 1-10 und ich versteh das nicht ganz genau. Code: [AUSKLAPPEN] Repeat
StelleFrage(Rand(1,10) ;in diesem Fall ist max=10 ;das heißt du brauchst auch ;10 Textdateien mit den namen ;frage1.txt ;frage2.txt ;... ;frage10.txt Until KeyHit(1) Sobald ein zufall ausgewählt wurde Die nummer lesen und dann die Nummer die Function übergeben TXT Datei wird ausgelesen und wir die nummer mit nr hinzugefügt datei wird geladen. Dann nach wir die Ganze zeile hintereinander aus gelesen Datei wir geschlossen und die entpackten sachen werden gelöscht. Code: [AUSKLAPPEN] Function StelleFrage(nr)
;Frage file = ReadFile(pak("frage" + nr + ".txt")) ;bei 1 ist der pfad = frage1.txt ;du brauchst also für frage1 eine Datei im Pak-File ;namens frage + FrageNr + endung mit .txt ;In ihr sollten mit WriteString vorher die ;Antworten und die Frage hineingeschrieben werden... ;Fertig ;) Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Frage$ = ReadString(file) CloseFile(file) ; Ganz Wichtig!! DlPak() |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja das hört sich doch garnicht so schlecht an!! ![]() ![]() Code: [AUSKLAPPEN] name$ = Input("Name der Datei: ") ;Frage1.txt zum Beispiel eingeben Frage$ = Input("Wie lautet die Frage? ") ;Frage eingeben A1$ = Input("Antowort a) ") ;Antworten eingeben A2$ = Input("Antowort b) ") A3$ = Input("Antowort c) ") Loesung = Input("Welche Antwort ist richtig? Bitte Zahl (1-3) eingeben: ") file = writefile(name$) WriteString file,Frage$ WriteString file,A1$ WriteString file,A2$ WriteString file,A3$ WriteByte file,Loesung closefile(file) Print " --- " + name$ + " --- wurde erfolgreich erstellt!" Print "bitte Taste drücken..." waitkey() end Allerdings ist die codierung jetzt n bissle anders, so dass die Funktion ein klein wenig abgeändert werden müsste beim Lesen: Code: [AUSKLAPPEN] Function StelleFrage(nr) ;Frage file = readfile(pak("frage" + nr + ".txt")) ;bei 1 ist der pfad = frage1.txt ;du brauchst also für frage1 eine Datei im Pak-File ;namens frage + FrageNr + endung mit .txt ;In ihr sollten mit WriteString vorher die ;Antworten und die Frage hineingeschrieben werden... ;Fertig ;) Frage$ = ReadString(file) Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Loesung = ReadByte(file) Closefile(file) ; Ganz Wichtig!! DlPak() ;.... ;.... |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok dies hab cih alles verstanden nur noch das mit denn zufall versteh ich nicht. | ||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Repeat
StelleFrage(Rand(1,10) ;in diesem Fall ist max=10 ;das heißt du brauchst auch ;10 Textdateien mit den namen ;frage1.txt ;frage2.txt ;... ;frage10.txt Until Keyhit(1) ok, also diese Schleife (von Repeat bis Until) wird solange wiederholt, bis esc gedrückt wurde. Pro Schleife wird die Funktion StelleFrage aufgerufen. Wir übergeben ihr einen Zufallswert aus allen Fragen die wir insgesammt haben. Hast du zum Beispiel 20 txt dateien, dann ist der max. Wert 20. Übergibst du also den Wert 10, dann öffnet er die Datei Frage10.txt und gibt die Frage mit den Antworten aus. Sonst würdest du ja immer die Fragen nach der Reihe kriegen. So hast du ein gewisses zufallsprinzip drinne. Wenn du es nicht haben willst, dann kannst du es auch getrost rauslassen. Joa das war es eigentlich schon... |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Timo hat Folgendes geschrieben: Code: [AUSKLAPPEN]
Repeat
StelleFrage(Rand(1,10) ;in diesem Fall ist max=10 ;das heißt du brauchst auch ;10 Textdateien mit den namen ;frage1.txt ;frage2.txt ;... ;frage10.txt Until Keyhit(1) ok, also diese Schleife (von Repeat bis Until) wird solange wiederholt, bis esc gedrückt wurde. Pro Schleife wird die Funktion StelleFrage aufgerufen. Wir übergeben ihr einen Zufallswert aus allen Fragen die wir insgesammt haben. Hast du zum Beispiel 20 txt dateien, dann ist der max. Wert 20. Übergibst du also den Wert 10, dann öffnet er die Datei Frage10.txt und gibt die Frage mit den Antworten aus. Sonst würdest du ja immer die Fragen nach der Reihe kriegen. So hast du ein gewisses zufallsprinzip drinne. Wenn du es nicht haben willst, dann kannst du es auch getrost rauslassen. Joa das war es eigentlich schon... ok bis jetzt verstanden muss ich die txt datei so reinschreiben? Code: [AUSKLAPPEN] StelleFrage(Rand(1,10)
;in diesem Fall ist max=10 ;das heißt du brauchst auch ;10 Textdateien mit den namen frage1.txt frage2.txt frage3.txt frage4.txt frage5.txt ;usw frage10.txt Until Keyhit(1) |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nö in die Textdatei kommt nur das rein, was dieses Programm dafür produziert, führ das mal aus, dann siehst du ja was passiert, dieses Programm erstellt dann auch die richtige datei, musst nur den namen eingeben:
Code: [AUSKLAPPEN] name$ = Input("Name der Datei: ") ;Frage1.txt zum Beispiel eingeben
Frage$ = Input("Wie lautet die Frage? ") ;Frage eingeben A1$ = Input("Antowort a) ") ;Antworten eingeben A2$ = Input("Antowort b) ") A3$ = Input("Antowort c) ") Loesung = Input("Welche Antwort ist richtig? Bitte Zahl (1-3) eingeben: ") file = writefile(name$) WriteString file,Frage$ WriteString file,A1$ WriteString file,A2$ WriteString file,A3$ WriteByte file,Loesung closefile(file) Print " --- " + name$ + " --- wurde erfolgreich erstellt!" Print "bitte Taste drücken..." waitkey() end so, in die Schleife kommt dann nur noch der aufruf der Funktion mit dem passenden Wert, der für die richtige Textdatei steht, ohne Kommentare also in der Form: Code: [AUSKLAPPEN] Repeat
StelleFrage(Rand(1,10) Until Keyhit(1) |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
habe das ganze jetzt mal zusammen gebaut
Code: [AUSKLAPPEN] name$ = Input("Name der Datei: ") ;Frage1.txt zum Beispiel eingeben
Frage$ = Input("Wie lautet die Frage? ") ;Frage eingeben A1$ = Input("Antowort a) ") ;Antworten eingeben A2$ = Input("Antowort b) ") A3$ = Input("Antowort c) ") Loesung = Input("Welche Antwort ist richtig? Bitte Zahl (1-3) eingeben: ") file = WriteFile(name$) WriteString file,Frage$ WriteString file,A1$ WriteString file,A2$ WriteString file,A3$ WriteByte file,Loesung CloseFile(file) Print " --- " + name$ + " --- wurde erfolgreich erstellt!" Print "bitte Taste drücken..." WaitKey() Stellefrage(1) End Repeat StelleFrage(Rand(1,10) Until KeyHit(1) Function StelleFrage() ;Frage file = ReadFile("frage" + nr + ".txt") Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Frage$ = ReadString(file) Print Frage$ Print Antwort1$ Print Antwort2$ Print Antwort3$ CloseFile(file) ; Ganz Wichtig!! WaitKey() End Function nur es kommt noch ein fehler Mismatched brackets in der zeile Code: [AUSKLAPPEN] StelleFrage(Rand(1,10)
|
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
argg! also erstmal, das sollen zwei unterschiedliche Programme sein, einmal eins, was die Txt Dateien erstellt und eins was sie halt ausliest (das eigentliche Programm)
Also so hatte ichs gedacht: Das Programm zum erstellen der .txt dateien: Code: [AUSKLAPPEN] name$ = Input("Name der Datei: ") ;Frage1.txt zum Beispiel eingeben
Frage$ = Input("Wie lautet die Frage? ") ;Frage eingeben A1$ = Input("Antowort a) ") ;Antworten eingeben A2$ = Input("Antowort b) ") A3$ = Input("Antowort c) ") Loesung = Input("Welche Antwort ist richtig? Bitte Zahl (1-3) eingeben: ") file = WriteFile(name$) WriteString file,Frage$ WriteString file,A1$ WriteString file,A2$ WriteString file,A3$ WriteByte file,Loesung CloseFile(file) Print " --- " + name$ + " --- wurde erfolgreich erstellt!" Print "bitte Taste drücken..." WaitKey() end und das hier ist das eigentliche spiel, wenn du die .txt dateien alle erstellt hast, die du brauchst... Code: [AUSKLAPPEN] ;hier war noch der Einleitungsteil von deiner eigntlichen Version Repeat StelleFrage(Rand(1,10) Until KeyHit(1) end Function StelleFrage(nr) ;Frage file = ReadFile("frage" + nr + ".txt") Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Frage$ = ReadString(file) Print Frage$ Print Antwort1$ Print Antwort2$ Print Antwort3$ CloseFile(file) ; Ganz Wichtig!! WaitKey() End Function |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo ich weiss habe nur mal alles zusammen gefasst.
aber die einziege schwierig keit ist das hier Code: [AUSKLAPPEN] StelleFrage(Rand(1,10)
in der kommt ein fehler Mismatched bracket |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nö jetzt nicht mehr... sollte zumindest nicht..
denn vorher fehlte in deinem in der Funktionsdeklaration: Code: [AUSKLAPPEN] Function StelleFrage()
die zu übergebende varibable bzw. ihr name Code: [AUSKLAPPEN] Function StelleFrage(nr)
sollte es immer noch nicht gehen dann wunderts mich gewaltig ![]() |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
habve deinen genommen
Code: [AUSKLAPPEN] ;hier war noch der Einleitungsteil von deiner eigntlichen Version
Repeat StelleFrage(Rand(1,10) Until KeyHit(1) End Function StelleFrage(nr) ;Frage file = ReadFile("frage" + nr + ".txt") Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Frage$ = ReadString(file) Print Frage$ Print Antwort1$ Print Antwort2$ Print Antwort3$ CloseFile(file) ; Ganz Wichtig!! WaitKey() End Function geht immer noch nicht |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, zu mismatcht brackets (oder so ähnlich), du hasst eine KLammer vergessen:
Zitat: StelleFrage(Rand(1,10)) |
||
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dank dir ![]() |
||
- Zuletzt bearbeitet von Killer999 am Di, Okt 12, 2004 15:05, insgesamt 2-mal bearbeitet
Killer999 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aso diese zufall geht irgend wie nicht er nimmt immer die selbe frage am anfang.
Code: [AUSKLAPPEN] Include "pak.bb"
Repeat StelleFrage(Rand(1,4)) Until KeyHit(1) end Function StelleFrage(nr) ;Frage file = ReadFile(Pak("\fragen\frage" + nr + ".txt")) Frage$ = ReadString(file) Antwort1$ = ReadString(file) Antwort2$ = ReadString(file) Antwort3$ = ReadString(file) Print Frage$ Print Antwort1$ Print Antwort2$ Print Antwort3$ CloseFile(file) ; Ganz Wichtig!! WaitKey() End Function |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja das stimmt, das kommt daher das, es ja eigentlich keine echte Zufallszahlen gibt. Aber man kann den Anfangswert "zufällig" erscheinen lassen, indem man ihn auf den Wert von Millisecs() setzt.
Schreibe diese Zeile hier am besten noch ganz an den Anfang in deinem Programm Code: [AUSKLAPPEN] SeedRnd Millisecs()
bzw. schau dir den Befehl SeedRnd am besten noch einmal an ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group