Added Pachi el Martiano game, it's 640x480 so it's slow like hell
This commit is contained in:
215
project/jni/application/pachi/src/monsters.h
Normal file
215
project/jni/application/pachi/src/monsters.h
Normal file
@@ -0,0 +1,215 @@
|
||||
/***************************************************************************
|
||||
* Pachi el marciano *
|
||||
* ----------------- *
|
||||
* (c) Santiago Radeff (coding) *
|
||||
* (c) Nicolas Radeff (graphics) *
|
||||
* (c) Peter Hajba (music) *
|
||||
* *
|
||||
* T-1000@Bigfoot.com *
|
||||
****************************************************************************
|
||||
*******************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU General Public License *
|
||||
* as published by the Free Software Foundation; either version *
|
||||
* 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
*******************************************************************/
|
||||
|
||||
// -------------------------------------------------
|
||||
// RUTINAS DE CHEQUEO DE COLISIONES DE LOS MONSTRUOS
|
||||
// -------------------------------------------------
|
||||
void check_monster_down(int n)
|
||||
{
|
||||
if((M_y[n] + M_h) > (R_tileside*(R_maxtiles_v-1)))
|
||||
{
|
||||
M_direction[n] = 1;
|
||||
M_y[n]--;
|
||||
}
|
||||
if((M_y[n]+M_h)/R_tileside >= int(M_y[n]+M_h)/R_tileside)
|
||||
{
|
||||
for(int m=0;m<=M_w-1;m++)
|
||||
{
|
||||
if(mroom.data[int(M_x[n]+m)/R_tileside][int((M_y[n]+M_h)/R_tileside)] >= 40)
|
||||
{
|
||||
M_direction[n] = 1;
|
||||
M_y[n]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Chequeo de colision contra otro monstruo
|
||||
for(int m=0;m<=M_max4room-1;m++)
|
||||
{
|
||||
if(n!=m && M_type[m]!=0)
|
||||
{
|
||||
if(M_y[n] < M_y[m]+M_h && M_y[n]+M_h > M_y[m])
|
||||
if(M_x[n] < M_x[m]+M_w && M_x[n]+M_w > M_x[m])
|
||||
{
|
||||
M_direction[n] = 1;
|
||||
M_y[n]-=3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void check_monster_up(int n)
|
||||
{
|
||||
if(M_y[n] < R_tileside)
|
||||
{
|
||||
M_direction[n] = 0;
|
||||
M_y[n]++;
|
||||
}
|
||||
// if((M_y[n])/R_tileside <= int(M_y[n])/R_tileside)
|
||||
// {
|
||||
for(int m=0;m<=M_w-1;m++)
|
||||
{
|
||||
if(mroom.data[int(M_x[n]+m)/R_tileside][int((M_y[n])/R_tileside)] >= 40)
|
||||
{
|
||||
M_direction[n] = 0;
|
||||
M_y[n]++;
|
||||
}
|
||||
}
|
||||
// }
|
||||
// Chequeo de colision contra otro monstruo
|
||||
for(int m=0;m<=M_max4room-1;m++)
|
||||
{
|
||||
if(m!=n && M_type[m]!=0)
|
||||
{
|
||||
if(M_y[n] < M_y[m]+M_h && M_y[n]+M_h > M_y[m])
|
||||
if(M_x[n] < M_x[m]+M_w && M_x[n]+M_w > M_x[m])
|
||||
{
|
||||
M_direction[n] = 0;
|
||||
M_y[n]+=3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void check_monster_left(int n)
|
||||
{
|
||||
if(M_x[n] < R_tileside)
|
||||
{
|
||||
M_direction[n] = 0;
|
||||
M_x[n]++;
|
||||
}
|
||||
if((M_x[n])/R_tileside >= int(M_x[n])/R_tileside)
|
||||
{
|
||||
for(int m=0;m<=M_h-1;m++)
|
||||
{
|
||||
if(mroom.data[int(M_x[n])/R_tileside][int((M_y[n]+m)/R_tileside)] >= 40)
|
||||
{
|
||||
M_direction[n] = 0;
|
||||
M_x[n]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Chequeo de colision contra otro monstruo
|
||||
for(int m=0;m<=M_max4room-1;m++)
|
||||
{
|
||||
if(m!=n && M_type[m]!=0)
|
||||
{
|
||||
if(M_y[n] < M_y[m]+M_h && M_y[n]+M_h > M_y[m])
|
||||
if(M_x[n] < M_x[m]+M_w && M_x[n]+M_w > M_x[m])
|
||||
{
|
||||
M_direction[n] = 0;
|
||||
M_x[n]+=3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void check_monster_right(int n)
|
||||
{
|
||||
if((M_x[n] + M_w) > (R_tileside*(R_maxtiles_h-1)))
|
||||
{
|
||||
M_direction[n] = 1;
|
||||
M_x[n]--;
|
||||
}
|
||||
if((M_x[n]+M_w)/R_tileside >= int(M_x[n]+M_w)/R_tileside)
|
||||
{
|
||||
for(int m=0;m<=M_h-1;m++)
|
||||
{
|
||||
if(mroom.data[int(M_x[n]+M_w)/R_tileside][int((M_y[n]+m)/R_tileside)] >= 40)
|
||||
{
|
||||
M_direction[n] = 1;
|
||||
M_x[n]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Chequeo de colision contra otro monstruo
|
||||
for(int m=0;m<=M_max4room-1;m++)
|
||||
{
|
||||
if(m!=n && M_type[m]!=0)
|
||||
{
|
||||
if(M_y[n] < M_y[m]+M_h && M_y[n]+M_h > M_y[m])
|
||||
if(M_x[n] < M_x[m]+M_w && M_x[n]+M_w > M_x[m])
|
||||
{
|
||||
M_direction[n] = 1;
|
||||
M_x[n]-=3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void move_monster(int n)
|
||||
{
|
||||
if(M_type[n] > 12) // los monstruos que sean tipo mayor a 12 se mueven en el eje Y y los menores de mueven en el eje X
|
||||
{
|
||||
if(M_direction[n] == 1)
|
||||
{
|
||||
M_y[n]=M_y[n]-(M_speed[dificulty]*imove);
|
||||
check_monster_up(n); //up
|
||||
}
|
||||
if(M_direction[n] == 0)
|
||||
{
|
||||
M_y[n]=M_y[n]+(M_speed[dificulty]*imove);
|
||||
check_monster_down(n); //down
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(M_direction[n] == 1)
|
||||
{
|
||||
M_x[n]=M_x[n]-(M_speed[dificulty]*imove);
|
||||
check_monster_left(n); // left
|
||||
}
|
||||
if(M_direction[n] == 0)
|
||||
{
|
||||
M_x[n]=M_x[n]+(M_speed[dificulty]*imove);
|
||||
check_monster_right(n); //right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void print_monsters()
|
||||
{
|
||||
for(int n=0;n<=M_max4room-1;n++)
|
||||
{
|
||||
if(M_type[n] != 0)
|
||||
{
|
||||
oldmonsterpos.x = int(M_x[n]);
|
||||
oldmonsterpos.y = int(M_y[n]);
|
||||
oldmonsterpos.h = M_h;
|
||||
oldmonsterpos.w = M_w;
|
||||
oldmonsterposreal.x = int(M_x[n]+R_gamearea_x);
|
||||
oldmonsterposreal.y = int(M_y[n]+R_gamearea_y);
|
||||
|
||||
monstersrc.y = M_type[n] * M_h;
|
||||
monstersrc.x = ((M_frame - 1)+(M_direction[n]*M_frames)) * M_w;
|
||||
monstersrc.h = M_h;
|
||||
monstersrc.w = M_w;
|
||||
move_monster(n);
|
||||
|
||||
monsterpos.x = int(M_x[n]);
|
||||
monsterpos.y = int(M_y[n]);
|
||||
monsterposreal.x = monsterpos.x + R_gamearea_x;
|
||||
monsterposreal.y = monsterpos.y + R_gamearea_y;
|
||||
|
||||
SDL_BlitSurface(screenbak, &oldmonsterpos, screen, &oldmonsterposreal);
|
||||
SDL_BlitSurface(monsters, &monstersrc, screen, &monsterposreal);
|
||||
SDL_UpdateRect(screen,oldmonsterposreal.x,oldmonsterposreal.y,M_w,M_h);
|
||||
SDL_UpdateRect(screen,monsterposreal.x,monsterposreal.y,M_w,M_h);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user