void MANAGIMENT :: battleModeC(){ int ModelHandle; //床読み込み ModelHandle = MV1LoadModel("model\\floor\\floor.mqo"); MV1SetScale(ModelHandle, VGet(250.0f, 100.0f, 250.0f)); MV1SetPosition(ModelHandle, VGet(0, 0, 0)); //弾の配列の確保 SHOT* mShot; SHOT* eShot; mShot = new SHOT(GetColor(255, 255, 0), 15.0f, 85.0f); eShot = new SHOT(GetColor(255, 0, 0), 15.0f, 85.0f); //モデルの読み込み PLAYER* p; ENEMY* e; p = new PLAYER(VGet(0, 0, 3500.0), 0.0f, mShot); e = new ENEMY(VGet(0, 0, -3500), PI, eShot); BUILDING buil; int pH; int eH; while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){ // 画面をクリア ClearDrawScreen(); //床の描画 MV1DrawModel(ModelHandle); buil.display(); //FPSの表示 fpsDisplay(); //モデルの操作,描画 //プレイヤー p->control(); p->display(); //敵 VECTOR rotateP = p->getRotate(); e->control(rotateP.y, p->getVector()); e->display(); p->doNotMove(buil.collision(p->getPos(), p->getRotate())); e->doNotMove(buil.collision(e->getPos(), e->getRotate())); mShot->collisionTarget(buil.getModelHandle()); eShot->collisionTarget(buil.getModelHandle()); p->doNotMove(p->collision(e->getPos(), e->getRotate())); e->doNotMove(e->collision(p->getPos(), p->getRotate())); pH = p->damageCheck(eShot); eH = e->damageCheck(mShot); if(pH <=0 || eH <= 0) break; mShot->collisionModel(e->getModelHandle()); eShot->collisionModel(p->getModelHandle()); //裏画面の内容を表画面に反映 ScreenFlip(); } while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){ // 画面をクリア ClearDrawScreen(); //床の描画 MV1DrawModel(ModelHandle); buil.display(); //FPSの表示 SetFontSize(16); fpsDisplay(); p->addCR(0.01f); p->display(); e->display(); SetFontSize(32); pH = p->getHp(); eH = e->getHp(); if(pH == eH) DrawFormatString(300, 350, GetColor(255, 255, 255), "Draw"); else if(pH > eH) DrawFormatString(310, 350, GetColor(255, 255, 255), "Win"); else DrawFormatString(300, 350, GetColor(255, 255, 255), "Loss"); //裏画面の内容を表画面に反映 ScreenFlip(); } SetFontSize(16); MV1DeleteModel(ModelHandle); delete mShot; delete eShot; delete p; delete e; }
inline void SPHERE :: display(void){ DrawSphere3D(VGet(x, y, z), radius, 16, col, col, TRUE); }
inline VECTOR SPHERE ::getPos(){ return VGet(x, y ,z); }
void Dungeon::DrawEvent() { DrawBillboard3D(VGet(150,50,150), 0.5f, 0.5f, 50.0, 0.0f, event_h, 0); }
void Dungeon::LoadDungeon(int floor) //行く予定の階層の情報を読み込むかつ初期化 { switch (floor) { case 1: fp = fopen("./dungeon/dungeon1/floor1/map.cns", "r"); strcpy(dungeon_name, "dungeon1/floor1"); break; case 2: fp = fopen("./dungeon/dungeon1/floor2/map.cns", "r"); strcpy(dungeon_name, "dungeon1/floor2"); break; case 3: fp = fopen("./dungeon/dungeon1/floor3/map.cns", "r"); strcpy(dungeon_name, "dungeon1/floor3"); break; } floors = floor; //GraphFilter(kabe_handle, DX_GRAPH_FILTER_GAUSS, 32, 55600); if (fp == NULL) //エラーチェック { DrawString(0, 0, "Error!", GetColor(255, 0, 0)); WaitKey(); } fscanf(fp, "%d,%d", &x_max, &z_max); for (int i = 0; i < z_max; i++) { for (int i2 = 0; i2 < x_max; i2++) { fscanf(fp, "%d,", &map_data[i][i2]); //fscanf(fp, "%c"); } } fscanf(fp, "%d,%d", &start_x, &start_z); fscanf(fp, "%d", &feel_flag); fscanf(fp, "%s", kabe_name); fscanf(fp, "%d,%d,%d", &fog_r, &fog_g, &fog_b); fscanf(fp, "%f,%f", &fog_start, &fog_goal); SetTransColor(255, 255, 255); //白を透過色に kabe_handle = LoadGraph(kabe_name); SetTransColor(0, 0, 0); //一応戻す if (kabe_handle == -1) //エラーチェック { DrawString(0, 0, "Error!", GetColor(255, 0, 0)); WaitKey(); } if (feel_flag) { int keep = 0; for (int i = 0; i < z_max / 2; i++) { for (int i2 = 0; i2 < x_max; i2++) { keep = map_data[i][i2]; map_data[i][i2] = map_data[z_max - i - 1][i2]; map_data[z_max - i - 1][i2] = keep; } } } //情報の初期化 pos_x = start_x; pos_z = start_z; state = 0; time = 0; muki = 0; nowchoose = 0; state = 0; minimap_flag = 1; //カメラの初期化 target_camera = VGet(pos_x * 100 + 50, 50, pos_z * 100 + 100); player_camera = VGet(pos_x * 100 + 50, 50, pos_z * 100); //フォグの設定 SetFogEnable(TRUE); SetFogColor(fog_r, fog_g, fog_b); SetFogStartEnd(fog_start, fog_goal); }
suken::CTransform::CTransform(){ //prePosition = position = velocity = acceralate = VGet(0,0); rotation = 0.0f; gravity = VGet(0,0); airResistance = 0 ; }