Punkteanzeige im Spiel
Übersicht

Gehe zu Seite 1, 2, 3, 4 Weiter
![]() |
KillafriedaBetreff: Punkteanzeige im Spiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe nochmal eine Frage aber diesmal zu einer Punkteanzeige.
Also wie man sie an die obere Ecke positioniert ist mir klar, wie man die Farbe ändert und den Text größer macht auch, was ich wissen wollte ist... Kurz vorweg ich habe jetzt mal etwas rum experiementiert und mal so nen kleines Quizspiel gemacht, mich würde jetzt interessieren wie man bei einer frage die im spiel richtig beantwortet wurde den zähler z.b. von 0 punkten auf 100 bekommt und muß ich das bei jeder richtigen frage immer wiederholen den code zu proggen oder kann man das auch einmalig machen. ps. hatte hier mal einige einträge gefunden allerdings suche ich keine Highscoreliste, sondern nur eine Anzeige die sich am oberen Screen befindet und bei jeder richtigen frage immer steigt um verschiedene punkte.. MFG KF |
||
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn die Lösung richtig ist, erhöhe die Punktzahl um 100.
BlitzBasic: [AUSKLAPPEN]
|
||
primero |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
hängt etwas davon ab wie du das Spiel programierst. wenn du das ganze Spiel fix scheribst, sprich ohne Variable, dann wirst du wohl kaum darum kommen die Punkte jedes mal neu einzutippen: Code: [AUSKLAPPEN] ... Text x,y,"Frage 1 : bla bla bla" if richtig then Puntke = punkte +100 ... Text x,y,"Frage 2 : bla bla bla" if richtig then Puntke = punkte +100 naja, sehr vereinfacht, denke du verstehst das Prinzip. wenn du die Fragen in Dim-Variable speicherst kann das Programm sich eine frage auswählen, und in anderen Dim-Variablen mit der selben nummer die Eigenschaften dazu abrufen. Mit der Variante kannst due z.B. auch Fragen nach ihrer Schwierigkeit abrufen, bestimmte Bereiche etc. Hier mal eine Variante, die Lücken musst du wenn dann schon selber füllen Code: [AUSKLAPPEN] ... Dim Frage$(100) ;100 Fragen von 0-99 Dim fragepunkte(100) ;wie viel Punkte die Frage gibt Dim fragerichtig(100) ;welche Antwort die richtige ist Dim frageantwort$(100,4) ;die Antwortmöglichkeiten, maximal 4 stück Dim usw ... Frage(0)="Wie viele Sterne gibt es?" fragepunkte(0)=10 fragerichtig(0)=2 frageantwort(0,0)="[0] einen" frageantwort(0,1)="[1] drei Milliarden" frageantwort(0,2)="[2] kann man nicht genau sagen" For n=1 To 30 ;30 Fragen in einer Schleife stellen m=Rand(0,99) ;zufällige Frage wird ausgewählt (M erhält ne Nummer zwischen 0 und 99) Text x,y,frage$(m) ;Frage wird ausgegeben Text x,y+10,frageantwort(m,0) ;Antwort 1 wird ausgegeben Text x,y+20,frageantwort(m,1) ;Antwort 2 wird ausgegeben ;wenn die folgenden Antworten gegeben sind werden sie auch bereit gestellt: If frageantwort(m,2)<>"" Then Text x,y+30,frageantwort(m,2) If frageantwort(m,3)<>"" Then Text x,y+40,frageantwort(m,3) lese=(eingabe wie auch immer) ;nun kommt die kontrolle. stimmt die eingegebene Antwortnummer mit der gespeicherten richtigen ;überein? wenn ja dann die entsprechende Pnktezahl die die Frage gibt dazu addieren. If lese=fragerichtig(m) Then punkte=punkte+fragepunkte(m) Next Ist Ausbaufähig. So kannst du später die Fragen beliebig erweitern. besonders wenn du dir die Mühe machst die Fragen über eine Datei zu laden. Mit der Schleife (For - next) hast du einen recht kurzen Code. Es passiert ja jedes mal das selbe: Fragestellung, Antwort abrufen, vergleichen und im Erfolgsfall Punkte addieren. Alternativ kannst du auch eine Function schreiben, also ein kleines Unterprogramm das du dann jedes mal mit einem Wort aufrufen kannst. Aber das dann eher auf Nachfrage. Wünsch dir noch viel Erfolg. |
||
![]() |
Killafrieda |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habs wie bei deinem ersten beispiel gemacht also vereinfach ![]() Das Prinzip versteh ich. Die zweite Variante gefällt mir besser, werde ich später mal anwenden, einiges davon leuchtet mir auch ein aber das muß ich mir trotzdem nochmal genauer anschauen. Hatte das mit der dim-variable schonmal früher angeschaut aber um das freikopf zu machen fehlt mir noch etwas übung ![]() ich danke Euch erstmal für eure hilfe und Mühe, werde mir mal was zusammen schustern. Viele Grüße KF |
||
![]() |
Killafrieda |
![]() Antworten mit Zitat ![]() |
---|---|---|
So hab jetzt mal ne Stunde daran rumprobiert also irgendwas mach ich falsch nur was weis ich net jedenfalls wird die Punktzahl nicht angezeigt oben links.
Muß ich da noch ein Befehl setzen das sie sichtbar wird ? Hatte es mit nem Farbbefehl gemacht aber das brachte ebenfalls nix daher wieder enfernt. Hatte bei der If Then anstatt Input$ auch schon name$=3 stehen brachte aber keine Veränderung. Hab hier mal etwas vom code mitgebracht. Code: [AUSKLAPPEN] ; Graphikmodus
Global xmax=1024,ymax=768 Graphics xmax,ymax,32,1 Color 220,20,60 Text 440,220,"1. Länder Quiz " Color 255,165,0 Locate 300, 380 taste$=Input$(" Wähle ein Quiz aus und drücke die Zahl um zu starten ? ") If taste$=1 Then L ;--------------------------------------------------------------------------------------------------- ; Hauptprogramm Blitz Quiz 2010 Function L() Flip End Function ; Länder Quiz Color 30,144,255 Text 420,20,"Aufgabe Länder Quiz" Color 220,20,60 Text 220,120,"Im Länder Quiz werden dir 200 Fragen über alle möglichen Länder der Welt gestellt," Color 220,20,60 Text 220,140,"deine Aufgabe ist es nun möglichst viele richtige Antworten zu geben." Color 220,20,60 Text 220,160,"Bist du bereit dann drücke eine Taste!" WaitKey Cls ; Modul Frankreich ; Frankreichs Hauptstadt Paris Color 30,144,255 Text 0,10,"Punkte: " Color 30,144,255 Text 320,60,"Wie heisst die Hauptstadt von Frankreich ?" Color 220,20,60 Text 320,120,"1. Bordeaux " Color 220,20,60 Text 320,140,"2. Dax " Color 220,20,60 Text 320,160,"3. Paris " Color 220,20,60 Text 320,180,"4. Tours " Color 255,165,0 Locate 320, 240 name$=Input$(" Wie lautet deine Antwort ? ") Color 255,0,0 Locate 320, 300 If name$="1" Then Print "Leider falsch" Color 255,0,0 Locate 320, 300 If name$="2" Then Print "Leider falsch" Color 255,0,0 Locate 320, 300 If name$="4" Then Print "Leider falsch" Color 50,205,50 Locate 320, 300 If name$="3" Then Print "Paris ist richtig. Du erhälst 10 Punkte !" If Input$=(3) Then Puntke = punkte +10 WaitKey Cls ; Wahrzeichen Frankreich Color 30,144,255 Text 0,10,"Punkte: " Color 30,144,255 Text 320,60,"Welcher Turm ist das Wahrzeichen von Paris ?" Color 220,20,60 Text 320,120,"1. Canton Tower " Color 220,20,60 Text 320,140,"2. Schiefe Turm von Pisa " Color 220,20,60 Text 320,160,"3. Eifelturm " Color 220,20,60 Text 320,180,"4. CN Tower " Color 255,165,0 Locate 320, 240 name$=Input$(" Wie lautet deine Antwort, 1, 2,3 oder 4 ? ") Color 255,0,0 Locate 320, 300 If name$="1" Then Print "Leider falsch" Color 255,0,0 Locate 320, 300 If name$="2" Then Print "Leider falsch" Color 255,0,0 Locate 320, 300 If name$="4" Then Print "Leider falsch" Color 50,205,50 Locate 320, 300 If name$="3" Then Print "Eifelturm ist richtig, du erhälst 10 Punkte!" If name$=3 Then Puntke = punkte +10 WaitKey Cls Hab hier zwei Variationen drinne einmal mit () und einmal ohne () bei If Then... Oder muß ich dafür eine Function setzen ? |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dir mal anschauen, wie man mit schleifen arbeitet, erspart einiges an arbeit
Repeat ![]() while ![]() |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
BlitzBasic: [AUSKLAPPEN] If name$=3 Then Puntke = punkte +10 Zwei Fehler: 1. Du vergleichst einen String mit einem Integer. Die Eingabe lautet also nicht 3, sondern? ... 2. "Puntke = punkte +10" Jetzt sieh dir das mal ganz genau an! Du kannst zwar klein und Großschreibung mischen, solltest es aber der Übersichtlichkeit halber vermeiden! BlitzBasic: [AUSKLAPPEN] Color 30,144,255 Text 0,10,"Punkte: " 3. Hinter "Punkte: " musst du noch die Variable für den Punktestand schreiben, ist ja sonst kein Wunder, dass nichts angezeigt wird. BlitzBasic: [AUSKLAPPEN] If Input$=3 Then Puntke = punkte +10 4. Beim zweiten Mal hast du's richtig gemacht, hier aber hättest du eine ganz andere Variable, nämlich name$ prüfen müssen! |
||
- Zuletzt bearbeitet von Hagbard am Mi, Dez 23, 2009 15:51, insgesamt einmal bearbeitet
mDave |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst die Punkteanzahl natürlich auch anzeigen lassen...
Code: [AUSKLAPPEN] Color 30,144,255: Text 0,10,"Punkte: " +punkte Edith meint, ich wäre zu langsam... |
||
![]() |
Killafrieda |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hagbard hat Folgendes geschrieben: Hallo,
BlitzBasic: [AUSKLAPPEN] If name$=3 Then Puntke = punkte +10 Zwei Fehler: 1. Du vergleichst einen String mit einem Integer. Die Eingabe lautet also nicht 3, sondern? ... Warum nicht, 3 ist doch die richtige Antwort auf die Frage. BlitzBasic: [AUSKLAPPEN] If Input$=3 Then Puntke = punkte +10 4. Beim zweiten Mal hast du's richtig gemacht, hier aber hättest du eine ganz andere Variable, nämlich name$ prüfen müssen! Das versteh ich jetzt garnicht mehr das ist doch die selbige zeile wie die obige. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt einen Unterschied zwischen 3 und "3"! In Deinem Fall wäre "3" richtig. Name$ ist ein String, also muss auch das Gegenüber ein String z.b. "3" sein. Nur die 3 wäre eine INTEGER-Zahl | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der zweite Fehler ist ein Rechtschreib-Fehler: Puntke
Der dritte Fehler ist die Verwendung von IF INPUT$="3". Es muss natürlich wie in der ersten Frage If NAME$="3" heißen. Wenn Du solche Fehler vermeiden willst, solltest Du mal mein Funktionen-Tutorial lesen, dass ich gerade extra für Dich geschrieben habe: https://www.blitzforum.de/foru...089#354089 |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
*räusper* Midimaster, auch für dich gilt (wenn's nicht grad dein eigener Tutorial-Thread ist ![]() ![]() Danke mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Killafrieda |
![]() Antworten mit Zitat ![]() |
---|---|---|
Midimaster hat Folgendes geschrieben: Der zweite Fehler ist ein Rechtschreib-Fehler: Puntke
Ja das ist mir jetzt auch aufgefallen nachdem du es sagst ![]() Der dritte Fehler ist die Verwendung von IF INPUT$="3". Es muss natürlich wie in der ersten Frage If NAME$="3" heißen. Also wenn ich die 3 nicht nehmen darf, wie soll ich dem Programm denn klarmachen welche Antwort richtig ist da die 3 ja die richtige Antwort ist ??? Also würde diese Variante nicht funktionieren ? Color 50,205,50 Locate 320, 300 If name$="3" Then Print "Paris ist richtig. Du erhälst 10 Punkte !" If name$="3" Then Punkte = Punkte + 10 Muß eigentlich nach der Antwort ....Paris ist richtig ......10 Punkte !" hier noch was stehen ? Der Fehler ist bestimmt wieder nur ne kleine Sache wie die, die ich am Sonntag hatte wo ich ein Zeichen vergessen hatte ![]() Mich wunderts nur das bei Punkte im Spiel zwar 0 steht aber er 10 oder auch mehr Punkte nicht dort hinzufügt. Ich habs kurz umgeändert..Das ist jetzt nur die erste frage hab den rest weggelassen... Code: [AUSKLAPPEN] Color 30,144,255 Text 0,10,"Punkte: " + Punkte
Color 30,144,255 Text 320,60,"Wie heisst die Hauptstadt von Frankreich ?" Color 220,20,60 Text 320,120,"1. Bordeaux " Color 220,20,60 Text 320,140,"2. Dax " Color 220,20,60 Text 320,160,"3. Paris " Color 220,20,60 Text 320,180,"4. Tours " Color 255,165,0 Locate 320, 240 name$=Input$(" Wie lautet deine Antwort ? ") Color 255,0,0 Locate 320, 300 If name$="1" Then Print "Leider falsch" Color 255,0,0 Locate 320, 300 If name$="2" Then Print "Leider falsch" Color 255,0,0 Locate 320, 300 If name$="4" Then Print "Leider falsch" Color 50,205,50 Locate 320, 300 If name$="3" Then Print "Paris ist richtig. Du erhälst 10 Punkte !" If name$="3" Then Punkte = Punkte + 10 Funktioniert aber immer noch nicht so wie es sein sollte. Ich komme momentan einfach nicht drauf was ich falsch mache. Wenn Du solche Fehler vermeiden willst, solltest Du mal mein Funktionen-Tutorial lesen, dass ich gerade extra für Dich geschrieben habe: https://www.blitzforum.de/foru...089#354089 Danke nett von dir ![]() |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es wäre nett, wenn du nicht den ganzen Beitrag zitieren würdest, sondern nur das wichtigste. | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch, diese Variante würde funktionieren:
Zitat: Color 50,205,50 Locate 320, 300 If name$="3" Then Print "Paris ist richtig. Du erhälst 10 Punkte !"
If name$="3" Then Punkte = Punkte + 10 Ich würde Sie aber so schreiben wollen: Code: [AUSKLAPPEN] Color 50,205,50
Locate 320, 300 If name$="3" Then Print "Paris ist richtig. Du erhälst 10 Punkte !" Punkte = Punkte + 10 Endif Und natürlich darfst Du die 3 verwenden, aber eben in der Form "3" mit Anführungszeichen. |
||
![]() |
Killafrieda |
![]() Antworten mit Zitat ![]() |
---|---|---|
Midimaster hat Folgendes geschrieben: Ich würde Sie aber so schreiben wollen: Code: [AUSKLAPPEN] Color 50,205,50
Locate 320, 300 If name$="3" Then Print "Paris ist richtig. Du erhälst 10 Punkte !" Punkte = Punkte + 10 Endif Mich hats gewundert das dass programm bei meiner Schreibweise die 10 Punkte nicht oben hinschreibt, bei deiner funktioniert es. Wenn ich jetzt wie in deinem Tutorial beschrieben die zweite Variante verwenden würde könnte ich die Punkteanzeige nicht in eine Function einfügen ohne diese ständig neu schreiben zu müssen ? Oder geht das bei verschiedener Punktzahl nicht z.B erste Antwort 10 Punkte, zweite 30 usw. Aber normalerweise wenn ich mir die zweite Variante anschau müßte es doch möglicherweise funktionieren da mehrere Antworten ja auch gehen oder ? |
||
![]() |
Badudel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Killafrieda hat Folgendes geschrieben: [...] könnte ich die Punkteanzeige nicht in eine Function einfügen ohne diese ständig neu schreiben zu müssen ?
Lies doch erst die Posts genau... Skey-Z hat dich auf Schleifen hingewiesen und Primero hat dir die beste Variante gezeigt. Du sparst dir damit unwahrscheinlich viel Zeit! Schau dir doch bitte in aller Ruhe Dim ![]() ![]() ![]() Viel Erfolg, Badudel |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@killafrieda
jetzt bist Du auf dm richtigen Weg, experimentiere mal in diese Richtung weiter... Bis morgen ist das Tutorial sowieso genau in Richtung Deiner Frage erweitert. Heute schaff ich es nicht mehr.... |
||
![]() |
Killafrieda |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Midimaster
Mittlerweile hatte ich noch einen weiteren Fehler beseitigt, hatte einige Probleme mit dem Tastenmenu ist mir allerdings erst durch das herumprobieren aufgefallen das bestimmte Funktionen garnicht funktionierten ![]() Nunja nun klappt es soweit alles. Mit den Punkten klappt alles mittlerweile. Aufs Tut. bin ich mal gespannt ![]() Bis später und Vielen Dank an allen die mir weiter geholfen haben. Gruß KF |
||
Gehe zu Seite 1, 2, 3, 4 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group