| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		nervensaege
 
 
  Anmeldungsdatum: 03.07.2009 Beiträge: 4
 
  | 
		
			
				 Verfasst am: 03.07.2009, 22: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: 4713 Wohnort: ~/
  | 
		
			
				 Verfasst am: 03.07.2009, 22: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: 2531 Wohnort: Hofen SH (Schweiz)
  | 
		
			
				 Verfasst am: 04.07.2009, 08: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, 11:23    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Super, vielen dank problem gelöst    | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |