Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.94
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
#1

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

25.10.2013, 20:47. Просмотров 4984. Ответов 122
Метки нет (Все метки)

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

Скриншот


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

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

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


4
Миниатюры
Покритикуйте мою игру  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2013, 20:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Покритикуйте мою игру (C++):

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

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

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

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

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

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

122
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 13:41 #76
Цитата Сообщение от XTBZ Посмотреть сообщение
ну не считая подключения библиотек, на них компилятор и ругался.
Сейчас как?

Добавлено через 3 минуты
dimakozyr, если хотели мения о коде услышать, нужно было тему по-другому назвать. Не "Покритикуйте мою игру", а "Покритикуйте мой код", и готовый exe не выкладывать, а то видите, куда обсуждение ушло. Может, конечно, и это полезно узнать, но код никто не смотрит.
0
XTBZ
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 11
26.10.2013, 13:44 #77
Увы, у меня не очень много времени чтобы прописывать include в проекте...
0
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
26.10.2013, 13:49  [ТС] #78
Цитата Сообщение от alsav22 Посмотреть сообщение
dimakozyr, если хотели мения о коде услышать, нужно было тему по-другому назвать. Не "Покритикуйте мою игру", а "Покритикуйте мой код", и готовый exe не выкладывать, а то видите, куда обсуждение ушло. Может, конечно, и это полезно узнать, но код никто не смотрит.
Тоже много полезного услышал, но все-таки да, хотел больше о коде услышать
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:09 #79
Цитата Сообщение от XTBZ Посмотреть сообщение
Увы, у меня не очень много времени чтобы прописывать include в проекте...
В смысле? Два пути прописать, в свойствах проекта? Это требует много времени?

Добавлено через 19 минут
Цитата Сообщение от dimakozyr Посмотреть сообщение
но все-таки да, хотел больше о коде услышать
Хоть я что-то скажу... У вас есть class Blitting. Он совершенно лишний. Единственное его назначение - иметь метод blittingImage(), в котором вызывается функция SDL: SDL_BlitSurface(). Сделайте точно такой же приватный метод в классе DrawScene и ипользуйте его в методах drawScene_*(), или прямо в drawScene_*() пропишите действия, которые выполняются в blittingImage().
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
26.10.2013, 14:19  [ТС] #80
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас есть class Blitting. Он совершенно лишний.
И правда, переместил метод в drawScene. А есть еще что-то такое критическое что-ли?
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 14:42 #81
А o_DrawScene, в class SceneElements, вы так и не убрали. В методы scene_*_events(), этого класса, у вас предаются o_DrawScene из class GameCicle. Зачем тогда в нём этот объект?
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
26.10.2013, 18:14  [ТС] #82
Цитата Сообщение от alsav22 Посмотреть сообщение
А o_DrawScene, в class SceneElements, вы так и не убрали
Уже убрал. И убрал почти все магические числа
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 18:44 #83
class InitSurfaces тоже вызывает большие сомнения в нужности своего существования. Класс хранит screen главного окна. Инициализация главного окна происходит один раз. В дальнейшем, из этого класса, используется только метод getScreen(). Всё это, раз относится к главному окну, логично было бы и хранить, и делать в главном классе: class GameCicle. А так, это всё, делается через объект InitSurfaces из class GameCicle. Что даёт это лишнее усложнение? По-моему, ничего.
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
27.10.2013, 13:40  [ТС] #84
Упростил все, что только мог:
- Убрал все магические числа
- Удалил ненужные классы
- Переименовал переменные, чтобы они были более информативными

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

А так вроде упрощать уже некуда
0
Вложения
Тип файла: 7z Beaver.7z (4.58 Мб, 9 просмотров)
Max Dark
шКодер самоучка
1853 / 1653 / 603
Регистрация: 09.10.2013
Сообщений: 3,679
Записей в блоге: 6
Завершенные тесты: 2
27.10.2013, 15:44 #85
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
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
27.10.2013, 15:48  [ТС] #86
Цитата Сообщение от Cra3y Посмотреть сообщение
Изврат для открытия ссылки
И правда изврат Сейчас попробуем
0
Max Dark
шКодер самоучка
1853 / 1653 / 603
Регистрация: 09.10.2013
Сообщений: 3,679
Записей в блоге: 6
Завершенные тесты: 2
27.10.2013, 16:09 #87
Подправил проект для сборки под линуксом в Eclipse
Собирается, но совершенно нет реакции на события
Ubuntu 13.10 amd64
gcc 4.8.1
Eclipse Kepler с оф сайта
game.7z
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
27.10.2013, 16:18  [ТС] #88
Если нажать на фейсбук, то почему-то запускается и фейсбук и твиттер
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
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 16:21 #89
У меня есть огромные сомнения в том, что этот код написал ты..
Ведь ты даже не можешь понять что тут не хватает банального break; между case-ами.
0
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 471
27.10.2013, 16:24  [ТС] #90
Цитата Сообщение от castaway Посмотреть сообщение
У меня есть огромные сомнения в том, что этот код написал ты..
Ведь ты даже не можешь понять что тут не хватает банального break; между case-ами.
Конечно, это доказательство того, что я его украл
0
27.10.2013, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 16:24
Привет! Вот еще темы с ответами:

Покритикуйте код финкции нахождения интеграла - C++
typedef double(*tfunc)(double); double integral(double start, end, func f, double dx) { double left, right, result; for (x=start,...

Покритикуйте и помогите улучшить код моей игры - C++
Здравствуйте, недавно начал писать игру и собственно пишу потихоньку, но не в этом суть, просто я только сегодня понял, что мой код может...

испавте мою програму - C++
Здравствуйте форумчани =) Я написал программу она должна считать b=а+а, b=а+а, b=а+а. Можно сказать по формуле b=a+a но почему-то она...

Опишите пожалуйста мою программу - C++
Может кто рассказать что и как делает программа,и написать комментарии?\ Буду очень признателен #include&lt;iostream.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
90
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.