Problem mit If - Struktur

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

hallo

Betreff: Problem mit If - Struktur

BeitragFr, März 21, 2008 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Ich habe ein Problem mit einer If-Struktur; ich habe versucht ein kleines Quiz zu programmieren.
Wenn ich das Programm starten will, erscheint die Nachricht "Function not found".
Problem liegt in der Funktion PrintText mit dem Inhalt : If Loesungsvorschlag = Loesung(Nummer) Then Punkte = Punkte + 10
Code: [AUSKLAPPEN]

AppTitle "Quiz"
Graphics 640,480, 16,1


;--------------------------------------------------------------------------------
;"Unit"
;--------------------------------------------------------------------------------

; ------------------------------------------------------------------------------
;Hilfe Funktion
; ------------------------------------------------------------------------------

Function Help()
Cls
Bild = LoadImage ("C:\Dokumente und Einstellungen\Nora&Michel\Eigene Dateien\Nora\Blitzbasic und delphi\Hilfe.bmp")
DrawImage Bild, 0,0
Color 255,255,255
Schrift1 = LoadFont("Comic Sans MS",40, True)
SetFont Schrift1 
Color 0,0,127
Text 200,20, "Hilfe"
Schrift2 = LoadFont("Comic Sans MS", 20, True)
SetFont Schrift2
Color 255,255,255
Text 50,100, "In diesem Quiz geht es darum, möglichst viele Fragen in kurzer Zeit "
Text 50,120, "richtig zu beantworten.Für jede richtige Antwort gibt es 10 Punkte."
Text 50,140, "Sobald die Frage auf dem Bildschirm erscheint Taste A oder 1 für "
Text 50,160, "Antwort a, Taste 2 oder B für Antwort b und so weiter drücken."
Text 50,180, "Um das Spiel zu starten drücke S. Viel Spaß!!!"
Repeat
If KeyDown(18) Then End
Until KeyDown(31)
Return 1
End Function



; ------------------------------------------------------------------------------
; Readtext Funktion
; ------------------------------------------------------------------------------
Const Max = 9
Dim Frage$(Max)

Function ReadText (Datei$)
  Fragtxt = ReadFile (Datei$)
  If Fragtxt = 0 Then Return 0
  For i = 0 To 9
  Frage$(i) = ReadLine (Fragtxt)
  Next
  CloseFile Fragtxt
  Return 1
End Function

; ------------------------------------------------------------------------------
; Readanswer Funktion
; ------------------------------------------------------------------------------
Const Max2 = 39
Dim Antwort$(Max2)

Function Readanswer (Datei2$)
  Antworttxt = ReadFile (Datei2$)
  If Antworttxt = 0 Then Return 0
  For i = 0 To 9
  Antwort$(i) = ReadLine (Antworttxt)
  Next
  CloseFile Antworttxt
  Return 1
End Function

; ------------------------------------------------------------------------------
; PrintText Funktion
; ------------------------------------------------------------------------------

Function PrintText()
  Nummer = Rand(1,10)
 ;welche frage ausgegeben werden soll: dafür ist die variable nummer zuständig
 Schrift4  = LoadFont ("Comic Sans MS", 25,True)
 SetFont Schrift4
 Color 255,255,255
 Readanswer ("C:\Dokumente und Einstellungen\Nora&Michel\Eigene Dateien\Nora\Blitzbasic und delphi\Antwort.txt")
 Text 100, 170, Frage$(Nummer)
 f = (Nummer - 1) * 3 + Nummer
 Text 50,300, Antwort$(f)
 f = f + 1
 Text 380,300, Antwort$(f)
 f = f + 1
 Text 50,360, Antwort$(f)
 f = f + 1
 Text 380,360, Antwort$(f)
 f = f + 1
 
 ReadLoesung("C:\Dokumente und Einstellungen\Nora&Michel\Eigene Dateien\Nora\Blitzbasic und delphi\Hilfe.bmp")
Loesungsvorschlag = 0
 While Loesungsvorschlag = 0
  If KeyDown(30) Then Loesungsvorschlag = 1
  If KeyDown(48) Then Loesungsvorschlag = 2
  If KeyDown(46) Then Loesungsvorschlag = 3
  If KeyDown(32) Then Loesungsvorschlag = 4
  If KeyDown(18) Then End
  Wend 
          If Loesungsvorschlag = Loesung(Nummer) Then Punkte = Punkte + 10 
Return Punkte
End Function
; ------------------------------------------------------------------------------
; Readloesung Funktion
; ------------------------------------------------------------------------------
Const Max3 = 9
Dim Loesung(Max3)

Function ReadLoesung (Datei3$)
  Loesungtxt = ReadFile (Datei3$)
  If Loesungtxt = 0 Then Return 0
  For i = 1 To 10
  Loesung(i) = ReadLine (Loesungtxt)
  Next
  CloseFile Loesungtxt
  Return 1
End Function




;--------------------------------------------------------------------------------
;"Unit" Ende
;--------------------------------------------------------------------------------

SeedRnd MilliSecs()
;Zufall
BFont  = LoadFont ("Comic Sans MS", 50,True)
SetFont BFont

Bild = LoadImage ("C:\Dokumente und Einstellungen\Nora&Michel\Eigene Dateien\Nora\Blitzbasic und delphi\Hilfe.bmp")
DrawImage Bild, 0,0

Color 0,0,255

Text 320,10, "Hallo!!"
BFont  = LoadFont ("Comic Sans MS", 50,True)
SetFont BFont

Color 255,255,255

Text 50,160, "Die Hilfe erreichst du mit H.
Text 50,280, "Beende mit E."
Text 50,400, " Starte mit S."
Repeat
If KeyDown(35) Then Help()
If KeyDown(18) Then End

Until KeyDown(31)
Hintergrund = LoadImage ("C:\Dokumente und Einstellungen\Nora&Michel\Eigene Dateien\Nora\Blitzbasic und delphi\Hintergrund.bmp")
DrawImage Hintergrund, 0,0

Schrift3  = LoadFont ("Comic Sans MS", 50,True)
SetFont Schrift3
Color 255,255,255

StartZeit = MilliSecs()
Repeat
Datei$ = "C:\Dokumente und Einstellungen\Nora&Michel\Eigene Dateien\Nora\Blitzbasic und delphi\Hauptstaedte.txt"
ReadText (Datei$)

Schrift4  = LoadFont ("Comic Sans MS", 25,True)
PrintText ()
JetztZeit = MilliSecs()
If KeyDown(18) Then End
Until StartZeit - JetztZeit > 180000
Cls
DrawImage Bild, 0,0
Text 320,240, "Deine Punktzahl:" + Punkte
Repeat
Until KeyDown(18)
End
  • Zuletzt bearbeitet von hallo am Fr, März 21, 2008 22:17, insgesamt 3-mal bearbeitet
 

Tritium

BeitragFr, März 21, 2008 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Darf ich fragen, wo das Problem genau liegt?

Xeres

Moderator

BeitragFr, März 21, 2008 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja und? Wenn du nicht sagst was nicht funktioniert, wie soll mal dir helfen?

Was mir beim überfliegen auffällt: Du solltest keine absoluten Pfadangaben machen, sondern relative. Außerdem Bilder nicht in Funktionen Laden, sondern vor der Hauptschleife - in globalen Variablen um sie in Funktionen benutzten zu können wenn nötig.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tankbuster

Betreff: Re: Problem mit If - Struktur

BeitragFr, März 21, 2008 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo hat Folgendes geschrieben:
Hi
Ich habe ein Problem mit einer If-Struktur; ich habe versucht ein kleines Quiz zu programmieren.
Wenn ich das Programm starten will, erscheint die Nachricht "Function not found".
Problem liegt in der Funktion PrintText mit dem Inhalt : If Loesungsvorschlag = Loesung(Nummer) Then Punkte = Punkte + 10


Function not found sagt doch alles. Die Funktion Loesung(Nummer) existiert nicht.
Twitter
Download Jewel Snake!
Windows|Android

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, März 21, 2008 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das gehört nach oben im Code und nicht mitten drin

Code: [AUSKLAPPEN]
Const Max3 = 9
Dim Loesung (Max3)


da beim prüfen des Codes von Basic aus als erstes die Dim Anweisung stehen muß da sonst davon ausgegangen wird das Loesung eine Function ist !
[BB2D | BB3D | BB+]
 

hallo

BeitragSa, März 22, 2008 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, danke.
Aber es funktioniert immer noch nicht richtig:Die Schleife wird nicht wiederholt. (Funktion PrintText)
Loesungsvorschlag = 0
Repeat
If KeyDown(30) Then Loesungsvorschlag = 1
If KeyDown(48) Then Loesungsvorschlag = 2
If KeyDown(46) Then Loesungsvorschlag = 3
If KeyDown(32) Then Loesungsvorschlag = 4
If KeyDown(18) Then End
Until Loesungsvorschlag <> 0
Very Happy
Danke

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, März 22, 2008 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
nimm anstatt keydown keyhit

und dieses geht auch nicht
Code: [AUSKLAPPEN]

StartZeit = MilliSecs()
Repeat

JetztZeit = MilliSecs()

Until StartZeit - JetztZeit > 180000

da die Startzeit kleiner ist wie die Jetztzeit!

Wenn die Function PrintText aufgerufen wird dann muß die Schleife auch abgearbeitet werden!
Vielleicht schreibst du mal ein Stop in die Schleife und überprüfst das mit dem Debugger ob es wirklich nicht geht!
[BB2D | BB3D | BB+]
 

hallo

BeitragSa, März 22, 2008 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, aber wie mach ich das? Sad
danke

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, März 22, 2008 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Debugmodus einschalten
bzw unter dem Menü Punkt Programm ein Haken vor Debug enable setzten

dann im Code einfach
Code: [AUSKLAPPEN]
Loesungsvorschlag = 0
stop; hier bleibt das Programm stehen .......
Repeat
If KeyDown(30) Then Loesungsvorschlag = 1
If KeyDown(48) Then Loesungsvorschlag = 2
If KeyDown(46) Then Loesungsvorschlag = 3
If KeyDown(32) Then Loesungsvorschlag = 4
If KeyDown(18) Then End
Until Loesungsvorschlag <> 0


jetzt kannst du dir die Variablen ansehen im Debugger usw.
[BB2D | BB3D | BB+]
 

Shark

BeitragSa, März 22, 2008 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
startzeit = millisecs()

if Millisecs() - startzeit >= 18000


So würde ich es machen. bzw.
Code: [AUSKLAPPEN]

startzeit = Millisecs()
repeat

until millisecs()-startzeit >= 18000


mfg Shark
 

hallo

BeitragSa, März 22, 2008 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, hat super geklappt.
Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group