// ==== fonctions pour charger la physique avant chaque début de level (tour + ennemis + bonus vies) void loadPhysicsNormal(){ initPhysics(); // choisir aleatoirement quels etage ont une plateforme mobile et les initialiser (etage 0 a une plateforme obligatoirement) g_Plateforme[0] = NULL; initPlateform(0,((rand()/(double)RAND_MAX)*0.8f+4.2f),0); for(int i=1; i<nb_Etages; i++){ g_Plateforme[i] = NULL; etageAvecPlateforme[i] = (int)(rand() % 2);//une chance sur 2 d'avoir une plateforme if(etageAvecPlateforme[i] ==0){ float anglePlat = ( rand()/(double)RAND_MAX ) * 0.8f + 4.2f; initPlateform(i,anglePlat,i); } } //remise à zero des ennemis for(int i=0; i<12; i++){ for(int j=0; j<21; j++){ g_Enemy[i][j] = NULL; } } createPhysicsOnMesh(nb_Etages); //creation des bonus vie for(int i=0; i<nb_BonusVie; i++){ initObjets(tilesVies[i],etagesVies[i],i); } for(int i=nb_BonusVie; i<4; i++){ g_ItemsState[i]=false; } //creation des ennemis for (int et=0; et<nb_Etages; et++){ if(et==0 || et==3 || et==6 || et==9){ for(int i=0; i<8; i++){ if(tilesEnnemis[0][i]>0){ // test pour ne pas mettre d'ennemi sur la plateforme mouvante if(!(etageAvecPlateforme[et] ==0 && (tilesEnnemis[0][i] == 10 | tilesEnnemis[0][i] == 9))){ initEnemy(tilesEnnemis[0][i],et); getInitialEnemiesPositions(g_Enemy[et][tilesEnnemis[0][i]],et,tilesEnnemis[0][i]); behaviors[et][tilesEnnemis[0][i]] = behaviorsEnnemis[0][i]; } } } }else{ int alea = (int)((rand() % (NUMBER_REPARTITIONS))); std::cerr<<"num alea = "<<alea<<std::endl; for(int i=0; i<8; i++){ if(tilesEnnemis[0][i]>0){ // test pour ne pas mettre d'ennemi sur la plateforme mouvante if(!(etageAvecPlateforme[et] ==0 && (tilesEnnemis[0][i] == 10 | tilesEnnemis[0][i] == 9))){ initEnemy(tilesEnnemis[alea][i],et); getInitialEnemiesPositions(g_Enemy[et][tilesEnnemis[alea][i]],et,tilesEnnemis[0][i]); behaviors[et][tilesEnnemis[0][i]] = behaviorsEnnemis[alea][i]; } } } } } g_Enemy[0][1] = NULL; initPlayer(125*cos(4*M_PI/40),125*sin(4*M_PI/40),16); initAnimatedMesh(); if(!menuDroite){beginTime = milliseconds();} }
bool GameEnemy::init() { if (!CCLayer::init()) return false; initEnemy(); return true; }
void Game2D:: start (){ init (); initShip (); initEnemy (); }
/** * Constructor */ E_AdjacentShooter::E_AdjacentShooter(int id, int gridX, int gridY, int groupID) { //Call parent init method initEnemy(id, gridX, gridY, groupID); //Start in wander state setState(new ES_Wander(this)); facing = DOWN; }
//TliedMap额外的初始化方法 void GameMap::extraInit() { //开启各个图层的纹理抗锯齿 enableAnitiAliasForEachLayer(); //初始化各层对象 floorLayer = this->layerNamed("floor"); wallLayer = this->layerNamed("wall"); itemLayer = this->layerNamed("item"); doorLayer = this->layerNamed("door"); initEnemy(); initObject(); }
E_ChainClown::E_ChainClown(int id, int x, int y, int groupID) { //Call parent's init function initEnemy(id, x, y, groupID); //Always wandering setState(new ES_Wander(this)); xClown=x*64+32; yClown=y*64+32; xClownVel=0.0; yClownVel=0.0; }
E_Ranged::E_Ranged(int id, int x, int y, int groupID) { //Call parent function to initialize enemy info initEnemy(id, x, y, groupID); //Start in the wander state setState(new ES_Wander(this)); timeStartedRangedAttack = 0.0; usingRangedAttack = false; hasRangedAttack = true; }
bool GChapterOneLayer::init() { if (!CCLayer::init()) { return false; } IsKillBoss=false; _mapMaxNum=3; _mapCurrentNum=1; _tileMapSizex=(float)1/2; strcpy(mapdata,"Map1_"); initPlayer(); initTileMap(); initEnemy(); return true; }
/** * Constructor */ E_Floater::E_Floater(int id, int gridX, int gridY, int groupID) { //Call parent init function initEnemy(id, gridX, gridY, groupID); //Start in the wander state setState(new ES_Wander(this)); dealsCollisionDamage = false; facing = LEFT; shadowOffset = 25.0; lastDirChange = 0.0; dirChangeDelay = 0.0; angle = 0; firstFrame = true; }
E_BombGenerator::E_BombGenerator(int id, int x, int y, int groupID) { //Call parent's init function initEnemy(id, x, y, groupID); //Doesn't use framework states currentState = NULL; bombSpawnAnimation = new hgeAnimation(*smh->resources->GetAnimation("bombSpawn")); bombSpawnAnimation->SetFrame(0); bombEyesGlowAnimation = new hgeAnimation(*smh->resources->GetAnimation("bombEyesGlow")); bombEyesGlowAnimation->SetFrame(0); bombState = BOMB_GENERATOR_WAITING; bombSize = 0.1; dealsCollisionDamage = false; smh->environment->collision[gridX][gridY] = UNWALKABLE; }
//初期化 bool GameLayer::init(int level) { if (!Layer::init()) return false; // シングルタップイベントの取得 auto touchListener = EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches(_swallowsTouches); touchListener->onTouchBegan = CC_CALLBACK_2(GameLayer::onTouchBegan, this); touchListener->onTouchMoved = CC_CALLBACK_2(GameLayer::onTouchMoved, this); touchListener->onTouchEnded = CC_CALLBACK_2(GameLayer::onTouchEnded, this); touchListener->onTouchCancelled = CC_CALLBACK_2(GameLayer::onTouchCancelled, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this); _level = level; //レベルの保持 initBackground(); //背景の初期化 initBalls(); //ボールの初期表示 initEnemy(); //敵の表示 initMembers(); //メンバーの表示 initLevelLayer(); //レベル表示レイヤーの表示 return true; }