void HumanClientApp::HandleMessage(Message& msg) { if (INSTRUMENT_MESSAGE_HANDLING) std::cerr << "HumanClientApp::HandleMessage(" << msg.Type() << ")\n"; switch (msg.Type()) { case Message::ERROR_MSG: m_fsm->process_event(Error(msg)); break; case Message::HOST_MP_GAME: m_fsm->process_event(HostMPGame(msg)); break; case Message::HOST_SP_GAME: m_fsm->process_event(HostSPGame(msg)); break; case Message::JOIN_GAME: m_fsm->process_event(JoinGame(msg)); break; case Message::HOST_ID: m_fsm->process_event(HostID(msg)); break; case Message::LOBBY_UPDATE: m_fsm->process_event(LobbyUpdate(msg)); break; case Message::LOBBY_CHAT: m_fsm->process_event(LobbyChat(msg)); break; case Message::SAVE_GAME_DATA_REQUEST: m_fsm->process_event(SaveGameDataRequest(msg)); break; case Message::GAME_START: m_fsm->process_event(GameStart(msg)); break; case Message::TURN_UPDATE: m_fsm->process_event(TurnUpdate(msg)); break; case Message::TURN_PARTIAL_UPDATE: m_fsm->process_event(TurnPartialUpdate(msg)); break; case Message::TURN_PROGRESS: m_fsm->process_event(TurnProgress(msg)); break; case Message::PLAYER_STATUS: m_fsm->process_event(::PlayerStatus(msg)); break; case Message::PLAYER_CHAT: m_fsm->process_event(PlayerChat(msg)); break; case Message::DIPLOMACY: m_fsm->process_event(Diplomacy(msg)); break; case Message::DIPLOMATIC_STATUS: m_fsm->process_event(DiplomaticStatusUpdate(msg)); break; case Message::END_GAME: m_fsm->process_event(::EndGame(msg)); break; default: ErrorLogger() << "HumanClientApp::HandleMessage : Received an unknown message type \"" << msg.Type() << "\"."; } }
void GameManager::AI() { CheckKey(); if (GameStart() && !GamePause() && !GameOver()) { Produce(_T("Enemy")); Produce(_T("Cloud")); Produce(_T("Angela")); CheckCollision(); MoveIt(); Fire(); TrashRecycle(); } }
int AngelFight::SetPlayerInfo( sprite_t * p,char * data, int len ) { DEBUG_LOG( "AngelFight SetPlayerInfo" ); Player* player = GetPlayer( p ); if( player ) { if( 0 != player->SetInfo( data, len ) ) { return GER_game_system_err; } } m_nDBInfoCount++; if( m_nDBInfoCount == m_nPlayerCount ) { GameStart(); } return 0; }
AngelFight::AngelFight( game_group_t* grp, Player* p1, Player* p2 ):m_bQuickGame(false), m_nLevelID(-1) { m_nWinnerTeam = -1; INIT_LIST_HEAD( &m_timer ); m_pGrp = grp; if( !m_pGrp ) { return; } m_nPlayerCount = 0; if( p1 ) { m_pTeam[0] = p1; m_pTeam[0]->SetTeamID(0); m_pPlayers[0] = p1; m_nPlayerCount++; } if( p2 ) { m_pTeam[1] = p2; m_pTeam[1]->SetTeamID(1); m_pPlayers[1] = p2; m_nPlayerCount++; } else { m_pTeam[1] = new Player(); m_pTeam[1]->SetTeamID(1); m_pPlayers[1] = m_pTeam[1]; m_pPlayers[1]->SetSprite( NULL ); } m_pPlayers[0]->SetTar( m_pPlayers[1] ); m_pPlayers[1]->SetTar( m_pPlayers[0] ); srand(time(NULL)); DEBUG_LOG("AngelFight Create Game OK"); GameStart(); }
void MenuProcessEvent(SDL_Event evt) { if (evt.type == SDL_KEYDOWN) { switch (evt.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_RETURN: // SELECT button on Dingoo case SDLK_PAUSE: // POWER UP button on Dingoo g_okQuit = 1; break; case SDLK_LCTRL: // A button on Dingoo case SDLK_LALT: // B button on Dingoo case SDLK_SPACE: GameStart(); break; default: // Do nothing break; } } }
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定 GameInit(); // 裏画面を表画面に反映, メッセージ処理, 画面クリア while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){// gpUpdateKey(); if(game == start){ GameStart(); }else if(game == playing){ GamePlaying(); }else{ GameOver(); } DrawBox(FieldLeft, FieldTop, FieldRight, FieldBottom, GetColor(255, 255, 255), FALSE); //フィールドの表示 } DxLib_End(); // DXライブラリ終了処理 return 0; }
void GameManager::Draw(CDC *cDC) { if (GameStart()) { if (GamePause() == TRUE) { Draw_Text(cDC, _T("按下回车恢复游戏"), Point(Game_Width / 2, Game_Height / 2)); } else if (GameOver() == TRUE) { Draw_Text(cDC, _T("游戏结束"), Point(Game_Width / 2, Game_Height / 2)); } else { for (int i = Index_Background; i <= Index_Angela; ++i) //Index_Cloud { CList<GameObject*, GameObject*> *now = GetList(i); POSITION pos = now->GetHeadPosition(); while (pos != NULL) { now->GetNext(pos)->Draw(cDC); } } if (God()) { Draw_Text(cDC, _T("无敌模式已开启,按下F键关闭"), Point(110, 50)); } else { Draw_Text(cDC, _T("无敌模式未开启,按下G键开启"), Point(118, 50)); } Draw_Text(cDC, _T("生命值"), PlayerHP(), Point(60, 10)); Draw_Text(cDC, _T("星星值"), PlayerStars(), Point(48, 30)); } } else { Draw_Text(cDC,_T("按下回车键开始游戏"),Point(Game_Width/2, Game_Height/2)); } }
Game::Game(GameType type, int charater) { this->type = type; level = 0; switch (type) { case SINGLE: scene = new Scene( LVL_PATH + std::to_string(level + 1) + EXT_SET, LVL_PATH + std::to_string(level + 1) + EXT_MAP, 1, 0 ); m_stack.push([this]() { GameStart(); }); m_stack.push([this]() { EnteringLevel(); }); m_stack.push([this]() { ExitingLevel(); }); break; case MULTI: break; } }
//游戏开始 bool __cdecl CTableFrameSink::OnEventGameStart() { //设置状态 m_dwJettonTime = GetTickCount(); m_pITableFrame->SetGameStatus(GS_OX_PLAY); CountDownTime(INVALID_CHAIR , TRUE); m_oContral.Reset(); // m_oContral.GetNextGamePrizeMode(); bool bAllAndroid=true; //用户状态 for (WORD i=0;i<m_wPlayerCount;i++) { //获取用户 IServerUserItem *pIServerUser=m_pITableFrame->GetServerUserItem(i); if(pIServerUser==NULL) { m_cbPlayStatus[i]=FALSE; } else { m_cbPlayStatus[i]=TRUE; if(!pIServerUser->IsAndroidUser()) { bAllAndroid=false; } } } SendBowl(INVALID_CHAIR); GameStart(); return true; }
void GuideLayer::onEnterTransitionDidFinish() { GameStart(); AddEvents(); }
LRESULT GameEngine::HandleEvent(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam) { //Route Windows messages to game engine member fucntions switch (msg) { case WM_CREATE: //Set the game window and start the game SetWindow(hWindow); GameStart(hWindow); return 0; case WM_ACTIVATE: //Activate and deactivate the game and update the Sleep status if (wParam != WA_INACTIVE) { GameActivate(hWindow); SetSleep(FALSE); } else { GameDeactivate(hWindow); SetSleep(TRUE); } return 0; case WM_PAINT: HDC hDC; PAINTSTRUCT ps; hDC = BeginPaint(hWindow, &ps); //Paint the game GamePaint(hDC); EndPaint(hWindow, &ps); return 0; case WM_LBUTTONDOWN: //Handle left mouse button press MouseButtonDown(LOWORD(lParam), HIWORD(lParam), TRUE); return 0; case WM_LBUTTONUP: //Handle left mouse button release MouseButtonUp(LOWORD(lParam), HIWORD(lParam), TRUE); return 0; case WM_RBUTTONDOWN: //Handle right mouse button press MouseButtonDown(LOWORD(lParam), HIWORD(lParam), FALSE); return 0; case WM_RBUTTONUP: //Handle right mouse button release MouseButtonUp(LOWORD(lParam), HIWORD(lParam), FALSE); return 0; case WM_MOUSEMOVE: //Handle mouse movement MouseMove(LOWORD(lParam), HIWORD(lParam)); return 0; case WM_DESTROY: //End the game and exit the application GameEnd(); PostQuitMessage(0); return 0; } return DefWindowProc(hWindow, msg, wParam, lParam); }
void NetworkManager::GameRun() { PacketType type; Network::GameStartData gameStartData; puts("게임 시작 대기중"); network.WaitForStart(&gameStartData); wprintf_s(L"매칭되었습니다. 상대방 이름: %s, 학번: %d\n", gameStartData.oppositionName, gameStartData.oppositionStudentID); bool allOver = false; while (!allOver) { GameInit(); ShipSetting(); try { GameStart(); network.GetPacketType(&type); if (type == PKT_SC_NEXT_GAME) { puts("다음 게임을 준비해주세요."); } else if (type == PKT_SC_ALL_OVER) { Network::FinalResultData finalresult; finalresult = network.GetFinalResult(); puts("모두 종료"); printf_s("승리 횟수: %d, 평균 턴 수: %.1f", finalresult.winCount, finalresult.avgTurns); allOver = true; } else { throw Network::UNEXPECTED_PACKET; } } catch (Network::Exception ex) { switch (ex) { case Network::NETWORK_ERROR: puts("네트워크에 문제가 발생했습니다."); break; case Network::SERVER_CLOSED: puts("서버와의 연결이 끊어졌습니다."); break; case Network::PARAMETER_ERROR: puts("함수의 인수가 잘못되었습니다."); break; case Network::UNEXPECTED_PACKET: puts("서버에서 잘못된 정보가 전송되었습니다."); break; default: break; } } } }
void Stage01::onEnterTransitionDidFinish() { GameStart(); }
void GameManager::CheckKey() { if (GameStart() && !GamePause() && !GameOver() ) { if (GetKey('w') || GetKey('W') || GetKey(VK_UP)) { MovePlane(Up); } if (GetKey('s') || GetKey('S') || GetKey(VK_DOWN)) { MovePlane(Down); } if (GetKey('a') || GetKey('A') || GetKey(VK_LEFT)) { MovePlane(Left); } if (GetKey('d') || GetKey('D') || GetKey(VK_RIGHT)) { MovePlane(Right); } if (!(GetKey('a') || GetKey('A') || GetKey(VK_LEFT)) && !(GetKey('d') || GetKey('D') || GetKey(VK_RIGHT)) ) { MovePlane(Stay); } //功能检测 if (GetKey('G') || GetKey('g')) { OnGod(); } if (GetKey('F') || GetKey('f')) { OffGod(); } if (GameManager::GetKey(VK_SPACE))//!GetPlayer()->Kill() { Player* p = GetPlayer(); if (p->FireStatus()) { Play(_T("Player_Shot")); Produce(_T("Weapon"), Point(p->X() + p->Width() / 2 - 3, p->Y() - 4), p->WeaponID()); } } if (GetKey('Q') || GetKey('q')) { Player* p = GetPlayer(); if (p->FireStatus()) { Produce(_T("Weapon"), Point(p->X() + p->Width() / 2 - 3, p->Y() - 4),11, GetList(Index_Enemy)); } } if (GetKey('Z') || GetKey('z')) { CList<GameObject*, GameObject*> *now = GetList(Index_Angela); POSITION pos = now->GetHeadPosition(); while (pos != NULL) { Angela* angela_ = static_cast<Angela*>(now->GetNext(pos)); if (angela_->Op() == 1) { angela_->SetX(GetPlayer()->X() - 80); angela_->SetY(GetPlayer()->Y()); angela_->Op(3, angela_->Position(), GetPlayer()->Position(), GetPlayer()->SpeedX(), GetPlayer()->SpeedY()); } else if (angela_->Op() == 2) { angela_->SetX(GetPlayer()->X() + 80); angela_->SetY(GetPlayer()->Y()); angela_->Op(3, angela_->Position(), GetPlayer()->Position(), GetPlayer()->SpeedX(), GetPlayer()->SpeedY()); } } } if (GetKey('X') || GetKey('x')) { CList<GameObject*, GameObject*> *now = GetList(Index_Angela); POSITION pos = now->GetHeadPosition(); while (pos != NULL) { Angela* angela_ = static_cast<Angela*>(now->GetNext(pos)); if (angela_->Op() == 1) { angela_->Op(1, angela_->Position(), GetPlayer()->Position(), 0,0); } else if (angela_->Op() == 2) { angela_->Op(2, angela_->Position(), GetPlayer()->Position(), 0,0); } } } if (GameManager::GetKey(VK_ESCAPE)) { PauseGame(); } } if (GameManager::GetKey(VK_RETURN)) { if (GameStart() && GamePause() ) { ResumeGame(); } else if(!GameStart()) { StartGame(); Play(_T("Mission_Begin")); } } }
bool CGameWorld::GameLogicFunc() { //更新GUI float dt = Engine->Timer_GetDelta(); m_nLastGUIID = gui->Update(dt); //如果按下的是开始,则开始游戏 if(m_nLastGUIID == ID_START_BTN) { GameStart(); } else if(m_bGameStarted && m_nLastGUIID == ID_HINT_BTN) //如果按下提示 { int ida, idb; m_pMapSearch->GetRandomHint(ida, idb); m_nSelArr[0] = ida, m_nSelArr[1] = idb; m_pElemButtonArr[ida]->m_bSelected = m_pElemButtonArr[idb]->m_bSelected = true; } else if(m_bGameStarted && m_nLastGUIID == ID_RESORT_BTN) //如果按下重列 { Resort(); } else if(m_bGameStarted && m_nLastGUIID >= ID_ELEM_GUI_START) //如果按下的是方块且游戏开始,则开始逻辑判断 { if(m_nSelArr[0] != -1 && m_nSelArr[1] != -1) { MapCoorType a, b; a.ToCoor(m_nSelArr[0]); b.ToCoor(m_nSelArr[1]); if(m_Map.Map[a.y][a.x] == m_Map.Map[b.y][b.x]) { PointPath pp(m_pMapSearch->GetPath(a.y, a.x, b.y, b.x)); if(pp.bExist) { m_thisTime = 0; Engine->Effect_Play(ElecSE); //Engine->Effect_Play(ItemBoomSE); m_bTimeNotified = false; PutAni(pp); m_Map.Map[a.y][a.x] = m_Map.Map[b.y][b.x] = -1; m_pElemButtonArr[m_nSelArr[0]]->ToLeave(); m_pElemButtonArr[m_nSelArr[1]]->ToLeave(); m_Map.nLeft -= 2; m_nSelArr[0] = m_nSelArr[1] = -1; ToSearchMap(); } else { m_nSelArr[0] = m_nSelArr[1]; m_nSelArr[1] = -1; } } else { m_nSelArr[0] = m_nSelArr[1]; m_nSelArr[1] = -1; } } } else if(m_bGameStarted) //计时 { m_thisTime += dt; //若时间到 if(m_thisTime > MAX_TIME) { m_bGameStarted = false; m_bLose = true; Engine->Effect_Play(EndSE); } if(MAX_TIME - m_thisTime < 8 && !m_bTimeNotified) { m_bTimeNotified = true; Engine->Effect_Play(LessTimeSE); } //判断赢 if(m_Map.nLeft == 0) { m_bGameStarted = false; m_bWin = true; Engine->Effect_Play(EndSE); } } else if(!m_bGameStarted) //如果游戏没有开始 { if(Engine->Channel_IsPlaying(BGMChannel)) Engine->Channel_Stop(BGMChannel); } return false; }
void GameEventManager::PlayEvent(Player * pPlayer,Cell*Room[20][20]) { if(*m_pEventPosition !=0 && Room[GetRow()][GetColumn()] !=NULL) { Room[GetRow()][GetColumn()]->Reset(); //Resets the Cell the event is in } switch(GetEvent()) { //Floor 1 case 0: GameStart(pPlayer); *m_pEventPosition=+1; break; case 1: FirstRadioContact(pPlayer); CreateNextEvent(Room); break; case 2: FindTheKey(pPlayer); CreateNextEvent(Room); break; case 3: GoToElevator(pPlayer); //There is no create here because this is the end of the room, the next room will deal with continuing it on *m_pEventPosition+=1; //So the next event will be loaded *m_pRoom1Clear = true; break; //Floor 2 case 4: YouFoundTheGenerator(pPlayer); CreateNextEvent(Room); break; case 5: FindGasoline(pPlayer); CreateNextEvent(Room); break; case 6: FindTools(pPlayer); CreateNextEvent(Room); break; case 7: FindKey(pPlayer); CreateNextEvent(Room); break; case 8: UnderAttack(pPlayer); *m_pEventPosition+=1; //So the next event will be loaded (since the Create new isnt called) *m_pRoom2Clear = true; break; case 9: GetThroughTheDoor(); *m_pEventPosition+=1; break; //Floor 3 case 10: DarkRevelations(pPlayer); CreateNextEvent(Room); break; case 11: Choices(pPlayer); break; } }
int main(int argc, char** argv) { if(argc < 3) { return(-1); } seg_key = atoi(argv[1]); sem_key = atoi(argv[2]); sop = (struct sembuf*) malloc(sizeof(struct sembuf)); sop[0].sem_flg = 0; seg_id = shmget(seg_key,sizeof(struct game_info), 0777); if(seg_id < 0) { sem_id = semget(sem_key,2, IPC_CREAT | 0600); semctl(sem_id,0,SETVAL,1); semctl(sem_id,1,SETVAL,0); seg_id = shmget(seg_key,sizeof(struct game_info), IPC_CREAT | 0777); game = shmat(seg_id,NULL,0); if(game == (struct game_info*)-1) { printf("HOST ERROR\n\n"); } buffor = game; GameStart(buffor); while(buffor->end != true) { printf("\nPlease wait\n"); sop[0].sem_num = 0; sop[0].sem_op = 0; semop(sem_id,sop,1); DisplayBoard(buffor); if(buffor->end == true) { break; } do { printf("\nMake a turn\n"); printf("X: "); scanf("%d",&x); printf("\nY: "); scanf("%d",&y); }while(!Turn(x,y,buffor)); DisplayBoard(buffor); isEnd(buffor); buffor->player=1; sop[0].sem_num = 0; sop[0].sem_op = 1; semop(sem_id,sop,1); sop[0].sem_num = 1; sop[0].sem_op = -1; semop(sem_id,sop,1); } if(buffor->end) { printf("The game has ended\n"); } sop[0].sem_num = 1; sop[0].sem_op = -1; semop(sem_id,sop,1); } else { sem_id = semget(sem_key,2, IPC_CREAT | 0600); game = shmat(seg_id,NULL,0); if(game == (struct game_info*)-1) { printf("GUEST ERROR\n\n"); } buffor = game; //GameStart(buffor); while(buffor->end != true) { printf("\nPlease wait\n"); DisplayBoard(buffor); if(buffor->end == true) { break; } do { printf("\nMake a turn\n"); printf("X: "); scanf("%d",&x); printf("\nY: "); scanf("%d",&y); }while(!Turn(x,y,buffor)); DisplayBoard(buffor); isEnd(buffor); buffor->player=0; if(buffor->end == false) printf("\nPlease wait\n"); sop[0].sem_num = 0; sop[0].sem_op = -1; semop(sem_id,sop,1); sop[0].sem_num = 1; sop[0].sem_op = 1; semop(sem_id,sop,1); sop[0].sem_num = 1; sop[0].sem_op = 0; semop(sem_id,sop,1); } if(buffor->end) { printf("The game has ended\n"); } sop[0].sem_num = 1; sop[0].sem_op = -1; semop(sem_id,sop,1); shmdt(game); shmdt(buffor); semctl(sem_id, 0, IPC_RMID); semctl(sem_id, 1, IPC_RMID); } /* game = malloc(sizeof(struct game_info)); GameStart(game); DisplayBoard(game); Turn(1,1,game); DisplayBoard(game); */ }