quizspiel
Übersicht

Earl GreyBetreff: quizspiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
würde mal gerne von euch wissen wie man am besten ein quiz im stile von wer wird millionär aufbaut. will das game für eine freundin zum geburtstag machen und ev. später dann immer wieder mal erweitern. danke cu |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Dann wäre es sinnvoll die Fragen in eine externe Datei zu legen und diese dann vom Programm auslesen zu lassen. Wie die Datei aufgebaut ist, musst du dir dann eben überlegen, Beispiel: Code: [AUSKLAPPEN] Frage: [blah...] Antwort1: ... Antwort2: ... Antwort3: ... Antwort4: ... ... So kannst du ganz leicht (ohne neu zu compilieren) Fragen zu deinem Spiel hinzufügen. grüße |
||
NForcer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hoi, ich bin auch dabei grade ein größeres Quiz zu programmieren.
Soll aber schon etwas größer werden^^. Ich machs genau so wie von David beschrieben, allerdings verschlüssle ich diese Fragen, damit man nicht einsehen kann, welche Richtig ist und welche nicht ^^. Später werde ich eine art "Editor" hinzufügen mit dem man dann die Fragen selbst hinzufügen kann. Wenn du willst, kann ich dir ja helfen oder wir arbeiten zusammen... Momentan bin ich dann dabei die Joker hinzuzufügen. Zum Beispiel machste das so: man hat 10 Fragereihen à XX-Fragen die liest man dann zum Beispiel so aus: Code: [AUSKLAPPEN] For i = 1 To 4 Fragentxt(i) = OpenFile("Data\Fragen"+i+".txt") Next For i = 1 To 4 For j = 1 To Fragen_Anzahl(i) Fragenlinie$(i,j) = ReadLine(Fragentxt(i)) Next Next das gleiche dann mit den Antworten... falls du nicht weiterkommst, kannste mich ja fragen |
||
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
das is so ja überlst umständlich. wieviele Dateien willst du denn machen?
Würde alles in einer Datei speichern. IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
NForcer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
insgesamt werden es so wohl um die 25...
10x Fragen +10x Antworten und dann noch einige Config dateien.... na und sicherlich, hätte ich auch in eine packen können, aber kA... irgendwie weiss ich nicht mehr warum ich das damals nicht so gemacht habe... jetzt wäre es mir etwas zu umständlich ditt zu ändern... |
||
Earl Grey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
danke für die antworten. bin noch nicht sehr weit. aber eine generelle frage hab ich da noch: ich hab das bis hierher sehr ähnlich gemacht. ich lies die daten ein. 1 frage und 4 antwortmöglichkeiten. die frage ist dann zb. text(1). die richtige antwort text(2). nun lasse ich mittels zufallzahl text(2) - text(5) zufällig (gemischt, mit rand(2,5)) am bildschirm positionieren. nun wird zwar alles schön angezeigt, nur weiß ich nicht wie ich vermeiden kann dass eine antwort doppelt ausgegeben wird. sprich: wie frage ich ab ob ein text(x) schon am bildschirm steht um zu verhindern dass eine auswahlmöglichkeit doppelt oder gar dreimal vorhanden ist? ich hab mir schon gedacht alle antwortmöglichkeiten in ein temp file zu schreiben, und jedesmal neu zu überprüfen ob der string schon verwendet wurde. denk aber mal das muß sich eleganter lösen lassen..... big thx cu |
||
NForcer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo, am besten du machst das nicht per rand() sondern konstante Fragenummern.
also: Meinetwegen lässt du das programm einmal laufen, dann wird immer die erste Frage in den Dateien aufgerufen. anschließend speicherst du ab, welche Fragereihe du aus der Datei ausgelesen hast und speicherst das ab. Beim nächsten Programmstart wird dann diese Variable aus der Datei geladen (in dem fall dann 1) und anschließend um 1 erhöht. (nun also 2). dann übergibst du diese Varialbe der Funktion bei der du die Fragen ausliest sodass dann immer die 2. Fragereihe ausgelesen wird. usw. (so habe ich es gemacht, ist zwar etwas umsändlicher, aber wie ich finde sehr leicht umzusetzen.) zuerst wollte ich das auch per rand() befehl machen, aber dabei ist mir dann das gleiche aufgefallen wie bei dir^^. Aber um dich richtig zu verstehen, lädst du die Fragen aus EINER Datei aus oder aus mehreren (so wie ich) ? @ IMurDOOM: Jetzt fällt mir wieder ein, warum ich die Fragen aus mehreren Dateien auslesen lasse und zwar: Damit man später noch Fragen dran ranhängen kann. Denn wenn ich alle (später mal 10x10 Fragen) in eine Datei packe, ist es schwerer eine Frage meinetwegen in die 3. Fragereihe ranzuhängen, da ja dann schon die 4. anfangen würde... Mein System ist halt das man später 10 Fragen hintereinander vorgesetzt bekommt. (wie bei Wer wird Millionär). Die 1. Frage wird aus der Datei Fragen1.txt ausgelesen (in der dann mal 10 Fragen drin stehen werden oder halt noch mehr). Wenn man diese richtig beantwortet kommt man zur 2. Frage (Fragen2.txt) aus der dann wieder einer der xx-Fragen ausgesucht wird usw. usf. Da kann ich ja dann in jede Datei ganz bequem einfach ne Frage hinzufügen, erklär mir mal wie das machen soll wenn ich alle fragen in eine Datei packe... @ Earl Gray: Wenn du später mal manuell Fragen hinzufügen wollen willst, achte darauf das dein Programm ausliest wieviele Fragen in der/n Datei/en vorhanden sind, denn wenn du einfach immer nur rand(10,10) (oder was auch immer) machst, werden immer nur die gleichen Fragen aufgerufen, egal wieviele du anfügst... UND: Wie machst du das mit dem erkennen der Richtigen Frage? Ich mache es so: ich hänge einfach die die Antwort die Richtig ist einfach ein ", RICHTIG" an, und lass dies vom Programm erkennen und anschließend beim ausgeben der Antwortmöglichkeiten wieder löschen (muss ja nicht jeder sehen welche Frage richtig ist^^). ist zwar, zumindest bei mir, seeeehr kompliziert im Quelltext, weil ich dazu ne ganze menge Dims brauche, aber immernoch besser als ein Ansatz wo ich im Forum nachfrage, was ich dann eh nicht verstehe^^. so das war jetzt wieder eine ganze Menge Zeugs was ich hier geschrieben habe, aber vllt. hilft dir das ja weiter. mfG |
||
Earl Grey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
ich les auch aus mehreren dateien aus. aber du hast mich falsch verstanden. ich will die antworten "mischen" um zu verhindern dass die richtigen antworten immer an der selben stellle anzuklicken sind. d.h. ich will wenn die antwort auf frage 15 die möglichkeit A ist dann aber beim nächsten mal nicht A sonder irgendetwas anderes ist um zu verhindern sich das zeug auswendig zu merken. das mit den richtigen antworten stell ich mir in etwa so vor: ich les meine fragen/antworten ja immer so ein: text(1); frage text(2);richtige antwort text(3);falsche antwort text(4);falsche antwort text(5);falsche antwort die richtige wird nach beantwortung eingeblendet und dann mit der vom spieler gewählten verglichen. deshalb brauch ich ja auch diese "mischfunktion" weil es ja sonst ziemlich blöd wär wenn immer die erste antwort richtig ist. cu |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also nochmal zu den Zufallsfragen ohne Wiederholungen. Kann sein, dass dieses Thema Zufallszahlen ohne Doubletten schon mal aufgetaucht ist. Find ich jetzt aber nicht. Also du kannst dir zum Bleistift mit einem Array merken, ob schon die und die Zahl dran war.
Const max = 4 Global zahl[max - 1] Repeat i = Rand(max) Until zahl[i] = 0: zahl[i] = 1 Wenn die Zufallszahl(i) schonmal vorgekommen ist, sprich zahl[i] ist nicht null, dann muss die Schleife wiederholt werden. Ist die Zufallszahl hingegen "neu", so kann die Schleife verlassen werden und es wird mit zahl[i] = 1 vermerkt, dass i schon als Zufallszahl drangekommen ist. Hab ich mal für ein Memory gebraucht. Naja. Bis dann. |
||
Earl Grey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@SpionAtom:
ich habs jetzt nach einigem herumprobieren geschafft. danke für den denkanstoß. big thx cu |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Earl Grey
Freut mich, dass es jetzt funzt. Ich würd mich aber noch mehr freuen, wenn du mir dein (halb-)fertiges Programm zumailen würdest. mailto: tdpb@gmx.de (mit passendem Betreff) CU2 |
||
Earl Grey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@SpionAtom:
wenn du das wirklich willst schick ich es dir gerne. is aber wirklich sehr diletantisch und wahrscheinlich auch überaus unübersichtlich und unstrukturiert. ist mein erster gehversuch in sachen programmierung mit blitz basic. vieles basier rein auf herumprobieren. würde dir dankbar sein wenn du es dir mal ansehen würdest. big thx cu |
||
Combine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() .Anfang Print "Wer Moderiert Wer wird Millionär" Print "A) Günter Jauch" Print "B) Florian Killo" Print "C) Thomas Strauch" frage$ = Input("Gib den Anfangsbuchstaben ein: ") ;// Abfrage der Antwort ;// dabei den eingegebenen Text Groß machen If (Upper(frage$)) = "A" ;// Bildschirm löschen, Position zurücksetzen Cls : Locate 0,0 Print "ja" ;// 3 Sekunden warten, 1 Sekunde = 1000 Milli Sekunden Delay 1 * 3000 ;// Bildschirm löschen, Position zurücksetzen Cls : Locate 0,0 End Else ;// Bildschirm löschen, Position zurücksetzen Cls : Locate 0,0 ;// Fehler Print "nein" ;// 3 Sekunden warten, 1 Sekunde = 1000 Milli Sekunden Delay 1 * 2000 ;// Bildschirm leeren, Position zurücksetzen Cls : Locate 0,0 Goto Anfang End If |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Combine
Goto ist böse ![]() |
||
Earl Grey |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ Combine:
ein bisserl komplexer soll es ja dann schon sein. ![]() cu[/quote] |
||
Combine |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke ![]() aber sonst is mein code okay oder? |
||
NForcer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
was heisst okay^^.
Funktionstüchtig sollte er sein, aber wenn man sich solch einen programmierstil angewöhnt, wirst du es später seeehr schwer haben. Packe lieber alles in Funktionen und benutze kein Goto. Aber so hatte ich halt auch mal angefangen^^. Code: [AUSKLAPPEN] Graphics 800,600,32,3 SetBuffer BackBuffer() Global Buchstabe Global Eingabe$ Global Fragereihe Text 50,20, "Dies soll ein sehr simpler Code zum Zeigen einer möglichen Strukturierung eines Quizzes sein" Text 50,35, "Jedoch würde dieses 'Quiz' schon nach einiger Zeit sehr langweilig werden, " Text 50,50, "da es nur 2 Fragen gibt" WaitKey Cls Fragereihe = 1 Repeat While Fragereihe = 1 Cls Buchstabe = GetKey() ; Getkey() gibt den ASCII Code wieder... gibt zwar noch bessere Lösungen, Frage1_Funktion ; aber ich wollte jetzt auf die schnelle nicht noch einen Eingabealgorithmus Flip ; aus dem Hut zaubern. Wend While Fragereihe = 2 Cls Buchstabe = GetKey() Frage2_Funktion Flip Wend until keyhit(1) WaitKey Function Frage1_Funktion() Text 150,200, "Wer moderiert die Senundung 'Wer wird Millionär' ?" Text 200,250, "A) Günter Jauch " Text 200,300, "B) Florian Killo " Text 200,350, "C) Thomas Strauch " Eingabe_Funktion If Eingabe = "A" Then Text 200,150, "RICHTIG! Sie sind eine Frage weiter" Fragereihe = 2 Eingabe = " " waitkey ElseIf Eingabe = "B" Or Eingabe = "C" Text 200,150, "FALSCH! Sie haben verloren!" Eingabe = " " WaitKey End End If End Function Function Frage2_Funktion() Text 150,200, "Welcher ist der größte Kontinent auf der Erde?" Text 200,250, "A) Europa " Text 200,300, "B) Asien " Text 200,350, "C) Afrika " Eingabe_Funktion If Eingabe = "B" Then Text 200,150, "RICHTIG! Sie sind eine Frage weiter" Fragereihe = 3 Eingabe = " " waitkey ElseIf Eingabe = "A" Or Eingabe = "C" Text 200,150, "FALSCH! Sie haben verloren!" Eingabe = " " WaitKey End End If End Function Function Eingabe_Funktion() If Buchstabe = 65 Or Buchstabe = 97 Then ; 65 = A ; 97 = a Eingabe$ = "A" End If If Buchstabe = 66 Or Buchstabe = 98 Then ; 66 = B ; 98 = b Eingabe = "B" End If If Buchstabe = 67 Or Buchstabe = 99 Then ; 67 = C ; 99 = c Eingabe$ = "C" End If End Function Aber in größeren späteren Projekten würde ich sowieso lieber Buttons und Kollisionsabfraben benutzen... ist auch nicht so aufwendig wie mit dem getkey() ... Und sowieso sind in meinem Programm, was ich eben auf die schnelle geschrieben habe noch einige schönheitsfehler vorhanden... Und überhaupt soll das nur eine klitzekleine Grundstruktur eines Quizzes wiederspiegeln, ich bei meinem aktuellen Quiz hab sowieso eine ganz andere Technik was es die Fragen und Antworten bzw. erkennend er richtigen Antworten angeht^^. Wie du siehst habe ich kein Goto benutzt^^ |
||
René Meyer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zufällig programmiere ich auch ein Quiz. :-)
Das zufällige Suchen einer noch nicht gestellten Frage und das Mischen der vier Antworten (eingelesen werden die Daten so, daß die erste Antwort richtig ist) habe ich so gelöst: Code: [AUSKLAPPEN] ; freie Frage finden
Repeat Frage = Rand(1,MaxFragen) Until Gestellt(Frage) = 0 Gestellt(Frage) = 1 ; Antworten mischen For J=0 To 4 Antwort(J) = 0 Next For J=1 To 4 Repeat X = Rand(1,4) Until Antwort(X) = 0 Antwort(X) = J If J=1 Then Antwort(0) = X Next |
||
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group