jueves, 11 de agosto de 2011

Piedra, papel, tijera, lagarto, Spock

En una entrada anterior de este blog se muestra el código que permite realizar el conocido juego "Piedra, papel, tijera". Sin embargo, existen otras versiones más complejas o "freakies" de este juego. Una de ellas apareció hace algún tiempo en la serie de TV "The big bang theory". Esta versión del juego contempla dos posibilidades más aparte de las habituales: lagarto y Spock (el conocido personaje de Star Trek). A pesar de que en este caso existen más posibilidades para comprobar, podéis comprobar que empleo únicamente tres instrucciones if en el código para realizar todas las comprobaciones.

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    //0 - Piedra, 1 - Papel, 2 - Tijera, 3 - Lagarto, 4 - Spock
    int tablaResultados[5][5] = {{-1,1,0,0,1},{0,-1,1,1,0},{1,0,-1,0,1},{1,0,1,-1,0},{0,1,0,1,-1}};
    int jugada_usuario=0, jugada_ordenador=0;
    int k=0,l=0;

    //Inicializamos la semilla del generador pseudoaleatorio
    srand(time(NULL));
    while (1) {
        printf("\tPiedra, papel, tijera\n\n");
        printf("\t 1.- Piedra\n");
        printf("\t 2.- Papel\n");
        printf("\t 3.- Tijera\n");
        printf("\t 4.- Lagarto\n");
        printf("\t 5.- Spock\n");
        printf("\t 6.- Salir\n\n");
        printf("\t Haga su jugada: ");

        //Obtenemos la jugada del usuario
        scanf("%d",&jugada_usuario);
        //Obtenemos la jugada del ordenador
        jugada_ordenador = (rand()%5) + 1;

        if (jugada_usuario==6) return 0; //Salimos del programa

        switch (jugada_usuario) {
            case 1:
                printf("\n\tUsted ha elegido Piedra\n");
                break;
            case 2:
                printf("\n\tUsted ha elegido Papel\n");
                break;
            case 3:
                printf("\n\tUsted ha elegido Tijera\n");
                break;
            case 4:
                printf("\n\tUsted ha elegido Lagarto\n");
                break;
            case 5:
                printf("\n\tUsted ha elegido Spock\n");
                break;
        }
        switch (jugada_ordenador) {
            case 1:
                printf("\n\tEl ordenador ha elegido Piedra\n");
                break;
            case 2:
                printf("\n\tEl ordenador ha elegido Papel\n");
                break;
            case 3:
                printf("\n\tEl ordenador ha elegido Tijera\n");
                break;
            case 4:
                printf("\n\tEl ordenador ha elegido Lagarto\n");
                break;
            case 5:
                printf("\n\tEl ordenador ha elegido Spock\n");
                break;
        }

        //Obtenemos el ganador de la tabla de resultados posibles
        if (tablaResultados[jugada_usuario-1][jugada_ordenador-1] == 0)
            printf("\n\n\tHa ganado el usuario\n");
        if (tablaResultados[jugada_usuario-1][jugada_ordenador-1] == 1)
            printf("\n\n\tHa ganado el ordenador\n");
        if (tablaResultados[jugada_usuario-1][jugada_ordenador-1] == -1)
            printf("\n\n\tEMPATE\n");

        Sleep(3000);
        system("cls");
    }

    return 0;
}

No hay comentarios:

Publicar un comentario