Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nervensaege
Anmeldungsdatum: 03.07.2009 Beiträge: 4
|
Verfasst am: 03.07.2009, 23:35 Titel: Schere,Stein,Papier Spiel variablenzuweisung klappt nicht |
|
|
Moin
also ich hab zum einstieg mal versucht ein Schere,Stein,Papier Spiel zu erstellen. Wenn ich versuche es auszuführen wird mir die Zeile mit "gegnerauswahl$ = " angestrichen.
Der code sieht wie folgt aus:
Code: | RANDOMIZE TIMER
gegnerzahl% = RND
IF gegnerzahl% < .333 THEN
gegnerauswahl$ = Schere
END IF
IF gegnerzahl% = .333 AND gegnerzahl% < .666 THEN
gegnerauswahl$ = Stein
END IF
IF gegnerzahl% >= .666 THEN
gegnerauswahl$ = Papier
END IF
LOCATE 10, 14
PRINT "Dein gegner waehlt: "; gegnerauswahl$
|
Die konkrete Frage ist nun was ist da falsch?
ganz nebenher wenn jemand mir sonst irgendetwas sagt was am code Falsch ist oder mir sagt das ich beim posten im Forum was anders machen sollte bin ich für solche hiweise echt dankbar  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 03.07.2009, 23:49 Titel: |
|
|
Code: | IF gegnerzahl% = .333 AND gegnerzahl% < .666 THEN |
muss heißen
Code: | IF gegnerzahl% >= .333 AND gegnerzahl% < .666 THEN |
Ich würde da allerdings mit ELSEIF arbeiten. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 04.07.2009, 09:40 Titel: Re: Schere,Stein,Papier Spiel variablenzuweisung klappt nich |
|
|
nervensaege hat Folgendes geschrieben: | Die konkrete Frage ist nun was ist da falsch? |
Gleich diverse Dinge... Gehen wir systematisch einmal durch:
Eine Fliesskommazahl einer Integervariable zuweise kommt nie gut... Besser verwende
oder für diesen Fall noch besser:
Code: | gegnerzahl% = INT(3! * RND) |
d.h. explizit eine ganze Zahl zwischen 0 und 2 würfeln.
Nächster Fehler:
Code: | gegnerauswahl$ = Schere |
Auch das kommt nicht gut, ausser Du würdest am Anfang ein
Code: | CONST Schere = "Schere"
CONST Stein = "Stein"
CONST Papier = "Papier" |
machen. Vermutlich willst Du aber Stringliterale zuweisen, deshalb noch Anführungszeichen verwenden:
Code: | gegnerauswahl$ = "Schere" |
Aber dies ist immer noch eine Anfängerlösung... In Kombination mit
Code: | gegnerzahl% = INT(3! * RND) |
zuvor könntest Du zunächst Deine IFs erst einmal als
Code: | SELECT CASE gegnerzahl%
CASE 0
gegnerauswahl$ = "Schere"
CASE 1
gegnerauswahl$ = "Stein"
CASE 2
gegnerauswahl$ = "Papier"
CASE ELSE
' Sollte nie vorkommen!
ERROR 5
END SELECT |
vereinfachen. Noch viel besser ist diese Variante: Zu Beginn ein
Code: | DIM spp$(2)
FOR i%=0 TO 2
READ spp$(i%)
NEXT i%
DATA "Schere", "Stein", "Papier" |
und dann entfallen lange SELECT CASE und IF-Codewiederholungen komplett:
Code: | gegnerzahl% = INT(3! * RND)
gegnerauswahl$ = spp$(gegnerzahl%) |
Zum Schluss als Lektüre von mir an dieser Stelle:
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Anfaengerfehler.html
Schlussendlich sieht dein Programm als wirklich schöner Code umgefähr so aus:
Code: | ' Scheren, Stein und Papier-Spiel
DIM spp$(2)
RANDOMIZE TIMER
FOR i%=0 TO 2
READ spp$(i%)
NEXT i%
DATA "Schere", "Stein", "Papier"
' Ab hier das Spiel
gegnerzahl% = INT(3! * RND)
LOCATE 10, 14
PRINT "Dein gegner waehlt: "; spp$(gegnerzahl%) |
d.h. hier habe ich gegnerauswahl$ sogar komplett eliminiert. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
nervensaege
Anmeldungsdatum: 03.07.2009 Beiträge: 4
|
Verfasst am: 04.07.2009, 12:23 Titel: |
|
|
Super, vielen dank problem gelöst  |
|
Nach oben |
|
 |
|