You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

184 lines
9.0 KiB

#include "..\C-Engine\CHeader.hpp"
#include"BoatControl.hpp"
#include "BoatControlPerso.hpp"
extern "C"
{
#include <math.h>
}
void BoatControlPerso::Start()
{
StartBoat();
BateauActuelle->VoilesLateralle.Pourcentage = 0;//On set les voiles à 0.
BateauActuelle->VoilesLongitudinal.Pourcentage = 0;
BateauActuelle->masse = 500;//Il pèse 500 kg.
VentActuelle->direction = 180; //Direction du vent et force
VentActuelle->force = 3;
BateauActuelle->CanonDroit.couldown = 100;
BateauActuelle->CanonGauche.couldown = 100;
BateauActuelle->viemax = 30;//Vie max du joueur 30 pt de vie.
BateauActuelle->vie = BateauActuelle->viemax ;
}
void BoatControlPerso::Update()
{
UpdateBoat();
int nbpirate = CheckBoat();
if(input_trigger(K_EXIT))GetEngine()->StopGame();//Bouton quitté.
if(input_trigger(K_VARS))Fire(90);//Bouton pour tirer.
if(input_trigger(K_SHIFT))Fire(-90);
if(input_trigger(K_POW))AfficherMap();// Bouton pour afficher la map
switch(input_dir4())//Bouton pour tourner le bateau.
{
case 6:
Turn(-2);
break;
case 4:
Turn(2);
break;
default: break;
}
if(input_press(K_F4))//Boutons pour lever ou descendre les voiles.
{
BateauActuelle->VoilesLongitudinal.Pourcentage = BateauActuelle->VoilesLongitudinal.Pourcentage - 5;
}
if(input_press(K_F5))
{
BateauActuelle->VoilesLongitudinal.Pourcentage = BateauActuelle->VoilesLongitudinal.Pourcentage + 5;
}
if(input_press(K_F2))
{
BateauActuelle->VoilesLateralle.Pourcentage = BateauActuelle->VoilesLateralle.Pourcentage - 5;
}
if(input_press(K_F3))
{
BateauActuelle->VoilesLateralle.Pourcentage = BateauActuelle->VoilesLateralle.Pourcentage + 5;
}
Object * Buffer = GetObject()->CollisionTagO("BouletP");
if(Buffer != NULL) // Si on se prend un boulet alors on perd une vie.
{
GetEngine()->DelObject(Buffer);
BateauActuelle->vie --;
}
GetEngine()->MiddleScreen( GetX() + 25, (GetY() + 8));//On place la caméra centré sur le joueur.
PrintV(1,2,objectifmax - nbpirate);//Afficher le nombre de bateaux pirate détruit
ML_line(6,6,8,1,ML_BLACK);
PrintV(10,2,objectifmax);
PrintV(88 , 2 , GetX());//On affiche nos cordonnées.
PrintV(88 , 10 , GetY());
if(nbpirate <= 0)//Si il n'y a plus de pirate alors gagné.
{
GetEngine()->StopGame();
while(input_trigger(K_EXE) == 0)
{
input_update();
ML_clear_vram();
PrintXY(13 , 28 , "Mission Reussi !!!" , 0);
ML_display_vram();
}
}
if( BateauActuelle->vie <= 0)//Si plus de vie alors perdu.
{
GetEngine()->StopGame();
while(input_trigger(K_EXE) == 0)
{
input_update();
ML_clear_vram();
PrintXY(5 , 28 , "Vous avez echoue !!!" , 0);
ML_display_vram();
}
}
}
void BoatControlPerso::AfficherMap()
{
bool end = false;//Pour Afficher la map
bool aperso = true;
int x;
int y;
const unsigned char MiniMap[]={0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x1, 0xc0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x1, 0x0, 0xc0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x1, 0xf0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1, 0x0, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xf8, 0x0, 0x0, 0x1, 0x80, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x80, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xc0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xc0, 0x0, 0x3, 0x80, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x0, 0xc0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfe, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xf8, 0x0, 0x0, 0x1, 0xc0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfb, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x1, 0x3, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x1, 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x6, 0x0, 0x0, 0x1, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x1, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x1e, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x80, 0x0, 0x3, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x80, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0x0, 0x0, 0x7, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0, 0x0, 0x7, 0x48, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xf0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xc0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xe0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe7, 0xf8, 0x0, 0x1, 0x1, 0x1f, 0x80, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x0, 0x1, 0x3, 0x1f, 0xc0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x1, 0x3, 0x1f, 0xc0, 0x0, 0x0, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xf0, 0x1, 0x1f, 0x1f, 0xc0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x1, 0x7, 0x8f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x1, 0x0, 0x83, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xf, 0xc7, 0x1, 0x0, 0x80, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xf0, 0x38, 0x1, 0x0, 0x6, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x1, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x80, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xc0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x1, 0x80, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x6, 0x0, 0x70, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x3, 0x0, 0x20, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0x0, 0x0, 0xe, 0x79, 0x86, 0x0, 0x60, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x80, 0x0, 0x1f, 0xfe, 0x0, 0x1, 0x40, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xc0, 0x0, 0x7, 0xff, 0x0, 0x1, 0x80, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0x80, 0x0, 0x0, 0xbf, 0x0, 0x0, 0xf0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x80, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0xe, 0x0, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x1, 0xf0, 0x0, 0x1, 0x0, 0x0, 0x1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x30, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0xe0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x80, 0x3, 0x80, 0x0, 0x1, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0xf0, 0x3, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x0, 0xb0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x1, };
x = GetX() * 127 / 1200;
y = 63 - ( GetY() * 63 / 1200);
while(end == false)
{
input_update();
if(input_trigger(K_EXE) || input_trigger(K_POW))end = true;
ML_clear_vram();
ML_bmp_or(MiniMap,0,0,127,63);
if(aperso == true)
{
ML_point( x , y , 1 , ML_BLACK);
aperso = false;
}
else
{
ML_point( x , y , 1 , ML_WHITE);
aperso = true;
}
ML_display_vram();
Sleep(200);
}
}
int BoatControlPerso::CheckBoat()//Fonction qui renvoie le nombre de bateaux pirate sur la map.
{
int a = 0;
for(int i = 0; i < GetEngine()->GetNbObject() ; i++)
{
if( strcmp(GetEngine()->GetListeObject()[i]->GetTag() , "Pirate") == 0)
{
a++;
}
}
return a;
}