//スカイフィッシュの判定 void shot_sky() { for(int i = 0;i<maxshot;i++) { if(sky.x+1 < shot_s[i].x+28 && sky.y+10 < shot_s[i].y+20 && shot_s[i].x+5 < sky.x+63 && shot_s[i].y+2 < sky.y+22 && sky_used == true && shot_used3[i] == true) { first_shotflag = true; shot_used2[i] = false; shot_used3[i] = false; sky_used = false; sky.x = 640; sky_sound = false; score += 1500*(level+combo); StopSoundMem(se_chance); PlaySoundMem(se_sky_shot,DX_PLAYTYPE_BACK); for(int j=0;j<ball_kazu;j++) { shot_missflag[j] = false; } } } }
//音楽を流さなくてもこの関数を読み込み推奨 void PlayBGM( int Number ){ //処理を一回だけ読み込む(なお指定されたnumberの音楽がなければこの処理は前の音楽が流れ続ける) if(CheckSoundMem(Music[Number].Music)==0){ for(int i=0; i<AllBGM; i++ )StopSoundMem( Music[i].Music ) ; PlaySoundMem( Music[Number].Music, DX_PLAYTYPE_LOOP ) ; } }
void bgm_play() { int i; if (bgm_state==0) { for (i=0;i<BGM_MAX;i++) { if (CheckSoundMem(bgm_handle[i])==1) StopSoundMem(bgm_handle[i]) ; } } else if (bgm_state==1) { for (i=0;i<BGM_MAX;i++) { if (CheckSoundMem(bgm_handle[i])==1) StopSoundMem(bgm_handle[i]) ; } PlaySoundMem( bgm_handle[bgm_num] , DX_PLAYTYPE_LOOP ) ; bgm_state++; } else { bgm_state++; } }
void SoundManager::StopSE(const char *tagSE) { uint32_t handle = GetHandleId(tagSE); if(handle == INVALID_VALUE){ return; } StopSoundMem(handle); }
void Clear_Initialize() { RefreshScore(score); clear_image = GraphicHandle[4]; StopSoundMem(SoundHandle[0]); SelectCnt = 0; Menu_clear[0].image = GraphicHandle[6]; Menu_clear[1].image = GraphicHandle[7]; Menu_clear[2].image = GraphicHandle[7]; }
void Stage::NextStage() { const bool NOT_STAGE0 = nowStage != eStage::stage0; StopSoundMem(hs_bgm); // NEXT STAGE のために音楽を停止 if (NOT_STAGE0) nowStage = static_cast<eStage>(static_cast<int>(nowStage) + 1); else AllClear(); }
void music_play(){ int i; for(i=0;i<SE_MAX;i++){ if(se_flag[i]==1){ if(CheckSoundMem(sound_se[i])!=0){ if(i==8)continue; StopSoundMem(sound_se[i]); } PlaySoundMem(sound_se[i],DX_PLAYTYPE_BACK); } } }
void MusicApple::UpDate() { if(sqrt(pow(((double)mousex-x), 2)+pow(((double)mousey-y), 2)) <= hit_area){ if(!once){ PlaySoundMem(sound_h_demo, DX_PLAYTYPE_LOOP); once = true; } }else{ once = false; StopSoundMem(sound_h_demo); } }
bool MusicApple::HitJudge() { MouseInput = GetMouseInput(); if(( MouseInput & MOUSE_INPUT_LEFT ) == 1 ){ GetMousePoint(&mousex, &mousey); if(sqrt(pow(((double)mousex-x), 2)+pow(((double)mousey-y), 2)) <= hit_area){ StopSoundMem(sound_h_demo); return true; }else{ return false; } } }
void SoundManager::Update() { //! BGMのフェード処理 if(m_fadeTag != INVALID_VALUE){ int32_t volume = GetVolumeSoundMem(m_fadeTag); if(volume > 5000){ SetVolumeSoundMem(volume - VOLUME_FADE_SPEED, m_fadeTag); } else{ //! BGMを止める StopSoundMem(m_fadeTag); m_fadeTag = INVALID_VALUE; } } }
StartScene::~StartScene(){ switch(order.size()-1){ case 0: my_mission[1] = 0; break; case 1: my_mission[1] = order[order.size()-1]; break; default: break; } FileStream::write("data/data.dat", my_mission); StopSoundMem(Sound::start_scene); SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); }
void dying::startdying(){ //ptr->mstr_log->add("死んでしまった。"); ptr->mstr_log->addbigstr("YOU DIED...", "you can live eternally as zombie..."); StopSoundMem(SHandle[90]); PlaySoundMem(SHandle[7], DX_PLAYTYPE_BACK ); int x1 = (int)ptr->mplayer->x; int y1 = (int)ptr->mplayer->y; for(int i = 0; i < 30; i++){ ptr->meffect->make(x1, y1, 4, -1, -1);} SetDrawScreen( zanzou ) ; SetDrawBlendMode( DX_BLENDMODE_ALPHA , 200 ) ; for(int i = 0; i < 15; i++){ double angle = PI * randarc(); double rr = 30*randarc(); DrawRotaGraph((int)(x1+rr*cos(angle)), (int)(y1+rr*sin(angle)), randarc()*1.0+0.7, PI*randarc(), GHandle[7], 1); } SetDrawBlendMode( DX_BLENDMODE_ALPHA , 255 ) ; SetDrawScreen( DX_SCREEN_BACK ) ; }
void SoundManager::StopBGM(bool isFade) { uint32_t playBGMId = INVALID_VALUE; for(uint32_t i = 0; i < m_vBGM.size(); ++i){ if(CheckSoundMem(m_vBGM.at(i).m_soundId)){ //! BGMは一曲しかならない前提なので再生曲を見つけたら抜ける playBGMId = m_vBGM.at(i).m_soundId; break; } } if(isFade){ //! フェードがありならUpdateで処理を行う m_fadeTag = playBGMId; } else{ StopSoundMem(playBGMId); } }
/* ================================================ */ void SoundManager::PlayBGM( const char *tagBGM, const uint32_t &volume ) { uint32_t handle = GetHandleId(tagBGM); if(handle == INVALID_VALUE){ DEBUG_PRINT("【再生しようとしたBGMはロードされていない?】\n"); return; } //! 再生中でないか確認 if(!CheckSoundMem(handle)){ for(uint32_t i = 0; i < m_vBGM.size(); ++i){ //! 他のBGMはすべて止める StopSoundMem(m_vBGM.at(i).m_soundId); } SetVolumeSoundMem( volume, handle); PlaySoundMem(handle, DX_PLAYTYPE_LOOP); m_fadeTag = INVALID_VALUE; } }
//bgmのメイン処理 void bgm_main() { if(area[stage].bgm.flag==0) {//最初に読み込む load_bgm(0); SetLoopPosSoundMem(area[stage].bgm.loop_pos[0], area[stage].bgm.handle);//ループ一セット area[stage].bgm.flag=1; } if(area[stage].bgm.flag==1) {//種類に応じて再生を始める switch(area[stage].bgm.knd[0]) { case 0://再生種類0なら if(stage_count==60) {//始まって60カウント後に再生 PlaySoundMem(area[stage].bgm.handle, DX_PLAYTYPE_LOOP); area[stage].bgm.flag=2; } break; default: break; } } if(area[stage].bgm.flag==2) {//ボス出現時に読み込む if(stage_count==boss_load[stage].cnt) {//ボスが現れたら読み込む StopSoundMem(area[stage].bgm.handle); delete_bgm(); load_bgm(1); SetLoopPosSoundMem(area[stage].bgm.loop_pos[1], area[stage].bgm.handle);//ループ一セット area[stage].bgm.flag=3; } } if(area[stage].bgm.flag==3) { switch(area[stage].bgm.knd[0]) { case 0://再生種類0なら if(stage_count==boss_load[stage].cnt) {//ボスが現れたら再生 PlaySoundMem(area[stage].bgm.handle, DX_PLAYTYPE_LOOP); area[stage].bgm.flag=4; } break; default: break; } } }
//BGM再生 BGMは常時一つだけ void Sound::playbgm(std::string name){ StopSoundMem(get().bgmhandle); get().bgmhandle = get().handle(name); PlaySoundMem(get().bgmhandle, DX_PLAYTYPE_LOOP); }
//サウンドストップ void Sound::stopSound(){//サウンドストップ StopSoundMem(SoundData); }
static void BGMStop() { for(int i = RO_BGM_1; i<= RO_BGM_T; i++) { StopSoundMem(se_num[i]); } }
void Clear_Update() { if (Keyboard_Get(KEY_INPUT_RIGHT) == 1 || GamePad_Get(PAD_INPUT_RIGHT)==1) { SelectCnt = (SelectCnt + 1) % 3; } if (Keyboard_Get(KEY_INPUT_LEFT) == 1 || GamePad_Get(PAD_INPUT_LEFT)==1) { SelectCnt = (SelectCnt + 2) % 3; } if (Keyboard_Get(KEY_INPUT_RIGHT) == 1 || GamePad_Get(PAD_INPUT_RIGHT) == 1 || Keyboard_Get(KEY_INPUT_LEFT) == 1 || GamePad_Get(PAD_INPUT_LEFT)==1) { for (int i = 0; i < 3; i++) { if (i == SelectCnt) { Menu_clear[i].image = GraphicHandle[6]; PlaySoundMem(SoundHandle[1], DX_PLAYTYPE_BACK, true); } else { Menu_clear[i].image = GraphicHandle[7]; PlaySoundMem(SoundHandle[1], DX_PLAYTYPE_BACK, true); } } } if (Keyboard_Get(KEY_INPUT_Z) == 1 && SelectCnt == 0 || GamePad_Get(PAD_INPUT_1)==1&&SelectCnt==0) //りとらいが押されたらゲームシーンに移る { StopSoundMem(SoundHandle[4]); PlaySoundMem(SoundHandle[2], DX_PLAYTYPE_BACK, true); PlaySoundMem(SoundHandle[0], DX_PLAYTYPE_LOOP, true); ChangeScene(gamepre); } if (Keyboard_Get(KEY_INPUT_Z) == 1 && SelectCnt == 1 || GamePad_Get(PAD_INPUT_1)==1&&SelectCnt==1) //たいとるが押されたらタイトルシーンに移る { StopSoundMem(SoundHandle[4]); PlaySoundMem(SoundHandle[2], DX_PLAYTYPE_BACK, true); PlaySoundMem(SoundHandle[0], DX_PLAYTYPE_LOOP, true); Title_Initialize(); //タイトルの初期化処理もする ChangeScene(title); } if (Keyboard_Get(KEY_INPUT_Z) == 1 && SelectCnt == 2||GamePad_Get(PAD_INPUT_1)==1&&SelectCnt==2) //おわるが押されたら終了する { StopSoundMem(SoundHandle[4]); PlaySoundMem(SoundHandle[2], DX_PLAYTYPE_NORMAL, true); GameContinueFlag = false; //ゲームの終了処理もする } if (Keyboard_Get(KEY_INPUT_X) == 1 || GamePad_Get(PAD_INPUT_2)==1) //xキーが押されたらおわるに移動する { SelectCnt = 2; for (int i = 0; i < 3; i++) { if (i == SelectCnt) { Menu_clear[i].image = GraphicHandle[6]; PlaySoundMem(SoundHandle[1], DX_PLAYTYPE_BACK, true); } else { Menu_clear[i].image = GraphicHandle[7]; PlaySoundMem(SoundHandle[1], DX_PLAYTYPE_BACK, true); } } } }
void Enemy::PlaySE(int dist){ if(CheckSoundMem(dist)==1){StopSoundMem(dist);} PlaySoundMem(dist,DX_PLAYTYPE_BACK); }
//指定した音の再生を停止 void Sound::stopone(std::string name){ StopSoundMem(get().handle(name)); }
void Select() { DrawBox(0, 0, Screen_X, Screen_Y, Status.White, TRUE); DrawGraph(Gp.Select_X, Gp.Select_Y, Graph.Select, TRUE); DrawExtendGraph(Gp.CentrJacket_X, Gp.CentrJacket_Y, Gp.CentrJacket_X + 500, Gp.CentrJacket_Y + 500, Music[Global.TargetMusic].Jacket, TRUE); if (CheckSoundMem(Music[Global.TargetMusic].MusicData) != 1){ PlaySoundMem(Music[Global.TargetMusic].MusicData, DX_PLAYTYPE_LOOP); } if (Global.TargetMusic > 0){ DrawExtendGraph(Gp.LeftJacket_X, Gp.LeftJacket_Y, Gp.LeftJacket_X + 350, Gp.LeftJacket_Y + 350, Music[Global.TargetMusic - 1].Jacket, TRUE); } else{ DrawExtendGraph(Gp.LeftJacket_X, Gp.LeftJacket_Y, Gp.LeftJacket_X + 350, Gp.LeftJacket_Y + 350, Music[Global.MusicCnt - 1].Jacket, TRUE); } if (Global.TargetMusic < Global.MusicCnt - 1){ DrawExtendGraph(Gp.RightJacket_X, Gp.RightJacket_Y, Gp.RightJacket_X + 350, Gp.RightJacket_Y + 350, Music[Global.TargetMusic + 1].Jacket, TRUE); } else{ DrawExtendGraph(Gp.RightJacket_X, Gp.RightJacket_Y, Gp.RightJacket_X + 350, Gp.RightJacket_Y + 350, Music[0].Jacket, TRUE); } if (Global.Key[KEY_INPUT_V] == 1 || Global.Key[KEY_INPUT_F] == 1 || Global.Key[KEY_INPUT_R] == 1 || Global.Key[KEY_INPUT_4] == 1){ PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); StopSoundMem(Music[Global.TargetMusic].MusicData); if (Global.TargetMusic > 0){ Global.TargetMusic--; } else{ Global.TargetMusic = Global.MusicCnt - 1; } PlaySoundMem(Music[Global.TargetMusic].MusicData, DX_PLAYTYPE_LOOP); } if (Global.Key[KEY_INPUT_N] == 1 || Global.Key[KEY_INPUT_J] == 1 || Global.Key[KEY_INPUT_I] == 1 || Global.Key[KEY_INPUT_9] == 1){ PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); StopSoundMem(Music[Global.TargetMusic].MusicData); if (Global.TargetMusic < Global.MusicCnt - 1){ Global.TargetMusic++; } else{ Global.TargetMusic = 0; } PlaySoundMem(Music[Global.TargetMusic].MusicData, DX_PLAYTYPE_LOOP); } Global.SelectCounter++; if (Global.Key[KEY_INPUT_F1] == 1 || Global.Key[KEY_INPUT_B] == 1){ PlaySoundMem(Sound.Push, DX_PLAYTYPE_NORMAL); Flag.Select = 2; Global.SelectCounter = 0; Global.TargetDiff = 1; Global.Key[KEY_INPUT_F1] = 0; Global.Key[KEY_INPUT_B] = 0; } }
//BGM停止 void Sound::stopbgm(){ StopSoundMem(get().bgmhandle); }
//再生中の音をすべて停止 void Sound::stopall(){ for (auto &i : get().handlemap){ StopSoundMem(i.second.handle); } }
//メインループ void mymain() { if(syokaiflag == false) { highscore_syori(); syokaiflag = true; } if(set_graph == false) { load_files(); } if(logoflag == false && file_count <41) { logo(); } else if(file_count == 0) { option(); if(option_flag == false) { if(syokikaflag == true) { syokika(); syokikaflag = false; } if(game_endflag == false) { if(game_startflag == true) { wall(); } if(game_startflag == false) { StopSoundMem(end_m); start_menu(); } DrawGraph(0,0,g_wall,TRUE); move_myship(); botten(); drawshot(); if(game_startflag == true) { ball(); ball_hantei(); shot_hantei(); jiki_hantei(); sky_jouken(); skyfish(); shot_sky(); if(level == level_melo) { start_melo = false; level_melo += 5; if(melo_s == 1) { melo_s+=2; } if(melo_s == 2) { melo_s+=2; } if(melo_s == 0) { melo_s += shot_kaisuu%2+1; } if(melo_s > 5) { start_melo = true; melo_s = 5; } } if(start_melo == false) { StopSoundMem(bgm[0]); StopSoundMem(bgm[1]); StopSoundMem(bgm[2]); StopSoundMem(bgm[3]); StopSoundMem(bgm[4]); PlaySoundMem(bgm[melo_s],DX_PLAYTYPE_LOOP); start_melo = true; } } DrawGraph(0,0,g_wall_soto,TRUE); if(score >= 1999999999) { score = 1999999999; } if(score >= highscore) { highscore = score; } DrawFormatStringToHandle(200,463,GetColor(255,100,255),font_score,"HIGHSCORE: %d",highscore); DrawFormatStringToHandle(200,447,GetColor(255,100,255),font_score," SCORE: %d",score); DrawFormatStringToHandle(24,454,GetColor(255,122,0),font_lv,"Lv. %d",level); if(combo >= 4) { DrawFormatStringToHandle(500,454,GetColor(122,122,255),font_lv,"%d HIT!",combo); } } else if(game_endflag == true) { gameover(); } } get_option(); } }
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ //FullscreenMessage(); ChangeWindowMode( FALSE ); SetMainWindowText("高橋テトリスver0.04"); if (DxLib_Init() == -1) return -1; //初期化 load(); if (SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//裏画面化 exe_cnt=0; func_state=0; while(ProcessLoop()==0){//メインループ music_ini(); switch(func_state){ case 0: //初期ロード launch_ini(); mode=0; menu_ini(); func_state=1; break; case 1: //ロゴ画面 graph_logo(); break; case 2: //メニュー画面 control_menu(); graph_menu(); break; case 50: //モード選択画面 control_menu(); graph_menu(); break; case 51: //モード選択後移行画面 graph_menu(); menu_selected_cnt++; if (menu_selected_cnt>30) { first_ini(); func_state=100; } break; case 100: //ゲームメイン画面 control_main(); block_main(); cal_score(); graph_main(); stage_cnt++; if (gameover_flag==1 && CheckStatePad(-1,PAD_NUM_HOLD)==1) { result_ini(); func_state=101; } if (CheckStatePad(-1,PAD_NUM_PAUSE)==1) { pause_push_Pl=PadPushPlayer; StopSoundMem( bgm_handle[bgm_num] ) ; pause_select=0; func_state=999; } break; case 999: //ポーズ画面 control_game_pause(); graph_main(); if (CheckStatePad((all_cpu_flag==0)?pause_push_Pl:-1,PAD_NUM_HOLD)==1) { switch (pause_select) { case 0: PlaySoundMem( bgm_handle[bgm_num] , DX_PLAYTYPE_LOOP , FALSE ) ; func_state=100; break; case 1: first_ini(); func_state=100; break; case 2: menu_ini(); func_state=50; break; } } if (CheckStatePad((all_cpu_flag==0)?pause_push_Pl:-1,PAD_NUM_PAUSE)==1) { PlaySoundMem( bgm_handle[bgm_num] , DX_PLAYTYPE_LOOP , FALSE ) ; func_state=100; } break; case 101: //リザルト画面 control_result(); graph_main(); stage_cnt++; if (CheckStatePad(-1,PAD_NUM_HOLD)==1) func_state=102; break; case 102: //ゲームオーバー後選択画面 control_over_select(); graph_main(); stage_cnt++; if (CheckStatePad(-1,PAD_NUM_HOLD)==1) { switch (over_select) { case 0: first_ini(); func_state=100; break; case 1: menu_ini(); menu_select=mode; func_state=50; break; case 3: func_state=101; break; } } break; default: printfDx("error:不明なfunc_state\n"); break; } control_func_state(); exe_cnt++; music_play(); if(CheckStateKey(KEY_INPUT_ESCAPE)==1) break;//エスケープが入力されたらブレイク ScreenFlip();//裏画面反映 } DxLib_End();//DXライブラリ終了処理 return 0; }
void MusicConfirm() { DrawBox(0, 0, Screen_X, Screen_Y, Status.White, TRUE); DrawGraph(Gp.Select_X, Gp.Select_Y, Graph.Select, TRUE); DrawExtendGraph(Gp.CentrJacket_X, Gp.CentrJacket_Y, Gp.CentrJacket_X + 500, Gp.CentrJacket_Y + 500, Music[Global.TargetMusic].Jacket, TRUE); switch (Global.TargetDiff) { case 0: if (Global.SelectCounter <= 15){ DrawGraph((Screen_X / 2 - Gs.Easy_X) / 2, Gp.CentrJacket_Y + 600, Graph.Easy, TRUE); } DrawGraph((Screen_X - Gs.Normal_X) / 2, Gp.CentrJacket_Y + 600, Graph.Normal, TRUE); DrawGraph((Screen_X + Screen_X / 2 - Gs.Hard_X) / 2, Gp.CentrJacket_Y + 600, Graph.Hard, TRUE); break; case 1: DrawGraph((Screen_X / 2 - Gs.Easy_X) / 2, Gp.CentrJacket_Y + 600, Graph.Easy, TRUE); if (Global.SelectCounter <= 15){ DrawGraph((Screen_X - Gs.Normal_X) / 2, Gp.CentrJacket_Y + 600, Graph.Normal, TRUE); } DrawGraph((Screen_X + Screen_X / 2 - Gs.Hard_X) / 2, Gp.CentrJacket_Y + 600, Graph.Hard, TRUE); break; case 2: DrawGraph((Screen_X / 2 - Gs.Easy_X) / 2, Gp.CentrJacket_Y + 600, Graph.Easy, TRUE); DrawGraph((Screen_X - Gs.Normal_X) / 2, Gp.CentrJacket_Y + 600, Graph.Normal, TRUE); if (Global.SelectCounter <= 15){ DrawGraph((Screen_X + Screen_X / 2 - Gs.Hard_X) / 2, Gp.CentrJacket_Y + 600, Graph.Hard, TRUE); } break; } Global.SelectCounter++; if (Global.SelectCounter > 30){ Global.SelectCounter = 0; } if (Global.Key[KEY_INPUT_V] == 1 || Global.Key[KEY_INPUT_F] == 1 || Global.Key[KEY_INPUT_R] == 1 || Global.Key[KEY_INPUT_4] == 1){ if (Global.TargetDiff > 0) { PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); Global.TargetDiff--; } } if (Global.Key[KEY_INPUT_N] == 1 || Global.Key[KEY_INPUT_J] == 1 || Global.Key[KEY_INPUT_I] == 1 || Global.Key[KEY_INPUT_9] == 1){ if (Global.TargetDiff < 2) { PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); Global.TargetDiff++; } } if (Global.Key[KEY_INPUT_F1] == 1 || Global.Key[KEY_INPUT_B] == 1){ StopSoundMem(Music[Global.TargetMusic].MusicData); PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); Flag.Select = 0; Flag.Game = 1; Global.SelectCounter = 0; // Global.TargetDiff = 1; switch (Global.TargetDiff) { case 0: ChartRead(Music[Global.TargetMusic].MusicName, 'E'); break; case 1: ChartRead(Music[Global.TargetMusic].MusicName, 'N'); break; case 2: ChartRead(Music[Global.TargetMusic].MusicName, 'H'); break; } } }
int CItem::DrawItem(void) { int num=0; if(max<=0) { return 0; } for(int i=0;i<max;i++) { DrawGraph( item[i].x, item[i].y, item[i].Glaphic, true) ; //ここから行動パターンによる計算 switch(item[i].pattern) { case 1: item[i].x-=item[i].spead; break; case 2: item[i].y+=item[i].spead; break; case 3: item[i].x+=item[i].spead; item[i].y+=item[i].spead; break; case 4: item[i].x-=item[i].spead; item[i].y+=item[i].spead; break; case 5: item[i].x-=item[i].spead; item[i].y+=sin(((item[i].y/480)*1800)* PI / 180)*item[i].spead; break; default: item[i].x-=item[i].spead; item[i].y+=item[i].spead; break; } //ここからあたり判定 if((body->enemy_x>item[i].x&&body->enemy_x<(item[i].x+item[i].g_w))||((body->enemy_x+body->enemy_w)>item[i].x&&(body->enemy_x+body->enemy_w)<(item[i].x+item[i].g_w))) { if(debug_mode)DrawString( 250 , 300 , "XOK!" , GetColor( 255 , 255 , 255 ) ); if((body->enemy_y<item[i].y&&(body->enemy_y+body->enemy_h)>item[i].y)||(body->enemy_y<(item[i].y+item[i].g_h)&&(body->enemy_y+body->enemy_h)>(item[i].y+item[i].g_h))) { StopSoundMem( body->soud_se[5]) ; PlaySoundMem( body->soud_se[5] , DX_PLAYTYPE_BACK ) ; if(debug_mode)DrawString( 250 , 300 , "アイテム取得" , GetColor( 255 , 255 , 255 ) ); //アイテムに当たった switch(item[i].kouka) { case 1: body->enemy_hp+=30; if(body->enemy_hp>100)body->enemy_hp=100; break; case 2: body->enemy_bomb+=0.1; break; case 3: if((int)body->enemy_level<=define_maxlevel) body->enemy_level+=0.1; num=body->enemy_level/0.1; num%=10; if(num==0)PlaySoundMem( body->soud_se[2] , DX_PLAYTYPE_BACK ) ; if((int)body->enemy_level>define_maxlevel) body->enemy_level=define_maxlevel; break; case 4: body->score+=Item_Ten; break; case 5: if(body->enemy_machi<6) body->enemy_machi++; break; } DeleteAt_Item(i); } } else if(item[i].x>640||item[i].x<0||item[i].y>480||item[i].y<0) { DeleteAt_Item(i); } } return 0; }
//自機の当たり判定 void jiki_hantei() { #ifdef _DEBUG DrawBox(jiki_x+8,jiki_y+20,jiki_x+25,jiki_y+33,GetColor(255,255,255),true); #endif for(int i = 0;i<ball_kazu;i++) { if(ball_pos_x[i]-16 <jiki_x+25 && ball_pos_y[i]-16 < jiki_y+33 && jiki_x+8 < ball_pos_x[i]+16 && jiki_y+20 < ball_pos_y[i]+16) { shotflag = false; } else { count++; if(count == ball_kazu) { shotflag = true; } } if(ball_pos_x[i]-15 <jiki_x+27 && ball_pos_y[i]-15 < jiki_y+33 && jiki_x+6 < ball_pos_x[i]+15 && jiki_y+6 < ball_pos_y[i]+15 || (CheckHitKey(KEY_INPUT_ESCAPE))) { if(((change_jikiflag == false && change_ballflag[i] == false) || (change_jikiflag == true && change_ballflag[i] == true) || (shot_missflag[i] == true && c78_flag == true)) && change_ballflag2[i] == false && touch_flag[i] == false && ball_pos_x[i]-10 <jiki_x+25 && ball_pos_y[i]-10 < jiki_y+33 && jiki_x+8 < ball_pos_x[i]+10 && jiki_y+20 < ball_pos_y[i]+10 || (CheckHitKey(KEY_INPUT_ESCAPE) && game_endflag == false)) { //げーむおーばーになる DrawGraph(jiki_x,jiki_y,g_out,true); PlaySoundMem(se_down,DX_PLAYTYPE_NORMAL); StopSoundMem(bgm[melo_s]); StopSoundMem(se_chance); game_endflag = true; } if(((change_jikiflag == false && change_ballflag[i] == true) || (change_jikiflag == true && change_ballflag[i] == false))&& change_ballflag2[i] == false && touch_flag[i] == false /* && shot_missflag[i] == false */ && (CheckHitKey(KEY_INPUT_ESCAPE) == 0)) { //反射する // if(abs(ball_pos_x[i]-jiki_x) >= abs(ball_pos_y[i]-jiki_y)) // { if(jiki_x+16 > ball_pos_x[i]) { vecter[i].x = -1; jiki_x += 3; } else { vecter[i].x = 1; jiki_x -= 3; } // } // if(abs(ball_pos_x[i]-jiki_x) <= abs(ball_pos_y[i]-jiki_y)) // { vecter[i].y = -1; jiki_y +=4; // } wait_move = true; touch_flag[i] = true; change_ballflag2[i] = true; if(change_jikiflag == false) { score += (ball_kazu - ball_kazu_b+level)*100; } else { score += (ball_kazu_b+level)*100; } levelcount += 30; if(c78_flag == false){ combo++; } } timescore = 0; timescore2 = 0; } else { if(change_ballflag2[i] == true) { change_ballflag[i] = !change_ballflag[i]; PlaySoundMem(se_hansya,DX_PLAYTYPE_BACK); change_ballflag2[i] = false; } count++; if(count == ball_kazu) { timescore++; if(timescore >= 1200-level*60) { timescore2++; if(timescore2 == 12) { score += level; timescore2 = 0; } } shotflag = true; } touch_flag[i] = false; } } count = 0; }