예제 #1
0
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();
}
예제 #2
0
파일: item.cpp 프로젝트: Codex-NG/rme
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;
}
예제 #3
0
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);
}
예제 #5
0
    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;
    }
예제 #6
0
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;
}
예제 #7
0
파일: Draw.cpp 프로젝트: zacaj/7drl
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();
}
예제 #8
0
파일: game.cpp 프로젝트: DavidRVi/MyZork
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";
}