Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Einfacher Vokabeltrainer

Uploader:Mitgliedalien-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