Juego muy facil

Juego muy facil

Notapor pedroqv » Jue Oct 18, 2007 6:13 am


Se trata de resolver un laberinto, asi que nomas copien y peguen 8)


Código: Seleccionar todo
#include <stdio.h>
#include <conio2.h>

#define COLUMNA 40
#define RENGLON 17

int mostrarMapa(void);
int movimientos(void);
int terminar(void);

char mapa[RENGLON][COLUMNA] = {"****************************************",
                               "*                   *                  *",
                               "******* *********** *****************  *",
                               "*       *              *               *",
                               "* ******************** ***** ********* *",
                               "*    *                     *         * *",
                               "****** ***************** *********** * *",
                               "*      *     *         *             * *",
                               "* ******** * ************************* *",
                               "*          *       *                   *",
                               "******************** *******************",
                               "*          *       *                   *",
                               "************ ************************* *",
                               "*            *                         *",
                               "* *** ******** *************************",
                               "*     *      *                        F*",
                               "****************************************"};

int mostrarMapa(void)
{   
    int i;
    int j;
    int textura;   
   
    for( i=0; i<RENGLON; i++ )
    {
         for ( j=0; j<COLUMNA; j++ )
         {
             if( mapa[i][j]==42 )
                 textura = 178;
             else if( mapa[i][j]==70 )
                 textura = 3;
             else
                 textura = 32;
             
             printf("%c",textura);       
         }
         printf("\n");
    }
    return 1;
}                               

int movimientos(void)
{
    char tecla;
    int r=2;
    int c=2;
    long ciclos=0;
   
    gotoxy(c,r);
    textcolor(15);
    printf("%c",2);
    while( 1 )
    {           
           gotoxy(1,25);
           textcolor(15);
           printf("Movimientos: %d",ciclos);         
           
           tecla = getch();
           gotoxy(c,r);                                   
           switch( tecla )
           {                     
              case 56: //arriba 8
                   if( r>2 && mapa[r-2][c-1]!='*' )
                   {                       
                       printf(" ");
                       r--;
                       ciclos++;
                   }
                   break;               
              case 50: //abajo 2
                   if( r<RENGLON && mapa[r][c-1]!='*' )
                   {
                       printf(" ");                       
                       r++;
                       ciclos++;
                   }
                   break;
              case 52: //izquierda 4
                   if( c>2 && mapa[r-1][c-2]!='*' )
                   {
                       printf(" ");
                       c--;
                       ciclos++;
                   }
                   break;
              case 54: //derecha 6
                   if( c<COLUMNA && mapa[r-1][c]!='*' )
                   {
                       printf(" ");
                       c++;
                       ciclos++;
                   }
                   break;                     
           }
           if( c==38 && r==16 )
               return 1;
           
           gotoxy(c,r);
           textcolor(15);         
           printf("%c",2);                               
    }
}

int terminar(void)
{
    gotoxy(1,20);
    textcolor(14);
    printf("Laberinto terminado\n");
    printf("<presione Q para salir>\n");
    while( getch()!='q' )
    {}
}

int main(void)
{   
    mostrarMapa();
    movimientos();
    terminar();   
}
pedroqv
 
Mensajes: 7
Registrado: Mar Oct 16, 2007 1:55 am

Notapor hugoruscitti » Jue Oct 18, 2007 7:57 pm

Hola, gracias por aportar el ejemplo de tu juego, me parece
una buena idea.

Lamentablemente algunos usuarios de GNU/Linux no podemos
ver tu ejemplo en funcionamiento, ocurre que no tenemos acceso
a la biblioteca "conio2". En fin, dado que tu programa se puede
leer, gracias a que lo has hecho muy prolijo, me tomé el atrevimiento
de hacer una versión del mismo en python. El programa se ve
así:

Imagen

No requiere de otras bibliotecas, excepto pygame, y se puede
ejecutar a partir del siguiente código:

Código: Seleccionar todo
import pygame
from pygame.locals import K_LEFT, K_RIGHT, K_UP, K_DOWN, QUIT

COLUMNAS=40
FILAS=17

mapa = """
****************************************
*                   *                  *
******* *********** *****************  *
*       *              *               *
* ******************** ***** ********* *
*    *                     *         * *
****** ***************** *********** * *
*      *     *         *             * *
* ******** * ************************* *
*          *       *                   *
******************** *******************
*          *       *                   *
************ ************************* *
*            *                         *
* *** ******** *************************
*     *      *                        F*
****************************************
"""

mapa = mapa[1:-1]
mapa = mapa.split('\n')
pos_x = 1
pos_y = 1

def mostrar_mapa(screen, mapa):
    screen.fill((0, 0, 0))

    for f in xrange(FILAS):
        for c in xrange(COLUMNAS):
            if mapa[f][c] == '*':
                imprimir_bloque(screen, f, c)


def imprimir_bloque(screen, fila, columna):
    x = columna * 8
    y = fila * 14
    color = (100, 255, 100)
   
    screen.fill(color, (x, y, 8, 14))


def imprimir_personaje(screen):
    color = (255, 255, 255)
    pos = (pos_x * 8 + 4, pos_y * 14 + 8)

    pygame.draw.circle(screen, color, pos, 3)

def mover_personaje(screen, mapa):
    global pos_x, pos_y
    teclas = pygame.key.get_pressed()

    if teclas[K_RIGHT] and celda_libre(mapa, pos_x + 1, pos_y):
        pos_x += 1
    elif teclas[K_LEFT] and celda_libre(mapa, pos_x - 1, pos_y):
        pos_x -= 1

    if teclas[K_UP] and celda_libre(mapa, pos_x, pos_y - 1):
        pos_y -= 1
    elif teclas[K_DOWN] and celda_libre(mapa, pos_x, pos_y + 1):
        pos_y += 1

def celda_libre(mapa, x, y):
    "Informa si una celda del mapa se puede ocupar con el personaje"
    return mapa[y][x] == ' '

def main():
    salir = False
    screen = pygame.display.set_mode((320, 240))

    # bucle principal
    while not salir:
        # verifica si se cierra la ventana
        for e in pygame.event.get():
            if e.type == QUIT:
                salir = True

        mostrar_mapa(screen, mapa)
        mover_personaje(screen, mapa)
        imprimir_personaje(screen)
        pygame.display.flip()
        pygame.time.wait(10)

if __name__ == "__main__":
    main()


Intenté mantener el código del programa lo mas parecido al
original que realizó "pedroqv", pero me faltó el mensaje de
nivel completado y algunas otras cosas. Por el momento solo
se puede realizar movimientos por el escenario.

Para verlo en funcionamiento pueden guardar el contenido
de este código en un archivo de texto simple, por
ejemplo "laberinto.py", y luego ejecutar
"python laberinto.py"... también pueden hacer "doble
click" sobre el archivo y Python lo ejecutará.

Saludos y gracias nuevamente por el aporte.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor pedroqv » Vie Oct 19, 2007 7:52 pm

Si pues yo uso el compilador dev-cpp y al instalar conio.h me dice que tengo que dirigirme a el como si fuera conio2.h pero pues no mas es cuestion de quitarle el 2
pedroqv
 
Mensajes: 7
Registrado: Mar Oct 16, 2007 1:55 am

Notapor hugoruscitti » Vie Oct 19, 2007 8:31 pm

pedroqv escribió:Si pues yo uso el compilador dev-cpp y al instalar conio.h me dice que tengo que dirigirme a el como si fuera conio2.h pero pues no mas es cuestion de quitarle el 2


Si, si. Es cierto, pero solo en el sistema Windows. "conio.h" era
originaria de la compañia Borland (creo que de uno de
sus productos, "turbo C"). Luego se desarrolló "conio2" para
devcpp.

Mi comentario es que no existe conio2.h ni conio.h para el
sistema operativo GNU/Linux. Muchas personas usamos ese
sistema. Y puede que la versión en python les resulte de utilidad.

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Libreria en ves de conio

Notapor carlostex » Mar Jul 14, 2009 4:53 pm

Hola que tal, estuve desarrollando el juego snake, que requiere que pueda pocisionar el cursor en donde yo quiera, y tambien tiene colores, pero me sucedio lo mismo, solo trabajo en linux y pense que nunca iva a poder hacer lo que hacia esa libreria, pero me encontre con una libreria muy buena y mas completa que conio, se llama ncurses, existe documentacion en internet y es facil de usar, se las recomiendo para sus proximos proyectos
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico


Volver a Videojuegos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron