elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
07 Septiembre 2008, 07:27  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  movimiento pacman
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: movimiento pacman  (Leído 118 veces)
Giovanny8805

Desconectado Desconectado

Mensajes: 8


Ver Perfil
movimiento pacman
« en: 13 Mayo 2008, 07:54 »

hola...

hey creo que me malinterpretaron en mi duda anterior, yo no quiero que me hagan la tarea lo que quiero es que me colaboren, una guia para poder hacer el movimiento del pacman...

ahora mi duda que les planteaba anterior mente era que no he podido hacer el pacman se un solo espacio por la matriz, lo que pasa es que se mueve deliveradamente y no se por que y yo creo que es por que no estoy usando correctamente la libreria, me gustaria que me ayudaran encontrando el error de este codigo para que el muñeco sol se mueva una posicion y no deje nada detras de el...

aqui dejo el codigo que tengo hasta ahora..


las referencias de las imagenes son las siguientes si quieren compilar el codigo:
voy a dar el nombre del archivo segido de su dimencion y formato:

galletaG es de 8x8.bmp
galletaP es de 7x9.bmp
nogalleta es de 14x14.bmp
pared es de 7x9.bmp
pacman es de 14x14.bmp

--------------------------------------------------------------------------------------------------

#include <allegro.h>
#include<stdio.h>



void arriba(int a[31][28], int b, int *c);
void derecha(int a[31][28], int *b, int c);
void abajo(int a[31][28] , int b , int *c);
void izquierda(int a[31][28], int *b, int c);


int main()
{
    int MAX = 14;   //cantidad de bitmaps de espaci entre imagen e imagen
     int y = 23 , x = 13 ;
     
     //initialize Allegro
 
 allegro_init();
 set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
 install_keyboard();
 BITMAP *galletaP;
 BITMAP *galletaG;
 BITMAP *nogalleta;
 BITMAP *pared;
 BITMAP *pacman;




 int fil,col;
 
 
 //tablero de las galletas
 //los 5's son espacios donde iran los fantasmas mas adelante
    int galletas[31][28]={
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,4,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,4,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,2,
2,0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,2,
2,0,0,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,
2,2,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,5,5,5,5,2,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,5,5,5,5,5,5,2,0,2,2,0,2,2,2,2,2,2,
0,0,0,0,0,0,0,0,0,0,2,5,5,5,5,5,5,2,0,0,0,0,0,0,0,0,0,0,
2,2,2,2,2,2,0,2,2,0,2,5,5,5,5,5,5,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,4,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,4,2,
2,2,2,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,2,2,2,
2,2,2,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,2,2,2,
2,0,0,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,
2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,
2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,};

 //tablero de las paredes
 
int paredes[31][28]={
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,2,
2,0,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,0,2,
2,0,0,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,
2,2,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,0,0,0,0,2,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,0,0,0,0,0,0,2,0,2,2,0,2,2,2,2,2,2,
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,
2,2,2,2,2,2,0,2,2,0,2,0,0,0,0,0,0,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,
2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,2,2,2,2,0,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,2,2,2,2,0,2,
2,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,
2,2,2,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,2,2,2,
2,2,2,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,0,2,2,0,2,2,0,2,2,2,
2,0,0,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,
2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,
2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,};





//cargamos el bitmap

  galletaP = load_bitmap("galletaP.bmp", NULL);
  nogalleta = load_bitmap("nogalleta.bmp", NULL);
  pared = load_bitmap("pared.bmp", NULL);
  pacman=load_bitmap("pacman.bmp",NULL);
  galletaG=load_bitmap("galletaG.bmp",NULL);



 
//draw the sprite

for ( fil=0 ; fil<31;fil++)
{
   
    for ( col=0 ; col<28;col++)
    {
       
       //dibujamos las galletas
       
       
        if(galletas[fil][col]==0){
       
        draw_sprite(screen, galletaP, col*MAX, fil*MAX);
       
        }
        if(galletas[fil][col]==4){
       
        draw_sprite(screen, galletaG, col*MAX, fil*MAX);
       
        }
       
       
        //dibujamos las paredes
       
       
        if(paredes[fil][col]==2)
        {       
          draw_sprite(screen, pared, col*MAX, fil*MAX);
       
        }       
    }     
}


draw_sprite(screen, nogalleta, x*MAX, y*MAX);
draw_sprite(screen, pacman,x*MAX , y*MAX);
galletas
  • [y]=3;

//coordenadas de x y y de paman en la matriz
 
 

while(!key[KEY_ESC])
 
 {
     if(key[KEY_UP])
{
                if (galletas
  • [y-1]==0 )
                {
                    arriba(galletas, x,&y);
                    draw_sprite(screen, nogalleta, x*MAX, (y+1)*MAX);
                    draw_sprite(screen, pacman, (x)*MAX, (y)*MAX);
                             
                }               
}

 if(key[KEY_DOWN])
{
                if (galletas
  • [y+1]==0 && galletas
  • [y+1]!= 2)
                {
                    abajo(galletas, x,&y);
                    draw_sprite(screen, nogalleta, x*MAX, (y-1)*MAX);
                    draw_sprite(screen, pacman, (x)*MAX, (y)*MAX);
                             
                }           
                       
}

if(key[KEY_RIGHT])
{
                 if (galletas [x+1][y]==0 && galletas [x+1][y]!= 2 )
                {
                    derecha(galletas, &x,y);
                    draw_sprite(screen, nogalleta, (x-1)*MAX, y*MAX);
                    draw_sprite(screen, pacman, (x)*MAX, (y)*MAX);
                             
                }           
}

if(key[KEY_LEFT])
{
                 if (galletas [x-1][y]==0 && galletas [x-1][y]!=2 )
                {
                    izquierda (galletas, &x,y);
                    draw_sprite(screen, nogalleta, (x+1)*MAX, y*MAX);
                    draw_sprite(screen, pacman, (x)*MAX, (y)*MAX);
                             
                }               
}
}



 
allegro_exit();
return 0;
destroy_bitmap(pacman);
destroy_bitmap(galletaP);
}
END_OF_MAIN();



void arriba(int a[31][28] , int b , int *c)
{
     int i, j;
     
     i = b ;
     j = *c ;
     
     if ( a[j-1] == 0 )
     {
          j = j-1;
     }
     
     *c = j;
     
}



void abajo(int a[31][28] , int b , int *c)
{
     int i, j;
     
     i = b ;
     j = *c ;
     
     if ( a[j+1] == 0 )
     {
          j = j+1;
     }
     
     *c = j;
     
}


void derecha(int a[31][28], int *b, int c)
{
     int i, j;
     
     i = *b ;
     j = c ;
     
     if ( a[i+1][j] == 0 )
     {
          i = i+1;
     }
     
     *b = i;
     
}

void izquierda(int a[31][28], int *b, int c)
{
     int i, j;
     
     i = *b ;
     j = c ;
     
     if ( a[i-1][j] == 0 )
     {
          i = i-1;
     }
     
     *b = i;
   
}



espero que no me tomen a mal esta ves emtendiendo que publico esto es para que me lo devuelvan totalmente resuelto, lo que quiero es realizarlo yo mismo, pero esta libreria personalmente es bastante complica por ser un poco novato en este lenguaje de programacion.....


espero que me ayuden....
gracias..... :D :D :D :D :D
En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC