MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); doorList.append(Door()); doorList.append(Door()); doorList.append(Door()); Round = 1; Correct = 0; Wrong = 0; Result = 0; Status.append("Select one door"); Status.append("Computer open one door"); Status.append("User can select one of closed doors"); Status.append("You Won!"); Status.append("You Lost!"); CurrentStatus = 0; UserSelectedDoor = -1; UpdateStatus(); on_pushButton_4_clicked(); }
Item* Item::Create(uint16_t _type, uint16_t _subtype /*= 0xFFFF*/) { if(_type == 0) return nullptr; Item* newItem = nullptr; const ItemType& it = item_db[_type]; if(it.id != 0){ if(it.isDepot()) { newItem = newd Depot(_type); } else if(it.isContainer()) { newItem = newd Container(_type); } else if(it.isTeleport()) { newItem = newd Teleport(_type); } else if(it.isDoor()) { newItem = newd Door(_type); } else if(_subtype == 0xFFFF) { if(it.isFluidContainer()) { newItem = newd Item(_type, LIQUID_NONE); } else if(it.isSplash()) { newItem = newd Item(_type, LIQUID_WATER); } else if(it.charges > 0) { newItem = newd Item(_type, it.charges); } else { newItem = newd Item(_type, 1); } } else { newItem = newd Item(_type, _subtype); } } else { newItem = newd Item(_type, _subtype); } return newItem; }
bool Room :: AddDoor(tile doorType, side s, int* x, int* y) { switch(s) { case (TOP) : (*x) = startPos.x+size/2; (*y) = startPos.y; break; case (LEFT) : (*x) = startPos.x; (*y) = startPos.y+size/2; break; case (BOTTOM) : (*x) = startPos.x+size/2; (*y) = endPos.y-1; //-1 to endPos to make up for 0 indexing break; case (RIGHT) : (*x) = endPos.x-1; (*y) = startPos.y+size/2; break; } doors[doorNo++] = Door(doorType,(*x),(*y)); return true; }
WashingMachineController::WashingMachineController(WasmachineApp * app) : app{app}, wasprogramma{nullptr}, task{0, "beep"}, interval_clock{this, 500 MS, "washing_timer"}, temp_reached_flag{this, "temp_reached"}, level_reached_flag{this, "water_reached"}, response_flag{this, "uart_response_ready"}, program_ready_flag{this, "washingprogram_ready"}, motor_done_flag{this, "motor_done"}, response_pool{"uart_response"}, response_mutex{"uart_response"}, program_pool{"washing_program"}, program_mutex{"washing_program"} { // boundaries: soap = SoapDispenser(); door = Door(); //controllers aanmaken: motorcontroller = new MotorController(this); tempcontroller = new TempController(this); watercontroller = new WaterController(this); // uart aanmaken: uart = new UART("/dev/ttyAMA0", 9600, motorcontroller, tempcontroller, watercontroller, this); webcontroller = new WebController(app, this, motorcontroller, tempcontroller, watercontroller); // nu de controllers een shared pointer geven van de uart: motorcontroller->setUartPointer(uart); tempcontroller->setUartPointer(uart); watercontroller->setUartPointer(uart); }
GameObjectCreateParameters Door::Create(_In_ const std::shared_ptr<IGameWorld>& gameWorld, _In_ const std::shared_ptr<QuakeProperties>& quakeProps) { UNREFERENCED_PARAMETER(gameWorld); GameObjectCreateParameters params; params.className = L"func_door"; params.targetName = std::wstring(L"*") + std::to_wstring(quakeProps->GetModel()); params.visuals = gameWorld->GetModel(quakeProps->GetModel()); params.physicsType = PhysicsBodyType::Kinematic; params.position = quakeProps->GetOrigin(); params.rotation = 0.0f; auto angle = quakeProps->GetAngle(); Vector3 openPosition; if (fabsf(angle - Math::ToRadians(-1.0f)) < Math::Epsilon) { openPosition = Vector3(0, 100, 0); } else if (fabsf(angle - Math::ToRadians(-2.0f)) < Math::Epsilon) { openPosition = Vector3(0, -100, 0); } else { Vector3 dir = Vector3(0, 0, 1); dir = Matrix::TransformNormal(dir, Matrix::CreateRotationY(angle)); openPosition = dir * 100; } auto door = std::shared_ptr<Door>(GDKNEW Door(openPosition)); door->_angleToStore = angle; params.controller = door; std::vector<Triangle> triangles; for (uint32_t i = 0; i < params.visuals.size(); ++i) { Collision::TriangleListFromGeometry(Content::LoadGeometryContent(params.visuals[i].geometry), Matrix::Identity(), 0, triangles); } params.collisionPrimitive = CollisionPrimitive::Create(TriangleMesh(SpacePartitionType::AabbTree, triangles)); // Add a trigger to open us std::map<std::wstring, std::wstring> triggerProps; triggerProps[L"classname"] = L"trigger_relay"; // switched from trigger_once to trigger_relay until more triggers are defined. triggerProps[L"target"] = params.targetName; triggerProps[L"model"] = std::wstring(L"*") + std::to_wstring(quakeProps->GetModel()); triggerProps[L"dontsave"] = L"true"; gameWorld->CreateObject(triggerProps); return params; }
int main(int, char**) { //initialise SDL system and the video subsystem if (SDL_Init(SDL_INIT_VIDEO) != 0) { QuitWithError("SDL_Init Error: "); } //Create a Window SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == nullptr) { QuitWithError("SDL_CreateWindow Error: "); } //SDL_SetWindowFullscreen(win, SDL_WINDOW_FULLSCREEN); Mix_Music *music = NULL; Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096) == -1; std::string basepath(SDL_GetBasePath()); music = Mix_LoadMUS((basepath + "background.wav").c_str()); Mix_PlayMusic(music, -1); Render* renderer = new Render(win); //Main loop flag bool quit = false; b2Vec2 Gravity(0.f, 0.0098f); b2World World(Gravity); string bgPath = basepath + "background22.bmp"; SDL_Surface* back = SDL_LoadBMP(bgPath.c_str()); SDL_Rect* backGroundRect = renderer->AddSurfaceToRenderer(back, 0, -600, 1.0f); Button button = Button(-200, -50, World, renderer); Door door = Door(600, -100, renderer); Level level = Level(World, renderer); Player player = Player(100, 500, World, renderer); vector<Cannon*> cannons; cannons.push_back(new Cannon(170, 350, World, renderer, 1)); cannons.push_back(new Cannon(1010, 50, World, renderer, 2)); cannons.push_back(new Cannon(170, 450, World, renderer, 1)); cannons.push_back(new Cannon(1010, 150, World, renderer, 2)); cannons.push_back(new Cannon(170, 550, World, renderer, 1)); cannons.push_back(new Cannon(1010, 250, World, renderer, 2)); MenuScene* menu = new MenuScene(1200, 100, renderer); SDL_Event e; //thread t1(&Process::run, Process((*(game)))); //Passing references //t1.detach(); //detaches from SDL mainline float prevTicks = SDL_GetTicks(); float currentTicks = SDL_GetTicks(); float FPS = 0; int fpsTimer = 0; SDL_Init(0); //game loop while (!quit) { World.Step(1 / 60.f, 6, 2); while (SDL_PollEvent(&e) != 0) { if (inputHandler.CheckInput(SDLK_ESCAPE, e)) { quit = true; } } if (menu->playBool == false && menu->quitBool == false) { renderer->DrawMenuScene(); menu->Update(renderer); } if (menu->playBool == true) { //PLAY GAME STATE int dir = player.Move(inputHandler, e); for (int i = 0; i < cannons.size(); i++) { cannons.at(i)->Update(); } SDL_Rect rec(player.spriteRect); rec.y = player.GetY(); for (int j = 0; j < cannons.size(); j++) { for (int i = 0; i < cannons.at(j)->fireballs.size(); i++) { if (cannons.at(j)->fireballs.at(i)->CheckCollision(&rec) == true) { std::cout << "Collision Detected!" << std::endl; player.Respawn(); button.setOnce(false); button.buttonBody->SetTransform(b2Vec2(880 / SCALE, 39 / SCALE), 0); door.spriteRect->x = -1000; door.spriteRect->y = -1000; player.prevPosX.clear(); player.prevPosY.clear(); player.count = 0; } } } button.Update(); if (button.CheckCollision(&rec) == true) { std::cout << "Collision Detected!" << std::endl; button.collision = true; button.spriteRect->x = -2000; button.spriteRect->y = -2000; button.buttonBody->SetTransform(b2Vec2(-2000, -2000), 0); //door.Draw(renderer); } if (door.CheckCollision(&rec) == true) { button.buttonBody->SetTransform(b2Vec2(880 / SCALE, 39/ SCALE), 0); std::cout << "Collision Detected!" << std::endl; player.Respawn(); button.setOnce(false); door.spriteRect->x = -1000; door.spriteRect->y = -1000; player.prevPosX.clear(); player.prevPosY.clear(); player.count = 0; player.Respawn(); menu->playBool = false; menu->quitBool = false; menu->backGroundRect->x = 0; menu->current = 0; button.collision = false; } if (button.collision == false) { door.DrawCage(renderer); } if (button.collision == true) { door.DrawNoCage(renderer); } int ticks = SDL_GetTicks(); int seconds = ticks / 50; int sprite = seconds % 8; renderer->Update(player.srcRect, player.dstRect, *player.LeftTexture, *player.RightTexture, *player.StandTexture, sprite, dir, player.moving, player.GetY()); player.dstRect.w = player.spriteRect.w; player.dstRect.h = player.spriteRect.h; player.dstRect.x = player.spriteRect.x; player.dstRect.y = player.spriteRect.y + 5; } if (menu->quitBool == true) { quit = true; } fpsthink(); if (fpsTimer == 60) { printf("%f\n", framespersecond); fpsTimer = 0; } fpsTimer++; } SDL_DestroyRenderer(renderer->ren); SDL_DestroyWindow(win); SDL_DestroyMutex(mutex); SDL_Quit(); return 0; }
void genRoom( Room* o,int n ) { if(o->shouldRemove) return; Room *room=NULL; int dx=o->neighbors[n].x; int dy=o->neighbors[n].y; int tries=0; start: if(tries++>50) { return; } if(room!=NULL) delete room; int makeRoom=rand()%3+rand()%2*o->isHall(); int w=rand()%10+7; int h=(((float)(rand()%800))/1000+.5)*w; if(!o->isHall() || (makeRoom==0 && !(o->w==3 && (dy==o->y || dy==o->y2)) && !(o->h==3 && (dx==o->x || dx==o->x2))))//make hall { //w-=rand()%2; //h-=rand()%2; w=min(w,7); h=min(h,7); if(dx==o->x2)//horizontal hall to right { room=new Room(dx,dy-1,w,3); if(!room->isValid()) goto start; } else if(dx==o->x)//horizontal hall to left { room=new Room(dx-w+1,dy-1,w,3); if(!room->isValid()) goto start; } else if(dy==o->y2)//vertical hall down { room=new Room(dx-1,dy,3,h); if(!room->isValid()) goto start; } else //vertical hall up { room=new Room(dx-1,dy-h+1,3,h); if(!room->isValid()) goto start; } } else//off a hall, make a room { if(dx==o->x)//room to left { room=new Room(dx-w+1,dy-rand()%(h-2)-1,w,h); if(!room->isValid()) goto start; } else if(dx==o->x2)//room to right { room=new Room(dx,dy-rand()%(h-2)-1,w,h); if(!room->isValid()) goto start; } else if(dy==o->y)//room above { room=new Room(dx-rand()%(w-2)-1,dy-h+1,w,h); if(!room->isValid()) goto start; } else //room below { room=new Room(dx-rand()%(w-2)-1,dy,w,h); if(!room->isValid()) goto start; } } size_t s=rooms.size(); Room **rs=rooms.data(); for(size_t i=0;i<s;i++,rs++) { Room *it=*rs; if((it->isHall()!=room->isHall()) && rand()%6!=0) continue; { int x=-99999; if(it->x==room->x2) x=it->x; else if(it->x2==room->x) x=it->x2; if(x!=-99999) { int y1=max(it->y,room->y); int y2=min(it->y2,room->y2); for(int y=y1+1;y<y2;y++) { it->connectTo(room,x,y,1); } } } { int y=-99999; if(it->y==room->y2) y=it->y; else if(it->y2==room->y) y=it->y2; if(y!=-99999) { int x1=max(it->x,room->x); int x2=min(it->x2,room->x2); for(int x=x1+1;x<x2;x++) { it->connectTo(room,x,y,1); } } } } //room valid rooms.push_back(room); o->neighbors[n].room=room; o->neighbors[n].close(); room->neighbors.push_back(Door(o,dx,dy,CLOSED)); //add more doors room->addDoors(); }
void Game::initializeGame() { gameActive = false; current_room = 0; player = new Character(); room_list.push_back(new HallRoom()); room_list.push_back(new Corridor()); room_list.push_back(new Room("Garden", "You think you're out of the manor because you see a bright sky \nand happy trees in the distance,\n" "but on closer look, you notice that they're painted in the walls,\n with such skill that it seems real.\n" "There is a water spring in the middle of the room with fresh water,\n" "and a door on the west")); room_list.push_back(new DiningHall()); room_list.push_back(new LockerRoom()); room_list.push_back(new Kitchen()); room_list.push_back(new Room("Entrance Hall", "You're in a wide room with a big ivory door at the east side, \nthere's a terminal that says: \"ENTER THE CODE\" and a keyboard to use.\n" "There's another door at the west side")); room_list[0]->addDoor(Door(SOUTH, 1)); room_list[0]->addDoor(Door(EAST, 2)); room_list[1]->addDoor(Door(NORTH, 0)); room_list[1]->addDoor(Door(EAST, 3)); room_list[1]->addDoor(Door(SOUTH, 4)); room_list[2]->addDoor(Door(WEST, 0)); room_list[3]->addDoor(Door(WEST, 1)); room_list[3]->addDoor(Door(SOUTH, 5)); room_list[3]->addDoor(Door(EAST, 6)); room_list[4]->addDoor(Door(NORTH, 1)); room_list[4]->addDoor(Door(EAST, 5)); room_list[5]->addDoor(Door(NORTH, 3)); room_list[5]->addDoor(Door(WEST, 4)); room_list[6]->addDoor(Door(WEST, 3)); room_list[0]->addItem(Item("note", { PICK, DROP, READ })); room_list[0]->addItem(Item("mirror", { BREAK })); room_list[1]->addItem(Item("hammer", { PICK, DROP, BREAK })); room_list[2]->addItem(Item("water", { FILL })); room_list[3]->addItem(Item("bottle", { PICK, DROP, FILL })); room_list[4]->addItem(Item("locker", { OPEN })); room_list[5]->addItem(Item("kitchen", { USE })); room_list[5]->addItem(Item("pot", { PUT })); room_list[6]->addItem(Item("terminal", { USE })); room_list[6]->addItem(Item("keyboard", { USE })); cout << "********** Welcome to MyZork, version " << VERSION << " ********** \n\n"; }