Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Schere,Stein,Papier Spiel variablenzuweisung klappt nicht

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
nervensaege



Anmeldungsdatum: 03.07.2009
Beiträge: 4

BeitragVerfasst am: 03.07.2009, 23:35    Titel: Schere,Stein,Papier Spiel variablenzuweisung klappt nicht Antworten mit Zitat

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 zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 03.07.2009, 23:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 04.07.2009, 09:40    Titel: Re: Schere,Stein,Papier Spiel variablenzuweisung klappt nich Antworten mit Zitat

nervensaege hat Folgendes geschrieben:
Die konkrete Frage ist nun was ist da falsch?

Gleich diverse Dinge... Gehen wir systematisch einmal durch:
Zitat:
Code:
gegnerzahl% = RND

Eine Fliesskommazahl einer Integervariable zuweise kommt nie gut... Besser verwende
Code:
gegnerzahl! = RND

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nervensaege



Anmeldungsdatum: 03.07.2009
Beiträge: 4

BeitragVerfasst am: 04.07.2009, 12:23    Titel: Antworten mit Zitat

Super, vielen dank problem gelöst lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz