Juego conecta 4


  • 0

    Buenas a todos, mon han mandado a un compi y a mi hacer el conecta 4 en pascal, y mientras el esta en su pueblo yo estoy pensando en como hacerlo. De momento se me ha ocurrido que cada vez que eches una ficha vaya comprobando si a su lado hay una ficha del mismo tipo, si la hay sigue comprobando y si no la hay empieza a comprobar a otro lado. Es decir, simepre que echas una ficha se comprueban los 8 huecos que hay alrededor de la ficha. El problema me surge cuando echas una ficha y hay una ficha del mismo tipo a la izquierda y otra a la derecha… nu se si me explico

    Bueno, todo esto se haria en una matriz usando precedimientos, funciones...

    jOki wrote



  • 1

    Pues a mi me parece bastante sencillito.

    Te creas una tabla de dos dimensiones con tantas filas y columnas como tenga el juego, que no me acuerdo. Cada celda puede ser del tipo entero por ejemplo, no pongas booleano porque se nececesitan 3 estados, blancas, negras y vacio. Puedes poner las blancas con valor 1 y las negras con valor 2. Para saber si has completado una linea lo unico que tienes que hacer es verificar cada vez que se ha metido una ficha y haya mas de 6, que, segun el turno, las diagonales, filas o columnas suman 4 u 8 respectivamente.

    Lo unico que tienes que hacer es una ovaria funciones que sumen. Podrias hacer una que lo mire todo, horizontal, vertical y diagonal, o individuales. Si las haces individuales tendras la ventaja de que si encuantra una horizontal no vas a tener que buscar verticales ni diagonales.

    Lo de + de 6 fichas es porque se necesitan como minimo 7 para poder hacer una de 4.

    ¿Me dejo algo?.



  • 2

    weno gracias por contesra y perona por tardar. Tu idea me parece muy buena y seguramente es que la que lleve a la práctica. Ahora solo falta saber como vamos a hacer el modo grafico en pascal y como introducir las fichas, ya que las fichas unicamente s epueden colocar en los huecos de mas abajo del tablero :).

    Gracias pakohuelva

    jOki wrote



  • 3

    Sobre el modo grafico en la rama de C colgue un archivo con un pequeño ejemplo uqe hice en modo grafico, los tengo mejores, con uso de raton y todo, pero no los encuentro, de todas formas sitienes alguna duda pregunta.

    Tienes que hacer una o varias funciones que te determien la posicion de las otras fichas. Me expllico:

    Tienes que hacer una funcion que determine la posicion en la que debe caer la ficha, esto es facil, solo tienes que buscar en la columna en la que entra si hay fichas debajo, es decir si son todo ceros. Ya sabes, si tabla[i,j]=0 entonces j:=j+1, donde j es la altura, esto dentro de un while y mientras j sea menor o igual a la altura total.

    Despues tienes que hacer una que te calcule la primera ficha de la serie, esto es, si colocas una ficha que hace las 4 en linea en medio de otras 3, tienes que saber por donde empezar a contar. Esto podrias hacerlo con una funcion que te devolviera dos numeros o directamente si has hecho las 4 en linea.

    Una vez que colocas una ficha compruebas con un if si la de la izquierda y derecha son del mismo color, si es asi sumas y te mueves a la izda/derecha y vuelves a repetir, asi hasta que lo hayas hecho 4 veces o no se pueda hacer la linea. Pdorias hacerlo recursivo.



  • 4

    Bueno, mi compi y yo ya nos hemos puesto manos a la obra peor nos estan surgiendo muchas dudas. El metodo que se va a utilizar va a ser con 1´s y 2´s. entonces weno despues de hacer toda la presentacion, bla bla bla inicializamos la matriz (que es de 6 filas por 7 columnas) a 0. Luego la representamos ( es decir, como si fuera el tablero) pero no nos sale. Ya estamos desesperados, llevo desde las 5 de la tarde y nada, se me pira ya hasta la olla. Bueno, eso es todo, gracias

    jOki wrote



  • 5

    Otra cosa, en pascal desde un procedimiento s epuede llamar a otro??? ¿ y se puede cancelar la ejecucion de un programa desde un procedimiento? grcias

    joki wrote



  • 6

    No se cual es el problema de representacion que me comentas, no se si es dibujarlo en la pantalla o te refieres a otra cosa.

    Sobre lo de pascal, decirte que es pascal se puede hacer todo lo que se puede hacer en C es igual de potente. La parada de una ejecucion se puede hacer con break, creo recordar, pero no te recomiendo que interrumpas la ejecucion de un programa, no es "limpio".



  • 7

    Bueno representar la matriz ya lo he resuelto, ahora solo me falta saber como hacer que un procedimiento haga que se termine de ejecutar el programa. Grcias pakohuelva :P

    PD: pq break no es limpio??

    jOki wrote



  • 8

    ¿Que lenguajes has usado antes?. Supongo que sabras prrgramcion estructurada, ¿no?.

    Para terminar el programa solo tienes que finalizarlo, vaya tonteria, quiero decir que si el programa sigue una secuencia lineal por el codigo cuando llegue a end. terminara y te devolvera al sitio desde donde lo hayas llamado. Si usas un bucle para proporcionar un menu como parece lo mas logico, igual, cuando termine el procedimiento (o directamente en el programa principal) seguira su ejecucion hasta que encuentre un end. y salga.

    Lo del break no es un buen modo de programar y si en mi facultad lo encuentran en una practica en Pascal me suspenden directametne. Se supone que el uso del break no es una manera "elegante" de programar, el programa deber de comenzar, termianr y seguir un desarrollo eficiente sin saltos "no programados".

    De todas formas el break de pascal no es exactamente igual que el de C y no se como funciona, no se si termina el programa, el procedimiento o el bucle en el que se llame.

    No se si te habras bajado el archivo que te dije, en el se ve el modo grafico para pascal con el que puedes dibujar un tablero "mu chulo".

    P.D.: Yo tengo que entregar una en Pascal para la semana que viene, si queires te paso una copia para que la mires aunque seguramente no te sirva de mucho porque es de arboles.



  • 9

    Claro que se lo que es programacion estructurada :P. En todo momento solo he usado pascal. Se supone que en cualquier momento del juego, cuando pulses una tecla se quita el programa. Yo habia pensado llamar a un procedimiento que tuviera un orden de "cerrar" o algo asi para finalizar el programa. Pero al final lo que hare es llamar a un procedimiento que contiene la orden exit, cre finaliza el procedimiento (es un procedimiento que se llama desde otro) y asi sigue la linea normal del programa como dices tu hasta que llegue al END. El fichero que dices no me lo he bajado, pero ahora mismo los busco, ya que una de las cosas que tenemos que mejorar es el tablero, ya que como no hemos dado graficos en pascla lo sabemos hacer, pero cutremente… bueno tio, muchas gracias de nuevo, al final te tendre que poner en creditos jejeejje

    jOki wrote



  • 10

    Por cierto, me he bajado dos ficheros. No se si te referias a alguno de esos. uno que sale un menu a la izquierda (supongo que te referirias a ese) y otro de la web de nacho cabanes que es como una enciclopedia de juegos en pascal o algo asi. saludos

    jOki wrote



  • 11

    Sobre los ficheros, el del menu es el mio y te puedes hacer una idea de los graficos en pascal, ya te digo que los tengo mejores pero no los encuentro. Sobre el otro es el mejor manual/tutorial de pascal que te puedes encontrar, tambien trata el tema de los graficos.

    Para lo que tu quieres hacer se me ocurre que todo el progrma este dentro de un while, las llamadas a los procedimientos dentro del bucle quiero decir. Dentro del bucle tienes varias opciones, una para que un jugador coloque una ficha, otra para que lo haga el otro y otra para salir del programa, demodo que en cualquier momento puedas salir. La opcion de salir lo que hara sera terminar el bucle, seria algo asi:

    c:=readkey; (esto creo que era asi, = me confundo con C)
    While c<>"s" do (con la tecla s sales del programa)
    begin
    if c="1" and turno=1 jugador1;
    if c="2" and turno=2 jugador2;
    c:=readkey;
    end;

    Ademas tendrias que controlar que le toque a ese jugador (turno) esta variable la cambias cuando llamas al jugador1, dejandola lista para el siguietne jugador.



  • 12

    Bueno ya esta terminado. La profe nos ha dicho (en un primer ojeo) que esta regular y nos ha echado la bronca por haber modificado variables globales en procedimientos y por no usar parametros en ellos. Bueno, en el zip solo se encuentra el ejecutable, y se aceptan criticas!!!!!! Si son criticas respecto al modo grafico tened en cuenta que no puntaba mas por ello…asi q vosotros direis...

    PD: hay un errorcillo, haber si alguien lo descubre...

    jOki wrote
    attachment_p_98100_0_final.zip



  • 13

    Hola!! Por favor el codigo de este programa podriais ponerlo?? Es que nos han mandado hacer esta practica y tenemos muchas dudas aun :confused: Gracias (tambien lo tenemos que hacer en pascal)



  • 14

    Hola jokii! a mi tb me mandaron a hacer un juego igual al q tu hiciste en pascal y estoy en primer año de informatica y de verdad no tengo idea de como empezarlo :nono:
    sera q tu puedes colocar el codigo fuente ? para tener una guia… gracias
    saludos pd: necesito tener una parte echa para el lunes ! jaja y ando como loca :verguen:



  • 15

    Bueno hace 2 años que se escribio este post, veo dificil que te contesten :p
    Aunque viendo las soluciones dadas nuse, yo creo que intentaria hacerlo de otra manera. O recursivamente (que para primero va a ser que no) o empezando a buscar 4 fichas seguidas desde un extremo…



  • 16

    Juas! En mi carrera en primero se ve recursividad claramente, y para estructuras de datos la tienes que saber manejar al dedillo o estás perdido xD



  • 17

    @NOLDOR:

    Juas! En mi carrera en primero se ve recursividad claramente, y para estructuras de datos la tienes que saber manejar al dedillo o estás perdido xD

    Joer aqui estas que si, enseñan en segundo y mucha gente no lo aprende bien :risitas:
    En realidad es facilillo lo que se enseña en la universidad (fuera se pueden llegar a hacer virguerias), lo que pasa que si en primero no te dan caña con las practicas es imposible aprenderlo :p



  • 18

    Necesito que me deis todo el codigo para crear el conecta 4 para html
    Por favor es muy importante



  • 19

    Por favor necesito que alguien me de los codigos para hacer el conecta 4 en html es un trabajo pero no se como empezar ni que hacer alguien me podria ayudar





Has perdido la conexión. Reconectando a Hardlimit.