https://github.com/Mora64/console-2048-game
я карочь совместил все те функции в одну, можешь посмотреть сказать что-то?
весь чат не читал так что могу повторяться . По коду
1. По коду разбросаны magic numbers 4-ки, например
int board[4][4] = {{0}};
представь что тебе надо поменять размерность доски, придется по коду выискивать где ты использовал и менять и совершать опечатки . Надо делать константы и использовать их
2. Сделай также контанты
{'l','r','t','b'};//(left, right, top, bottom)
3. есть ощущение что тоже можно как то избавится от свича https://prnt.sc/iHFHi3-gwRJZ
4. методы должны начинаться с маленькой буковы
Move(copy_board, chr);
5. вот еще почему стринговые флаги не хорошо , выглядит уродски
if (flag == 'l') a = i, b = j;
if (flag == 't') a = j, b = i;
6. ну и касательно твоей оптимизации, методы ты снес в один, но также есть ощущение что можно их больше оптимизировать ) потому как вижу много повторяемого кода в телах условий
if(flag == 'r' || flag == 'b')
и
if(flag == 'l' || flag == 't')