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

📄 monito.cpp

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


using namespace std;  
char *msg;
     

Monito::Monito(){
                 cout<<"Monito sin"<<endl;
                 posX=0;
                 posY=0;                 
}

Monito::Monito(int x,int y){
                        posX=x;
                        posY=y;
}
Monito::Monito(Monito &m){
                      cout<<"Por copia"<<endl;
                      posX=m.posX;
                      posY=m.posY;
}
                       

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

bool *Monito::mover(Cuadro tabla[6][6])
{
     int val;
     BITMAP *mu;
     int tmpX,tmpY;
     int i,j,k,w;
     bool *r;
     r=new bool[3];
     r[1]=false;
     r[2]=false;
     int monx,mony;
     val=readkey();
     tmpX=getX();
     tmpY=getY();
     k=(tmpX/50)-5;
     w=(tmpY/50)-1;
     
     //cout<<tabla[w][k].getId()<<endl;    
     if((val >>8)==KEY_DOWN)
     {
        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) && (tabla[w+1][k].getHeremum()==false))
        {
                setY(posY+50);
                mu=load_gif("imagenes/md.gif",NULL);
                cases(tabla,w,k,tmpX,tmpY);
                k=(posX/50)-5;
                w=(posY/50)-1;
                monx=((k+5)*50);
                mony=((w+1)*50);
                draw_sprite(screen,mu,posX,posY);
                tabla[w-1][k].setHere(false);
                tabla[w][k].setHere(true);  
                cout<<"Abajo"<<endl;
                if(tabla[w][k].getId() == T)
                    r[2]=morir();
                    
                if(tabla[w][k].getId()==W){
                    r[1]=ganar(tabla,w,k,posX,posY);
                }
                r[0]=true;
                return r;
                
                
        }
            else{
                 r[0]=false;
                 return r;
            }
     }
     
     else if((val >> 8)==KEY_UP)
     {
         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) && (tabla[w-1][k].getHeremum()==false))
         {
                setY(posY-50);
                mu=load_gif("imagenes/mu.gif",NULL);
                
                cases(tabla,w,k,tmpX,tmpY);
                k=(posX/50)-5;
                w=(posY/50)-1;
                monx=((k+5)*50);
                mony=((w+1)*50);
                draw_sprite(screen,mu,posX,posY);
                tabla[w+1][k].setHere(false);
                tabla[w][k].setHere(true);          
                cout<<"Arriba"<<endl;
                if(tabla[w][k].getId() == T)
                    r[2]=morir();
                
                if(tabla[w][k].getId()==W)
                    r[1]=ganar(tabla,w,k,posX,posY);
                r[0]=true;
                return r;
                
                
         }
         else{
             r[0]=false;
             return r;
         }
     }
     
     else if((val>>8)==KEY_LEFT)
     {
        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) && (tabla[w][k-1].getHeremum()==false))
        {
                setX(posX-50);
                mu=load_gif("imagenes/ml.gif",NULL);
                                                                     
                cases(tabla,w,k,tmpX,tmpY);
                k=(posX/50)-5;
                w=(posY/50)-1;
                monx=((k+5)*50);
                mony=((w+1)*50);
                draw_sprite(screen,mu,posX,posY);
                tabla[w][k+1].setHere(false);
                tabla[w][k].setHere(true);  
                cout<<"Izquierda"<<endl;
                if(tabla[w][k].getId() == T)
                    r[2]=morir();
                
                if(tabla[w][k].getId()==W)
                    r[1]=ganar(tabla,w,k,posX,posY);
                r[0]=true;
                return r;
                
                
        }
        else{
             r[0]=false;
            return r;
        }
     }
                 
     else if((val>>8)==KEY_RIGHT)
     {
        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) && (tabla[w][k+1].getHeremum()==false))
            {
                setX(posX+50);
                mu=load_gif("imagenes/mr.gif",NULL);
                
                cases(tabla,w,k,tmpX,tmpY);
                
                k=(posX/50)-5;
                w=(posY/50)-1;
                monx=((k+5)*50);
                mony=((w+1)*50);
                draw_sprite(screen,mu,posX,posY);
                tabla[w][k-1].setHere(false);
                tabla[w][k].setHere(true); 
                cout<<"Derecha"<<endl;
                if(tabla[w][k].getId() == T)
                                       r[2]=morir();
                    
                if(tabla[w][k].getId()==W)
                    r[1]=ganar(tabla,w,k,posX,posY);
                r[0]=true;
                return r;
                
            }
            else{
                 r[0]=false;
                return r;
            }
    }
    else{
         r[0]=false;
        return r;
        }
        
        
    clear_keybuf();
}

bool Monito::ganar(Cuadro tabla[6][6],int w, int k,int x,int y){
     
    int i,j;
    BITMAP *won;
    won=load_gif("imagenes/vic.gif",NULL);
    for(i=0; i<1000; i++)
             for(j=0; j<180000; j++)
                                    {}
    draw_sprite(screen,won,0,0);
    while(!key[KEY_ENTER]){
        
    }
    clear_keybuf();
    return true;
}

bool Monito::morir(){
     int i,j;
     BITMAP *end;
     end=load_gif("imagenes/end.gif",NULL);
     for(i=0; i<1000; i++)
              for(j=0; j<220000; j++)
              {}
    draw_sprite(screen,end,0,0);
    while(!key[KEY_ESC]){
    }
    return true;          
}

void Monito::cases(Cuadro tabla[6][6],int w,int k, int tmpX,int tmpY){
     BITMAP *c1,*cu,*cd,*cr,*cl,*s1,*su,*sd,*sr,*sl,*mu,*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 + -