Проще всего просто дописать строку в конец самого exe файла, а в последнем байте - её длину. И при запуске приложения прочитать последний байт exe и далее вычислив начало и конец строки прочитать конец файла как строку. Чуть более сложный вариант в случае если надо пересобирать дистрибутив или добавить в него параметры какие-то: NSIS отлично работает под линуксом - так что можно ему передавать любые свои аргументы и делать сборку дистрибутива на лету.
Самый простой вариант: Enigma Virtual Box. Кроме того, если надо просто браузер, который показывает какой-то сайт, то есть еще такая замечательная штука, как NWJS.
Значит плохо гуглили - надо учиться. Ловите символ: •. Либо добавляете в шаблон элемента списка в виде текстового элемента либо вообще в текст самих элементов списка.
Есть такая штука, называется "Декомпозиция задачи": вот это вам и надо сделать. Разбить свою задачу на несколько подзадач меньшего размера, а потом эти задачи разбить на подзадачи еще меньше и так далее, пока не станет все понятно. Затем следует объединить задачи в какие-то модули и логические блоки. И по шагам реализовывать нужный функционал. (И в очередной раз напоминаю, как вам уже неоднократно сказали: в вашем случае следует сделать карту игрового поля и основываясь на этой карте рисовать игровое поле - вы её сделали?)
Можно один исполняемый файл при условии отсутствия дополнительных зависимостей. Обычно студия зависимости кладет рядом в тот же каталог (release/debug), но в некоторых случаях не все зависимости копируются и тогда их надо ручками добавлять в конфиги. Для распространения приложения используется такая штука, как "дистрибутив" или установщик: все требуемые файлы упаковываются в один исполняемый и далее один этот файл распространяется. При запуске установщик распаковывает все файлы в указанный в его конфиге каталог и делает разные дополнительные действия типа создания ярлыков и прочее.
Потому что эти функции делают разные вещи. Первая - меняет местами свойства разных объектов, в то время как вторая меняет местами значения локальных переменных.
Для автозапуска не нужно делать сборку ядра линукса. Достаточно поставить любимую версию линукса на малинку и далее просто настроить автозапуск вашего приложения. Про systemd уже сказали, если хочется чего-то особенного - есть и другие механизмы и особенности автозапуска. Все давно задокументировано, описано и пережевано.