Quiz programmieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Svolf

Betreff: Quiz programmieren

BeitragDi, März 21, 2006 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir jemand verraten , wie ich ein Quiz programmiere ohne Input oder mit Input aber im HIntergrund ein Bild oder Linien sich Befinden. Und wie mann dann von einer Aufgabe zur 2 kommt.
 

HW

BeitragDi, März 21, 2006 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Eintippen kannst du mit ql:getkey basteln. Den Hintergrund solltest du aber selbst hinkriegen.
 

Svolf

BeitragDi, März 21, 2006 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe da mal ein Script geschrieben:

Code: [AUSKLAPPEN]

Graphics 800,600,16,1
SetBuffer BackBuffer()

Planetb=LoadImage("Bilder\Planetb.bmp")
MaskImage Planetb, 255,255,255

Color 255,0,0

Punkte=0

Repeat

Cls

DrawImage Planetb, -120,-95

Color 0,255,0
Text 385,10, "Punkte"

Color 255,0,0

Line 190,500,190,600
Line 190,500,610,500

Line 610,500,610,600
Line 160,300,160,350
Line 160,350,650,350
Line 650,350,650,300
Line 650,300,160,300

Line 360,30,460,30
Line 460,30,460,60
Line 460,60,360,60
Line 360,60,360,30

Color 0,255,0
Text 180,320 ,"Was ist ein Isotop?"
Text 200,520, "a: Ein Haus"
Text 200,550, "c: Ein Schrank"
Text 420,520, "b: Ein Tisch"
Text 420,550, "d: Ein Stuhl"

x=GetKey()
If x = 97 Then
Punkte = Punkte + 1
ElseIf x = 98 Then
Punkte = Punkte + 0
ElseIf x = 99 Then           ; Ich will HIer zur Nacästen Aufgabe
Punkte = Punkte + 0
ElseIf x = 100 Then
Punkte = Punkte + 0
EndIf




 
Locate 430,40
Print Punkte

Flip
Until KeyHit(1)


Nur das Problem was ich noch habe ist, wenn man z.B. nun "a" drückt das er zu eine rnächsten Aufgabe geht und Punkte + 1 zählt sovern die Antwort richtig ist. Aber auch wenn eien Aufgabe falsch ist z.B. "b" drückt soll er zur nächsten Aufgabe gehen aber ebend keien PUnkte Zählen wie kann ich das jetzt an besten machen. MIt FUnktionen hab eich nie viel Ahnung. DAchte schon an Goto oder Include,..[/quote]
 

HW

BeitragDi, März 21, 2006 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir deinen Code jetzt nicht wirklich angesehen, aber:
Du nimmst eine Variable für die Aufgabe, bei der man ist, und eine für die Punktzahl. Wenn die richtige Taste gedrückt wurde (KeyHit), dann werden beide Variablen erhöht. Wenn die falsche Taste gedrückt wurde, wird nur die Aufgabenvariable erhöht. In der Hauptschleife wird erst geprüft, welchen Wert die Aufgabenvariable hat und demnach entschieden, welche Frage angezeigt wird und welche Taste die richtige ist.
 

Svolf

BeitragDi, März 21, 2006 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Tastenabfragen weis ich ja,..

also:

x=getkey
if x = 97 then,...

aber das Problem ist, wie ich das mit dem Fragen mache,..?

also wenn nun 97 gedrückt wurde, dass er zur nächsten Aufgabe springt,...könntest dus mir anhang 3 Aufgaben zeigen wäre echt nett,..
Danke im vorraus,....
 

ke^kx

BeitragDi, März 21, 2006 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
HALLO? WIE OFT WILLST DU ES NOCH GEZEIGT HABEN? Wir haben es dir schon mindestens 5 mal erklärt wie es geht und du fragst immer wieder... Willst du uns verarschen oder was? Evil or Very Mad

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Svolf

BeitragDi, März 21, 2006 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry,..aber ihr habt mir nur eine Normale Select Case Anweisung gezeigt oder eine If,..then,..else aber nie wie ich von einer auf die andere komme und genau das liegt mein Problem,..
 

ke^kx

BeitragDi, März 21, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch das wurde dir erklärt: Indem du die Variable, die du Selectest einfach erhöhst...

Ich weiß ehrlich gesagt garnicht, warum ich dir überhaupt helfe Confused

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

BladeRunner

Moderator

BeitragDi, März 21, 2006 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
erstell eine Variable in welcher Du speicherst bei welcher Frage du bist.
dann überprüfst du in einem Select-Case anhand dieser Variablen und stellst die Frage.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

HW

BeitragDi, März 21, 2006 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
-.-
So ungefähr in der Hauptschleife:
Code: [AUSKLAPPEN]
Select aufgabe
Case 1:Text x,y,"blabla":rightkey$="a"
Case 2:Text x,y,"Zweite Aufgabe...":rightkey$="c"
Case 3:Text x,y,"Dritte Aufgabe -.-":rightkey$="b"
...
End Select

key$=Chr$(GetKey())
If key$=rightkey$ Then
aufgabe=aufgabe+1
punkte=punkte+100
ElseIf key$<>Null Then
aufgabe=aufgabe+1
Endif

Da ist nichts Besonderes dran. Rolling Eyes
 

antome

!!! gesperrt !!!

BeitragDi, März 21, 2006 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Die selbe Antwort habe ich dir schonmal gegeben, ich habe jetzt nur 4 Kommentare hinzu gefügt.

Code: [AUSKLAPPEN]

Global AufgabeIndex = 1


Repeat
   
    Select   AufgabeIndex
       
       Case 1
            Aufgabe1()
       
       Case 2
            Aufgabe2()
    End Select
   
Until AufgabeIndex = 0       

Function Aufgabe1()
   Print "1"
   Print "2"
   Print "3"   
   taste = Input("Gib eine Zahl ein ")   
   If taste = 3 Then AufgabeIndex = 2      ;wenn 3 gedrückt wird springe zu Aufgabe2()
   If taste = 0 Then AufgabeIndex = 0      ;wenn 0 gedrückt wird ist das Programm zu Ende
   
End Function

Function Aufgabe2()
   Print "4"
   Print "5"
   Print "6"       
   taste = Input("Gib eine Zahl ein ")
   If taste = 6 Then AufgabeIndex = 1       ;wenn 6 gedrückt wird springe zu Aufgabe1()
   If taste = 0 Then AufgabeIndex = 0       ;wenn 0 gedrückt wird ist das Programm zu Ende
End Function
antome
 

Svolf

BeitragDi, März 21, 2006 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich darf ja lein Input verwenden, da ich ein Bild habe und Linien und Input nun mal, dass Programm aufhält.
Ich habs mit getkey versucht es sieht dann so aus:

Code: [AUSKLAPPEN]

Global AufgabeIndex = 1

Repeat

Select AufgabeIndex

Case 1
Aufgabe1()
Case 2
Aufgabe2()

End Select

Until AufgabeIndex = 0

Function Aufgabe1()
Print "ein Domm"
Print "sdcdscsdc"
Print "sdcdscwq"
x=GetKey()
If x = 97 Then 
Punkte = Punkte + 1
AufgabeIndex = 2
ElseIf x = 98 Then
AufgabeIndex = 2
ElseIf x = 99 Then
AufgabeIndex = 2
ElseIf x = 100 Then
 AufgabeIndex = 2
EndIf

End Function

Function Aufgabe2()
Print "4"
Print "5"
Print "6"
taste = Input("Gib eine Zahl ein ")
If taste = 6 Then AufgabeIndex = 1 ;wenn 6 gedrückt wird springe zu Aufgabe1()
If taste = 0 Then AufgabeIndex = 0 ;wenn 0 gedrückt wird ist das Programm zu Ende
End Function


Doch er schreibt mir dann nur die Prints auf. Hab enicht mal eine Tatse gedrückt,..=(

Ich glaube ich bin zu doof dazu oder kann mir das eine für Getkey machen,...ich möchte doch nur ein Bild im HIntergrund und das man von einer Frage auf die nächste kommt und , dass er noch Punkte Zählt aber nichts geht,..=(
 

antome

!!! gesperrt !!!

BeitragDi, März 21, 2006 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch es mal so:

Code: [AUSKLAPPEN]

Global AufgabeIndex = 1
Global Punkte

Repeat

Select AufgabeIndex

Case 1
Aufgabe1()
Case 2
Aufgabe2()
Case 3
Aufgabe3()
End Select

Until AufgabeIndex = 0

Function Aufgabe1()   
    Print "Punkte " + Punkte   
    Print ""
   Print "1:  Maus"
   Print "2:  Katze"
   Print "3:  Hund" 
   Print ""
   Print "Gebe die Nummer mit der richtigen Antwort ein, 9 beendet das Quiz" 
   Repeat
       x=Chr$(GetKey()  )
   Until x > 0
   If x = 1 Then
      Punkte = Punkte + 1
    EndIf     
    If x < 9 Then AufgabeIndex = 2    Else    AufgabeIndex = 0
End Function

Function Aufgabe2()   
    Print "Punkte   "+Punkte         
    Print ""
   Print "1:  Haus"
   Print "2:  Hütte"
   Print "3:  Stall" 
   Print ""
   Print "Gebe die Nummer mit der richtigen Antwort ein, 9 beendet das Quiz" 
   Repeat
       x=Chr$(GetKey()  )
   Until x > 0
   If x = 3 Then
      Punkte = Punkte + 1
    EndIf
   If x < 9 Then AufgabeIndex = 3    Else    AufgabeIndex = 0
End Function

Function Aufgabe3()
                    ;.... usw
End Function

antome
  • Zuletzt bearbeitet von antome am Di, März 21, 2006 19:01, insgesamt 3-mal bearbeitet
 

Svolf

BeitragDi, März 21, 2006 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mal dein Code Kopiert und es ist egal welche Tase ich drücke er springt nie zu Aufgabe 2,....
Es wird dann immer sofort beendet,...=(
  • Zuletzt bearbeitet von Svolf am Di, März 21, 2006 18:47, insgesamt einmal bearbeitet
 

antome

!!! gesperrt !!!

BeitragDi, März 21, 2006 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch es nochmal, hab es korrigiert
ausserdem sollte es das ja, das hast du in deinem Code auch so geschrieben, egal ob richtig oder nicht
springe zur nächsten Aufgabe
antome
 

Svolf

BeitragDi, März 21, 2006 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Jopp so würde es gehen nur wenn ich 1 drücke er zählt die Punkte nicht mit,..hm ich habe schon gesucht finde den Fehler aber nicht,..aber danke für deine HIlfe echt nett Smile

PS: Du hast ja ein Punktezähler drin, wenn man 1 drückt, dass es geht aber er zeigt nur 0 an =(
 

antome

!!! gesperrt !!!

BeitragDi, März 21, 2006 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach Punkte noch Global, dann müsste es gehen
antome
 

Svolf

BeitragDi, März 21, 2006 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,...es funktiniert,..danke für deine Hilfe,.. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group