LINUX.ORG.RU

Непрерывное передвижение в SDL2

 ,


0

3

Как следать чтобы зажав например кнопку вниз, небыло такого, что сначала передвинеться вниз, а потом замрёт, и дальше начнёт опять двигаться. Я помню в sdl можно было повторение нажатий в клавиатуре использовать, но может есть другой способ?

А подумать?
Или не вариант?

anonymous ()

Тебе не подохдит ни Си, ни SDL. Бери в зубы учебник по плюсам и гайд по cocos2d-x, может что-то и получится. Но головой думать тоже надо, хоть и меньше.

anonymous ()

Просто обрабатывать правильно надо ;-)
Как о нажатии узнаёшь? Через SDL_Event или сканкодами?

a1ur0n ()

небыло такого, что сначала передвинеться вниз

Выпил - выключи интернет.

mos ★★☆☆☆ ()

Порадуй нас кодом, а то тред унылый какой-то...

anonymous ()

На key_down установите флаг, на key_up сбросьте.

p.s. Я все продолжаю сомневаться, что вы действительно написали ту игру, которой хвалились в соседнем топике.

andreyu ★★★★★ ()
Ответ на: комментарий от anonymous

excrements.c

/* инициализация стуктуры фекалий */
void excrements_init ( )
...
/* добавить фекалии на территорию */
void add_excrements ( struct persona *p )
...
/* гниение фекалий */
void rotting ( )
...
/* описание фекалий */
void info_excrements ( int code )
...
/* осмотреть фекалии */
void see_excrements ( struct persona *p )
...
/* есть ли фекалии на территории */
void have_excrements ( struct persona *p )
...

anonymous ()
Ответ на: комментарий от u0atgKIRznY5
switch ( code ){
		/* медведь */
		case 1 : return 1; break;
		/* волк */
		case 2 : return 2; break;
		/* лиса */
		case 3 : return 3; break;
		/* рысь */
		case 4 : return 4; break;
	 	/* лось */
		case 5 : return 5; break;
		/* олень */
		case 6 : return 6; break;
		/* заяц */
		case 7 : return 7; break;

		default : break;
	}

В каком вы классе учитесь?

andreyu ★★★★★ ()
Последнее исправление: andreyu (всего исправлений: 1)
Ответ на: комментарий от u0atgKIRznY5

Если вы вы ученик младших классов, то такое простительно, со временем наберетесь опыта и научитесь думать.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Если вы про break, что он не нужен, так это я знаю, никак не портит код. А так, если возвращаемое значение, то это удобно, а что именно имеете ввиду, и какой ваш вариант тогда лучше будет?

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

Тот кусок кода можно заменить на:

return code;
/*
  1 - медведь
  2 - волк
  3 - лиса
  4 - рысь
  5 - лось
  6 - олень
  7 - заяц
*/
А еще лучше завести enum.

Nietzsche ()
Ответ на: комментарий от u0atgKIRznY5

Если вы про break, что он не нужен, так это я знаю, никак не портит код.

Это всего лишь стиль. Считаете такой стиль нормальным - ваше дело.

А так, если возвращаемое значение, то это удобно, а что именно имеете ввиду, и какой ваш вариант тогда лучше будет?

Можно так:

if (code >= 1 && code <= 7)
{
   return code;
}
return -1;

А если подумать над архитектурой игры, то можно и от условия отказаться:

return code;

А если значение code отличается от возвращаемого значения, то можно использовать таблицу:

static const int result[] = { 1, 2, 3, 4, 5, 6, 7 };
return result[code - 1];

Можно отказаться от int в пользу unsigned int. Много чего можно сделать для упрощения кода, улучшения читабельности и облегчения сопровождения.

andreyu ★★★★★ ()
Ответ на: комментарий от Nietzsche

Тот кусок кода можно заменить на:

Там у него есть default, значит или пересмотреть архитектуру, или добавить условие.

andreyu ★★★★★ ()
Ответ на: комментарий от u0atgKIRznY5

ТС, а ты случаем не автор игры «ЩИ - симулятор жестокости», котороая была хитом сезона на форуме геймдева? Что-то стиль похож

Harald ★★★★★ ()
Ответ на: комментарий от anonymous

Откровение от гуру биологии

«Фекалии белого цвета. Видимо кроме костей животному совсем поесть нечего.\n»

buddhist ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.