Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 21:01 Titel: WICHTIG : Hilfe beim Rechenprogramm -> noch nich fertig. |
|
|
Hi,
ich kann QBasic noch nich so lange und auch nich so gut.
Aber ich wollte mal fragen ob mir jemand sagen
kann wie ich ein Programm schreibe bei dem man am anfang seinen Benutzer angibt (Bunutzernamen sind : 1 2 3 4 5 6 7 8 9) und dann kommen zufällige
+ ,-, *, und : Aufgaben (nicht mit normalen Zahlen sondern
mit Dezimahlzahlen) bei denen man dann das Ergebnis eingibt.
Wenn es falsch is dann bekommt man 0 Punkte und wenn es richtig is
dann 10Punkte. Am schluss wird das dann in einer !!!Persönlichen!!!
Bestenliste gespeichert Platz 1-10. Ach ja und dass alles auf Zeit (100 Sekunden).
Danke! _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag! 
Zuletzt bearbeitet von Dorftrottel am 01.05.2005, 18:32, insgesamt 4-mal bearbeitet |
|
Nach oben |
|
 |
K-Duke
Anmeldungsdatum: 23.04.2005 Beiträge: 8
|
Verfasst am: 23.04.2005, 21:11 Titel: Inputbefehl |
|
|
Also am besten geht das mit den Benutzernamen mit dem Inputbefehl!
Beispiel!
Dim bla as string 'definiert die Variable "bla" als Zeichenkettenvariable!
Input bla 'fordert den Benutzer auf etwas über die Tastatur einzugeben
und speichert es in der Variable bla
Print bla 'das sollte dann das ausgeben, was bei input eingegeben wurde
so! mit den random-aufgaben lass ich mir noch was einfallen! |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 21:14 Titel: |
|
|
Thanx  _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:09 Titel: also |
|
|
also
ich hab jetzt die aufgaben so weit dass zufallsaufgaben kommen.
Code: | RANDOMIZE TIMER
z = (INT(RND * 53) + 9) / 10 'Zufallszahl zwischen 0,9 und 6,1
DO: Taste$ = INKEY$: LOOP WHILE Taste$ = ""
'warten auf Tastenbetaetigung
IF Taste$ = CHR$(27) THEN END 'Beenden mit Esc-Taste
RANDOMIZE TIMER
y = (INT(RND * 53) + 9) / 10 'Zufallszahl zwischen 0,9 und 6,1
PRINT y;
PRINT " * ";
PRINT z;
PRINT "="
LINE INPUT ergebnis$
|
jetzt müsste nurnoch eine zufalls rechenart kommen und das mit
der highscore, username und punkte kruscht. _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:09 Titel: also |
|
|
also
ich hab jetzt die aufgaben so weit dass zufallsaufgaben kommen.
Code: | RANDOMIZE TIMER
z = (INT(RND * 53) + 9) / 10 'Zufallszahl zwischen 0,9 und 6,1
DO: Taste$ = INKEY$: LOOP WHILE Taste$ = ""
'warten auf Tastenbetaetigung
IF Taste$ = CHR$(27) THEN END 'Beenden mit Esc-Taste
RANDOMIZE TIMER
y = (INT(RND * 53) + 9) / 10 'Zufallszahl zwischen 0,9 und 6,1
PRINT y;
PRINT " * ";
PRINT z;
PRINT "="
LINE INPUT ergebnis$
|
jetzt müsste nurnoch eine zufalls rechenart kommen und das mit
der highscore, username und punkte kruscht. _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Jan

Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 23.04.2005, 22:13 Titel: |
|
|
deine Zahlen liegen aber glaube ich nicht zwischen 0.9 und 6.1
sondern zwischen 0.9 und 5.3
Mit der Zuffälligen Rechenart kannste das ja ähnlich machen. dann rundest du auf eine ganze Zahl auf und sagst einfach:
Code: |
select case zzahl
case 1
rechenart$="+"
case 2
rechenart$ ="-"
....
end select
|
und halt immer so weiter |
|
Nach oben |
|
 |
K-Duke
Anmeldungsdatum: 23.04.2005 Beiträge: 8
|
Verfasst am: 23.04.2005, 22:14 Titel: |
|
|
das mit dem zufälligen rechenzeichen könntest du z.B. so machen, dass du eine zufällige Zahl zwischen 1 und 4 (nur ganzzahlig) herstellst und mit einer select case das rechenzeichen auswertest |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:16 Titel: |
|
|
hä
wie soll ich das einbauen ??? _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:18 Titel: |
|
|
Aber das Programm soll doch mit Dezimahlzahlen laufen.
(ich: Blutiger Anfänger!) _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Devilkevin aka Kerstin

Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 23.04.2005, 22:23 Titel: |
|
|
Dorftrottel hat Folgendes geschrieben: | Aber das Programm soll doch mit Dezimahlzahlen laufen.
(ich: Blutiger Anfänger!) |
Hi "DorfTrottel"
kein Wunder das dein Programm keine Dezimal Zahlen auspuckt.
Du hast INT benutzt. INT verhindert das Dezimal Zahlen "gewürfelt" werden
PS: Es gibt oben rechts nen Edit Button  _________________ www.piratenpartei.de |
|
Nach oben |
|
 |
K-Duke
Anmeldungsdatum: 23.04.2005 Beiträge: 8
|
Verfasst am: 23.04.2005, 22:29 Titel: |
|
|
hm komisch ich wollte grad was ausprobieren, aber rnd spuckt bei mir immer nur 0,75-irgendwas aus |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:30 Titel: |
|
|
Ich weiß
Trotztdem Danke.
Ach Dezimahlzahlen gibt es ja schon nur den Code den mir Jan gegeben hat...ich hab keinen Plan wie ich das einbauen soll??
dann soll ich noch irgendwas Runden.
??????????????????????????????????????
 _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
K-Duke
Anmeldungsdatum: 23.04.2005 Beiträge: 8
|
Verfasst am: 23.04.2005, 22:36 Titel: |
|
|
jepp das muss gerundet werden!
und in den code einbauen könnte so aussehen:
Code: |
a = random zahl zwischen 1 und 4
PRINT y;
select case a
case is = 1
Print " + "
case is = 2
Printe " - "
....
end select
PRINT z;
PRINT "="
LINE INPUT ergebnis$
|
|
|
Nach oben |
|
 |
Devilkevin aka Kerstin

Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 23.04.2005, 22:41 Titel: |
|
|
Schone mal deine "?"-Taste
Lese dir doch ein Tutorial durch damit du die Grundbegriffe kennen lernst - dann verstehst du den Code auch und schreibst nich irgendwas ab das du sowieso nicht verstehst . Gute Tutorials gibts auf der Hauptseite.
Naja aber das Highscore Menü kann ich dir einbauen:
Zuerst musst du die Anzahl der richtigen Antwort ermitteln:
Code: |
score = 0
IF usereingabe = ergebnis THEN score = score +1
|
Die Variable "score" enthält die Richtigen Antworten!
Damit du auch weist welcher User welchen Score erzielt hat musst du den Usernamen auch in einer Variable speichern
Code: |
INPUT "Username ? ", user$
|
Dann speicherst du diese Beiden Daten in einer .txt Datei:
Code: |
OPEN "C:\highscore.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$ " Richtige Antworten ", score
CLOSE #1
|
_________________ www.piratenpartei.de |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:42 Titel: |
|
|
Bei mir kommt dann immer "0 * 0" ? _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Devilkevin aka Kerstin

Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 23.04.2005, 22:45 Titel: |
|
|
Von welchem Code redest du gerade ? _________________ www.piratenpartei.de |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 22:45 Titel: |
|
|
Uff
Also die Grunbegriffe kann ich schon nur ich war grade n' bissle
verwirrt.
RESET Ok
Jetzt bin ich wieder aufnahme fähig.
Von dem von K-Duke _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 23.04.2005, 23:06 Titel: |
|
|
Ich hab n bissle exerimentiert:
Code: |
CLS
INPUT "Btte Benutzername angeben ", user$
CLS
RANDOMIZE TIMER
z = (INT(RND * 53) + 9) / 10 'Zufallszahl zwischen 0,9 und 6,1
DO: Taste$ = INKEY$: LOOP WHILE Taste$ = ""
'warten auf Tastenbetaetigung
IF Taste$ = CHR$(27) THEN END 'Beenden mit Esc-Taste
RANDOMIZE TIMER
y = (INT(RND * 53) + 9) / 10 'Zufallszahl zwischen 0,9 und 6,1
PRINT y;
PRINT " * ";
PRINT z;
PRINT "="
LINE INPUT ergebnis$
a = um hier RANDOM zu bekommen was muss ich schreiben?
PRINT y;
SELECT CASE a
CASE IS = 1
PRINT " + "
CASE IS = 2
PRINT " - "
CASE IS = 3
PRINT " * "
CASE IS = 4
PRINT " / "
END SELECT
PRINT z;
PRINT "="
LINE INPUT usereingabe$
(Hier muss der Code rein das der PC die Aufgabe Rechnet un als
ergebnis$ speichert)
PRINT "Deine Punktzahl lautet:"
PRINT score
score = 0
IF usereingabe$ = ergebnis$ THEN score = score + 10
OPEN "C:\highscore.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
|
und das alles noch auf zeit (100 Sekunden) _________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
Devilkevin aka Kerstin

Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 23.04.2005, 23:31 Titel: |
|
|
Zitat: |
a = um hier RANDOM zu bekommen was muss ich schreiben?
äh das verstehe ich nicht ganz
|
Zitat: |
LINE INPUT usereingabe$
(Hier muss der Code rein das der PC die Aufgabe Rechnet un als
ergebnis$ speichert)
Einfach: Rechenaufgabe = ergebnis also z.B. 0,7 + 0,7 = ergebnis
|
Aber: Ich muss dich loben, haste doch sehr schön zusammengesetzt und zum Teil auch selbst geschrieben ! Und deshalb kannste das mit der Zeit auch alleine ! Schau dir mal in der MonsterFAQ (www.qbasic.de) das Thema "Zeiten, Datum " (oder so ähnlich) an  _________________ www.piratenpartei.de |
|
Nach oben |
|
 |
Dorftrottel gesperrt

Anmeldungsdatum: 23.04.2005 Beiträge: 97 Wohnort: Welt
|
Verfasst am: 24.04.2005, 06:25 Titel: |
|
|
mega danke leute.
doch einige kleine fragen hab ich noch...
1. bei mir wechselt's CASE nich
2. da wo der user abgespeichert wird
Code: |
IF user$ = a THEN OPEN "a.txt" FOR OUTPUT AS #1
[color=red]PRINT #1, "User: ", user$; " Punkte ", score[/color]
CLOSE #1
|
sagts mir immer : UNZULÄSSIGER DATEINAME (siehe rote zeile)
Help!
Und nochmal alles:
Code: |
CLS
INPUT "Btte Benutzername angeben ", user$
CLS
PRINT "Bitte ENTER dr?cken"
DIM a AS STRING
DIM b AS STRING
DIM c AS STRING
DIM d AS STRING
DIM e AS STRING
DIM f AS STRING
DIM g AS STRING
DIM h AS STRING
DIM i AS STRING
RANDOMIZE TIMER
z = (INT(RND * 53) + 9) / 10
DO: Taste$ = INKEY$: LOOP WHILE Taste$ = ""
IF Taste$ = CHR$(27) THEN END
RANDOMIZE TIMER
y = (INT(RND * 53) + 9) / 10
PRINT y;
k = 1
SELECT CASE k
CASE IS = 1
PRINT " + "
CASE IS = 2
PRINT " - "
CASE IS = 3
PRINT " * "
CASE IS = 4
PRINT " / "
END SELECT
PRINT z;
PRINT "="
LINE INPUT usereingabe$
delay = 2
finish = TIMER + delay
DO
LOOP UNTIL TIMER >= delay
delay = whatever
t! = INT(TIMER)
DO
IF t! <> INT(TIMER) THEN
t! = INT(TIMER)
count = count + 1
PRINT count
END IF
LOOP UNTIL count = delay
PRINT "Deine Punktzahl lautet:"
PRINT score
score = 0
IF usereingabe$ = ergebnis$ THEN score = score + 10
IF user$ = a THEN OPEN "a.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = b THEN OPEN "b.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = c THEN OPEN "c.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = d THEN OPEN "d.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = e THEN OPEN "e.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = f THEN OPEN "f.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = g THEN OPEN "g.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = h THEN OPEN "h.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
IF user$ = i THEN OPEN "i.txt" FOR OUTPUT AS #1
PRINT #1, "User: ", user$; " Punkte ", score
CLOSE #1
|
_________________ Euer Dorftrottel!
Unser Name ist unser Auftrag!  |
|
Nach oben |
|
 |
|