Browse Source

First commit

master
Fife 6 years ago
parent
commit
9173d3a18f
  1. 73
      GUI.cpp
  2. 30
      GUI.hpp
  3. 139
      Sprite.hpp
  4. 198
      control.cpp
  5. 27
      control.hpp
  6. 123
      iaghost1.cpp
  7. 24
      iaghost1.hpp
  8. 105
      iaghost2.cpp
  9. 22
      iaghost2.hpp
  10. 152
      pacman.cpp

73
GUI.cpp

@ -0,0 +1,73 @@
#include "GUI.hpp"
extern "C"
{
#include <math.h>
}
void Script_GUI::Start()
{
vie = 3;
score = 0;
level = 1;
vulnerability = 0;
}
void Script_GUI::UpdateEverySecond()
{
if(vulnerability > 0)vulnerability --;
else vulnerability = 0;
}
void Script_GUI::Update()
{
const unsigned char svie[]={0x6d, 0x93, 0x83, 0x45, 0x29, 0x11, };
ML_rectangle(105,0,127,63,1,ML_WHITE,ML_WHITE);
ML_line(104,0,104,63,ML_BLACK);
PrintMini(107,7,"Score",0);
PrintV(107,15,score);
if(vie > 0)ML_bmp_or(svie,105,30,7,6);
if(vie > 1)ML_bmp_or(svie,113,30,7,6);
if(vie > 2)ML_bmp_or_cl(svie,121,30,7,6);
PrintMini(107,47,"Level",0);
PrintV(115,55,level);
}
void Script_GUI::DelVie(int v)
{
if(v < 0)return;
vie -= v;
if(vie <= 0)
{
ML_clear_vram();
PrintXY(25,28,"You Lose",0);
ML_display_vram();
Sleep(1500);
GetEngine()->StopGame();
}
}
void Script_GUI::AddScore(int v)
{
if(v > 0)score += v;
}
void Script_GUI::SetVulnerability(int v)
{
if( v > 0)vulnerability = v;
}
int Script_GUI::GetVulnerability()
{
return vulnerability;
}

30
GUI.hpp

@ -0,0 +1,30 @@
#ifndef GUI
#define GUI
#include "..\C-Engine\CHeader.hpp"
class Script_GUI: public Script
{
public:
void Start();
void Update();
void UpdateEverySecond();
void DelVie(int v);
void AddScore(int v);
void SetVulnerability(int v);
int GetVulnerability();
private:
int score;//Sc: 0
int vie;//Nb de vie
int level;
int vulnerability;
};
#endif

139
Sprite.hpp

@ -0,0 +1,139 @@
//********Pac Man***********//
const unsigned char PM_1[]={0x7, 0xc1, 0x18, 0x31, 0x20, 0x9, 0x41, 0x85, 0x41, 0x85, 0x80, 0x3, 0x80, 0x3, 0x81, 0xff, 0x80, 0x3, 0x80, 0x3, 0x40, 0x5, 0x40, 0x5, 0x20, 0x9, 0x18, 0x31, 0x7, 0xc1, };
const unsigned char PM_2[]={0x7, 0xc1, 0x18, 0x31, 0x20, 0x9, 0x41, 0x85, 0x41, 0x85, 0x80, 0x19, 0x80, 0x61, 0x81, 0x81, 0x80, 0x61, 0x80, 0x19, 0x40, 0x5, 0x40, 0x5, 0x20, 0x9, 0x18, 0x31, 0x7, 0xc1, };
const unsigned char PM_3[]={0x7, 0xc1, 0x18, 0x31, 0x20, 0x9, 0x41, 0x91, 0x41, 0xa1, 0x80, 0x41, 0x80, 0x81, 0x81, 0x1, 0x80, 0x81, 0x80, 0x41, 0x40, 0x21, 0x40, 0x11, 0x20, 0x9, 0x18, 0x31, 0x7, 0xc1, };
const unsigned char PM_4[]={0x7, 0x1, 0x19, 0x1, 0x21, 0x1, 0x41, 0x1, 0x41, 0x1, 0x81, 0x1, 0x81, 0x1, 0x81, 0x1, 0x81, 0x1, 0x81, 0x1, 0x41, 0x1, 0x41, 0x1, 0x21, 0x1, 0x19, 0x1, 0x7, 0x1, };
const unsigned char PM_5[]={0x0, 0x1, 0x0, 0x1, 0x20, 0x1, 0x50, 0x1, 0x48, 0x1, 0x84, 0x1, 0x82, 0x1, 0x81, 0x1, 0x82, 0x1, 0x84, 0x1, 0x48, 0x1, 0x50, 0x1, 0x20, 0x1, 0x0, 0x1, 0x0, 0x1, };
const unsigned char PM_6[]={0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x60, 0x1, 0x98, 0x1, 0x86, 0x1, 0x81, 0x1, 0x86, 0x1, 0x98, 0x1, 0x60, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, };
Sprite S_PacMan_1(PM_1,15,15); S_PacMan_1.CreateReverse();
Sprite S_PacMan_2(PM_2,15,15); S_PacMan_2.CreateReverse();
Sprite S_PacMan_3(PM_3,15,15); S_PacMan_3.CreateReverse();
Sprite S_PacMan_4(PM_4,15,15); S_PacMan_4.CreateReverse();
Sprite S_PacMan_5(PM_5,15,15); S_PacMan_5.CreateReverse();
Sprite S_PacMan_6(PM_6,15,15); S_PacMan_6.CreateReverse();
Sprite S_PacMan[]={S_PacMan_1,S_PacMan_2,S_PacMan_3,S_PacMan_2};
Sprite S_PM_Die[]={S_PacMan_1,S_PacMan_2,S_PacMan_3,S_PacMan_4,S_PacMan_5,S_PacMan_6};
Animation A_PM(S_PacMan , 4, 200);
Animation A_PM_Die(S_PM_Die , 6, 200);
Animation A_PacMan[]={A_PM,A_PM_Die};
//************Ghost***************//
const unsigned char G1[]={0xf, 0xe1, 0x1f, 0xf1, 0x3f, 0xf9, 0x7f, 0xfd, 0x6f, 0xbd, 0xef, 0xbf, 0xe3, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x99, 0x9b, 0x99, 0x9b, };
const unsigned char Afraid1[]={0xf, 0xe1, 0x1f, 0xf1, 0x3f, 0xf9, 0x7f, 0xfd, 0x73, 0xcd, 0xf3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x97, 0xcc, 0x67, 0xff, 0xff, 0xff, 0xff, 0x99, 0x9b, 0x99, 0x9b, };
const unsigned char Afraid2[]={0xf, 0xe1, 0x1f, 0xf1, 0x3f, 0xf9, 0x7f, 0xfd, 0x73, 0xcd, 0xf3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0x67, 0xd3, 0x97, 0xff, 0xff, 0xff, 0xff, 0x99, 0x9b, 0x99, 0x9b, };
Sprite S_Ghost(G1,15,15);
Animation A_GhostN(S_Ghost);
Sprite S_Afraid1(Afraid1,15,15);
Sprite S_Afraid2(Afraid2,15,15);
Sprite S_Afraid[]={S_Afraid1,S_Afraid2};
Animation A_GhostA(S_Afraid,2,200);
Animation A_Ghost[]={A_GhostN,A_GhostA};
const unsigned char tileset[]={0x1f, 0x1f, 0x1f, 0xbf, 0xbf, 0xbf, 0xff, 0x1f, 0xff, 0x7f, 0x9f, 0xbf, 0xdf, 0x3f, 0xbf, 0xbf, 0x9f, 0x7f, 0xbf, 0x3f, 0xdf, 0x9f, 0x9f, 0x9f, 0x3f, 0x3f, 0x3f, 0xff, 0x1f, 0x1f, 0x1f, 0x1f, 0xff, 0x1f, 0x9f, 0x5f, 0x5f, 0x9f, 0x1f, 0x1f, 0x3f, 0x5f, 0x5f, 0x3f, 0x1f, 0x5f, 0xff, 0x5f, 0x7f, 0x9f, 0x9f, 0xdf, 0x3f, 0x3f, 0x9f, 0x9f, 0x7f, 0x3f, 0x3f, 0xdf, };
bool tileprop[]={0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0};
unsigned char * level[]={
"3222222222222222222222222222222222222229999222222222222222222222222222222222222224",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"100\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00700800\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?001",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"100\?00=99999999;00\?00=99999999999;00\?00700800\?00=99999999999;00\?00=99999999;00\?001",
"1000007000000008000007000000000008000007008000007000000000008000007000000008000001",
"100@A0700000000800000700000000000800000700800000700000000000800000700000000800@A01",
"100BC0700000000800\?00700000000000800\?00700800\?00700000000000800\?00700000000800BC01",
"1000007000000008000007000000000008000007008000007000000000008000007000000008000001",
"1000007000000008000007000000000008000007008000007000000000008000007000000008000001",
"100\?00>::::::::<00\?00>:::::::::::<00\?00>::<00\?00>:::::::::::<00\?00>::::::::<00\?001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"100\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"100\?00=99999999;00\?00=99;00\?00=99999999999999999999;00\?00=99;00\?00=99999999;00\?001",
"1000007000000008000007008000007000000000000000000008000007008000007000000008000001",
"1000007000000008000007008000007000000000000000000008000007008000007000000008000001",
"100\?00>::::::::<00\?00700800\?00>::::::::0000::::::::<00\?00700800\?00>::::::::<00\?001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"100\?00\?00\?00\?00\?00\?00700800\?00\?00\?00\?00700800\?00\?00\?00\?00700800\?00\?00\?00\?00\?00\?001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"522222222222222400\?00700099999999;00000>::<00000=99999999000800\?003222222222222226",
"0000000000000001000007000000000008000000000000007000000000008000001000000000000000",
"0000000000000001000007000000000008000000000000007000000000008000001000000000000000",
"000000000000000100\?007000::::::::<00000000000000>::::::::000800\?001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"000000000000000100\?00700800000000000000000000000000000000700800\?001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"000000000000000100\?00700800000322222220000002222222400000700800\?001000000000000000",
"0000000000000001000007008000001000000000000000000001000007008000001000000000000000",
"0000000000000001000007008000001000000000000000000001000007008000001000000000000000",
"222222222222222600\?00>::<00000100000000000000000000100000>::<00\?005222222222222222",
"0000000000000000000000000000001000000000000000000001000000000000000000000000000000",
"0000000000000000000000000000001000000000000000000001000000000000000000000000000000",
"000000000000000000\?00000000000100000000000000000000100000000000\?000000000000000000",
"0000000000000000000000000000001000000000000000000001000000000000000000000000000000",
"0000000000000000000000000000001000000000000000000001000000000000000000000000000000",
"222222222222222400\?00=99;00000100000000000000000000100000=99;00\?003222222222222222",
"0000000000000001000007008000001000000000000000000001000007008000001000000000000000",
"0000000000000001000007008000001000000000000000000001000007008000001000000000000000",
"000000000000000100\?00700800000522222222222222222222600000700800\?001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"000000000000000100\?00700800000000000000000000000000000000700800\?001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"0000000000000001000007008000000000000000000000000000000007008000001000000000000000",
"000000000000000100\?00700800000=99999999999999999999;00000700800\?001000000000000000",
"0000000000000001000007008000007000000000000000000008000007008000001000000000000000",
"0000000000000001000007008000007000000000000000000008000007008000001000000000000000",
"322222222222222600\?00>::<00000>::::::::0000::::::::<00000>::<00\?005222222222222224",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"100\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00700800\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?001",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"1000000000000000000000000000000000000007008000000000000000000000000000000000000001",
"100\?00=99999999;00\?00=99999999999;00\?00700800\?00=99999999999;00\?00=99999999;00\?001",
"1000007000000008000007000000000008000007008000007000000000008000007000000008000001",
"1000007000000008000007000000000008000007008000007000000000008000007000000008000001",
"100\?00>:::::000800\?00>:::::::::::<00\?00>::<00\?00>:::::::::::<00\?007000:::::<00\?001",
"1000000000007008000000000000000000000000000000000000000000000000007008000000000001",
"1000000000007008000000000000000000000000000000000000000000000000007008000000000001",
"10@A00\?00\?00700800\?00\?00\?00\?00\?00\?00\?00000000\?00\?00\?00\?00\?00\?00\?00700800\?00\?00@A01",
"10BC00000000700800000000000000000000000000000000000000000000000000700800000000BC01",
"1000000000007008000000000000000000000000000000000000000000000000007008000000000001",
"799999;00\?00700800\?00=99;00\?00=99999999999999999999;00\?00=99;00\?00700800\?00=999998",
"7000008000007008000007008000007000000000000000000008000007008000007008000007000008",
"7000008000007008000007008000007000000000000000000008000007008000007008000007000008",
"7:::::<00\?00>::<00\?00700800\?00>::::::::0000::::::::<00\?00700800\?00>::<00\?00>:::::8",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"100\?00\?00\?00\?00\?00\?00700800\?00\?00\?00\?00700800\?00\?00\?00\?00700800\?00\?00\?00\?00\?00\?001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"1000000000000000000007008000000000000007008000000000000007008000000000000000000001",
"100\?00=99999999999999000099999999;00\?00700800\?00=99999999000099999999999999;00\?001",
"1000007000000000000000000000000008000007008000007000000000000000000000000008000001",
"1000007000000000000000000000000008000007008000007000000000000000000000000008000001",
"100\?00>::::::::::::::::::::::::::<00\?00>::<00\?00>::::::::::::::::::::::::::<00\?001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"100\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?00\?001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"1000000000000000000000000000000000000000000000000000000000000000000000000000000001",
"5222222222222222222222222222222222222222222222222222222222222222222222222222222226",
};

198
control.cpp

@ -0,0 +1,198 @@
#include "..\C-Engine\CHeader.hpp"
#include "control.hpp"
char *str_remplace ( char *s, unsigned int x, const char *ct)
{
char *new_s = NULL;
if (s != NULL && ct != NULL && x >= 0)
{
size_t size = strlen (s);
new_s = (char*)malloc (sizeof (*new_s) * (size + strlen (ct)));
if (new_s != NULL)
{
memcpy (new_s, s, x);
memcpy (&new_s[x], ct, strlen (ct));
memcpy (&new_s[x + strlen (ct)], &s[x + 1], size - 1 - x + 1);
}
}
else return s;
return new_s;
}
void Control::Initialisation(Script_GUI * v)
{
SGUI = v ;
}
void Control::Start()
{
direction = 0;
directionuser = 0;
objectif = 0;
for( int i = 0; i < GetEngine()->GetMap()->nbtiles_largeur_monde; i++)
{
for( int j = 0 ; j < GetEngine()->GetMap()->nbtiles_hauteur_monde; j++)
{
switch(GetEngine()->GetMap()->map[j][i] - '0')
{
case 15: case 16: objectif ++; break;
default: break;
}
}
}
}
void Control::Update()
{
GetObject()->GetRender()->SetIt(0);
switch(input_dir4())
{
case 2: directionuser = 3; break;
case 4: directionuser = 4; break;
case 6: directionuser = 2; break;
case 8: directionuser = 1; break;
}
if(!GetObject()->GetRigibody()->CollisionDecor( GetX() + (directionuser == 2) - (directionuser == 4) , GetY() + (directionuser == 1) - (directionuser == 3) ))direction = directionuser;
switch(direction)
{
case 1: Move(0,1); GetObject()->GetRender()->SetDirection(90);GetObject()->GetRender()->ReverseRender(false); break;
case 2: Move(1,0); GetObject()->GetRender()->SetDirection(0); GetObject()->GetRender()->ReverseRender(false);break;
case 3: Move(0,-1); GetObject()->GetRender()->SetDirection(270); GetObject()->GetRender()->ReverseRender(false);break;
case 4: Move(-1,0); GetObject()->GetRender()->SetDirection(0); GetObject()->GetRender()->ReverseRender(true);break;
}
int x , y;
x = GetX()/3 + 2;
y = 91 - GetY()/3 - 3;
switch(GetEngine()->GetMap()->map[y][x] - '0')
{
case 15 :
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x , "0");
SGUI->AddScore(200);
objectif--;
break;
case 16:
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x , "0");
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x+1 , "0");
GetEngine()->GetMap()->map[y+1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y+1], x , "0");
GetEngine()->GetMap()->map[y+1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y+1], x+1 , "0");
SGUI->AddScore(500);
SGUI->SetVulnerability(8);
objectif--;
break;
case 17:
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x , "0");
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x-1 , "0");
GetEngine()->GetMap()->map[y+1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y+1], x , "0");
GetEngine()->GetMap()->map[y+1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y+1], x-1 , "0");
SGUI->AddScore(500);
SGUI->SetVulnerability(8);
objectif--;
break;
case 18:
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x , "0");
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x+1 , "0");
GetEngine()->GetMap()->map[y-1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y-1], x , "0");
GetEngine()->GetMap()->map[y-1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y-1], x+1 , "0");
SGUI->AddScore(500);
SGUI->SetVulnerability(8);
objectif--;
break;
case 19:
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x , "0");
GetEngine()->GetMap()->map[y] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y], x-1 , "0");
GetEngine()->GetMap()->map[y-1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y-1], x , "0");
GetEngine()->GetMap()->map[y-1] = (unsigned char*)str_remplace((char*)GetEngine()->GetMap()->map[y-1], x-1 , "0");
SGUI->AddScore(500);
SGUI->SetVulnerability(8);
objectif--;
break;
default:
break;
}
if(objectif <= 0)
{
ML_clear_vram();
PrintXY(30,28,"You Win",0);
ML_display_vram();
Sleep(1500);
GetEngine()->StopGame();
}
Object * Ennemi = GetObject()->CollisionTagO("Ghost");
if(Ennemi != NULL)
{
if(SGUI->GetVulnerability() <= 0)Die();
else Ennemi->GetTransforms()->SetXY(116,131);
}
if(GetObject()->CollisionTag("TP1"))
{
GetObject()->GetTransforms()->SetXY(229,138);
direction = 4;
}
if(GetObject()->CollisionTag("TP2"))
{
GetObject()->GetTransforms()->SetXY(2,138);
direction = 2;
}
if(input_trigger(K_EXIT))GetEngine()->StopGame();
GetEngine()->MiddleScreen(GetX() + 18 , GetY() + 8 ,false);
}
void Control::Die()
{
bool cinematic = true;
GetObject()->GetRender()->SetIt(1);
while(cinematic == true)
{
ML_clear_vram();
GetEngine()->GetMap()->AfficherMap();
GetObject()->GetRender()->DrawObject();
ML_display_vram();
if(GetObject()->GetRender()->GetisEnd())cinematic = false;
Sleep(100);
}
ML_clear_vram();
GetEngine()->GetMap()->AfficherMap();
ML_display_vram();
Sleep(250);
GetObject()->GetRender()->SetIt(0);
GetObject()->GetTransforms()->SetXY(116, 57);
SGUI->DelVie(1);
}

27
control.hpp

@ -0,0 +1,27 @@
#ifndef SCRIPTCONTROL
#define SCRIPTCONTROL
#include"GUI.hpp"
unsigned char * Modifier (unsigned char * line , int place , char valeur);
class Control: public Script
{
public:
void Start();
void Update();
void Initialisation(Script_GUI * v);
void Die();
private :
Script_GUI * SGUI;
int direction;
int directionuser;
int objectif;
};
#endif // SCRIPTCONTROL

123
iaghost1.cpp

@ -0,0 +1,123 @@
#include "..\C-Engine\CHeader.hpp"
#include "GUI.hpp"
#include "iaghost1.hpp"
void IA1::Start()
{
couldown=0;
direction=1;
directionuser=1;
}
void IA1::UpdateEverySecond()
{
if (couldown==5)
{
directionuser = rand_int(4) + 1;
couldown=0;
}
couldown++;
}
void IA1::Initialisation(Script_GUI * v)
{
SGUI = v ;
}
void IA1::Update()
{
int hasard;
if(SGUI->GetVulnerability() > 0)SetIt(1);
else SetIt(0);
//Intersection//
if(!(!GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() + 1) && !GetObject()->GetRigibody()->CollisionDecor(GetX() , GetY() - 1) &&!GetObject()->GetRigibody()->CollisionDecor(GetX() + 1 , GetY()) && !GetObject()->GetRigibody()->CollisionDecor(GetX() - 1 , GetY())))
{
switch(direction)
{
case 1:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() + 1) || !GetObject()->GetRigibody()->CollisionDecor(GetX() , GetY() - 1))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 1;break;
case 2: directionuser = 2;break;
case 3: directionuser = 4;break;
}
}
break;
case 2:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX() + 1 , GetY()) || !GetObject()->GetRigibody()->CollisionDecor(GetX() - 1 , GetY()))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 2;break;
case 2: directionuser = 1;break;
case 3: directionuser = 3;break;
}
}
break;
case 3:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() + 1) || !GetObject()->GetRigibody()->CollisionDecor(GetX(), GetY() - 1))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 3;break;
case 2: directionuser = 2;break;
case 3: directionuser = 4;break;
}
}
break;
case 4:
if(!GetObject()->GetRigibody()->CollisionDecor(GetX() + 1 , GetY()) || !GetObject()->GetRigibody()->CollisionDecor(GetX() - 1 , GetY()))
{
hasard = rand_int(3) + 1;
switch(hasard)
{
case 1: directionuser = 4;break;
case 2: directionuser = 1;break;
case 3: directionuser = 3;break;
}
}
break;
}
}
//***********Deplacement***********//
if(!GetObject()->GetRigibody()->CollisionDecor( GetX() + (directionuser == 2) - (directionuser == 4) , GetY() + (directionuser == 1) - (directionuser == 3) ))direction = directionuser;
switch(direction)
{
case 1: Move(0,1); break;
case 2: Move(1,0); break;
case 3: Move(0,-1); break;
case 4: Move(-1,0); break;
}
//************//
if(GetObject()->CollisionTag("TP1"))
{
GetObject()->GetTransforms()->SetXY(229,138);
direction = 4;
}
if(GetObject()->CollisionTag("TP2"))
{
GetObject()->GetTransforms()->SetXY(2,138);
direction = 2;
}
}

24
iaghost1.hpp

@ -0,0 +1,24 @@
#ifndef SCRIPTGHOST1
#define SCRIPTGHOST1
#include "GUI.hpp"
class IA1: public Script
{
public:
void Start();
void Update();
void UpdateEverySecond();
void Initialisation(Script_GUI * v);
private :
int couldown;
int direction;
int directionuser;
Script_GUI * SGUI;
};
#endif // SCRIPTCONTROL

105
iaghost2.cpp

@ -0,0 +1,105 @@
#include "..\C-Engine\CHeader.hpp"
#include "GUI.hpp"
#include "iaghost2.hpp"
void IA2::Start()
{
direction=1;
directionuser=1;
}
void IA2::Initialisation(Script_GUI * v)
{
SGUI = v ;
}
void IA2::Update()
{
if(SGUI->GetVulnerability() > 0)SetIt(1);
else SetIt(0);
//Intersection//
int difx = GetEngine()->GetListeObject()[0]->GetTransforms()->GetX() - GetX();
int dify = GetEngine()->GetListeObject()[0]->GetTransforms()->GetY() - GetY();
if(!GetObject()->GetRigibody()->CollisionDecor(GetX() + (direction%2), GetY() + (!(direction%2))) || !GetObject()->GetRigibody()->CollisionDecor(GetX() - (direction%2), GetY() - (!(direction%2))))
{
PrintMini(10,10,"Test",0);
bool possibledirection[4];
for(int i = 0; i < 4 ; i++)possibledirection[i] = !(GetObject()->GetRigibody()->CollisionDecor(GetX() + (i == 1) - (i == 3), GetY() + (i == 0) - (i == 2)));
int betterdirection[4]; int best;
if(ABS(difx) > ABS(dify))best = 1;
else best = 2;
if(difx == 0)best = 2;
if(dify == 0)best = 1;
if(difx > 0)
{
betterdirection[ (best == 2)] = 2;
betterdirection[ 3 -(best == 2)] = 4;
}
else
{
betterdirection[ (best == 2)] = 4;
betterdirection[ 3 -(best == 2)] = 2;
}
if(dify > 0)
{
betterdirection[ (best == 1)] = 1;
betterdirection[ 3 -(best == 1)] = 3;
}
else
{
betterdirection[ (best == 1)] = 3;
betterdirection[ 3 -(best == 1)] = 1;
}
int end = 4;
while(end > 0)
{
if(possibledirection[betterdirection[4 - end] - 1])
{
directionuser = betterdirection[4 - end];
end = 0;
}
else end --;
}
}
//***********Deplacement***********//
if(!GetObject()->GetRigibody()->CollisionDecor( GetX() + (directionuser == 2) - (directionuser == 4) , GetY() + (directionuser == 1) - (directionuser == 3) ))direction = directionuser;
switch(direction)
{
case 1: Move(0,1); break;
case 2: Move(1,0); break;
case 3: Move(0,-1); break;
case 4: Move(-1,0); break;
}
//************//
if(GetObject()->CollisionTag("TP1"))
{
GetObject()->GetTransforms()->SetXY(229,138);
direction = 4;
}
if(GetObject()->CollisionTag("TP2"))
{
GetObject()->GetTransforms()->SetXY(2,138);
direction = 2;
}
}

22
iaghost2.hpp

@ -0,0 +1,22 @@
#ifndef SCRIPTGHOST2
#define SCRIPTGHOST2
#include "GUI.hpp"
class IA2: public Script
{
public:
void Start();
void Update();
void Initialisation(Script_GUI * v);
private :
int direction;
int directionuser;
Script_GUI * SGUI;
};
#endif // SCRIPTCONTROL

152
pacman.cpp

@ -0,0 +1,152 @@
#include "..\C-Engine\CHeader.hpp"
#include "control.hpp"
#include "iaghost1.hpp"
#include "iaghost2.hpp"
#include "GUI.hpp"
void SetDecor( Engine * Game);
int Jeu();
void Menu()
{
const unsigned char smenu[]={0xff, 0x80, 0x20, 0x1, 0xf0, 0x0, 0x10, 0x8, 0x4, 0x2, 0xf, 0x80, 0xc0, 0x20, 0x6, 0xc, 0x0, 0x18, 0x18, 0x4, 0x3, 0x9, 0x80, 0x40, 0x50, 0x8, 0x2, 0x0, 0x14, 0x28, 0xa, 0x2, 0x89, 0x9e, 0x40, 0x50, 0x10, 0x64, 0x0, 0x12, 0x48, 0xa, 0x2, 0x49, 0x92, 0x40, 0x88, 0x10, 0x68, 0x0, 0x11, 0x88, 0x11, 0x2, 0x29, 0x9e, 0x40, 0x88, 0x20, 0x10, 0x0, 0x10, 0x8, 0x11, 0x2, 0x19, 0x80, 0x41, 0x4, 0x20, 0x20, 0x7f, 0x10, 0x8, 0x20, 0x82, 0x1, 0x80, 0xc1, 0x24, 0x20, 0x40, 0x41, 0x10, 0x8, 0x24, 0x82, 0x1, 0x9f, 0x82, 0x52, 0x20, 0x20, 0x7f, 0x10, 0x8, 0x4a, 0x42, 0x1, 0x90, 0x2, 0x72, 0x20, 0x10, 0x0, 0x11, 0x88, 0x4e, 0x42, 0x41, 0x90, 0x4, 0x1, 0x10, 0x8, 0x0, 0x12, 0x48, 0x80, 0x22, 0x61, 0x90, 0x4, 0x1, 0x10, 0x4, 0x0, 0x12, 0x48, 0x80, 0x22, 0x51, 0x90, 0x8, 0x70, 0x88, 0x2, 0x0, 0x12, 0x49, 0xe, 0x12, 0x49, 0x90, 0x8, 0x88, 0x86, 0xc, 0x0, 0x12, 0x49, 0x11, 0x12, 0x49, 0xf0, 0xf, 0x7, 0x81, 0xf0, 0x0, 0x1e, 0x79, 0xe0, 0xf3, 0xcf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0xf0, 0x0, 0x20, 0x1e, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x8, 0xc, 0x90, 0x0, 0x20, 0x11, 0x44, 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x90, 0x0, 0x50, 0x10, 0x88, 0x0, 0x0, 0x0, 0x0, 0x9, 0xe4, 0x90, 0x0, 0x50, 0x8, 0x88, 0x0, 0x0, 0x0, 0x0, 0x9, 0x24, 0x90, 0x0, 0x88, 0x8, 0x10, 0x0, 0x0, 0x0, 0x0, 0x9, 0xe4, 0x90, 0x0, 0x88, 0x4, 0x10, 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x90, 0x1, 0x4, 0x2, 0x20, 0x0, 0x0, 0x0, 0x0, 0x8, 0xc, 0x90, 0x1, 0x24, 0x2, 0x20, 0x0, 0x0, 0x0, 0x0, 0x9, 0xf8, 0x90, 0x2, 0x52, 0x4, 0x40, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x90, 0x2, 0x72, 0x4, 0x40, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x90, 0x4, 0x1, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x9f, 0xc4, 0x1, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x80, 0x48, 0x70, 0x91, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x80, 0x48, 0x88, 0x91, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0xff, 0xcf, 0x7, 0x9e, 0x0, 0x0, 0x0, };
while(input_press(K_EXE)){}
while(!input_press(K_EXIT))
{
input_update();
ML_clear_vram();
ML_bmp_or(smenu,20,14,88,36);
ML_display_vram();
if(input_trigger(K_SHIFT) || input_trigger(K_EXE))Jeu();
}
}
int Jeu()
{
#include "Sprite.hpp" // Inclusion des sprites.
//*****************Creation des objects******************
Object * PacMan = new Object;
PacMan->GetTransforms()->SetXY( 116, 57);
PacMan->GetRender()->SetRender(A_PacMan,2);
PacMan->AddRigibody();
PacMan->AffectTag("PacMan");
Control * Script_PacMan = new Control;
PacMan->AffectScript(Script_PacMan);
Object * Ghost1 = new Object;
Ghost1->GetTransforms()->SetXY( 99, 129);
Ghost1->GetRender()->SetRender(A_Ghost,2);
Ghost1->AddRigibody();
Ghost1->AffectTag("Ghost");
Object * Ghost2 = new Object;
Ghost2->GetTransforms()->SetXY( 116, 129);
Ghost2->GetRender()->SetRender(A_Ghost,2);
Ghost2->AddRigibody();
Ghost2->AffectTag("Ghost");
Object * Ghost3 = new Object;
Ghost3->GetTransforms()->SetXY( 133, 129);
Ghost3->GetRender()->SetRender(A_Ghost,2);
Ghost3->AddRigibody();
Ghost3->AffectTag("Ghost");
Object * Ghost4 = new Object;
Ghost4->GetTransforms()->SetXY( 116, 156);
Ghost4->GetRender()->SetRender(A_Ghost,2);
Ghost4->AddRigibody();
Ghost4->AffectTag("Ghost");
Object * TP1 = new Object;
TP1->GetTransforms()->SetXY( -14, 140);
TP1->AddRigibody();
TP1->GetRigibody()->UseFixeBody(15,15);
TP1->AffectTag("TP1");
Object * TP2 = new Object;
TP2->GetTransforms()->SetXY( 245, 140);
TP2->AddRigibody();
TP2->GetRigibody()->UseFixeBody(15,15);
TP2->AffectTag("TP2");
/*IA2 * Script_Ghost1 = new IA2;
IA1 * Script_Ghost2 = new IA2;
IA2 * Script_Ghost3 = new IA2;*/
IA2 * Script_Ghost4 = new IA2;
/* Ghost1->AffectScript(Script_Ghost1);
Ghost2->AffectScript(Script_Ghost2);
Ghost3->AffectScript(Script_Ghost3);*/
Ghost4->AffectScript(Script_Ghost4);
//***********Creation de la map***************
Map Niveau1;
Niveau1.SetMap(tileset ,level , tileprop , 3 , 3 , 82 ,91);
//**************Assignation des objects************
Engine Game;
Game.AddObject( PacMan);
Game.AddObject( Ghost1);
Game.AddObject( Ghost2);
Game.AddObject( Ghost3);
Game.AddObject( Ghost4);
Game.AddObject( TP1);
Game.AddObject( TP2);
Game.AffectMap( &Niveau1);
Niveau1.AffectEngine( &Game);
Script_GUI SGUI;
Game.AffectScript(SGUI);
Script_PacMan->Initialisation(&SGUI);
/*Script_Ghost1->Initialisation(&SGUI);
Script_Ghost2->Initialisation(&SGUI);
Script_Ghost3->Initialisation(&SGUI);*/
Script_Ghost4->Initialisation(&SGUI);
Game.SetFpsWish(45);
Game.Game();
return 1;
}
extern "C"
{
int AddIn_main(int isAppli, unsigned short OptionNum)
{
Menu();
return 1;
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section
}
Loading…
Cancel
Save