#include "..\C-Engine\CHeader.hpp" #include"BoatControl.hpp" #include "BoatControlPerso.hpp" extern "C" { #include } 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()->nbobject; i++) { if( strcmp(GetEngine()->ListeObject[i]->tag , "Pirate") == 0) { a++; } } return a; }