Punkteanzeige im Spiel

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen

Killafrieda

Betreff: Punkteanzeige im Spiel

BeitragDi, Dez 22, 2009 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Dez 22, 2009 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Lösung richtig ist, erhöhe die Punktzahl um 100.

BlitzBasic: [AUSKLAPPEN]

If RichtigeLoesung()
punkte = punkte + 100
EndIf
 

primero

BeitragDi, Dez 22, 2009 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 1:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs wie bei deinem ersten beispiel gemacht also vereinfach Very Happy
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 Very Happy

ich danke Euch erstmal für eure hilfe und Mühe, werde mir mal was zusammen schustern.
Viele Grüße
KF

Killafrieda

BeitragMi, Dez 23, 2009 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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
Twitter

Hagbard

BeitragMi, Dez 23, 2009 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Holzchopf

Meisterpacker

BeitragMi, Dez 23, 2009 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
*räusper* Midimaster, auch für dich gilt (wenn's nicht grad dein eigener Tutorial-Thread ist Wink ), dass man keine Doppelpostings fabrizieren sollte. Benutze stattdessen, wenn du etwas anfügen willst, den user posted image-(edit)-Button.

Danke

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Killafrieda

BeitragMi, Dez 23, 2009 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat Folgendes geschrieben:
Der zweite Fehler ist ein Rechtschreib-Fehler: Puntke

Ja das ist mir jetzt auch aufgefallen nachdem du es sagst Very Happy


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 Very Happy
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 Smile ich schau mir das gleich mal an.

Nicdel

BeitragMi, Dez 23, 2009 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Dez 23, 2009 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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, While und For an. Hast du das verstanden, schau dir Primeros Beispiel an, und dann wird dir wohl auch klar werden, wo du die Punktanzeige am besten reinschreibst.

Viel Erfolg, Badudel
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Holzchopf

Meisterpacker

BeitragMi, Dez 23, 2009 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
~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 BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Midimaster

BeitragMi, Dez 23, 2009 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragMi, Dez 23, 2009 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
@ 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 Very Happy
Nunja nun klappt es soweit alles.

Mit den Punkten klappt alles mittlerweile.
Aufs Tut. bin ich mal gespannt Wink

Bis später und Vielen Dank an allen die mir weiter geholfen haben.

Gruß
KF

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group