C :: Aufgabe #88 :: Lösung #3

3 Lösungen Lösungen öffentlich
#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
vote_ok
von kathleenw (3600 Punkte) - 10.07.2020 um 09:47 Uhr
Quellcode ausblenden C-Code
#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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben