Page 1 of 2

juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 3:31 am
by benjiben143
Hola buenas tardes

anexo prg del archivo del juego de pacman hecho en fivewin


le faltan detallitos pero ya se puede jugar


http://www.eleben.com.mx/pacman.zip




Code: Select all  Expand view

// 15 de abril del 2015
// chino72vale@hotmail.com
#include "Fivewin.ch"

MEMVAR xTeclas
MEMVAR nXPos, nYPos, xDonde, oSprite, nXposa, nYposa
MEMVAR aMatriz, Maxren, MaxCol, Omuro, xVidas
MEMVAR oComida, nComida, Van, aComidas, oFantasmas, fXpos, fYpos
MEMVAR xfdonde, XOTRA, XPOS, osay, csay, ofanta1, ofanta2, ofanta3, ofanta4, ofanta5, Ownd
FUNCTION MAIN()

    local oBrush, oTimer
    local i, y, n:=0, m:=0
   
    PUBLIC xTeclas, xvidas
    PUBLIC nXPos, nYPos
    PUBLIC Xdonde, oSprite, oMuro
    PUBLIC aMatriz, Maxren, Maxcol, Omuro
    PUBLIC oComida, nComida, Van, Acomidas
    PUBLIC fXpos, fYpos, Ofantasmas
    PUBLIC xFdonde, xotra, XPOS
    PUBLIC OSAY, CSAY, OFANTA, OFANTA2, OFANTA3, OFANTA4, ofanta5, Ownd
   
                 //12345678901234567890123456789
    amatriz := { {"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},;
                 {"x  o  o o o xxxxx o o o  o  x"},;
                 {"x xxx xxoxx ooooo xxoxx xxx x"},;
                 {"xoxxxoxxoxxoxxxxxoxxoxxoxxxox"},;
                 {"xooooooooooooooooooooooooooox"},;
                 {"xoxxxoxxoxxxxxoxxxxxoxxoxxxox"},;
                 {"xoooooxxoooooxoxoooooxxooooox"},;
                 {"xoxxxoxxxxxxoxoxoxxxxxxoxxxox"},;
                 {"xoxxxoxxoooooooooooooxxoxxxox"},;
                 {"toooooxxoxxxxxoxxxxxoxxooooof"},;
                 {"xoxxxoxxoxxxxxoxxxxxoxxoxxxox"},;
                 {"xoxxxoxxoooooooooooooxxoxxxox"},;
                 {"xoxxxoxxxxxxoxoxoxxxxxxoxxxox"},;
                 {"xoooooxxoooooxoxoooooxxooooox"},;
                 {"xoxxxoxxoxxxxxoxxxxxoxxoxoxox"},;
                 {"xoxxxoooooooooooooooooooxoxox"},;
                 {"xoooooxxxxoxxxoxxxxoxxxoxoxox"},;
                 {"xoxxxoxxxxooooooooooxxxoxoxox"},;
                 {"xooooooooooxxxxxxxxooooooooox"},;
                 {"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}}
                 //65*37
   
    nComida:=0
    XTECLAS = 0
    Van:=0
    XPOS:=0
    nXPos   = 450     // columna
    nYPos   = 540     // rengloN
    xdonde = 1
    Maxren:=20
    Maxcol:=29
    xotra:=0
    xfdonde:=2
    // posicion inicial fantasma
    fXpos:=5*30
    fYpos:=15*30
    xVidas:=0
   
    aComidas:=array(MaxRen,MaxCol)
    for i:=1 to maxren
      for y:= 1 to maxcol
        aComidas[i][y]=substr(amatriz[i][1],y,1)
        if substr(amatriz[i][1],y,1)="o"
           nComida++
        endif
      next y
    next i
   
    omuro:=array(maxren,maxcol)
   
    DEFINE WINDOW oWnd FROM 1,1 to 50,125
    @ nYpos, nxPos BITMAP oSprite FILE "recpac\pacman.bmp"  PIXEL  size 30,30 NOBORDER
   
    @ fxPos, fYpos BITMAP ofantasmas FILE "recpac\fanta1.bmp"  PIXEL  size 30,30 NOBORDER
   
    oFanta1:=TFANTASMON():NEW(270,300,,"recpac\fanta2.bmp")
    ofanta2:=TFANTASMON():NEW(360,360,,"recpac\fanta3.bmp")
    ofanta3:=TFANTASMON():NEW(360,360,,"recpac\fanta4.bmp")
    ofanta4:=TFANTASMON():NEW(360,360,,"recpac\fanta5.bmp")
    ofanta5:=TFANTASMON():NEW(360,360,,"recpac\fanta6.bmp")
    n:=30  
   
    // DIBUJANDO LA PANTALLA MAESTRA
    for i:= 1 to maxren
       m:=30
       for y:= 1 to maxcol
          if aComidas[i][y]="x"
             @ n, m BITMAP omuro[i][y] size 30,30 of ownd ;
                    FILE "recpac\marcos.bmp" PIXEL NO BORDER
          ELSE
            if aComidas[i][y]="o"
                 @ n, m BITMAP omuro[i][y] size 30,30 of ownd ;
                    FILE "recpac\comidita.bmp" PIXEL  NOBORDER
             ENDIF
          endif
          m:=m+30
      next y
      n:=n+30
     
    next i
         
    // TERMINA dibujo pantalla
   
    oWnd:bKeyDown :={ | nKey | xteclas:=Teclas(nKey, oSprite)  }        
 
                     
    oSprite:lTransparent = .t.
   
    ownd:binit := { || vueltacompleta() }
   
           
    ACTIVATE WINDOW oWnd // CENTERED
 
    RETURN NIL
   
   
   
FUNCTION TERMINO()
LOCAL DEV:=.t.
LOCAL I, Y
FOR I:=1 TO MAXREN
  FOR Y:=1 TO MAXCOL
     if aComidas[i][y]="o"
        dev:=.f.
     endif
  next y
next i
return dev    
     
   
FUNCTION VUELTACOMPLETA()
LOCAL I
local xcol:=15, xren:=18

sonido_Inicial()
 
 
do while xdonde<>10


checapos()
ofanta1:movimiento_Checapos()
ofanta2:movimiento_Checapos()
ofanta3:movimiento_Checapos()
ofanta4:movimiento_Checapos()
ofanta5:movimiento_Checapos()
nXposa:=nXpos
nyPosa:=nYpos
IF XDONDE =1 // abajo
   nypos = nypos +30
   xren:=nypos/30
   xcol:=nxpos/30
   if aComidas[xren][xcol]="x"
      nYpos := nYpos -30
   endif
  oSprite:LoadBmp( "recpac\pacmana.bmp")
  oWnd:Refresh()
ENDIF

IF XDONDE =0  // arriba
   nypos = nypos -30
   xren:=nypos/30
   xcol:=nxpos/30
   if aComidas[xren][xcol]="x"
      nYpos := nYpos +30
   endif
   oSprite:LoadBmp( "recpac\pacmant.bmp")
   oWnd:Refresh()
   
ENDIF


IF XDONDE =2  // izquierda
   nXpos = nXpos -30
   xren:=nypos/30
   xcol:=nxpos/30
   if aComidas[xren][xcol]="x"
      nXpos := nXpos +30
   else
      if aComidas[xren][xcol]="t"
         nxpos:=870
      endif
     
   endif
   oSprite:LoadBmp( "recpac\pacmani.bmp")
   oWnd:Refresh()
   
ENDIF


IF XDONDE =3 // derecha
   nXpos:= nXpos +30
   xren:=nypos/30
   xcol:=nxpos/30
   if aComidas[xren][xcol]="x"
      nXpos := nxpos -30
   else
      if aComidas[xren][xcol]="f"
         nxpos:=30
      endif
   endif
   
  oSprite:LoadBmp( "recpac\pacmand.bmp")
  oWnd:Refresh()
   
ENDIF


if aComidas[xren][xcol]="o"
    omuro[xren][xcol]:end()
    aComidas[xren][xcol]:=" "
    van ++
    Sonido_Comiendo()
else
   // Sonido_sincomer()
     
endif  

// corrida del fantasmon wey

ofanta1:Movimiento_Fantasma()
ofanta2:Movimiento_Fantasma()
ofanta3:Movimiento_Fantasma()
ofanta4:movimiento_Fantasma()
ofanta5:movimiento_Fantasma()

IF XFDONDE =1 // abajo
   fxpos = fxpos +30
   xren:=fxpos/30
   xcol:=fypos/30
   if aComidas[xren][xcol]="x"
      fxpos := fxpos -30
   endif
   
ENDIF

IF XFDONDE =0  // arriba
   fxpos = fxpos -30
   xren:=fxpos/30
   xcol:=fypos/30
   if aComidas[xren][xcol]="x"
      fxpos := fxpos +30
   endif
   
ENDIF

IF XFDONDE =2  // izquierda
   fypos = fypos -30
   xren:=fxpos/30
   xcol:=fypos/30
   if aComidas[xren][xcol]="x"
       fypos := fypos +30
   //   xfdonde:=1
   //   fxpos:=fxpos+30
     
   else
      if aComidas[xren][xcol]="t"
       //fypos := fypos +30
             fYpos:=840
      endif
     
   endif
   
ENDIF


IF XFDONDE =3 // derecha
   fypos:= fypos +30
   xren:=fxpos/30
   xcol:=fypos/30
   if aComidas[xren][xcol]="x"
      fypos := fypos -30
   else
      if aComidas[xren][xcol]="f"
        // fypos := fypos -30
         fYpos:=60
      endif
   endif
   
ENDIF
 
// movimiento del fantasma

Mueve_Pacman()
Mueve_Fantasma()
ofanta1:Mover_Fantasma()
oFanta2:Mover_Fantasma()
ofanta3:Mover_Fantasma()
ofanta4:Mover_Fantasma()
ofanta5:Mover_Fantasma()

if (nYpos=fxpos .and. nXpos=fypos) .or. (nYposa=fXpos .and. nxposa=fypos)     // agarre del fantamas al pacman
   sonido_tecomio()
   syswait(1.9)
 
 //  ? "ey estoy en 3 son dos opciones ", xpos, xotra, xfdonde
   nXPos   = 450     // movemos al pacman alos valor de inicio we
   nYPos   = 540  
   
   fXpos:=5*30       // movemos al fantasmas al valor inicial
   fYpos:=15*30
   xfdonde:= 2
     
   xVidas++     // ya le dio en la madre los fantamas del caribe al pacman
   if xvidas=3
      Sonido_final()
      syswait(5)
      quit
   endif
   
endif  


IF XDONDE=10 .or. van=nComida  // vamanos para fuera
// "ey estoy en 3 son dos opciones ",xpos, xotra,  xfdonde
   Sonido_final()
   syswait(5)
   QUIT
ENDIF

enddo
?//finalizo bye"
Sonido_final()
syswait(5)


RETURN NIL

 

Function Mueve_Pacman()
   oSprite:Move( nYPos, nXPos, , , .T. )
   syswait(.15)
Return NIl

Function Mueve_fantasma()
   ofantasmas:Move( fxPos, fyPos, , , .T. )
Return NIl


Function Sonido_Termina()
   SndPlaySound( "recpac\cry.wav", 3 )
   syswait(.5)
Return NIL


Function Sonido_Comiendo()
   SndPlaySound( "recpac\comida.wav", 3 )
Return Nil

Function Sonido_Inicial()
    SndPlaySound( "recpac\pacman_beginning\pacman_beginning.wav", 3 )
    syswait(4.0)
Return Nil

Function Sonido_rComiendo()
    SndPlaySound( "recpac\pacman_eatfruit\pacman_eatfruit.wav", 3 )
Return Nil

Function Sonido_Final()
    SndPlaySound( "recpac\pacman_intermission.wav", 3 )
Return Nil

Function Sonido_tecomio()
   SndPlaySound( "recpac\pacman_death\pacman_death.wav", 3 )
Return Nil

Function Sonido_finalizar()
   SndPlaySound( "recpac\pacman_death\pacman_death.wav", 3 )
Return Nil

   
Function teclas(xKey, oSprite)


IF xkey = 38  //ARRIBA
   XDONDE = 0
endif
if xkey = 40   // abajo
    XDONDE = 1
   
endif
if xkey = 37
   XDONDE = 2
endif
if xkey = 39
    XDONDE =3
endif

if xkey = 27
   xdonde=10
   
endif  
 
Return XKEY



Function  checapos()
local xren, xcol
//local xotra:=0
local xnpos :=0
   xren:=fxpos/30
   xcol:=fypos/30
xotra:=0  
XPOS:=0
if !acomidas[xren+1][xcol]="x"
   xpos++
   xotra:=xotra + 1
endif
if !acomidas[xren-1][xcol]="x"
   xpos++
   xotra:= xotra + 2
endif
if !acomidas[xren][xcol-1]="x"
   xpos++
   xotra:= xotra + 3
endif
if !acomidas[xren][xcol+1]="x"
   xpos++
   xotra:= xotra + 4
endif

if xpos>2    // quire decir que ay que random para decidi a que lugar ir we  


   xfdonde:=nrandom(3)
 
else
   if xpos=2
      if xotra = 4  .or. xotra=6 .OR. XOTRA=5  //quire decir que esta en la esquina del  muro
         xfdonde:=nrandom(3)
     else
     
      endif
   endif
   

endif

Return NIL


CLASS TFANTASMON
   DATA   xfdonde INIT 2
   DATA   ny      INIT 0
   DATA   xModo   INIT 0
   DATA   xRen    INIT 0
   DATA   XcOL    INIT 0
   DATA   fXpos   INIT 0
   DATA   FyPOS   INIT 0
   DATA   oFanta  
   METHOD New()
   METHOD Mover_Fantasma()
   METHOD Movimiento_Fantasma()
   METHOD Movimiento_ChecaPos()
   METHOD Movimiento_Agarre()

ENDCLASS

METHOD New(fxPos, fyPos, ofanta, odibujo )  CLASS TFANTASMON

     @ fxPos, fYpos BITMAP ofanta FILE odibujo  PIXEL  size 30,30 NOBORDER  
     ::oFanta:=ofanta
     ::fxPos:=fxpos
     ::fYpos:=fYpos

RETURN SELF


METHOD Mover_Fantasma() CLASS TFANTASMON
   ::ofanta:Move( ::fxPos, ::fyPos, , , .T. )
   ::Movimiento_Agarre()
Return NIl


// agarre del fantamas
METHOD Movimiento_Agarre()   CLASS TFANTASMON
if (nYpos=::fxpos .and. nXpos=::fypos)  .or. (nYposa=::fXpos .and. nxposa=::fypos)  // agarre del fantamas al pacman
   sonido_tecomio()
   syswait(1.9)
   //  ? "ey estoy en 3 son dos opciones ", xpos, xotra, xfdonde
   nXPos   = 450     // movemos al pacman alos valor de inicio we
   nYPos   = 540  
   
   xVidas++     // ya le dio en la madre los fantamas del caribe al pacman
   if xvidas=3
      Sonido_final()
      syswait(5)
      quit
   endif
   
Endif
RETURN NIL


// corrida del fantasmon wey
METHOD Movimiento_Fantasma()   CLASS TFANTASMON


IF ::XFDONDE =1 // abajo
   ::fxpos = ::fxpos +30
   ::xren:=::fxpos/30
   ::xcol:=::fypos/30
   if aComidas[::xren][::xcol]="x"
      ::fxpos := ::fxpos -30
   endif
   
   
ENDIF

IF ::XFDONDE =0  // arriba
   ::fxpos = ::fxpos -30
   ::xren:=::fxpos/30
   ::xcol:=::fypos/30
   if aComidas[::xren][::xcol]="x"
      ::fxpos := ::fxpos +30
   endif
   
ENDIF


IF ::XFDONDE =2  // izquierda
   ::fypos = ::fypos -30
   ::xren:=::fxpos/30
   ::xcol:=::fypos/30
   if aComidas[::xren][::xcol]="x"
       ::fypos := ::fypos +30
     
   else
      if aComidas[::xren][::xcol]="t"
       //fypos := fypos +30
             ::fYpos:=840
      endif
     
   endif
   
ENDIF


IF ::XFDONDE =3 // derecha
   ::fypos:= ::fypos +30
   ::xren:=::fxpos/30
   ::xcol:=::fypos/30
   if aComidas[::xren][::xcol]="x"
      ::fypos := ::fypos -30
   else
      if aComidas[::xren][::xcol]="f"
        // fypos := fypos -30
         ::fYpos:=60
      endif
   endif
   
ENDIF
RETURN NIL


METHOD Movimiento_ChecaPos()   CLASS TFANTASMON
local xren, xcol
local xnpos :=0

xren:=::fxpos/30
xcol:=::fypos/30
xotra:=0  
XPOS:=0
if !acomidas[xren+1][xcol]="x"
   xpos++
   xotra:=xotra + 1
endif
if !acomidas[xren-1][xcol]="x"
   xpos++
   xotra:= xotra + 2
endif
if !acomidas[xren][xcol-1]="x"
   xpos++
   xotra:= xotra + 3
endif
if !acomidas[xren][xcol+1]="x"
   xpos++
   xotra:= xotra + 4
endif


if xpos>2    // quire decir que ay que random para decidi a que lugar ir we  

   ::xfdonde:=nrandom(3)
 
else
   if xpos=2
      if xotra = 4  .or. xotra=6 .OR. XOTRA=5  //quire decir que esta en la esquina del  muro
         ::xfdonde:=nrandom(3)
       // ? "ey estoy en 3 son dos opciones ", xotra, xfdonde
     else
        // xfdonde:=nrandom(3)
       //  ? " son 1 opciones ", xotra, xfdonde
     
      endif
   endif
   

endif

Return NIL



 
 

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 4:23 am
by wmormar
Excelente amigo

Eso eso es destreza

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 6:26 am
by Verhoven
El zip no lo descarga. No encuentra la página web y sin eso, compila el código, pero no se ve nada.
Saludos.

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 9:43 am
by acuellar
Muy bueno benjiben

Gracias.

Saludos,

Adhemar

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 9:54 am
by hmpaquito
Muy bueno, sí señor !

Gracias por compartirlo.

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 1:36 pm
by karinha
El link no funciona.

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 1:44 pm
by benjiben143
hola ahorita tengo fallas con el servidor

se los puedo mandar por correo o si lo pueden subir a otro servidor


me pueden mandar correo a chino72vale@hotmail.com

saludos

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 3:09 pm
by karinha
Excelente!! Muchas gracias.

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 4:20 pm
by Antonio Linares
Alguien puede poner unas imágenes de como se ve ? :-)

gracias!

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 4:47 pm
by Manuel Aranda
Muy buen trabajo. Muchas gracias.


Image

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 8:57 pm
by Patricio Avalos Aguirre
Excelente

me he reido ijijiji

muy bien trabajo..

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 9:08 pm
by Pablo César
No consigo bajarlo... :cry:

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 10:04 pm
by benjiben143
pásame tu correo al mi correo chino72vale@hotmail.com

y te lo mando

saludos

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 10:08 pm
by luisduque
Muy bueno

Felicitaciones, Increíble lo que se puede hacer con Fivewin/Harbour

Imaginación es lo que hace falta

Re: juego pacman ala Fwh

PostPosted: Fri Apr 24, 2015 11:12 pm
by joseluisysturiz
INCREIBLE, aguanta FW que ahora es que hay para rato...FELICITACIONES por el ingenio...como lo descargo.? saludos... :shock: