📄 momia.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 + -