C :: Aufgabe #88 :: Lösung #3
3 Lösungen
#88
Stein, Papier, Schere, Echse, Spock
Anfänger - C
von Energy
- 24.09.2015 um 15:22 Uhr
Programmiere das Spiel Stein, Papier, Schere, Echse, Spock, sodass man selbst eine Figur auswählen kann und der Computer eine zufällige Figur auswählt. Ermittele dann, wer diese Partie gewonnen hat.
#3
von kathleenw (3600 Punkte)
- 10.07.2020 um 09:47 Uhr
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void anfang()
{
printf("\n*******************************\n");
printf("***Schnick, Schnack, Schnuck***\n");
printf("*******************************\n\n");
printf("Bitte wähle:\n");
printf("(1) - Stein\n");
printf("(2) - Papier\n");
printf("(3) - Schere\n");
printf("(4) - Echse\n");
printf("(5) - Spock\n");
printf("(6) - Beenden\n\n");
}
int zufallszahl(int min, int max)
{
int zahl;
zahl= (rand()%((max+1)-min))+min;
return zahl;
}
int auswertung(int computer, int spieler)
{
int ergebnis;
//Es wird 1 zurück gegeben wenn der Computer gewonnen hat und 0 wenn der Spieler gewonnen hat und 2 bei unentschieden
if ((computer==1 && spieler==1) || (computer==2 && spieler==2) || (computer==3 && spieler==3) || (computer==4 && spieler==4) || (computer==5 && spieler==5)) {
printf("Die Partie war UNENTSCHIEDEN.\n");
ergebnis = 2; //unentschieden
}
else if ((computer==2 && spieler==1) ||(computer==1 && spieler==4) ||(computer==4 && spieler==5) ||(computer==5 && spieler==3) ||(computer==3 && spieler==4) ||(computer==4 && spieler==2) ||(computer==2 && spieler==5) || (computer==5 && spieler==1) || (computer==1 && spieler==3)) {
printf("Der COMPUTER hat gewonnen.\n");
ergebnis = 1; //Computer gewonnen
}
else {
printf("SIE haben gewonnen.\n");
ergebnis =0;
}
return ergebnis;
}
int main(void)
{
int eingabe, obere_grenze, untere_grenze, check, computer, ergebnis, punkte_com, punkte_spi, runde;
untere_grenze = 1;
obere_grenze = 6;
punkte_com = 0;
punkte_spi = 0;
runde = 1;
srand(time(NULL));
char elemente[][8] = {"Stein", "Papier", "Schere", "Echse", "Spock"};
do {
anfang();
check = scanf("%d", &eingabe);
fflush(stdin);
if (check!=1 || eingabe<untere_grenze || eingabe>obere_grenze)
{
printf("Sie haben eine falsche Eingabe gemacht.\n");
return EXIT_FAILURE;
}
if (eingabe<6) {
computer = zufallszahl(untere_grenze,obere_grenze-1);
printf("\nDer Computer hat %s und sie haben %s gewählt.\n\n",elemente[computer-1], elemente[eingabe-1]);
ergebnis = auswertung(computer, eingabe);
if(ergebnis==1)
punkte_com++;
else if(ergebnis==0)
punkte_spi++;
printf("\nErgebnis %d. Runde: Computer : Spieler --- %d : %d\n\n", runde, punkte_com, punkte_spi);
runde++;
}
}while(eingabe!=6);
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
