|
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
|
|
Прошу критики игры "Змейка"20.06.2018, 15:06. Показов 6370. Ответов 85
Метки нет (Все метки)
Привет.
Недавно написал змейку. Прошу оценить и покритиковать немного,мб какие-то предложения,поправки.
0
|
|
| 20.06.2018, 15:06 | |
|
Ответы с готовыми решениями:
85
Змейка, завершение игры Прошу критики Прошу вашей критики |
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|||||||||||||
| 21.06.2018, 10:42 | |||||||||||||
Сообщение было отмечено anton3d как решение
Решение
Ну и точно ли нужно sdir делать глобальной?
. В целом код неплохой. Нормальное форматирование. Комментариев, правда, нет, но код достаточно прозрачный, так что не особо и нужны. Недостатки, которые бросились в глаза, я указал.
0
|
|||||||||||||
|
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
|
||||||
| 21.06.2018, 12:12 [ТС] | ||||||
|
Но если есть какие-то ресурсы где это объясняется доступным языком я бы прочитал,посоветуете что-нибудь? Ну и по поводу того,что переменные которые не меняются запихивать в константы и через них выражать другие,чтобы потом пол кода не лопатить-понял принял-исправлюсь. Именно то,что хотел услышать,большое спасибо)
0
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
||||||||
| 21.06.2018, 15:51 | ||||||||
|
Поэтому на своем опыте не смогу назвать хорошую литературу. Но посмотрите в шапке подфорумов по Си и С++. Самое простое - объединить в структуру
0
|
||||||||
|
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
|
|||
| 21.06.2018, 18:05 [ТС] | |||
|
0
|
|||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|
| 22.06.2018, 10:58 | |
|
Можно, но зачем? Когда захотите посмотреть какие у нее поля (вдруг название забыли) или что-то добавить - удалить, придется лезть в другой файл, искать его, открывать. Это неудобно. Пока структура маленькая и идет прямой доступ к ее полям выносить не слишком полезно.
Тут вопрос что менее неприятно, каждый раз открывать соседний файл чтобы поправить какую-то мелочь или заниматься поиском в одном большом. Обычно в отдельный файл (точнее, пару файлов, *.c/*.cpp + *.h/*.hpp) выносят конкретную библиотеку, имеющую минимум связей с остальной программой. Скажем, стандартная stdio / iostream занимается среднеуровневым вводом-выводом через файлы (более низкий уровень - системные вызовы вроде open/read/write или FileOpen/FileRead/..., более высокий - скажем, базы данных). И все! Неявных связей у нее мало, все операции достаточно независимые. И ее можно писать, отлаживать и применять независимо от первоначальной программы. Точно так же имеет смысл вынести библиотеку работы с графикой (или псевдографикой), ввод-вывод (придется объединить с графикой - если хотите, потом подробнее расскажу). Работу с двух- и трехмерными векторами, матрицами (это уже если захотите заняться 3D а стандартные библиотеки не заинтересуют). В общем, пока что разделение кода на несколько файлов принесет больше вреда чем пользы. Я бы посоветовал для начала улучшить сам код, сделать его еще более простым и наглядным. Еще раз отмечу: в плане форматирования (отступы, стили именования и т.п.) и наглядности ваш код довольно хорош, но все же указанные мной ранее недочеты стоит исправить. Это сделает его более простым для дальнейшего совершенствования. Собственно, если хотите, могу и более подробно помочь с программированием. Выкладывайте исправленный код (лучше не архивом, а копированием на форум и обрамлением тегами) и посмотрим что еще можно сделать. в порядке полета фантазии
Давно хотел разобраться с сетевым взаимодействием. Можно было бы на примере вашего кода поэкспериментировать. Кстати, вынесение работы с сетью в отдельный файл тоже имеет смысл.
0
|
|
|
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
|
|||||
| 22.06.2018, 23:31 [ТС] | |||||
|
Но лето есть лето,и я посвящу этому столько времени,сколько смогу.
0
|
|||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
||||
| 23.06.2018, 10:30 | ||||
![]()
0
|
||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|
| 26.06.2018, 15:06 | |
|
Вот простенький пример с использованием ncurses. Файл
res/prog32.exe - скомпилированный бинарник, в mingw_include - заголовочные файлы для mingw32. Не знаю какой у вас компилятор и, если это не gcc, то не знаю как к нему подключать curses. Впрочем, Гугл знает наверняка.makefile страшный, пока что смотреть его не рекомендую. Там накручена куча костылей для кросс-компиляции произвольной программы из нескольких исходников.src/portability.h - файл совместимости между некоторыми линуксовыми и виндовыми функциями. Пока что он не нужен, но может пригодиться потомsrc/main.cpp - собственно, файл исходника. Комментарии не расставлял специально. Загляните в документацию на curses, разберитесь как эти функции работают и прокомментируйте код.
0
|
|
| 27.06.2018, 11:15 | |
|
anton3d, у меня есть предложение, чтобы вы перевели свой код, например, на OpenGL. Окно можно создать с помощью SDL2. Сначала сделать в 2D, а дальше будет несложно перейти в 3D. Здесь пример и видео туториал на русском.
По поводу сети, в SDL2 есть сеть. Книга на русском по сети на SDL2: Многопользовательские игры. Разработка сетевых приложений
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
||
| 27.06.2018, 22:07 | ||
|
8Observer8, не спешите. Псевдографика все же программируется несколько проще, а потом и SDL + OpenGL можно добавить, и даже переключение графики на лету.
Лично для меня написать змейку что на ncurses, что на SDL + OpenGL, что даже на WinAPI + DirectX (хотя последний раз пользовался им лет 10 назад) не представляет особых проблем. Но в этой теме я хочу попытаться помочь ТСу улучшить качество его кода и немного потренироваться в коллективном программировании. Короче, процесс важнее результата.
0
|
||
| 28.06.2018, 14:02 | ||
|
Может даже имеет смысл потом не трогать OpenGL, а сразу делать на Vulkan, потому что недавно (в начале июня этого года) OpenGL был объявлен deprecated на Mac и iOS в пользу Metal и Vulkan. Я думаю, это большой шаг к тому, что может пройти немного времени (может несколько лет или меньше) и тогда на остальных OC он тоже рано или поздно станет deprecated.
0
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|||
| 28.06.2018, 15:17 | |||
|
Вот для еды и ландшафта использовать готовые модельки вполне можно. Но, опять-таки, не спешите. Давайте идти последовательно. Мне понравился исходный код ТСа и я хочу помочь ему подняться хотя бы до своего уровня (на самом деле это немного). Но он говорил что сейчас занят, так что наберемся терпения и надеемся, что ему не надоест. Хотя...
8Observer8, может, сами хотите поучаствовать в написании суперкрутой трехмерной змейки? Тогда можно набросать ТЗ с основными фичами... или сразу начать кодить.
0
|
|||
| 28.06.2018, 15:58 | ||
|
0
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
||
| 28.06.2018, 16:17 | ||
|
0
|
||
| 28.06.2018, 19:28 | ||||||||
|
youtube
ObjLoader.py
0
|
||||||||
|
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
|
||||
| 29.06.2018, 19:49 [ТС] | ||||
|
COKPOWEHEU,
Вчера все сдал и сейчас у меня несколько выходных,чуть позже дела еще кое-какие будут,но теперь я могу стабильно пару часов в день уделять этой теме,и приступаю уже сейчас) Добавлено через 13 минут 8Observer8, 1.Сначала я занимаюсь оптимизацией старого кода 2.Потом попробуем с товарищем COKPOWEHEU прикрутить сеть(если ему еще это интересно,а судя по всему интересно)) 3.После этого плавно переходим к вопросу переноса на 2d графику opengl/dx/vulkan я еще не до конца все тут понял,посмотрим что будет лучше 4.И тут перед вступлением в 3д я бы хотел склепать еще что нибудь по этой схеме для разогрева,какой-то тетрис или любую простенькую аркаду(чтобы чувствовать себя чуть увереннее перед 3д) 5.И тут я бы приступил к 3д. Короче-делать есть что,но я постараюсь быстренько до 3 пункта дойти и там уже начнется самое интересное)
0
|
||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|
| 29.06.2018, 23:38 | |
|
Интересное можно найти везде, в псевдографической версии тоже. Например, написание для той же змейки бота. Или просто составление кампании из ряда заготовленных карт с препятствиями, бонусами и пр. Или прикрутить консоль (да, к консольной программе!) чтобы вводить читы.
На счет 2Д и 3Д разница на самом деле невелика. В том смысле что OpenGL, DirectX и, возможно, Vulkan, не умеют работать в двумерном режиме. До DX7 (вроде) была отдельная библиотека DirectDraw, но сейчас ее, насколько я знаю, выпилили. Тем более что все что умела она, можно сделать и через трехмерку, причем иногда проще. В принципе, сейчас у нас нет четкого ТЗ и плана работы, можем заниматься тем, что интересно в данный момент, благо на ту же змейку неплохо ложится большое количество технологий и идей, а значит из нее можно вырастить неплохую игрушку. И даже если не взлетит то хоть опыта наберемся.
0
|
|
|
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
|
|||||||
| 30.06.2018, 22:38 [ТС] | |||||||
|
COKPOWEHEU,
Добавлено через 8 часов 24 минуты Прокомментировал весь код,чуть занялся константами
0
|
|||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,932
|
|||||||||||
| 01.07.2018, 08:49 | |||||||||||
Важный момент который вы упустили: комментировать надо не то КАК работает код, а ЧТО он делает. prog.exe > file.txt). Но некоторые консольные программы пытаются узнать подробности. Ваша программа запрашивает идентификатор окна эмулятора терминала, чтобы обмениваться с ним оконными сообщениями. И все это всего лишь для изменения цвета и позиции курсора.В линуксовом эмуляторе терминала это сделано более тонко и без нарушения консольной идеологии. Для управления параметрами терминала используются ESC-последовательности - непечатаемые наборы байт, передаваемые точно так же, как обычный текст. Например, printf("\033[5;32;44m AAA \033[0m\n"); выводит AAA мигающим (5) зеленым цветом (32) синем фоне (44). Обратите внимание что работа идет обычными терминальными командами. Причем команды у разных типов терминалов могут отличаться.Так вот, ncurses предназначена для кроссплатформенной работы с консолью, независимо от того какой именно используется. Если надо то используются и костыли вроде GetStdHandle, если нет - консольные команды.
0
|
|||||||||||
| 01.07.2018, 08:49 | |
|
Помогаю со студенческими работами здесь
20
Прошу вашей критики Прошу критики и рекомендаций Прошу критики от профессионалов... Прошу критики моего списка
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|