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
2092847

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.