Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/46: Рейтинг темы: голосов - 46, средняя оценка - 4.74
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560

Покритикуйте мою игру

25.10.2013, 20:47. Показов 11095. Ответов 126
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выкладываю код своей первой игры. Она готова процентов на 90, но уже работает.
Интересно узнать мнение людей, что в ней можно улучшить, упростить и т.п,
т.к. на данный момент в моих глазах это идеал и верх совершенства и мне трудно судить

Скриншот


Cсылки на архивы для скачивания

Цитата Сообщение от dimakozyr Посмотреть сообщение
Кидаю с dll, если у кого не запускается из-за того, что dll не найдены
Beaver.7z

Цитата Сообщение от dimakozyr Посмотреть сообщение
А так вроде упрощать уже некуда
Beaver.7z


Миниатюры
Покритикуйте мою игру  
5
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2013, 20:47
Ответы с готовыми решениями:

Оцените мою 1 игру "21 card game"
Вот решил я сделать свою 1 игру и залить сюда для "конструктивной критики". Правила игры: Выигрывает тот кто наберет больше очков но не...

Покритикуйте код
Покритикуйте код, я точно знаю, что он нубовский но все же. Это моя первая программа на с++ которая делает , что то полезное и типо мой...

Покритикуйте код
Есть класс Студенты (реализован через односвязный список), хотел бы услышать критику по поводу его улучшения, если кому не лень разбираться...

126
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:42
Студворк — интернет-сервис помощи студентам
А o_DrawScene, в class SceneElements, вы так и не убрали. В методы scene_*_events(), этого класса, у вас предаются o_DrawScene из class GameCicle. Зачем тогда в нём этот объект?
1
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
26.10.2013, 18:14  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
А o_DrawScene, в class SceneElements, вы так и не убрали
Уже убрал. И убрал почти все магические числа
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 18:44
class InitSurfaces тоже вызывает большие сомнения в нужности своего существования. Класс хранит screen главного окна. Инициализация главного окна происходит один раз. В дальнейшем, из этого класса, используется только метод getScreen(). Всё это, раз относится к главному окну, логично было бы и хранить, и делать в главном классе: class GameCicle. А так, это всё, делается через объект InitSurfaces из class GameCicle. Что даёт это лишнее усложнение? По-моему, ничего.
1
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 13:40  [ТС]
Упростил все, что только мог:
- Убрал все магические числа
- Удалил ненужные классы
- Переименовал переменные, чтобы они были более информативными

Еще можно убрать windows-зависимые элементы (exit(1)), чтобы сделать код кроссплатформенным, но тогда не знаю, как сделать, чтобы открывался фейсбук и твиттер, т.к. для этого использую Windows.h

А так вроде упрощать уже некуда
Вложения
Тип файла: 7z Beaver.7z (4.58 Мб, 14 просмотров)
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,844
Записей в блоге: 4
27.10.2013, 15:44
C++
1
2
3
4
5
6
7
void SceneElements::stopGame() {
    if(getEvent() -> type == SDL_QUIT)
        exit(1);
    if(getEvent() -> type = SDL_KEYDOWN && // присвоение вместо сравнения
       getEvent() -> key.keysym.sym == SDLK_ESCAPE)
        exit(1);
}
Добавлено через 1 час 25 минут
Изврат для открытия ссылки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#if defined(_WIN32) || defined (_WIN64)
#include <windows.h>
#else
#include <unistd.h>
#endif
void openURL(const char* url) {
#if defined(_WIN32) || defined (_WIN64)
    ShellExecute(NULL, "open", url,
                           NULL, NULL, SW_SHOWNORMAL);
#else
    pid_t pid;
    if((pid=fork())==0) {
        execlp("xdg-open","",url,NULL);
        std::cerr<<"can't launch"<<std::endl;
    }
    if(pid<0)
        std::cerr<<"can't fork"<<std::endl;
#endif
}
Работает под убунту
1
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 15:48  [ТС]
Цитата Сообщение от Cra3y Посмотреть сообщение
Изврат для открытия ссылки
И правда изврат Сейчас попробуем
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,844
Записей в блоге: 4
27.10.2013, 16:09
Подправил проект для сборки под линуксом в Eclipse
Собирается, но совершенно нет реакции на события
Ubuntu 13.10 amd64
gcc 4.8.1
Eclipse Kepler с оф сайта
game.7z
1
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 16:18  [ТС]
Если нажать на фейсбук, то почему-то запускается и фейсбук и твиттер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
case 2:
#if defined(_WIN32) || defined (_WIN64)
    ShellExecute(NULL, "open", "http://facebook.com", NULL, NULL, SW_SHOWNORMAL);
#else
    pid_t pid;
    if ((pid = fork()) == 0)
    execlp("xdg-open", "open", "http://facebook.com", NULL);
#endif
 case 3:
    #if defined(_WIN32) || defined (_WIN64)
    ShellExecute(NULL, "open", "http://twitter.com", NULL, NULL, SW_SHOWNORMAL);
#else
    pid_t pid;
    if ((pid = fork()) == 0)
        execlp("xdg-open", "open", "http://twitter.com", NULL);
#endif
А еще код, который после #else тускло серый, что это означает?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.10.2013, 16:21
У меня есть огромные сомнения в том, что этот код написал ты..
Ведь ты даже не можешь понять что тут не хватает банального break; между case-ами.
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 16:24  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
У меня есть огромные сомнения в том, что этот код написал ты..
Ведь ты даже не можешь понять что тут не хватает банального break; между case-ами.
Конечно, это доказательство того, что я его украл
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.10.2013, 16:25
А что же тогда говоришь что твоей?
Цитата Сообщение от dimakozyr Посмотреть сообщение
Выкладываю код своей первой игры.
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 16:26  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
А что же тогда говоришь что твоей?
В предыдущем посте был сарказм....
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,844
Записей в блоге: 4
27.10.2013, 16:26
dimakozyr, скопируйте код из моего сообщения в начало файла и используйте функцию
C++
1
openURL("http://some.site");
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.10.2013, 16:27
Цитата Сообщение от dimakozyr Посмотреть сообщение
В предыдущем посте был сарказм....
Скорее и сарказм и правда одновременно..
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 16:42  [ТС]
Цитата Сообщение от Cra3y Посмотреть сообщение
dimakozyr, скопируйте код из моего сообщения в начало файла и используйте функцию
Код C++
openURL("http://some.site");
Заработало

Цитата Сообщение от Cra3y Посмотреть сообщение
Собирается, но совершенно нет реакции на события
Странно, в обработке событий нет ничего такого, что зависит от платформы
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,844
Записей в блоге: 4
27.10.2013, 16:43
Рабочая сборка под Убунту 64 битаgame.7z
Я пофиксил все предупреждения, в предыдущей версии немного напутал
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 16:56  [ТС]
Цитата Сообщение от Cra3y Посмотреть сообщение
Рабочая сборка под Убунту 64 битаgame.7z
Я пофиксил все предупреждения, в предыдущей версии немного напутал
Так уже работало под убунту?
Нашел только данные изменения:

//DrawScene.h
В конструкторе добавлено screen(0)

//Events.cpp
В конце метода добавлено return 1;
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 17:06  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
А что же тогда говоришь что твоей?
История коммитов в гитхабе вам о чем-нибудь говорит?
Миниатюры
Покритикуйте мою игру  
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,844
Записей в блоге: 4
27.10.2013, 17:08
Изменения по сравнению с вашей версией:
исправлены пути в #include на "SDL/SDL..."
исправлены предупреждения про неинициализированые поля классов
Добавлена функция открытия ссылок
добавлены return-ы в конец некоторых фунций(тут я намудрил в Events::buttonEvents, сначала поставил 0, а над было 1)
исправлено условие в функции stopGame();

вроде все

Сейчас работает полностью
1
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
27.10.2013, 17:10  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Cra3y Посмотреть сообщение
добавлены return-ы в конец некоторых фунций(тут я намудрил в Events::buttonEvents, сначала поставил 0, а над было 1)
А, ну тогда понятно. Ну круто, кроссплатформенность - это супер
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2013, 17:10

Пожалуйста, покритикуйте код
Стиль, логика, реализация, все что угодно. Заранее благодарен за любые замечания или советы. Делал в VS 2015 Задача 1, вывод даты...

Покритикуйте пожалуйста программу
Student.h#ifndef _STUDENT_H #define _STUDENT_H class Student { public: Student(); void del(); ...

Графы. Покритикуйте код
Нужно помощь тех кто работает и пишет хороший и красивый код. У меня построено три матрицы, подскажите как улучшить код. Где можно...

Шифратор пароля. Покритикуйте пожалуйста.
Это моя первая программка на С++, если кому не лень, натычте меня носом в ляпы. Чтобы не топтаться по граблям. :) #include...

Покритикуйте мою сборку комплектации на базе i5-2400 Sandy Bridge
Проц - Intel Core i5-2400 Sandy Bridge (3100MHz, LGA1155, L3 6144Kb) Охлад - Cooler Master V8 LGA1366/ 1156/ 1155/ 775 &amp; AM3/ AM2+/ AM2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru