sábado, 11 de junio de 2011

Proyecto Toque Fama

UNIVERSIDAD CATOLICA BOLIVIANA

Introducción a la Programación
Presentación de Blogs

Fecha
11/06/2011

Artículos - Materia
Mi “Toque Fama”

1


2


Artículos –Investigación
Titulo

1


Integrantes
Nombre
Nota
1
Canchari Vasquez Cristhian

2
Toro Salas Xavier


TOQUE FAMA
DEFINICIÒN DEL JUEGO
El juego consiste en adivinar una secuencia de 4 números entre 1 y 9, usando razonamiento lógico, declarado por el programa aleatoriamente.
Si aciertas un número y su correcta posición tendrás una Fama, si logras encontrar  un número pero no en su correcta posición tendrás un Toque.
REGLAS DEL JUEGO
1.       Debes colocar las vidas que deseas tener en el juego.
2.       Ingresar por teclado  4 números aleatorios diferentes entre si en el rango 1-9.
3.       Si el numero ingresado es menor a uno y mayor a 9, aparecerá en pantalla que debes reintentar el procedimiento de manera adecuada. Si esta acción se repite  tres veces aparecerá que  no podrás jugar por no entender .


el stdio es para el lenguaje cel te time y stdlibson para las funcion del randomal generar numeros al azar.el stdio es para el lenguaje cel te time y stdlibson para las funcion del randomal generar numeros al azar.el stdio es para el lenguaje cel te time y stdlibson para las funcion del randomal generar numeros al azar.
time.h
Para tratamiento y conversión entre formatos de fecha y hora.
sirve para q puedas medir los tiempos
ademas controlar el timpo q dura un proceso mas bien dicho para q no exceda cierto tiempo
Srand
Establece la semilla para el generador de números pseudo-aleatorios.

 PROCEDIMIENTO

Primeramente establecemos una variable vidas la cual sera leído por teclado, luego ingresamos las variables  (a,b,c,d) por las cuales nos permitan ingresar por teclado los números que buscamos mientras que (w,x,y,z) son los números que deben ser diferentes establecidos por el ordenador, colocamos también un toque que empieze en cero, una fama de igual forma inicie en cero y un yapo igual a cero.
Utilizamos /n para poder bajar la línea y que tenga una mejor prentación el proyecto, lo realizamos en c pero también es ejecutable en c++ debido que acepta dichas librerías, utilizamos el do while para poder hacer que los números del random no  se repitan ya que las cantidades de veces que pase por dicho ciclo y prosiga con la secuencia es mientras los números sean diferentes en el rango del 1 al 9.
Luego una ves ya definidos los números w,x,y,z  debemos hacer un mientras para establecer que las vidas que colocamos anterior mente nos sirvan en el ciclo para ejecutar el juego, seguidamente utilizamos el do while  haciendo que (a>9 || b>9 || c>9 || d>9 || a<1 || b<1 || c<1 || d<1) que no prosiga el proceso hasta que los números que se ingresaran por teclado tengan el rango de 1 y 9 para poder realizar el procedimiento en el cual con un if hacemos una de las reglas en la cual establecemos que si el numero no cumple el rango establecido y la secuencia de ingresar los cuatro numero se lo repite por tres veces de manera incorrecta aparecerá en pantalla "Listo, no podras jugar por no entender... ; si hace por una vez o dos veces aparecerá  ‘’Solo numeros entre 1 y 9!!’’, siguiendo el proceso debemos ingresar los cuatro números .  Continuando con el procedimiento es momento de realizar los toques y las famas mediante ifs donde comparamos si las variables ingresadas por teclado son las mismas que las que escogió el ordenador con la función random  seguidamente colocamos otro if para ya también comparar en caso de que no sea afirmativo el primer if si se encuentra en otra de las demás posiciones lo denominaremos como toque, si comprueba que se llego a las cuatro famas ganaste el juego y te dira en cuantos intentos lo hiciste, luego se reinicia las variables yapo, fama, toque todas a cero para volver a comenzar el proceso, también se establece los intentos como intentos++ y las vidas como vidas--. En caso de que las vidas se acaben y no se logre los cuatro famas aparecerá que perdiste y la secuencia en el orden que se encontraba.



MI TOQUE FAMA-CODE BLOCKS



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

int main(void){
    /* Iniciar la funcion Random */
    srand ( time(NULL));

    int a,b,c,d,w,x,y,z,vidas,toque=0,fama=0,intentos=0,yapo=0;

    /* Introduccion */
    printf("Bienvenido a Toque y Fama!\n\n");
    printf("El juego consiste en adivinar una\nsecuencia de 4 numeros entre 1 y 9\n");
    printf("si adivinas un numero y su correcta posicion tendras una Fama\n");
    printf("si adivinas un numero pero no en su correcta posicion tendras un Toque\n\n");
    printf("Cuantas vidas quieres tener?: ");
    scanf("%d", &vidas);
    printf("Que comienze el juego!\n\n");
    /* Fin introduccion*/


    /* Generar 4 numeros aleatoreos diferentes entre si en el rango 1-9 */
    do{
        w=(rand()%9)+1;
        x=(rand()%9)+1;
        y=(rand()%9)+1;
        z=(rand()%9)+1;
    }while((w==x) || (w==y) || (w==z) || (x==y) || (x==z) || (y==z));


    while (vidas>0){
        /* Pedir los numeros entre 1 y 9 con 3 oportunidades de equivocarse */
        do{
            if(yapo==3){
                printf("Listo, no podras jugar por no entender...\n");
                system("Pause");
                return 0;
            }
            yapo++;
            if(yapo>1){
                printf("\nSolo numeros entre 1 y 9!!\n\n");
            }
            printf("Numero 1: ");
            scanf("%d", &a);
            printf("Numero 2: ");
            scanf("%d", &b);
            printf("Numero 3: ");
            scanf("%d", &c);
            printf("Numero 4: ");
            scanf("%d", &d);
        }while (a>9 || b>9 || c>9 || d>9 || a<1 || b<1 || c<1 || d<1);
        /* Fin pedir numeros */

        /* Asignacion de toques y famas */
        if (a==w){
            fama++;
        }
        if((a==x) || (a==y) || (a==z)){
            toque++;
        }
        if (b==x){
            fama++;
        }
        if((b==w) || (b==y) || (b==z)){
            toque++;
        }
        if (c==y){
            fama++;
        }
        if((c==x) || (c==w) || (c==z)){
            toque++;
        }
        if (d==z){
            fama++;
        }
        if((d==x) || (d==y) || (d==w)){
            toque++;
        }
        /* Fin asignacion */

        /* Comprobar si ganaste */
        if (fama==4){
            printf("Ganaste en %d intentos!!\n", intentos);
            system("Pause");
            return 0;
        }
        /* Fin comprobacion */

        printf("Toques: %d   Famas: %d\n\n", toque,fama);  //Mostrar toques y famas

        /* Reestablecer variables*/
        yapo=0;
        fama=0;
        toque=0;
        intentos++;
        vidas--;
        /* Fin reestablecimiento */
    }
    printf("Perdiste =(\nLa secuencia era: %d %d %d %d\n", w,x,y,z); //Mostrar perdiste
    system("Pause");
    return 0;
}

lunes, 4 de abril de 2011

Diagramas de Flujo
Los diagramas de flujo son la representación grafica de un algoritmo,en la que se ve de forma detallada los pasos que se siguieron para dar solución al problema.Para hacer un diagrama de flujo  usamos simbolos que tienen relación entre si e idican el orden de los pasos que se deben seguir,estos son:
Símbolo
Descripción


Inicio y fin del diagrama de flujo.

                   
Entrada de datos

Proceso de datos
Ademas indica la asignación de un valor en la memoria y/o la ejecución de una operación aritmética.
Salida de información por impresora.
Conector dentro de página. Representa la continuidad del diagrama dentro de la misma página.
Conector fuera de pagina. Representa la continuidad del diagrama en otra pagina.
Salida de información en la pantalla o monitor.
Símbolo de decisión.
Indica que se realiza una comparación de valores.


Estructuras Algoritmicas
Las estructuras algorítmicas nos permiten realizar los procesos que se indican en los pasos para resolver el algoritmo usando las variables. Las estructuras algorítmicas pueden ser:
a)Estructuras secuenciales
Estas estructuras siguen los pasos indicados uno tras otro,en forma ordenada,y de esta manera cuando una instrucción o tarea termina ,comienza inmediatamente la siguiente instrucción, esto continua hasta terminar el proceso.
·         Asignación :La asignación de datos se la da a una variable que contiene el valor, asi la asignación puede ser simple, acumuladora, o de trabajo.
·         Entrada de datos:La entrada o lectura de datos ingresada por el usuario se la hace a travez del ingreso de datos por el teclado, este dato o valor es almacenado por una variable
·         Salida de datos: En la salida de datos se muestra mediante la pantalla o monitor. el resultado de todo el proceso que se siguió
b)Estructuras condicionales
Estas estructuras comparan las variables con otro valor para que con ese resultado se pueda seguir una dirección en una tarea dentro del programa.Estas estructuras pueden ser simples,dobles y multiples
·         Simples: Estas estructuras son conocidas también como “Tomas de decisión”.
·         Dobles: Estas estructuras nos permiten mediante una condición seguir una de los dos caminos que tiene pues en caso de que se cumpla la condición (SI) se sigue otro paso y en caso de que no se cumpla (NO) se sigue también otra tarea.
·         Múltiples: En estas estructuras podemos comparar una variable con otros distintos y posibles resultados.


c)Estructuras cíclicas
Estas estructuras nos permiten usar distintos procesos dentro de un ciclo, es decir que estas tareas se iran repitiendo hasta que el ciclo se cumpla y termine cuando llegue a un numero de veces, este numero de veces lo decide el usuario.
·           Ciclos con un Numero Determinado de Iteraciones
Hacerlo por:En este ciclo sabemos el numero de veces que el ciclo se repetirá hasta que se termine, nosotros conocemos dicho numero antes de que el ciclo se ejecute. Este ciclo tiene las siguientes partes:
Ø   Variable de control.-Esta variable guardara el resultado del  proceso que   se quiera seguir en el ciclo generalmente es la letra i, pero puede ser también cualquier otro nombre que el usuario le quiera poner

Ø   Inicialización de la variable de control:Es el valor con que se iniciara el ciclo 

Ø   Condición de control: Es el valor final, es decir hasta donde se quiere terminar el ciclo.

Ø   Incremento: es el valor que indica de cuanto en cuanto  saltara dicha secuencia

Por ejemplo: en el siguiente grafico <variable> es el nombre de la variable o la variable de control, <exp1> es la inicialización de la variable de control,<exp2> es la condición de control, y <exp3> es el incremento.
·         Ciclos con un Número Indeterminado de Iteraciones
Hacer mientras: Este ciclo repite un proceso durante “n” veces .Un diagrama de flujo que tenga el ciclo hacer mientras, cumplirá una condición y mientras se cumpla la condición se podrán seguir con las otras tareas , una vez que la condición no se cumpla el ciclo terminara.Este ciclo siempre va al inicio del algoritmo.


Hacer hasta: Este ciclo a diferencia del hacer mientras hace una serie de tareas cuyo resultado al final es evaluado y se va repitiendo el ciclo hasta que se cumpla la condición.es decir que si la condición no se cumple se ira repitiendo el ciclo hasta que se cumpla y si la condición se cumple el ciclo terminara.

Bibliografia:
                                                                                                                                                        L.F.B.R.