# Zahlenratespiel wieder von vorne anfangen



## Kitty_ (12. November 2010)

Halloechen,

ich muss fuer die schule ein zahlenrateprogramm schreiben.
Den Anfang hab ich auch nur ich bleide an der stelle haengen an der man die zahl erraten hat und dann auswaehlen kann ob man das spiel nocheinmal ausfuehren moechte oder nicht. Genau da komm ich nicht weiter. Kann mir da vllt jemand helfen?!

lG


----------



## yax (12. November 2010)

Vielleicht wäre ein Code ganz hilfreich.


----------



## Kitty_ (12. November 2010)

#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>


void main(int argc, char* argv[])
{
	int eingabe; 
	int erraten=0;
        int zufall = rand();
	int Ja;
	int Nein;

	do { 

		 printf("Rate die Zahl zwischen 0 und 32767\n");
		 scanf("%i", &eingabe);

		 if (eingabe < zufall) {
			 printf("Leider falsch. %i ist zu klein \n",eingabe);
		 }
		 else if (eingabe > zufall) {
			 printf("Leider falsch. %i ist zu gross \n", eingabe);
		 } 
		 else {
			 printf("Zahl erraten!\n");
			 erraten=1;  
		 } 

	} while(eingabe != zufall);



	getch();
}


----------



## Trulleberg (12. November 2010)

Du hast die Zufallsgenerierung falsch gemacht, lies dir mal die Dokumentation und Beispiele zu srand/rand durch:

```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main()
{
int eingabe;
int erraten=0;
int zufall = (srand(time(0)),rand()%32768);
int Ja;
int Nein;

do {

printf("Rate die Zahl zwischen 0 und 32767\n");
scanf("%i", &eingabe);

if (eingabe < zufall) {
printf("Leider falsch. %i ist zu klein \n",eingabe);
}
else if (eingabe > zufall) {
printf("Leider falsch. %i ist zu gross \n", eingabe);
}
else {
printf("Zahl erraten!\n");
erraten=1;
}

} while(eingabe != zufall);

}
```


----------



## kickerxy123 (12. November 2010)

```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
int main()
{
int eingabe;
int erraten=0;
int zufall = (srand(time(0)),rand()%32768);
int Ja;
int Nein;
 
do {
 
printf("Rate die Zahl zwischen 0 und 32767\n");
scanf("%i", &eingabe);
 
if (eingabe < zufall) {
printf("Leider falsch. %i ist zu klein \n",eingabe);
}
else if (eingabe > zufall) {
printf("Leider falsch. %i ist zu gross \n", eingabe);
}
else {
printf("Zahl erraten!\n");
erraten=1;
printf("nochmal? [J:N]");
char tmp = getche();
printf("\n");
if(tmp == 'J' || tmp == 'j')zufall = (srand(time(0)),rand()%32768);
else return 0;
}
 
} while(eingabe != zufall);
 return 0;
}
```


----------



## Kitty_ (13. November 2010)

kickerxy123 hat gesagt.:


> ```
> char tmp = getche();
> printf("\n");
> if(tmp == 'J' || tmp == 'j')zufall = (srand(time(0)),rand()%32768);
> ...



Genau an der stelle zeigt er mir einen fehler bei getche(); an.
außerdem komme ich dann in einer endlosschleife wo ich immer wieder gefragt werde ob ich nocheinem machen moechte oder nicht. 

trd danke fuer die hilfe


----------



## kickerxy123 (13. November 2010)

also ich versteh grad dein Problem nicht.. er soll doch fragen, ob das Spiel nochmal gestartet werden soll? Für getche() brauchst du glaub ich #include <conio.h> versuchs mal.


----------



## Kitty_ (13. November 2010)

ja aber er faengt dann nicht das spiel von vorne an (auf jeden fall nicht bei mir) sonder da komm dann so matrix maeßig eine millionen mal "nochmal ? [J:N]"


----------



## Aschas (14. November 2010)

Ähm vllt. liegt es daran das es "getch" und nicht "getche" heißt. 

MfG


----------



## Kitty_ (14. November 2010)

hat auch nichts geaendert..
trd danke

Fehler die mir gesagt werden:
c:\dokumente und einstellungen\jeanii\eigene dateien\visual studio 2010\projects\zahlenratespiel\zahlenratespiel\zahlenratespiel.cpp(5): warning C4627: "#include <stdlib.h>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
          "StdAfx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen
c:\dokumente und einstellungen\jeanii\eigene dateien\visual studio 2010\projects\zahlenratespiel\zahlenratespiel\zahlenratespiel.cpp(6): warning C4627: "#include <time.h>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
          "StdAfx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen
c:\dokumente und einstellungen\jeanii\eigene dateien\visual studio 2010\projects\zahlenratespiel\zahlenratespiel\zahlenratespiel.cpp(7): warning C4627: "#include <conio.h>": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen.
          "StdAfx.h" Direktive hinzufügen oder vorkompilierten Header erneut erstellen
c:\dokumente und einstellungen\jeanii\eigene dateien\visual studio 2010\projects\zahlenratespiel\zahlenratespiel\zahlenratespiel.cpp(45): fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "StdAfx.h"" einzufügen?

und wenn ich #include "StdAfx.h" eingebe mekert der noch mehr rum 


vllt koennt ihr mir jah sagen was ich aender muss..


----------



## Trulleberg (14. November 2010)

Du sollst keine nichtstandardkonforme Funktionen verwenden!
D.h. du sollst standardkonforme Funktionen verwenden.
Nichtstandard sind z.B. conio.h,stdafx.h und ähnliches Compilerabhängiges.
Warum habe ich in meinem Beispielcode wohl dein zuvor vorhandenes conio/stdafx Gedöns entfernt?
Für deinen Anwendungsfall reicht die C-Standardbibliothek vollkommen aus.

```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
int eingabe;
int erraten=0;
int zufall = (srand(time(0)),rand()%32768);
int ja;
 
do {
 
printf("Rate die Zahl zwischen 0 und 32767\n");
scanf("%i", &eingabe);getchar();
 
if (eingabe < zufall) {
printf("Leider falsch. %i ist zu klein \n",eingabe);
}
else if (eingabe > zufall) {
printf("Leider falsch. %i ist zu gross \n", eingabe);
}
else {
printf("Zahl erraten!\n");
erraten=1;
printf("nochmal? [J:N]");
ja=getchar(); if( ja!='\n' ) while( getchar()!='\n' );
if( ja!='J' && ja!='j' ) break;
zufall = rand()%32768;
eingabe = -1;
}
 
} while(eingabe != zufall);

  return 0; 
}
```


----------



## Kitty_ (15. November 2010)

Nur habe ich trd noch das problem das der nicht das spiel von vorne anfaengt sondern in einer endlosschleife fragt ob das spiel nocheinmal starten moechte.
ich weiß nicht ob das an meinem programm liegt ober ob der das wirklich macht. langsam zweifel ich echt an meinem visual studio ..


----------



## Kitty_ (22. November 2010)

danke fuer den versuch aber leider wuerde mir gesagt das soh ungefaehr 90 prozent der codes totaler schwachsinn ist .. naja egal ..trd danke ...


----------

