Resultados 1 al 9 de 9

Tema: Juego de Ta-Te-Ti

  1. #1
    Registrado Avatar de Arielo
    Fecha de ingreso
    07 sep, 06
    Ubicación
    Abya Yala
    Mensajes
    8,152

    Predeterminado Juego de Ta-Te-Ti

    Bueno, mientras Mr. Macuy prepara su material, les subo algo que hice recién...

    Es un juego (muy básico) de Ta-Te-Ti, o Tic-Tac-Toe o Tres en Línea, como se lo conoce en otros lados...

    El código está en Visual Basic (no creo que haya problemas en cuanto a la versión que se use, es bastante genérico en ese sentido...)

    En un proyecto nuevo, agregar los siguientes controles al formulario:

    1 Label, al que llamaremos "lblTurno" -> Indicará a quién le toca jugar
    1 Label, al que llamaremos "lblGanados" -> Cuántos partidos ha ganado el jugador humano
    1 Label, al que llamaremos "lblEmpatados" -> Cuántos partidos se han empatado
    1 Label, al que llamaremos "lblPerdidos" -> Cuántos partidos ha ganado la PC
    9 Labels (que conformarán un Array). Como nombre, a estos Labels le pondremos "lblCasilla". Cada uno de éstos, conformará una casilla del tablero. Estos Labels, deberán estar ubicados en tres hileras de tres casillas cada uno, así forman un tablero de TaTeTi...

    ... No hacen falta más controles. Ahora viene el código...
    Rara paradoja de la vida: comúnmente, a militares genocidas se les premia dándoles su nombre a calles, mientras que a científicos que salvan vidas, dándoles su nombre a virus y bacterias ...
    ----------
    El 75% de las personas, deja sin terminar lo que estaba hac

  2. #2
    Registrado Avatar de Arielo
    Fecha de ingreso
    07 sep, 06
    Ubicación
    Abya Yala
    Mensajes
    8,152

    Predeterminado Re: Juego de Ta-Te-Ti

    El código del juego es el siguiente:

    Código:
    Private Sub Form_Load()
    '
    ' TA-TE-TI Simple
    ' por Arielo
    ' para Monografias.com
    '
    ' Código de libre distribución y/o modificación
    '
    
    '
    ' Esta subrutina, es lo primero que se ejecuta al empezar a jugar
    '
    Call JuegoNuevo
    End Sub
    
    Sub JuegoNuevo()
    '
    ' Esta subrutina se usa para inicializar el tablero.
    '
    Randomize Timer
    
    ' Inicializa el tablero
    For i = 0 To 8
    	lblCasilla(i).Tag = 0
    	lblCasilla(i).Caption = ""
    Next
    
    ' Indica Quién jugará primero: la pc o el jugador
    Tur = Rnd
    If Tur > 0.5 Then
    	lblTurno.Tag = 1
    	lblTurno.Caption = "O - P.C."
    	Call JuegaPC
    Else
    	lblTurno.Tag = 0
    	lblTurno.Caption = "X - JUGADOR"
    End If
    
    End Sub
    Private Sub lblCasilla_Click(Index As Integer)
    '
    ' Esta subrutina, corresponde a la jugada del jugador humano.
    ' Se activa cuando éste hace clic en una casilla del tablero.
    '
    
    ' Controla que sea realmente el turno del jugador
    If lblTurno.Tag = 1 Then
    	a = MsgBox("No es tu turno...", , "Error")
    	Exit Sub
    End If
    
    ' Controla que la casilla elegida, esté vacía
    If lblCasilla(Index).Tag <> 0 Then
    	a = MsgBox("La casilla ya está siendo usada", , "Error")
    	Exit Sub
    End If
    
    ' Si está todo bien, coloca una "X" roja en la casilla
    lblCasilla(Index).ForeColor = RGB(255, 60, 60)	' Indica que el color de las letras, es rojizo
    lblCasilla(Index).Caption = "X"				   ' Coloca la Equis en el tablero
    lblCasilla(Index).Tag = 10						' Indica que la casilla está ocupada por una ficha del jugador
    
    ' Controla si el jugador hizo tateti
    For i = 1 To 8
    	Call SumaLinea(i, ValorLinea, Cas1, Cas2, Cas3)
    	If ValorLinea = 30 Then
    	   ' Si el jugador hizo tateti, lo anuncia...
    	   a = MsgBox("Fin del juego... Ganaste!!!!", , "Final")
    	   ' ... suma 1 punto a los partidos ganados por el jugador...
    	   lblGanados = Val(lblGanados.Caption) + 1
    	   ' ... reinicia el tablero ...
    	   Call JuegoNuevo
    	   ' ... y sale, para comenzar con el nuevo juego...
    	   Exit Sub
    	End If
    Next
    
    ' Cambia el turno. Ahora le toca jugar a la PC
    lblTurno = "O - P.C."
    lblTurno.Tag = 1
    Call JuegaPC
    
    ' Controla si no se ha llegado a un empate
    Call ControlaEmpates
    
    End Sub
    
    Sub JuegaPC()
    '
    ' Esta subrutina, toma la decisión acerca de qué casilla jugará la PC en su turno.
    '
    
    ' Primero, se fija si puede hacer TaTeTi
    For i = 1 To 8
    	Call SumaLinea(i, ValorLinea, Cas1, Cas2, Cas3)
    	If ValorLinea = 200 Then  ' Indica que la PC puede hacer tateti, porque tiene dos fichas en línea
    	   ' Analiza cuál de las tres casillas de la línea, es la que está libre, y decide jugar esa.
    	   If lblCasilla(Cas1).Tag = 0 Then CasillaJugada = Cas1
    	   If lblCasilla(Cas2).Tag = 0 Then CasillaJugada = Cas2
    	   If lblCasilla(Cas3).Tag = 0 Then CasillaJugada = Cas3
    	End If
    Next
    
    If CasillaJugada > 0 Then
       GoTo UbicaFicha		  ' Ya decidió que jugará esta casilla, para ganar el partido
    End If
    
    ' Se fija si el jugador está a punto de hacer TaTeTi
    For i = 1 To 8
    	Call SumaLinea(i, ValorLinea, Cas1, Cas2, Cas3)
    	If ValorLinea = 20 Then			  ' Indica que el jugador está a punto de hacer tateti
    	   If lblCasilla(Cas1).Tag = 0 Then CasillaJugada = Cas1
    	   If lblCasilla(Cas2).Tag = 0 Then CasillaJugada = Cas2
    	   If lblCasilla(Cas3).Tag = 0 Then CasillaJugada = Cas3
    	End If
    Next
    
    If CasillaJugada > 0 Then
    	GoTo UbicaFicha
    Else
    	' Debido a que no puede hacer tateti, y no hay peligro de que el jugador lo haga, juega una casilla al azar
    	Do
    		CasillaJugada = Int(Rnd * 9)				   ' Elije una casilla al azar
    	Loop Until lblCasilla(CasillaJugada).Tag = 0	   ' Elegirá casillas al azar, hasta que encuentre una sin ocupar
    End If
    
    ' Acá, la PC coloca la ficha en la casilla que eligió...
    UbicaFicha:
    lblCasilla(CasillaJugada).ForeColor = RGB(60, 60, 255)	' Indica que el color de las letras, es azulado
    lblCasilla(CasillaJugada).Caption = "O"				   ' Coloca el círculo en el tablero
    lblCasilla(CasillaJugada).Tag = 100					   ' Indica que la casilla está ocupada por una ficha del PC
    
    ' Controla que con su jugada no se haya llegado a un empate...
    Call ControlaEmpates
    
    ' Controla si la computadora hizo tateti
    For i = 1 To 8
    	Call SumaLinea(i, ValorLinea, Cas1, Cas2, Cas3)
    	If ValorLinea = 300 Then
    	   ' Si la PC hizo tateti, muestra el cartel anunciándolo...
    	   a = MsgBox("Fin del juego... Perdiste!!!!", , "Final")
    	   '... suma 1 a los partidos perdidos por el jugador...
    	   lblPerdidos = Val(lblPerdidos.Caption) + 1
    	   '... reinicia el tablero...
    	   Call JuegoNuevo
    	   '... y sale, para comenzar el nuevo juego...
    	   Exit Sub
    	End If
    Next
    
    ' Le devuelve el turno al jugador, y sale de la subrutina
    lblTurno = "X - JUGADOR"
    lblTurno.Tag = 0
    
    End Sub
    
    Sub ControlaEmpates()
    '
    ' En esta subrutina, se controla si se colocaron todas las fichas posibles
    ' Si es así, ha habido un empate...
    '
    Empate = 1
    For i = 0 To 8
    	If lblCasilla(i).Tag = 0 Then Empate = 0
    Next
    If Empate = 1 Then
    	a = MsgBox("Fin del juego... Empate!!!", , "Final")
    	lblEmpates = Val(lblEmpates.Caption) + 1
    	Call JuegoNuevo
    	Exit Sub
    End If
    End Sub
    
    Sub SumaLinea(Numero, ValorLinea, Cas1, Cas2, Cas3)
    '
    '   En esta rutina, se controla qué hay ubicado en las casillas que conforman cada una de las líneas
    '   en las que es posible hacer TaTeTi
    '
    Select Case Numero
    	   Case Is = 1: Cas1 = 0: Cas2 = 1: Cas3 = 2  ' Primera línea horizontal
    	   Case Is = 2: Cas1 = 3: Cas2 = 4: Cas3 = 5  ' Segunda línea horizontal
    	   Case Is = 3: Cas1 = 6: Cas2 = 7: Cas3 = 8  ' Tercera línea horizontal
    	   Case Is = 4: Cas1 = 0: Cas2 = 3: Cas3 = 6  ' Primera columna vertical
    	   Case Is = 5: Cas1 = 1: Cas2 = 4: Cas3 = 7  ' Segunda columna vertical
    	   Case Is = 6: Cas1 = 2: Cas2 = 5: Cas3 = 8  ' Tercera columna vertical
    	   Case Is = 7: Cas1 = 0: Cas2 = 4: Cas3 = 8  ' Diagonal ARR_IZQ hasta ABA_DER
    	   Case Is = 8: Cas1 = 2: Cas2 = 4: Cas3 = 6  ' Diagonal ARR_DER hasta ABA_IZQ
    End Select
    
    ValorLinea = Val(lblCasilla(Cas1).Tag) + Val(lblCasilla(Cas2).Tag) + Val(lblCasilla(Cas3).Tag)
    
    End Sub

    ... cualquier cosilla, no duden en consultarme...
    Última edición por Arielo; 31/08/2007 a las 09:41 Razón: ...acabo de descubrir la etiqueta "Code", jejeje...
    Rara paradoja de la vida: comúnmente, a militares genocidas se les premia dándoles su nombre a calles, mientras que a científicos que salvan vidas, dándoles su nombre a virus y bacterias ...
    ----------
    El 75% de las personas, deja sin terminar lo que estaba hac

  3. #3
    Registrado Avatar de Arielo
    Fecha de ingreso
    07 sep, 06
    Ubicación
    Abya Yala
    Mensajes
    8,152

    Predeterminado Re: Juego de Ta-Te-Ti

    ... a ver si les sirve este zip. tiene el juego completo, con formulario incluido y todo...

    Acabo de incluir en el zip, el archivo ejecutable (tateti.exe).
    No creo que tengan problemas en ejecutarlo, ya que no hace uso de ninguna librería extraña...
    Archivos adjuntados Archivos adjuntados
    Última edición por Arielo; 31/08/2007 a las 11:22
    Rara paradoja de la vida: comúnmente, a militares genocidas se les premia dándoles su nombre a calles, mientras que a científicos que salvan vidas, dándoles su nombre a virus y bacterias ...
    ----------
    El 75% de las personas, deja sin terminar lo que estaba hac

  4. #4
    Forero inexperto
    Fecha de ingreso
    07 jul, 09
    Mensajes
    1

    Exclamation Respuesta: Re: Juego de Ta-Te-Ti

    Viejo necesito uno de estos programas en c++ para hoy urgente!!!!

    1.Generador de palabras de números telefónicos. Los marcadores telefónicos estándar contienen los dígitos 0 al 9. Los números 2 hasta el 9 cada uno de ellos tiene tres letras asociadas, tal como se indican en la tabla siguiente:

    Digito Letras
    1 ABC
    2 DEF
    3 GHI
    4 JKL
    5 MNÑ
    6 OPQ
    7 RST
    8 UVW
    9 XYZ


    Muchas personas encuentran difícil memorizar los números telefónicos, por lo que utilizan la correspondencia existente entre dígitos y letras para desarrollar palabras de siete (7) letras, que correspondan a sus números telefónicos. Por ejemplo, una persona cuyo número telefónico es 5816787 pudieran utilizar la correspondencia indicada en la tabla precedente, para desarrollar la palabra de siete letras MUCORUS.

    Los negocios frecuentemente intentan obtener números telefónicos que sean fáciles de recordar para sus clientes. Si un negocio puede anunciar una sola palabra para que le marquen sus clientes. Si un negocio puede anunciar una sola palabra para que le marquen sus clientes, entonces sin duda su negocio recibirá unas cuantas llamadas más.

    Cada palabra de siete letras corresponde a exactamente un número telefónico de siete digitas.

    Cada número telefónico de 7 dígitos corresponde a muchas palabras distintas de 7 letras, Desafortunadamente, la mayor parte de ellas representan combinaciones irreconocibles de letras.

    Escriba un programa en C++ que, dado un numero de 7 digitos escriba aun archivo todas las palabras posibles. Evite números telefónicos que contengan el numero 0.

    2.Escriba un programa en c++, un archivo estudiantes, que pida Nombre, Año de nacimiento, Carrera y Curso y donde pueda:
    a- Listar a los alumnos por carrera.
    b- Listar alumnos por año de nacimiento.
    c- Imprima cuantos alumnos hay en lista.

    Si me puedes ayudar con los 2 estaria demasiado agradecido, pero con uno me conformo.

    Gracias a todos y Dios te bendiga.

  5. #5
    Registrado Avatar de Arielo
    Fecha de ingreso
    07 sep, 06
    Ubicación
    Abya Yala
    Mensajes
    8,152

    Predeterminado Respuesta: Juego de Ta-Te-Ti

    Lamento no poder ayudarte, Juninho...
    De C++ no es mucho lo que conozco...


    .
    Rara paradoja de la vida: comúnmente, a militares genocidas se les premia dándoles su nombre a calles, mientras que a científicos que salvan vidas, dándoles su nombre a virus y bacterias ...
    ----------
    El 75% de las personas, deja sin terminar lo que estaba hac

  6. #6
    Registrado Avatar de Macuy
    Fecha de ingreso
    25 jun, 03
    Ubicación
    En el cyberespacio
    Mensajes
    2,191

    Predeterminado Respuesta: Juego de Ta-Te-Ti

    Por cuestion tiempo mas o menos quedaria asi... solo te queda arreglarlo para que te pida el resto de datos que necesitas dentro de la estructura alumno.... igual como el tamano del arreglo, titulos, etc, etc...

    Xaludos




    Código:
    #include <iostream.h>
    #include <conio.h>
    #include <ctype.h>
    #define MAX    100
    
    void menu();    
    
    struct alumno
        {
               char carrera;
        float otro_dato;
        }alumno[MAX];
    
    void main(void)
        {
        int i,num;
        float hombres_aprobados,hombres_reprobados,mujeres_aprobadas,mujeres_reprobadas;
        float suma=0,suma2=0,suma3=0,suma4=0,suma_hombres,suma_mujeres,media_hombres,media_mujeres,media_global;
        char ele;
            comienzo:
        menu();
        cout<<"Escribe el numero de alumnos(maximo "<<MAX<<"): ";
        cin>>num;
            inicio:
            for(i=0;i<num;i++)
            {
            menu();
            cout<<"ALUMNO No. "<<i+1<<"\n\n";
            cout<<"carrera del alumno: ";
                  cin>>alumno[i].carrera;
               //    ele=toupper(getch());
            if(alumno[i].carrera=='X' || alumno[i].carrera=='Y' || alumno[i].carrera=='x' || alumno[i].carrera=='y')
                {
                            inicio2:  
                menu();
                cout<<"ALUMNO No. "<<i+1<<"\n\n";
                     }
                  else
                {
                            goto inicio;
                }   
                        cout<<"otro_datoicacion del alumno: ";
                cin>>alumno[i].otro_dato;
                      if(alumno[i].otro_dato>=0 && alumno[i].otro_dato<=10)
                    {
                    menu();
                    }
                else
                    {
                                    goto inicio2;
                    }
            }
                    cout<<"\n\n";
            cout<<"\t\tPresione una tecla para mostrar las estadisticas\n\n";
            getch();
            hombres_aprobados=0;
            hombres_reprobados=0;
            mujeres_aprobadas=0;
            mujeres_reprobadas=0;
        for (i=0;i<num;i++)
            {
            if(alumno[i].carrera=='X' || alumno[i].carrera=='x' && alumno[i].otro_dato>=6   )
                {
                hombres_aprobados++;
                            suma+=alumno[i].otro_dato;
                }
            else
                {
                if(alumno[i].carrera=='X' || alumno[i].carrera=='x' && alumno[i].otro_dato<=5)
                                {
                    hombres_reprobados++;
                                    suma2+=alumno[i].otro_dato;
                    }
                else
                    {
                    if(alumno[i].carrera=='Y' || alumno[i].carrera=='y' && alumno[i].otro_dato>=6)
                        {
                        mujeres_aprobadas++;
                        suma3+=alumno[i].otro_dato;
                        }
                    else
                        {
                        mujeres_reprobadas++;
                        suma4+=alumno[i].otro_dato;
                        }
                    }
                }
            
            suma_hombres=(suma+suma2);
                    suma_mujeres=(suma3+suma4);
            }
            int total_hombres=hombres_aprobados+hombres_reprobados;
            int total_mujeres=mujeres_aprobadas+mujeres_reprobadas;
            if(total_hombres==0)
                {
                media_hombres=0;
                }
            else
                        {
                media_hombres=suma_hombres/(total_hombres);
                            }
            cout<<"\tHombres aprobados: "<<hombres_aprobados<<"\n\n";
            cout<<"\tHombres reprobados: "<<hombres_reprobados<<"\n\n";
            cout<<"\tMedia de hombres: "<<media_hombres<<"\n\n";
            if(total_mujeres==0)
                {
                media_mujeres=0;
                }
            else
                {
                media_mujeres=suma_mujeres/(total_mujeres);
                }
                   media_global=(media_hombres+media_mujeres)/2;
            cout<<"\tMujeres aprobadas: "<<mujeres_aprobadas<<"\n\n";
            cout<<"\tMujeres reprobadas: "<<mujeres_reprobadas<<"\n\n";
            cout<<"\tMedia de Mujeres : "<<media_mujeres<<"\n\n";
            cout<<"\tLa media global es: "<<media_global<<"\n\n\n\n";
            cout<<"\t\t\tPRESINA CUALQUIER TECLA PARA CONTINUAR...";
            getch();
                    inicio4:
            clrscr();
            menu();
            cout<<"Deceas:\n";
            cout<<"   [i] Ingresar nuevos datos.\n";
            cout<<"   [S] Salir de programa.\n";
            cout<<"   Elige: ";
            do
                {
                ele=toupper(getch());
                }
            while(!isalpha(ele));
            switch(ele)
                {
                case 'I':
                    goto comienzo;
                case 'S':
                    goto fin;
                default:
                                goto inicio4;
                }
            fin:
                    clrscr();
                    gotoxy(30,10);
            cout<<"GRACIAS POR USAR EL PROGRAMA";
                    gotoxy(35,12);
                    cout<<"ñ_ñ";
    
            }
    
    void menu()
        {
        clrscr();
        cout<<"\t\t\t[:::CONTROL DE ESTUDIATES:::]\n";
        cout<<"\t\t\t-----------------------------\n\n";
            }
    El éxito es lo que nos da confianza para poner en práctica lo que el fracaso nos ha enseñado.
    [email="macuying@gmail.com"]macuying@gmail.com[/email]

  7. #7
    Registrado Avatar de Macuy
    Fecha de ingreso
    25 jun, 03
    Ubicación
    En el cyberespacio
    Mensajes
    2,191

    Predeterminado Respuesta: Juego de Ta-Te-Ti

    Cita Iniciado por Arielo Ver mensaje
    Bueno, mientras Mr. Macuy prepara su material, les subo algo que hice recién...

    Es un juego (muy básico) de Ta-Te-Ti, o Tic-Tac-Toe o Tres en Línea, como se lo conoce en otros lados...

    El código está en Visual Basic (no creo que haya problemas en cuanto a la versión que se use, es bastante genérico en ese sentido...)
    Bonito el jueguito... jejeje... creo que tendras que esperar un par de dias mas... que descanse, hasta ayer termine examenes de la U y me han pegado una sacudida, que aun estoy mareado... jajaja a eso sumale el trabajo, novia, familia, etc, etc.... a por cierto, me volvieron a operar... jajaja he estado algo ocupado... jajaja

    Xaludos Bro... y estamos en contacto... por el momento deje un poco de lado Ruby on Rails por cuestion de tiempo y estoy retomando a full PHP... que ahora que lo veo... tiene muy bonitas mejoras... jajajaja
    El éxito es lo que nos da confianza para poner en práctica lo que el fracaso nos ha enseñado.
    [email="macuying@gmail.com"]macuying@gmail.com[/email]

  8. #8
    Registrado Avatar de Arielo
    Fecha de ingreso
    07 sep, 06
    Ubicación
    Abya Yala
    Mensajes
    8,152

    Predeterminado Respuesta: Juego de Ta-Te-Ti

    Cita Iniciado por Macuy Ver mensaje
    Bonito el jueguito... jejeje... creo que tendras que esperar un par de dias mas... que descanse, hasta ayer termine examenes de la U y me han pegado una sacudida, que aun estoy mareado... jajaja a eso sumale el trabajo, novia, familia, etc, etc.... a por cierto, me volvieron a operar... jajaja he estado algo ocupado... jajaja

    Xaludos Bro... y estamos en contacto... por el momento deje un poco de lado Ruby on Rails por cuestion de tiempo y estoy retomando a full PHP... que ahora que lo veo... tiene muy bonitas mejoras... jajajaja
    Uuuhhhhh, pero este tema es viejito ya... Tiene un par de años encima, debe ser de los inicios del foro de programación ...

    ¿Otra vez operado? Con razón te habías perdido. Espero que haya salido todo bien...

    Te entiendo con lo del RoR... yo no he podido empezar, jaja...

    Saludos, Jorge!!!!
    Rara paradoja de la vida: comúnmente, a militares genocidas se les premia dándoles su nombre a calles, mientras que a científicos que salvan vidas, dándoles su nombre a virus y bacterias ...
    ----------
    El 75% de las personas, deja sin terminar lo que estaba hac

  9. #9
    Registrado Avatar de Macuy
    Fecha de ingreso
    25 jun, 03
    Ubicación
    En el cyberespacio
    Mensajes
    2,191

    Predeterminado Respuesta: Juego de Ta-Te-Ti

    Cita Iniciado por Arielo Ver mensaje
    Uuuhhhhh, pero este tema es viejito ya... Tiene un par de años encima, debe ser de los inicios del foro de programación ...

    ¿Otra vez operado? Con razón te habías perdido. Espero que haya salido todo bien...

    Te entiendo con lo del RoR... yo no he podido empezar, jaja...

    Saludos, Jorge!!!!
    Si, lo se... pero igual, sigo sin tener mucho material, y el que tengo, aun tiene sus bugs, pues son algo grandecitos... jajaja

    Si, ya todo salio bien... Gracias...

    Aun tengo esperanza de poder iniciar formalmente con RoR

    Xaludos
    El éxito es lo que nos da confianza para poner en práctica lo que el fracaso nos ha enseñado.
    [email="macuying@gmail.com"]macuying@gmail.com[/email]

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •