First commit

This commit is contained in:
Fife 2016-04-30 13:47:44 +02:00
parent 9def13a0eb
commit 9173d3a18f
10 changed files with 893 additions and 0 deletions

73
GUI.cpp Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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 Normal file
View File

@ -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
}