vokabelprogramm
Übersicht

demonboyBetreff: vokabelprogramm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi ich bin´s ma wieder.und zwar hab ich vor nen vokabelprogramm für die schule zu schreiben.und jetzt möcht ich gerne wissen wie ich schreibe das durch zufall eine vokabel ausgesucht wird(wahrscheinlich mit "radn"), sie angezeigt wird, man dann die antwort eingeben muss und dann überprüft wird ob die lösung zur jeweiligen vokabel mit der antwort übereinstimmt.geht dass??? | ||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
![]() |
ozzi789Betreff: Re: vokabelprogramm |
![]() Antworten mit Zitat ![]() |
---|---|---|
du liest die alle in ein Dim und bestimmts mit Rnd eine zufällige zahl ![]() (das beste was mir innen sinn kommt) |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
demonboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
k abba das einlesen dauert ja ewig kann man nich iwas mit data machen damit ich neue vokabeln einfach eintragen kann oder die für den user dierekt aus ner veränderbaren tabelle rauslesen? ![]() |
||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
Fredko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann wirst du wohl eine Textdatei machen müssen und diese auslesen müssen. Am besten werden diese Daten dann in Types gespeichert, z.B. wenn in der Datei "New Vok" steht, wird eine neue Vokable-Type erstellt, darauf hin der Inhalt und die Antwort.
Natürlich könntest du auch einen "Editor" machen, dann müsstest du nicht immer die Befehle selber schreiben. Edit: Natürlich beim auslesen und erstellen eine Nummer speichern, dann kann man einfach mit Rand([min,]max) eine Zahl aussuchen, vielleicht noch eine Variable, um zu gucken, ob die Vokabel bereits benutzt wurde. Und Rand verwenden, da es keine Dezimalzahlen verwendet, was Rnd([min,]max) aber tut. |
||
! |
- Zuletzt bearbeitet von Fredko am So, Sep 28, 2008 20:45, insgesamt einmal bearbeitet
![]() |
sheldon |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du machst die Vokabeln einfach in eine Textdatei.
Code: [AUSKLAPPEN] Wort1Deutsch.Wort1Englisch
Wort2Deutsch.Wort2Englisch Dann liest du das aus: Code: [AUSKLAPPEN] file=readfile("vokabeln.txt")
global vokabeln_max While not eof(file) vokabeln_max=vokabeln_max+1 Wend dim vokabeln(vokabeln_max,2) for i=1 to vokablen_max vokabeln(i,1)=left(readline$(file)) vokabeln(i,2)=right(readline$(file)) next Oder so ähnlich... Dann musst du sie nur noch abfragen. Code: [AUSKLAPPEN] Repeat
aktuelle=rand(vokabeln_max) print vokablen(aktuelle,1) ;mache anstatt der 1 eine 2, um anders herum abzufragen antwort$=Input() if antwort$=vokabeln(aktuelle,2) then print "richtig!" flushkeys() waitkey() locate 0,0 flip cls Until KeyHit(1) Edit: Da war einer schneller mit dem Prinzip^^ |
||
- Zuletzt bearbeitet von sheldon am So, Sep 28, 2008 20:52, insgesamt 2-mal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Haha, sheldon, nur dumm dass "right" und "left" nen Count verlangt ^_^
Da hilft aber Instr ![]() ![]() |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
sheldon, Dein Code ist absoluter MIST.
Da muss man einiges dran ändern... zB so: (Wenn man ein Textformat wie in sheldon's Beispiel voraussetzt) Code: [AUSKLAPPEN] file=readfile("vokabeln.txt")
global vokabeln_max While not eof(file) vokabeln_max=vokabeln_max+1 ReadLine(file) Wend SeekFile file,0 dim vokabeln$(vokabeln_max-1,1) for i=0 to vokabeln_max-1 txt$=readline$(file) vokabeln$(i,0)=left(txt$,Instr(txt$,".")-1) vokabeln$(i,1)=Right(txt$,Len(txt$)-Instr(txt$,".")) next CloseFile file Nun kann man zb folgendes machen, um ein Vokabel auszuwählen: Code: [AUSKLAPPEN] zahl=Rand(0,vokabeln_max)
deutsch$=vokabeln(zahl,0) englisch$=vokabeln(zahl,1) Fertig ![]() mfG; Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
demonboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay und die vokaben in dem Textdokument (geschrieben mit dem editor von windows?) muss ich dann so wie bei sheldon schreiben oda was?
ach und wie funktioniert der folgende teil das vesteh ich noch nicht so ganz. Code: [AUSKLAPPEN] While not eof(file) vokabeln_max=vokabeln_max+1 ReadLine(file) Wend |
||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau, die Textdatei kannst du mit dem Windows-Editor schreiben und muss so aussehen wie bei sheldon:
Zitat: Wort1Deutsch.Wort1Englisch
essen.food Der dir unklare Code macht nichts weiter als die Zeilen in einer (Text-)Datei zu zählen. So werden die verfügbaren Vokabeln gezählt. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
demonboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aha ok danke ich werd mich melden wenn ich soweit bin denn ich will vielleicht noch nen countdown einfügen um dem user z.B 10 sekunden zeit zu geben die vokabel zu erraten.
ach und wozu braucht man den zweiten array bei varriablen??? denn der ist doch eigentlich konstant oder wird der irgendwann geändert??? |
||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
Fredko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat:
Indem dem du es mit einer Zeit Variable machst. Wenn die entsprechende Variable ausgewählt wurde, ist diese Millisecs(), und wenn dann Zeit+10000 , also nach 10 Sekunden, kleiner oder gleich ist wie die momentane Zeit von Millisecs(), wird z.b. falsch um eins erhört. Code: [AUSKLAPPEN] Zeit=Millisecs() .. If zeit+10000=<Millisecs() falsch=falsch+1 Endif .. |
||
demonboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so mein quelltext sieht jetzt so aus ist das einigermaßen akzeptabel???
Code: [AUSKLAPPEN] AppTitle "Ma-an Vokabeltrainer" .Neu Print "Was möchtest du üben?(Deutsch=1;Franzoesisch=2)" dof = Input() If dof < 1 Or dof > 2 Then Goto Neu file = ReadFile(".\Vokabeln.txt") Global vokabeln_max While Not Eof(file) vokabeln_max = vokabeln_max + 1 ReadLine(file) Wend SeekFile file,0 Dim vokabeln$(vokabeln_max-1,1) For i=0 To vokabeln_max-1 txt$=ReadLine$(file) vokabeln$(i,0)=Left(txt$,Instr(txt$,".")-1) vokabeln$(i,1)=Right(txt$,Len(txt$)-Instr(txt$,".")) Next CloseFile file Repeat versuche = versuche + 1 zahl = Rand(0,vokabeln_max) deutsch$ = vokabeln(zahl,0) franzoesisch$ = vokabeln(zahl,1) If dof = 1 Then Print franzoesisch$ ElseIf dof = 2 Then Print deutsch$ EndIf Loesung$ = Input() Delay 1000 If dof = 1 Then If Loesung$ = deutsch$ Then Print "Richtig!" richtig = richtig + 1 Else Print "Leider Falsch!" EndIf ElseIf dof = 2 Then If Loesung$ = franzoesisch$ Then Print "Richtig!" richtig = richtig + 1 Else Print "Leider Falsch!" EndIf EndIf Until KeyDown(1) Print "Oh du möchtest schon aufhören?Na gut!" Print ("Du hast " + richtig + " von " + versuche + " Vokabeln gewusst.") |
||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ach und wozu braucht man den zweiten array bei varriablen???
denn der ist doch eigentlich konstant oder wird der irgendwann geändert??? Warum Eingeproggt ein 2-dimensionales Array verwendet? Ganz einfach.. Die erste Dimension ist die Nummer, die allen Vokabeln gegeben wird, die zweite Zahl steht für Deutsch(0) oder Englisch(1) Das Deutsche Wort hat IMMER die gleiche Nummer wie das Englische Wort. Das macht einfache Abfragen Möglich z.B. Zitat: zahl=Rand(0,vokabeln_max)
deutsch$=vokabeln(zahl,0) englisch$=vokabeln(zahl,1) eingabe=Input("Geben sie das englische Wort für"+deutsch$+"ein) If eingabe=englisch$ Then Print "RICHTIG!" |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
flona |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier kann man des Goto vermeiden und des ".\Voc.." ist überflüssig
Code: [AUSKLAPPEN] ...
Repeat Print "Was möchtest du üben?(Deutsch=1;Franzoesisch=2)" dof = Input() Until dof=1 Or dof=2 file=ReadFile("Vokabeln.txt") ... Hier musst du auf des -1 achten, da du sonst sicher iwann einen Array Index Out of Bound Fehler bekommst ![]() Code: [AUSKLAPPEN] ...
zahl = Rand(0,vokabeln_max-1) ... |
||
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit |
demonboyBetreff: vokabelprogramm und hangmanspiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke soweit bin ich jetzt.
ich hab aber noch ma ne frage nämlich ich habe nen hangmanprogramm geschreiben: Code: [AUSKLAPPEN] AppTitle "Hangman2" Const Max = 1 Dim Wort$(Max) Data "pfeffer", "zaunkoenig" For i = 0 To Max Read Wort$(i) Next SeedRnd MilliSecs() Zufall$ = Wort$(Rand(Max)) Versuche= 0 Geraten$ = String$("?",Len(Zufall$)) Repeat Print Geraten$ Versuche = Versuche + 1 Zeichen$ = Input("Rate mal: ") Stelle = Instr(Zufall$,Zeichen$) For i = 1 To Len(Zufall$) If Zeichen$ = Mid$(Zufall$,i,1) Then Stelle = i Neu$ = Left$(Geraten$,Stelle-1) + Zeichen$ Neu$ = Neu$ + Mid$(Geraten$,Stelle+1) Geraten$ = Neu$ EndIf Next Until Geraten$ = Zufall$ Print Zufall$ Delay 1000 Print "Richtig!Du hast " + Versuche + " Versuche" Print "gebraucht!!!" Delay 1000 es wäre ja kein problem vorher abzufragen wieviele runden man spielen möchte oder so,aber kann ich denn die wörter die ich hier in data gepackt habe auch in nem ".txt" Dokument (also für den user veränderbar) aufrufen wenn ja wie. |
||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
readfile![]() ![]() ![]() |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum kommt Spion jetzt schon wieder mit einem Riesencode:?:
Weil er seine neue Inputroutine zum Einsatz lassen kommen möchte (unterstützt lang gedrückte Tasten) ![]() Aber zurück zum Thema, ich würd die Anzahl der Übersetzungen immer variabel halten. Erstes Wort die Vokabel, alle folgenden die Übersetzung ![]() Code: [AUSKLAPPEN] Data 7
Data "House,Haus" Data "Cat,Katze" Data "Dog,Hund" Data "Car,Auto" Data "Window,Fenster" Data "tree,Baum" Data "to leave,lassen,verlassen" Code: [AUSKLAPPEN] Data 7 Data "House,Haus" Data "Cat,Katze" Data "Dog,Hund" Data "Car,Auto" Data "Window,Fenster" Data "tree,Baum" Data "to leave,lassen,verlassen" Read vocCount Dim voc$(vocCount) For i = 1 To vocCount Read voc$(i) Next Dim keys(211, 2) ;0-pressed 1-startedPressing 2-presstime Global freshPressing, lastTyped Graphics 400, 300, 0, 3 SeedRnd MilliSecs() SetBuffer BackBuffer() ClsColor 63, 83, 123 fnt1 = LoadFont("Courier", 16) fnt2 = LoadFont("Arial", 26, 1) phase = 0 aktiv = 0 Repeat updateKeys() If phase = 0 Then round = round + 1 vocLine$ = voc(Rand(1, vocCount)) phase = 1 End If Cls For i = 1 To 40 ;bling bling Color Rand(255), Rand(255), Rand(255) Oval GraphicsWidth() / 2 - Sin(i * 20 + MilliSecs() / 10) * GraphicsWidth() / 2, i * 7, 5, 5 Next If phase = 1 Then SetFont fnt2 Color 255, 255, 123 Center nwort$(vocLine, 1), 30 End If SetFont fnt1 Color 255, 255, 255: Text 10, 10, "Übersetze die Vokabel:" If round > 1 Then Center "Erfolgsrate: " + hit + "/" + (round - 1) + " (" + Int((Float(hit) / (round - 1)) * 100) + "%)", GraphicsHeight() - 26 txt$ = inputField(txt$, 10, GraphicsHeight() - 52, GraphicsWidth() - 20) If KeyHit(28) Then FlushKeys() If phase = 1 Then n = 2 rightAnswere = False While nwort$(vocLine, n) <> "" rightAnswere = (txt$ = nwort$(vocLine, n)) If rightAnswere Then Exit n = n + 1 Wend aTimer = MilliSecs() If rightAnswere Then phase = 2: hit = hit + 1 Else phase = 3 End If txt$ = "" End If If phase > 1 Then If MilliSecs() - aTimer < 1000 Then SetFont fnt2 If phase = 2 Then Color 123, 255, 63 Center nwort$(vocLine, 1), 30 Color 0, 255, 0 Center "Richtig", 80 End If If phase = 3 Then Color 255, 123, 63 Center nwort$(vocLine, 1), 30 Color 255, 0, 0 Center "Falsch", 80 End If Else phase = 0 End If End If Flip() Until KeyDown(1) End ;Gibt einen Text zentriert auf dem Bildschirm aus Function Center(txt$, y) Text (GraphicsWidth() - StringWidth(txt$)) / 2, y, txt$ End Function ;satz$ ist der zu untersuchende String ;wort gibt an, das wievielte Wort gesucht werden soll Function nwort$(satz$, wort, trenn$ = ",") If wort < 1 Then Return "" satz$ = satz$ + trenn$ w = 0 pos = 1 While w < wort And pos > 0 While Mid$(satz$, pos, 1) = trenn$ pos = pos + 1 Wend x = pos y = Instr(satz$, trenn$, pos) pos = y w = w + 1 Wend Return Mid$(satz$, x, y - x) End Function ;Aufruf: eingabe$ = inputField(eingabe$, x, y, breite, aktiv, Look) Function inputField$(t$, x, y, w, isActive = True, look = 0) ; ; _________________________________ ;/ Hier kann experimentiert werden \ waitForRepeat = 450 ;wie lange eine Taste am Anfang gedrückt sein muss, bevor er wiederholt eingetippt wird repeatWaittime = 60 ;wie schnell bei gedrückter Taste wiederholt eingetippt wird. If look = 0 Then cur$ = "_" ;Curser If look = 1 Then cur$ = ">" curserBlinktime = 500 ;Curser Blinkzeit ;\_________________________________/ ; h = StringHeight("|") + 5 tx = 0 If isActive And (MilliSecs() / curserBlinktime) Mod 2 Then curString$ = cur$ Else curString$ = "" shift = KeyDown(42) Or KeyDown(54) altgr = KeyDown(184) key = keys(0, 0) If isActive Then toType$ = "" If key <> -1 Then If key = 2 Then If shift Then toType = "!" Else toType = "1" If key = 3 Then If altgr Then toType = "²" Else If shift Then toType = Chr$(34) Else toType = "2" If key = 4 Then If altgr Then toType = "³" Else If shift Then toType = "§" Else toType = "3" If key = 5 Then If shift Then toType = "$" Else toType = "4" If key = 6 Then If shift Then toType = "%" Else toType = "5" If key = 7 Then If shift Then toType = "&" Else toType = "6" If key = 8 Then If altgr Then toType = "{" Else If shift Then toType = "/" Else toType = "7" If key = 9 Then If altgr Then toType = "[" Else If shift Then toType = "(" Else toType = "8" If key = 10 Then If altgr Then toType = "]" Else If shift Then toType = ")" Else toType = "9" If key = 11 Then If altgr Then toType = "}" Else If shift Then toType = "=" Else toType = "0" If key = 12 Then If altgr Then toType = "\" Else If shift Then toType = "?" Else toType = "ß" If key = 16 Then If altgr Then toType = "@" Else toType = "q" If key = 17 Then toType = "w" If key = 18 Then If altgr Then toType = "€" Else toType = "e" If key = 19 Then toType = "r" If key = 20 Then toType = "t" If key = 21 Then toType = "z" If key = 22 Then toType = "u" If key = 23 Then toType = "i" If key = 24 Then toType = "o" If key = 25 Then toType = "p" If key = 26 Then If shift Then toType = "Ü" Else toType = "ü" If key = 30 Then toType = "a" If key = 31 Then toType = "s" If key = 32 Then toType = "d" If key = 33 Then toType = "f" If key = 34 Then toType = "g" If key = 35 Then toType = "h" If key = 36 Then toType = "j" If key = 37 Then toType = "k" If key = 38 Then toType = "l" If key = 39 Then If shift Then toType = "Ö" Else toType = "ö" If key = 40 Then If shift Then toType = "Ä" Else toType = "ä" If key = 44 Then toType = "y" If key = 45 Then toType = "x" If key = 46 Then toType = "c" If key = 47 Then toType = "v" If key = 48 Then toType = "b" If key = 49 Then toType = "n" If key = 50 Then toType = "m" If key = 51 Then If shift Then toType = ";" Else toType = "," If key = 52 Then If shift Then toType = ":" Else toType = "." If key = 53 Then If shift Then toType = "_" Else toType = "-" If key = 57 Then toType = " " If shift And Asc(toType) >= 97 And Asc(toType) <= 122 Then toType = Upper(toType) End If If (keys(0, 2) < waitForRepeat And freshPressing <> keys(0, 0)) Or (keys(0, 2) > waitForRepeat And MilliSecs() - lastTyped > repeatWaittime) Then lastTyped = MilliSecs() If keys(0, 0) = 14 Then ;Backspace If Len(t$) > 0 Then t$ = Left$(t$, Len(t$) - 1) Else If toType <> "" Then t$ = t$ + toType End If End If freshPressing = keys(0, 0) End If If StringWidth(t$) > w - StringWidth("_") * 3 Then tx = -StringWidth(t$) + w - StringWidth("_") * 3 ; ______ ;/ LOOK \ ;\______/ ; Fügt eure eigenen Looks hinzu! Viewport x, y, w, h If look = 0 Then If isActive Then Color 163, 163, 163 Else Color 123, 123, 123 Rect x, y, w, h If isActive Then Color 255, 255, 255 Else Color 200, 200, 200 Text x + 2 + tx, y + 2, t$ + curString$ Color 63, 63, 63 Rect x, y, w, h, 0 End If If look = 1 Then Color 0, 0, 0 Rect x, y, w, h If isActive Then Color 55, 255, 55 Else Color 0, 200, 0 Text x + 2 + tx, y + 2, t$ + curString$ Rect x, y, w, h, 0 End If Viewport 0, 0, GraphicsWidth(), GraphicsHeight() Return t$ End Function Function updateKeys() keys(0, 2) = 2147483647 keys(0, 0) = -1 For i = 1 To 211 If KeyDown(i) Then If Not keys(i, 0) Then keys(i, 0) = True keys(i, 1) = MilliSecs() Else keys(i, 2) = MilliSecs() - keys(i, 1) End If If keys(i, 2) < keys(0, 2) Then keys(0, 2) = keys(i, 2) keys(0, 0) = i End If Else keys(i, 0) = False keys(i, 2) = 0 End If Next End Function |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
demonboy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay also da ist 8wenn ich das richtig verstanden habe) schon der timer mit drin und du hast das ganze mit data gemacht, oder?
Ähhm danke für den quelltext aber ich fand die lösung mit den für den user veränderbaren vokabeln besser... ( ![]() ![]() |
||
ACHTUNG!!!
Newbiealarm: Ich habe erst vor kurzem mit dem programmieren von BB angefangen!!! |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
demon als tipp am rande.. mach lieber so viele vocabeln wie möglcih.. ich würde nur einen trainer verwenden der alle enthält dies gibt.. und vllt machs nach themenbereichen sortiert udn abschaltbar.. das jeder nur das lernt was muss | ||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das data hab ich gemacht, weil ich gerade keinen Bock auf zusätzliche Dateien hatte. Wie das geht steht hier ja schon zu genüge. Es sollte ja auch nur meine Idee verdeutlichen. Wo das steht ist da ja egal. Klar sind hier externe Dateien zu bevorzugen. | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group