Gremlin92
@Gremlin92
Целеустремленный

Как сделать разовое нажатие на клавишу?

Вообщем нужно запретить долгое нажатие на клавишу, т.е. сделать разовым
вот часть кода
bool keyboard::IsMouseButtonUp(byte key, bool bonus, Logic *Logic_,SDL_Event event_)
{
    SDL_PollEvent(&event_);
    if(event_.type == SDL_MOUSEBUTTONUP && !bonus)
	{
		GetButtonDownCoords(event_);
		if (point.y >407 && point.y<444)
		{
			if (point.x >123 && point.x<190)
				setF(false, 0);
			if (point.x >228 && point.x<296)
				setF(false, 1);
			if (point.x >330 && point.x<401)
				setF(false, 2);
			if (point.x >436 && point.x<506)
			{
				if (getF(3))
					SetBet_(GetBet_() + 1);
				setF(false, 3);
			}
			if (point.x >543 && point.x<608)
			{
				setF(false, 4);
				setdone(true);
			}
		}
		return true;
	}
	else
    if(event_.type == SDL_MOUSEBUTTONUP && bonus&&!GetAny())
		{
			GetButtonDownCoords(event_);
			if (point.y >407 && point.y<444)
			{
				if (point.x >123 && point.x<190)
					setF(false, 0);
				if (point.x >228 && point.x<296)
					setF(false, 1);
				if (point.x >330 && point.x<401)
					setF(false, 2);
				if (point.x >436 && point.x<506)
				{
					if (getF(3))
						SetBet_(GetBet_() + 1);
					setF(false, 3);
				}
				if (point.x >543 && point.x<608)
				{
					setF(false, 4);
					setdone(true);
				}
			}
			return true;
		}
    if(event_.type == SDL_MOUSEBUTTONDOWN)
    {
		return true;
    }
	return false;
}
    bool keyboard::IsMouseButtonDown(byte key,bool bonus,SDL_Event event_)
{
    SDL_PollEvent(&event_);
    if(event_.type == SDL_MOUSEBUTTONDOWN && !bonus)
	{
		GetButtonDownCoords(event_);
		if(point.y >407 && point.y<444)
		{
			if(point.x >123 && point.x<190)
				setF(true, 0);
			if(point.x >228 && point.x<296)
				setF(true, 1);
			if (point.x > 330 && point.x < 401)
			{
				setF(true, 2);
			}
			if (point.x > 436 && point.x < 506)
				setF(true, 3);
			if(point.x >543 && point.x<608)
				setF(true, 4);
		}
		return true;
	}
	else
    if(event_.type == SDL_MOUSEBUTTONDOWN && bonus&&!GetAny())
		{
			GetButtonDownCoords(event_);
			std::cout << point.x << " " << point.y<<std::endl;
			if (point.y >407 && point.y<444)
			{
				if (point.x >123 && point.x<190)
					setF(true, 0);
				if (point.x >228 && point.x<296)
					setF(true, 1);
				if (point.x >330 && point.x<401)
					setF(true, 2);
				if (point.x >436 && point.x<506)
					setF(true, 3);
				if (point.x >543 && point.x<608)
					setF(true, 4);
			}
			return true;
		}
    if(event_.type == SDL_MOUSEBUTTONDOWN)
	{
		GetButtonDownCoords(event_);
		return true;
	}
	return false;
}
    POINT keyboard::GetButtonDownCoords()
{
	point.x=event_.button.x;
	point.y=event_.button.y;
	std::cout << "Coordinats x:" << event_.button.x << "y:"<< event_.button.y << std::endl;
	return point;
}
void Scene1::ShowDrum(int countdrums,/* float*rotate_,*/ int counttextureondrums/*, int**drum,
	int credits, int win, int totalbet, const char*line, int bet, bool*lines, int**ms*/, bool*buttons)
{
	glEnable(GL_ALPHA_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glBlendFunc(GL_SRC_ALPHA,GL_ONE);
	glAlphaFunc(GL_GREATER, 0.0f); 
	//29.03.2019
	if (buttons[2]) {
		StartRotate();
	}
	Rotate();
	int k = -1;
	for (int i = 0; i<countdrums; i++)
	{
		glPushMatrix();
		glRotatef(rotate[i], 1, 0, 0);
		for (int j = 0; j<counttextureondrums; j++)
		{
			glBindTexture(GL_TEXTURE_2D, image->IndexTexture[FindTexture(vectordrum[GetMassive(++k)])]);
			EnableTexture(i, j);
		}
		glPopMatrix();
	}
	glPopMatrix();
	glDisable(GL_BLEND);
	glDisable(GL_ALPHA_TEST);
}
void Scene1::Rotate()
{
	for (int i = 0; i<CountDrum; i++)
	{
		if (startrotate[i])
		{
			if (rotate[i]<360.0f)
				rotate[i] += 5.0f;
			else
			{
				startrotate[i] = false;
				rotate[i] = 0.0f;
			}
		}
	}
}
void Scene1::StartRotate()
{
	for (int i = 0; i<CountDrum; i++)
	{
		if (startrotate[i] && rotate[i] != 0.0f)
			continue;
		startrotate[i] = true;
		rotate[i] = 0.0f;
		srand(time(0));
		GetRandomMassive();
	}
}

Нужно потому что при долгом нажатии происходит перезапуск startrotate() там где if(buttons[2]) это и есть setF(true,2)-нажали на клавишу F2 и setF(false,2)-отпустили клавишу F2,а тут код для мыши ну ладно по координатам задана позиция кнопки
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы