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