fb:porticula NoPaste
Einfacher Vokabeltrainer
Uploader: | alien-dau |
Datum/Zeit: | 01.03.2009 17:13:34 |
'*** Einfacher Vokabeltrainer ***************************
'* Vokabel.bas *
'* erstellt am 1.03.2009 von Werner Hergeth *
'* beinhaltet eine Funktion von ytwinky "uANSI2ASCII" *
'********************************************************
#INCLUDE "vbcompat.bi"
#INCLUDE "windows.bi"
declare sub Liste()
declare sub DoppelEingabe ()
declare sub Eingabe()
declare sub Abfrage()
declare FUNCTION uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING
dim as string f, text, text2
color 1,15
do
cls
print
print uANSI2ASCII(" Möchten Sie Vokabeln normal (e)ingeben, Vokabeln zur (b)eidseiten Abfrage")
print uANSI2ASCII(" eingeben, Vokabeln (a)bfragen, (L)iste ausgeben oder (P)rogrammende?")
f = input(1)
select case ucase(f)
case "P": end
case "E": Eingabe
case "B": DoppelEingabe
case "A": Abfrage
case "L": Liste
end select
loop
sub Eingabe
dim as string Frage, Antwort
dim as single AnzahlAbfrage, AnzahlFehler
dim as double FaelligAm
open "vokabel.dat" for append as #1 'Vokabeldatei öffnen
do
cls
print
line input " Frage (X=Ende) "; Frage
if ucase(Frage) = "X" then exit do
print
line input " Antwort "; Antwort
AnzahlAbfrage = 0
AnzahlFehler = 0
FaelligAm = now
write #1, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
loop
close #1
end sub
sub DoppelEingabe
dim as string Frage, Antwort
dim as single AnzahlAbfrage, AnzahlFehler
dim as double FaelligAm
open "vokabel.dat" for append as #1 'Vokabeldatei öffnen
do
cls
print
line input " 1. Seite der Karteikarte (X=Ende) "; Frage
if ucase(Frage) = "X" then exit do
print
line input " 2. Seite der Karteikarte "; Antwort
AnzahlAbfrage = 0
AnzahlFehler = 0
FaelligAm = now
write #1, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
write #1, Antwort, Frage, AnzahlAbfrage, AnzahlFehler, FaelligAm
loop
close #1
end sub
sub liste
dim as string Frage, Antwort
dim as single AnzahlAbfrage, AnzahlFehler, tmp = 0
dim as double FaelligAm
open "vokabel.dat" for input as #1
cls
print
print " *** Vokabel-Liste ***"
print
do
input #1, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
tmp += 1
print " Frage: "; Frage
print " Antwort: "; Antwort
print uANSI2ASCII(" Ist fällig am "); format(FaelligAm, "ddddd")
print " ----------------------------------------------------------------"
if tmp mod 4 = 0 then
print
print uANSI2ASCII(" Weiter mit beliebiger Taste...")
sleep
cls
print
end if
loop until eof(1)
close #1
if not tmp mod 4 = 0 then
print
print uANSI2ASCII(" Zurück zum Menü mit beliebiger Taste...")
sleep
end if
end sub
sub Abfrage
dim as string Frage, Antwort, AntwortTemp, tmp
dim as single AnzahlAbfrage, AnzahlFehler
dim as double FaelligAm
open "vokabel.dat" for input as #1
open "vokabel.tmp" for output as #2
do while not eof(1)
input #1, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
if FaelligAm <= now then
cls
print
print " FRAGE: "; Frage
print
line input " Ihre Antwort: "; AntwortTemp
if ucase(trim(AntwortTemp)) = ucase(trim(Antwort)) then
FaelligAm = FaelligAm + (AnzahlAbfrage / (AnzahlFehler + 1)) ^ 2
AnzahlAbfrage += 1
write #2, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
print
print uANSI2ASCII(" Nächste Fälligkeit am "); format(FaelligAm, "ddddd")
sleep 2000, 1
else
print
print " Unsere Antwort: "; Antwort
print
print " Richtig oder falsch? (j/n)"
tmp = input(1)
if instr("jJ ", tmp) then
FaelligAm = FaelligAm + (AnzahlAbfrage / (AnzahlFehler + 1)) ^ 2
AnzahlAbfrage += 1
write #2, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
else
AnzahlAbfrage += 1
AnzahlFehler += 1
write #2, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
end if
print
print uANSI2ASCII(" Nächste Fälligkeit am "); format(FaelligAm, "ddddd")
sleep 1000, 1
end if
print
else
write #2, Frage, Antwort, AnzahlAbfrage, AnzahlFehler, FaelligAm
end if
loop
close
name "vokabel.dat", "vokabel.ttt"
name "vokabel.tmp", "vokabel.dat"
kill "vokabel.ttt"
end sub
FUNCTION uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING
DIM AS STRING OutString=ConvertString
Static As UByte AscAnsDat(128)={ _
63, 63, 39, 159, 34, 46, 197, 206, 94, 37, 83, 60, 79, 63, 63, 63, _
90, 39, 39, 34, 34, 7, 45, 45, 126, 84, 115, 62, 111, 63, 122, 89, _
255, 173, 189, 156, 207, 190, 221, 145, 149, 184, 166, 174, 170, 240, 169, 238, _
248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168, _
183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216, _
209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 160, _
225, 133, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, _
208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152}
FOR i AS INTEGER=0 TO LEN(OutString)-1
If OutString[i]>127 Then OutString[i]=AscAnsDat(OutString[i]-128)
NEXT i
RETURN OutString
END FUNCTION