Форум программистов, компьютерный форум CyberForum.ru

Создание игр в текстовом режиме - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите библиотеку GUI, реализующую графический интерфейс http://www.cyberforum.ru/cpp-beginners/thread1098407.html
Доброй ночи. Подскажите, пожалуйста, лёгкую и простую библиотеку реализующую графический интерфейс. Сам интерфейс примитивен - пара кнопок и диалоговых окон. Это всё, что мне нужно от библиотеки. ОС - Windows, компилятор - VC++. Спасибо.
C++ Выведение на экран фигуры, которая изображает множество точек, которые удовлетворяют неравенству Исправьте, пожалуйста, ошибки. Задача. Выведение на экран фигуры, которая изображает множество точек, которые удовлетворяют неравенство: x^2+y^2<=2(abs(x)+abs(y)) #include <math.h> #include <bios.h> int x0, y0; void main() int x, y; int gdriver - DETECT, gmode, errorcode; initgraph (&gdriver, &gmode, "g:\\bc31\\bg1"); http://www.cyberforum.ru/cpp-beginners/thread1098406.html
C++ Как разрешить ввод только чисел типа int?
Доброго времени суток. Подскажите, пожалуйста, как разрешить ввод только чисел типа int. Преподаватель очень любит заваливать на этом, введя например букву, там где нужно число. Очень важно, чтобы код был негромоздким. #include <iostream> #include <cstdio> #include <conio.h> using namespace std; int roman (int,int,char); int main()
Некорректно работает вывод вещественных чисел в массиве C++
#include "stdafx.h" #include <conio.h> #include <stdio.h> void ReadArray(double a)
C++ Вывести информацию в виде таблицы http://www.cyberforum.ru/cpp-beginners/thread1098387.html
помогите, после введения данных , в конце программами должна выводится инф. в виде таблицы #include <stdio.h> #include <iostream> #include <stdlib.h> #include <time.h> #include <conio.h> #include <locale.h> using namespace std; int main (){
C++ Добавить в конец программы строчку cout << "Your number is", не задев цикл Здравстуйте! Подскажите, пожалуйста, как добавить в конец программы cout << "Your number is" не задев цикл. #include <iostream> #include <cstdio> #include <conio.h> using namespace std; int roman (int,int,char); int main() { подробнее

Показать сообщение отдельно
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.03.2014, 08:20     Создание игр в текстовом режиме
Было бы желание, а разнести можно за каждую строчку... Я не уверен, имеет ли смысл расписывать или пусть автор дойдет своим умом.

Пробежимся раз по интерфейсам и местами по реализации. Дисклеймер: все сказанное - не прямое руководство к действию.

Посмотрим на интерфейс класса Matrix. В паблике у нас два конструктора: с параметрами и без.
Внимание, вопрос: какой смысл автор вкладывает в конструктор матрицы без параметров? Что должно произойти? Создаться матрица размера 0х0? Как потом с ней работать? По факту выясняется, что этот конструктор не делает ничего. видимо, его и быть не должно.

Смысл конструктора с двумя параметрами интуитивно понятен - создание матрицы размера rows*cols. Забегая вперед, реализация конструктора не соответствует ожиданиям.

В публичном доступе также есть данные: собственно, сама матрица и ее размерности. Причем ни о какой инкапсуляции и речи нет - пользователю навязывается тот факт, что матрица реализована как двумерный массив, что, кстати, может быть и иначе. Более того, массив этот всегда фиксированного размера.
Размерности матрицы также ничем не защищены и могут быть изменены независимо. Т.е. где-то в коде я могу поменять, например, высоту, а в другом месте - вылететь за пределы массива при обходе матрицы.

В общем, интерфейс неудобен, не является универсальным и вообще потенциально опасен в использовании.

Еще интересности в приватной части: некая функция Mod_. Комментарий сообщает, что это проверка четности. Тут надо вспомнить, что есть оператор %, которым можно проверить четность. И вообще: какое отношение обычная операция с двумя целыми числами имеет к матрице?

Посмотрим теперь на реализацию.
Реализация конструктора, как я уже заметил выше, дикая. Внезапно конструктор устанавливает цвета в терминале, выводит сообщения в случае ошибок и, что еще круче, в случае ошибки вызывает exit().
Разделите данные и представление. Матрица - это всего лишь контейнер объектов, никакого отношения к представлению он не имеет. Более того, в нем не должны фигурировать никакие ограничения по размеру матрицы относительно размера окна.

В общем, тут две сущности слились в одну: сама матрица и ее представление в окне.

Метод Mod_ делает странное и не соответствующее комментарию. Проверяет он делимость первого аргумента на второй. Как я уже говорил, тут не нужны циклы, а есть оператор %.

Еще у класса есть производный - MatrixChild, который не расширяет функционал базового ничем. Следовательно, и быть его не должно.

Класс Cursor.
Аналогичная проблема с инкапсуляцией - координаты открыты, доступны для изменения.
Главная неожиданность - курсор ссылается на матрицу. Все ради того, чтобы нельзя было сместить его за пределы матрицы. Опять же странная логика. Матрица - контейнер, не важно как она отображается. Курсор - пассивная структура со своей позицией. Мне видится, что явно не ему принимать решение куда двигаться можно, а куда нельзя.

Ну а класс Map - это просто свалка. Тут и редактирование, и доступ к файловой системе, все вперемешку.
Миниатюры
Создание игр в текстовом режиме  
 
Текущее время: 14:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru