Frage zu textinput und ausgabe

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Johnnsen

Betreff: Frage zu textinput und ausgabe

BeitragFr, März 02, 2007 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich nochmal...

Also, ich habe da mal etwas armseliges zusammengeschrieben, um zu testen wie das mit eingabe und ausgabe geht.
Ich lass mit Print eine frage stellen, auf die eine ja/nein antwort kommen soll. Leider ist da das problem mit der Groß und klein schreibung. Also hat mir jemand den tipp gegeben mit:
antwort2$ = LoverCase Input ("Bist du dumm? ")

If antwort2$=("ja") Then Print ("Wusst ich")ElseIf antwort2$= ("nein") Then Print ("Sicher?")
Aber es kommt immer "wusst ich".^^ da hab ich wohl was falsch verstanden.

2.
Es wäre schön, wenn man eine frage stellen könnte, und das was eingegeben wurde wird mit einem von 3 sätzen (zufällig) beantwortet. Geht das?

3.
Kann man irgendwie (nur einmal) festlegen, dass wenn meinetwegen das wort "schlumpf" später irgendwo vorkommt, er immer einen vorgeschriebenen satz ausgibt? Oder muss man das bei jedem ein/ausgeben von text neu definieren?

4.
Wenn ich If eingabe$ = ("irgendwas") schreibe,dann kann ja nur darauf reagiert werden, wenn auch wirklich nur dieses wort eingegeben wurde. Kann ich es so machen, dass auch ein text ausgegeben wird, wenn ein satz eingegeben wird, der das wort "Irgendwas" enthält?


Ich komme gerade aus der schule, 4 std mathe, da bin ich ein bisschen durcheinander, ich hoffe ihr versteht trotzdem was ich meine. Confused
Steine denken nicht. Oder zumindest sehr wenig.

Eingeproggt

BeitragFr, März 02, 2007 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist das BlitzMax?

Abgesehen davon, dass es kein "LoverCase" (^^) gibt, heisst es in BB nur "Lower".

zu 2.) fällt mir ganz grob sowas ein:
Code: [AUSKLAPPEN]

Dim antworten$(2)
antworten$(0)="Hallo"
antworten$(1)="Juhu"
antworten$(2)="blblbl"

eingabe$=Input("Gib was ein, ich beantworte es: ")
Print antworten(Rnd(3)) ;Event. auch Print antworten(Floor(Rnd(3))), habs nicht getestet


zu 3.)
Code: [AUSKLAPPEN]

;am anfang
suchstring$="schlumpf"

;Soviele Inputs machen, wie du willst, danach immer
If Instr(eingabe$,suchstring$)>0 Then
  Print "Vorgeschriebener Satz"
Endif


zu 4.)
Siehe 3.). Mit Instr!
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Johnnsen

BeitragFr, März 02, 2007 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Achja, ich sehe gerade, der jemand der das gepostet hat, hat das mit delphi verwechselt. Okay, danke schonmal dafür.
Steine denken nicht. Oder zumindest sehr wenig.

Christoph

BeitragFr, März 02, 2007 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
@Eingeproggt
Bei 2. sehe ich spontan einige Fehler:

1. Du hast seedrnd millisecs vergessen.
2. Du hast rnd genommen statt rand
3. Du machst rand(3), dabei kommt eine Zahl zwischen 0-3 raus, was bedeutet, dass das Prog bei 3 abstürzt (zu wenig dim-felder)

@Johnnsen

Schau, du kannst eine Zufallszahl mit ql:Rand() erzeugen.
Willst du eine Zufallskommazahl musst du ql:Rnd() benutzen.
Damit Rand und Rnd auch wirklich zufällig sind musst du am Anfang des Progs

Code: [AUSKLAPPEN]
Seedrnd Millisecs()


schreiben. Dann kommt auch wirklich immer etwas zufälliges raus. Bsp:

Code: [AUSKLAPPEN]
Seedrnd Millisecs()

print "Wirklich?"
satznummer=Rand(0,2)

if satznummer=0 then
 print "Na das ist ja toll."
elseif satznummer=1 then
 print "Super."
elseif satznummer=2 then
 print "Na spitze."
endif
WaitKey

Eingeproggt

BeitragFr, März 02, 2007 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, SeedRnd hab ich vergessen.
Aber was spricht gegen Rnd statt Rand?
Mit Floor(Rnd(3)) kommen keine Fehler.

Bitte korrigieren, wenn nötig.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

aMul

Sieger des Minimalist Compo 01/13

BeitragFr, März 02, 2007 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit einer geringen Wahrscheinlichkeit gibt rnd(3) genau 3 zurück. Und daraus macht dir auch das Floor() keine 2... also, falsch.
Außerdem ist rnd() langsamer als rand().
So wie Christoph es beschrieben hat funktioniert es dagegen einwandfrei.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Todeskop

BeitragFr, März 02, 2007 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
vielleicht wäre es nett zu erwähnen warum rand schneller ist........
der grund rnd nutzt floats (also kommazahlen) währendessen rand ganze grundete zahlen beunutzt(also 1,2,3...ohne komme)
MFG Todeskop

BladeRunner

Moderator

BeitragFr, März 02, 2007 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
...was bei modernen 32-Bit-Prozessoren mit mathematischen Coprozessoren keinen wirklichen Unterschied machen dürfte.
Ohne es genau zu wissen behaupte ich mal dass Rand() eh nur aus rnd() abgeleitet wird.
Allerdings ist es wirklich so dass das runden mit Floor() zu verfälschten Ergebnissen führt, da die 3 dann unverhältnismässig seltener auftritt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Eingeproggt

BeitragFr, März 02, 2007 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinetwegen sollt ihr Recht haben, aber weshalb ich Rnd lieber benutze:
Es benötigt nur einen Parameter (ok, kein großer Vorteil) und, wie BladeRunner schon sagte, kann man die Ergebnisse verfälschen. Manchmal will man das!
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Yogu

BeitragFr, März 02, 2007 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Rand benötigt auch nur einen Parameter, der Zweite ist nicht notwendig, sondern Komfort. Man muss nicht mehr die Startzahl dazuaddieren.

Christoph

BeitragFr, März 02, 2007 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich muss zugeben, dass "Fehler" 2 nicht wirklich verheerend ist, Eingeproggt Wink , aber der Gleichberechtigung zu liebe, sollte die Wahrscheinlichkeit für jeden Satz schon gleich hoch sein (zumindest bei diesem Beispiel).

Zu eins muss ich wohl nichts mehr sagen, das passiert häufig, dass man das vergisst (oder es als Anfänger nicht weiß (nicht auf dich bezogen!))

Der dritte Fehler scheint sich auch zu erledigt haben. Wie gesagt, bei rnd(3) kommt es nicht so häufig vor, aber dennoch besteht eine geringe Wahrscheinlichkeit, dass sich dein Programm von dir mit einer Fehlermeldung verabschiedet. Very Happy

Eingeproggt

BeitragFr, März 02, 2007 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Meldung hab ich noch zum Thema Zufall:
Nach meinen Tests (ganz billig, einfach 2 for-Schleifen, die je bis 1mio zählen) ist Rnd schneller als Rand! (und zwar bei mir um ~100ms)
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

aMul

Sieger des Minimalist Compo 01/13

BeitragFr, März 02, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessanterweise hast du Recht... Shocked
Mit Floor() zusammen wird es allerdings wieder um einiges langsamer Wink
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Johnnsen

BeitragFr, März 02, 2007 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Oha, hier wird ja heiss diskutiert. ^^ Danke für die Hilfe jungs.
Steine denken nicht. Oder zumindest sehr wenig.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group