elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Simulador de "La tortuga y la Liebre" :)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Simulador de "La tortuga y la Liebre" :)  (Leído 6,084 veces)
reethok

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Simulador de "La tortuga y la Liebre" :)
« en: 23 Diciembre 2011, 12:39 pm »

Qué opinan? Creo que es el programa más complejo que he escrito en C. Qué me recomiendan para seguir aprendiendo? Algo para mejorar?

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void carrera(int recorrido[]);
void movimiento(int recorrido[]);

int main()
{
    int recorrido[71] = {0};
    int tortuga = 1;
    int liebre = 2;
    int i;
    int x;

    srand(time(NULL));

    recorrido[1] = 4;
    carrera(recorrido);

    while(recorrido[70] == 0){
        system("cls");
        movimiento(recorrido);
        carrera(recorrido);
        }
    if(recorrido[70] == 1){
        printf("\n\nGANO LA TORTUGA!!! VIVA!!!");
        }
    if(recorrido[70] == 2){
        printf("\n\nGano La Liebre. Yupi!");
        }
    if(recorrido[70] == 3){
        printf("\n\nEsto es un empate! (Aunque la Tortuga mordio a la Liebre xD)");
        }
    getchar();
    return 0;
}

void carrera(int recorrido[])
{
    int i;
    for(i = 1; i <= 70; i++){
        if(recorrido[i] == 0)
            printf(" ");
        if(recorrido[i] == 1)
            printf("T");
        if(recorrido[i] == 2)
            printf("L");
        if(recorrido[i] == 3 && i != 1)
            printf("OUCH!!!");
        if(recorrido[i] == 4)
            printf("START");
        }
    printf("\n\n");
}

void movimiento(int recorrido[])
{
    int i;
    int azar;
    int temporal;
    int switch1 = 0;
    int switch2 = 0;

    if(recorrido[1] == 4){
        if(switch1 == 0){

            recorrido[1] = 0;
            azar = (rand() % 10) + 1;
            switch(azar){
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    recorrido[4] += 1;
                    switch1 = 1;
                    break;
                case 6:
                case 7:
                    recorrido[1] += 1;
                    switch1 = 1;
                    break;
                case 8:
                case 9:
                case 10:
                    recorrido[2] += 1;
                    switch1 = 1;
                    break;
                }
        }
        if(switch2 == 0){

            azar = (rand() % 10) + 1;
            switch(azar){
                case 1:
                case 2:
                    recorrido[1] += 2;
                    break;
                case 3:
                case 4:
                    recorrido[10] += 2;
                    break;
                case 5:
                    recorrido[1] += 2;
                    break;
                case 6:
                case 7:
                case 8:
                    recorrido[2] += 2;
                    break;
                case 9:
                case 10:
                    recorrido[1] += 2;
                    break;
                }
        }
        }
    else{
        for(i = 1; i <= 70; i++){
            if(recorrido[i] == 1){
                if(switch1 == 0){

                    azar = (rand() % 10) + 1;
                    switch(azar){
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                        if(i+3 > 70){
                            recorrido[70] += 1;
                            recorrido[i] -= 1;
                            switch1 = 1;
                            }
                        else{
                            recorrido[i+3] += 1;
                            recorrido[i] -= 1;
                            switch1 = 1;
                            }
                        break;
                    case 6:
                    case 7:
                        if(i-6 < 1){
                            recorrido[1] += 1;
                            recorrido[i] -= 1;
                            switch1 = 1;
                            }
                        else{
                            recorrido[i-6] += 1;
                            recorrido[i] -= 1;
                            switch1 = 1;
                            }
                        break;
                    case 8:
                    case 9:
                    case 10:
                        recorrido[i+1] += 1;
                        recorrido[i] -= 1;
                        switch1 = 1;
                        break;
                        }
                    }
                }
                if(recorrido[i] == 2){
                    if(switch2 == 0){
                        azar = (rand() % 10) + 1;
                        switch(azar){
                            case 1:
                            case 2:
                                switch2 = 1;
                                break;
                            case 3:
                            case 4:
                                if(i+9 > 70){
                                    recorrido[70] += 2;
                                    recorrido[i] -= 2;
                                    }
                                else{
                                    recorrido[i+9] += 2;
                                    recorrido[i] -= 2;
                                    }
                                switch2 = 1;
                                break;
                            case 5:
                                if(i-12 < 1){
                                    recorrido[1] += 2;
                                    recorrido[i] -= 2;
                                    }
                                else{
                                    recorrido[i-12] += 2;
                                    recorrido[i] -= 2;
                                    }
                                switch2 = 1;
                                break;
                            case 6:
                            case 7:
                            case 8:
                                recorrido[i+1] += 2; // Talvez en esta parte haga falta una condición de switch2
                                recorrido[i] -= 2;
                                switch2 = 1;
                                break;
                            case 9:
                            case 10:
                                if(i-2 < 1){
                                    recorrido[1] += 2;
                                    recorrido[i] -= 2;
                                    }
                                else{
                                    recorrido[i-2] += 2;
                                    recorrido[i] -= 2;
                                    }
                                switch2 = 1;
                                break;
                            }
                        }
                    }
                if(recorrido[i] == 3){
                    if(switch1 == 0){
                        azar = (rand() % 10) + 1;
                        switch(azar){
                            case 1:
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                                if(i+3 > 70){
                                    recorrido[70] += 1;
                                    recorrido[i] -= 1;
                                    }
                                else{
                                    recorrido[i+3] += 1;
                                    recorrido[i] -= 1;
                                    }
                                switch1 = 1;
                                break;
                            case 6:
                            case 7:
                                if(i - 6 < 1){
                                    recorrido[1] += 1;
                                    recorrido[i] -= 1;
                                    }
                                else{
                                    recorrido[i-6] += 1;
                                    recorrido[i] -= 1;
                                    }
                                switch1 = 1;
                                break;
                            case 8:
                            case 9:
                            case 10:
                                recorrido[i+1] += 1; //Talvez necesite condicion de switch1
                                recorrido[i] -= 1;
                                switch1 = 1;
                                break;
                            }
                        }
                    if(switch2 == 0){
                        azar = (rand() % 10) + 1;
                        switch(azar){
                            case 1:
                            case 2:
                                switch2 = 1;
                                break;
                            case 3:
                            case 4:
                                if(i+9 > 70){
                                    recorrido[70] += 2;
                                    recorrido[i] -= 2;
                                    }
                                else{
                                    recorrido[i+9] += 2;
                                    recorrido[i] -= 2;
                                    }
                                switch2 = 1;
                                break;
                            case 5:
                                if(i - 12 < 1){
                                    recorrido[1] += 2;
                                    recorrido[i] -= 2;
                                    }
                                else{
                                    recorrido[i-12] += 2;
                                    recorrido[i] -= 2;
                                    }
                                switch2 = 1;
                                break;
                            case 6:
                            case 7:
                            case 8:
                                recorrido[i+1] += 2;
                                recorrido[i] -= 2;
                                switch2 = 1;
                                break;
                            case 9:
                            case 10:
                                if(i-2 < 1){
                                    recorrido[1] += 2;
                                    recorrido[i] -= 2;
                                    }
                                else{
                                    recorrido[i-2] += 2;
                                    recorrido[i] -= 2;
                                    }
                                switch2 = 1;
                                break;
                            }
                        }
                    }
                }
            }
        }


Saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 16,600 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
Simulacion la tortuga y la liebre[C]
Programación C/C++
HRSLASH 1 8,069 Último mensaje 23 Marzo 2011, 00:48 am
por <<<-Basura->>>
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
Dark4ngel 7 13,312 Último mensaje 3 Noviembre 2011, 10:42 am
por Dark4ngel
Ayuda para crear una aplicacion "grafico de tortuga"
Java
Kenkox 1 5,138 Último mensaje 17 Marzo 2012, 07:22 am
por visualfree
¿ Es nuestro universo un simulador generado por un "Supercomputador" ?
Foro Libre
erest0r 1 1,881 Último mensaje 15 Febrero 2014, 05:33 am
por erest0r
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines