Вы не присваиваете в carte
в обработчике SDL_MOUSEMOTION
, вы сравниваете .
(К сожалению, любое выражение может быть выражением в C, даже если оно не имеет последствий / побочных эффектов для программы, поэтому компилятор не обязательно поможет вам найти эти проблемы.)
Ваш обработчик должен быть:
case SDL_MOUSEMOTION:
if(clic_gauche == 1)
{
carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = objet_actuel;
}
else if(clic_droit == 1)
{
carte[event.motion.x/TAILLE_BLOC][event.motion.y/TAILLE_BLOC] = VIDE;
}
break;
(обратите внимание на один =
в каждом случае if / else)
Кроме того, обратная проблема влияет на обработчик для SDL_MOUSEBUTTONDOWN
, где вы присваиваете event.button.button
, а не сравнивает его значение с константой SDL_BUTTON_RIGHT
.
Примечание: по этой причине многие разработчики занялись размещением константы в левой части сравнения, так что компилятор будет выдавать ошибку, если вы неправильно введете оператор. Например,
else if (SDL_BUTTON_RIGHT == event.button.button)