void* ProducerThread(void* data) { int i; for (i = 0; i < 16; ++i) { printf("producer: %d\n", i); Produce(&products, i); } Produce(&products, END_FLAG); return NULL; }
void GameManager::AI() { CheckKey(); if (GameStart() && !GamePause() && !GameOver()) { Produce(_T("Enemy")); Produce(_T("Cloud")); Produce(_T("Angela")); CheckCollision(); MoveIt(); Fire(); TrashRecycle(); } }
ImagesetPtr ImagesetManager::Make(System& sys, xml::node* imgset) { if(imgset) { std::string name = (*imgset)["Name"].value(); return Produce(sys, name, imgset); } return ImagesetPtr(); }
void NFCSLGBuildingModule::OnSLGClienCreateItem(const NFSOCK nSockIndex, const int nMsgID, const char* msg, const uint32_t nLen) { CLIENT_MSG_PROCESS(nSockIndex, nMsgID, msg, nLen, NFMsg::ReqCreateItem); const NFGUID& xBuilID = NFINetModule::PBToNF(xMsg.object_guid()); const std::string& strItemID = xMsg.config_id(); const int nCount = xMsg.count(); Produce(nPlayerID, xBuilID, strItemID, nCount); }
//生产者 DWORD WINAPI Producer(LPVOID lpPara) { while(g_continue){ WaitForSingleObject(g_hFullSemaphore,INFINITE); WaitForSingleObject(g_hMutex,INFINITE); Produce(); Append(); Sleep(1500); ReleaseMutex(g_hMutex); ReleaseSemaphore(g_hEmptySemaphore,1,NULL); } return 0; }
DWORD WINAPI Producer(LPVOID lpParam) { while (!g_bEndRender) { WaitForSingleObject(g_hFullSemaphore, INFINITE); WaitForSingleObject(g_hMutex, INFINITE); Produce(); ReleaseMutex(g_hMutex); ReleaseSemaphore(g_hEmptySemaphore, 1, NULL); } return 0 ; }
bool CTestSemaphoreApp::Thread_Run(int idx) { // One thread produces, next - consumes; // production is fast, consumption is slow (because of Sleep). // NOTE: In order to run correctly the number of threads MUST be even! xncbi_SetValidateAction(eValidate_Throw); if ( idx % 2 != 1) { Produce((idx/2)%3 + 1); } else { Consume((idx/2)%3 + 1); } return true; }
void GameManager::Fire() { for (int i = Index_Enemy; i <= Index_Angela; i++) { if (i == Index_Bomb || i == Index_Explosion || i == Index_Tool || i == Index_Cloud) continue; CList<GameObject*, GameObject*> *now = GetList(i); POSITION pos = now->GetHeadPosition(); while (pos != NULL) { Plane* plane_ = static_cast<Plane*>(now->GetNext(pos)); if (plane_->FireStatus()) { Produce(_T("Weapon"), Point(plane_->X() + plane_->Width() / 4 + 8, plane_->Y() + plane_->Height() / 4 + 8), plane_->WeaponID()); } } } }
ImagesetPtr ImagesetManager::MakeEmpty(System& sys, const std::string& name) { return Produce(sys, name, 0); }
ImagesetPtr ImagesetManager::create(System& sys, xml::node& imgset) { std::string name = imgset["id"].value(); return Produce(sys, name, imgset); }
ImagesetPtr ImagesetManager::createEmpty(System& sys, const std::string& name) { return Produce(sys, name, xml::node()); }
void GameManager::InitGame() { Produce(_T("Background")); Produce(_T("Player")); Play(_T("BGM")); }
void GameManager::Collision(FlyObject* objectA, FlyObject* objectB) { int type_ = 0; if (objectA->Name() == "Player" || objectB->Name() == "Player") { if (objectB->Name() == "Player"){ std::swap(objectA, objectB); } Player* play = static_cast<Player*>(objectA); if (objectB->Name() == "EnemyBomb") { Weapon *bomb = static_cast<Weapon*>(objectB); Produce(_T("Explosion"), Point(objectB->X() + objectB->Width() / 2, objectB->Y() + objectB->Height() / 2)); if (!God()){ play->SubHP(bomb->Power());} if (play->HP() <= 0){ //play->Killed(); OverGame();} bomb->Killed(); } if (objectB->Name() == "Enemy") { Plane *enemy = static_cast<Plane *>(objectB); if (enemy->DetailedName() == "Box" || enemy->DetailedName() == "BossLeft" || enemy->DetailedName() == "BossMid" || enemy->DetailedName() == "BossRight") return; Produce(_T("Explosion"), Point(objectB->X() + objectB->Width() / 2, objectB->Y() + objectB->Height() / 2)); if (!God()) play->SubHP(1); if (play->HP() <= 0) { //play->Killed(); OverGame(); } if (enemy->DetailedName() == "EnemyPrimaryPlane") { factory_.ProduceTool(5, *(enemy->Position()), enemy->DetailedName()); } else if (enemy->DetailedName() == "PropellerPlane") { factory_.ProduceTool(6, *(enemy->Position()), enemy->DetailedName()); } else if (enemy->DetailedName() == "Tank") { factory_.ProduceTool(7, *(enemy->Position()), enemy->DetailedName()); } else if (enemy->DetailedName() == "Box") { factory_.ProduceTool(Rand(5, 7), *(enemy->Position()), enemy->DetailedName()); } enemy->Killed(); } if (objectB->Name() == "Tool") { Tool *tool = static_cast<Tool *>(objectB); play->AddTool(tool->DetailedName(),tool->EnemyName(),tool->AddMark()); tool->DestroyTool(); } } else if (objectA->Name() == "PlayerBomb" || objectB->Name() == "PlayerBomb") { if (objectB->Name() == "PlayerBomb") { std::swap(objectA,objectB); } Weapon* bomb = static_cast<Weapon*>(objectA); if (objectB->Name() == "Enemy") { Plane* enemy = static_cast<Plane*>(objectB); bomb->Killed(); enemy->SubHP(bomb->Power()); if (enemy->HP() <= 0) { Produce(_T("Explosion"),Point(objectB->X() + objectB->Width()/2, objectB->Y() + objectB->Height() / 2)); if (enemy->DetailedName() == "EnemyPrimaryPlane") { factory_.ProduceTool(5, *(enemy->Position()),enemy->DetailedName()); } else if (enemy->DetailedName() == "PropellerPlane") { factory_.ProduceTool(6, *(enemy->Position()), enemy->DetailedName()); } else if (enemy->DetailedName() == "Tank") { factory_.ProduceTool(7, *(enemy->Position()), enemy->DetailedName()); } else if (enemy->DetailedName() == "Box") { factory_.ProduceTool(Rand(5,7), *(enemy->Position()), enemy->DetailedName()); } enemy->Killed(); } } } }
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")); } } }