⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 momia.cpp

📁 Game developed with C++ and ALLEGRO
💻 CPP
字号:
#include <cstdlib>
#include <iostream>
#include "Personaje.h"
#include "Escenario.h"
#include "Momia.h"  
#include <allegro.h>
#include <algif.h> 

using namespace std;

Momia::Momia(){
    
                 posX=0;
                 posY=0;
    }

Momia::Momia(int x,int y){
                        posX=x;
                        posY=y;

}

Momia::~Momia(){
                cout<<"Destructor de  Momia"<<endl;
                 posX=0;
                 posY=0;
                
}

bool *Momia::mover(Cuadro tabla[6][6]){
     BITMAP *mom;
     bool *iwin;
     iwin=new bool[2];
     iwin[0]=false;
     iwin[1]=false;
     int val,dir;
     int tmpX,tmpY;
     int i,j,k,w;
     int monx,mony;
     tmpX=getX();
     tmpY=getY();
     k=(tmpX/50)-5;
     w=(tmpY/50)-1;
    
    for(i=0; i<6; i++)
        for(j=0; j<6; j++)
            if(tabla[i][j].getHere()==true)
            {
                monx=((j+5)*50);
                mony=((i+1)*50);
            }
    if(getX()==monx && getY()>mony)
        dir=1;
    else if (getX()==monx && getY()<mony)
        dir=2;
    else if(getY()==mony && getX()>monx)
        dir=4;
    else if(getY()==mony && getX()<monx)
        dir=3;
    else if(getX()>monx)
        dir=4;
    else if(getX()<monx)    
        dir=3;
   
    cout<<monx<<endl;
    cout<<mony<<endl;
    
    cout<<tmpX<<endl;
    cout<<tmpY<<endl;
    if(dir==2)
    {
        if((tabla[w][k].getId()!=3 && tabla[w][k].getId()!=8) && (tabla[w+1][k].getId()!=2 && tabla[w+1][k].getId()!=7 && (w+1)<6))
           {    
                setY(posY+50);
                mom=load_gif("imagenes/momd.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                draw_sprite(screen,mom,posX,posY);
                
                k=(posX/50)-5;
                w=(posY/50)-1;
                tabla[w-1][k].setHeremum(false);
                tabla[w][k].setHeremum(true);
                
        }
        
        if(posX==monx && posY==mony)
                    iwin[0]=ganar(tabla,w,k,monx,mony);
    }
    if(dir==1){
        if((tabla[w][k].getId()!=2 && tabla[w][k].getId()!=7)&&(tabla[w-1][k].getId()!=3  && tabla[w-1][k].getId()!=8 && (w-1)>=0))
            {
                setY(posY-50);
                mom=load_gif("imagenes/momu.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                draw_sprite(screen,mom,posX,posY);
                
                k=(posX/50)-5;
                w=(posY/50)-1;
                tabla[w+1][k].setHeremum(false);
                tabla[w][k].setHeremum(true);
        }
        if(posX==monx && posY==mony)
                    iwin[0]=ganar(tabla,w,k,monx,mony);
    }
    if(dir==4){
               
        if((tabla[w][k].getId()!=5 && tabla[w][k].getId()!=10) && (tabla[w][k-1].getId()!=4  && tabla[w][k-1].getId()!=9 && (k-1)>=0))
            {
                setX(posX-50);
                mom=load_gif("imagenes/moml.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                k=(posX/50)-5;
                w=(posY/50)-1;
                draw_sprite(screen,mom,posX,posY);
                tabla[w][k+1].setHeremum(false);
                tabla[w][k].setHeremum(true); 
        }
        else if(getY()!=mony)
        {
            if((getY()-mony)>0)
            {   
                if((tabla[w][k].getId()!=2 && tabla[w][k].getId()!=7)&&(tabla[w-1][k].getId()!=3  && tabla[w-1][k].getId()!=8 && (w-1)>=0))
                {
                    setY(posY-50);
                    mom=load_gif("imagenes/momu.gif",NULL);
                    cases(tabla,w,k,tmpX,tmpY);
                    k=(posX/50)-5;
                    w=(posY/50)-1;
                    draw_sprite(screen,mom,posX,posY);
                    tabla[w+1][k].setHeremum(false);
                    tabla[w][k].setHeremum(true);
                }
            }
            else 
            {
                if((tabla[w][k].getId()!=3 && tabla[w][k].getId()!=8) && (tabla[w+1][k].getId()!=2 && tabla[w+1][k].getId()!=7 && (w+1)<6))
                {
                    setY(posY+50);
                    mom=load_gif("imagenes/momd.gif",NULL);
                    cases(tabla,w,k,tmpX,tmpY);
                    k=(posX/50)-5;
                    w=(posY/50)-1;
                    draw_sprite(screen,mom,posX,posY);
                    tabla[w-1][k].setHeremum(false);
                    tabla[w][k].setHeremum(true);
                }
            }
        }
        if(posX==monx && posY==mony)
                    iwin[0]=ganar(tabla,w,k,monx,mony);
    }   
    
    if(dir==3)
    {
        if((tabla[w][k].getId()!=4 && tabla[w][k].getId()!=9) && (tabla[w][k+1].getId()!=5 && tabla[w][k+1].getId()!=10 && (k+1)<6))
            {
                setX(posX+50);
                mom=load_gif("imagenes/momr.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                k=(posX/50)-5;
                w=(posY/50)-1;
                draw_sprite(screen,mom,posX,posY);
                tabla[w][k-1].setHeremum(false);
                tabla[w][k].setHeremum(true);
            }
    else if(getY()!=mony)
    {
        if((getY()-mony)>0)
        {
            if((tabla[w][k].getId()!=2 && tabla[w][k].getId()!=7)&&(tabla[w-1][k].getId()!=3  && tabla[w-1][k].getId()!=8 && (w-1)>=0))
            {
                setY(posY-50);
                mom=load_gif("imagenes/momu.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                k=(posX/50)-5;
                w=(posY/50)-1;
                draw_sprite(screen,mom,posX,posY);
                tabla[w+1][k].setHeremum(false);
                tabla[w][k].setHeremum(true);
            }
        }
        else 
        {
            if((tabla[w][k].getId()!=3 && tabla[w][k].getId()!=8) && (tabla[w+1][k].getId()!=2 && tabla[w+1][k].getId()!=7 && (w+1)<6))
            {
                setY(posY+50);
                mom=load_gif("imagenes/momd.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                
                k=(posX/50)-5;
                w=(posY/50)-1;
                draw_sprite(screen,mom,posX,posY);
                tabla[w-1][k].setHeremum(false);
                tabla[w][k].setHeremum(true);
            }
        }
    }
       
    if(posX==monx && posY==mony)
                    iwin[0]=ganar(tabla,w,k,monx,mony);
    }
    return iwin;
}

bool Momia::ganar(Cuadro tabla[6][6],int w,int k,int x, int y){
    int i,j;
    BITMAP *mwin;
    mwin=load_gif("imagenes/mumwin.gif",NULL);
    cases(tabla,w,k,x,y);
    draw_sprite(screen,mwin,x,y);
    BITMAP *q;
    q=load_gif("imagenes/end.gif",NULL);
    for(i=0; i<1000; i++)
             for(j=0; j<220000; j++)
             {}
    draw_sprite(screen,q,0,0);
    while(!key[KEY_ESC]){
    }
    return true;
        
}

void Momia::cases(Cuadro tabla[6][6],int w, int k,int tmpX, int tmpY){
    
    BITMAP *c1,*cu,*cd,*cr,*cl,*s1,*su,*sd,*sr,*sl,*t,*win;
    c1=load_gif("imagenes/c1.gif",NULL);
    cu=load_gif("imagenes/cu.gif",NULL);
    cd=load_gif("imagenes/cd.gif",NULL);
    cr=load_gif("imagenes/cr.gif",NULL);
    cl=load_gif("imagenes/cl.gif",NULL);
    s1=load_gif("imagenes/s1.gif",NULL);
    su=load_gif("imagenes/su.gif",NULL);
    sd=load_gif("imagenes/sd.gif",NULL);
    sr=load_gif("imagenes/sr.gif",NULL);
    sl=load_gif("imagenes/sl.gif",NULL);
    t=load_gif("imagenes/trampa.gif",NULL);
    win=load_gif("imagenes/win.gif",NULL);
    switch (tabla[w][k].getId())
    {
                    case S1:
                        draw_sprite(screen,s1,tmpX,tmpY);
                        
                    break;
                    case SU:
                        draw_sprite(screen,su,tmpX,tmpY);
                    break;
                    case SD:
                        draw_sprite(screen,sd,tmpX,tmpY);
                    break;
                    case SR:
                        draw_sprite(screen,sr,tmpX,tmpY);
                    break;
                    case SL:
                        draw_sprite(screen,sl,tmpX,tmpY);
                    break;
                    case C1:
                        draw_sprite(screen,c1,tmpX,tmpY);
                    break;
                    case CU:
                        draw_sprite(screen,cu,tmpX,tmpY);
                    break;
                    case CD:
                        draw_sprite(screen,cd,tmpX,tmpY);
                    break;
                    case CR:
                        draw_sprite(screen,cr,tmpX,tmpY);
                    break;
                    case CL:
                        draw_sprite(screen,cl,tmpX,tmpY);
                    break;
                    case T:
                        draw_sprite(screen,t,tmpX,tmpY);
                    break;
                    case W:
                        draw_sprite(screen,win,tmpX,tmpY);
                    break;
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -