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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Palov
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
#1

Текстовая RPG в консоли по правилам D&D - C++

29.01.2013, 21:37. Просмотров 2176. Ответов 39
Метки нет (Все метки)

Доброго времени суток! Решил попробовать себя на новой, так сказать, стезе. Буду рад любой помощи в плане организации хранения информации, ведь текста будет очень много, а доступ к нему должен быть быстрым и удобным.

Возник первый вопрос:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct chparams {
                    char* Name;//Имя персонажа
                    char* Class; //Класс персонажа
                    int years; //Возраст
                    int power;//Сила
                    int agility;//Ловкость
                    int constitution;//Телосложение
                    int intellegence;//Интелект
                    int wisdom;//Мудрость
                    int charism;//Обаяние
                };
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    chparams mainp = {"Без имени","Без класса",1,1,1,1,1,1,1};
    int id = 0;
    cout << "\n Введите имя персонажа:";
    scanf("%s",mainp.Name);
    cout << mainp.Name;
    getch();
    return 0;
}
Данная проверка работоспособности показала наличие ошибки при попытке ввода, а именно нарушение прав доступа к записи. Объясните пожалуйста, что не правильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Текстовая RPG в консоли по правилам D&D (C++):

С++; компилятор; Текстовая RPG - C++
И так, пару месяцев назад я тут задавался вопросом как создать игру с графикой на С++ в VS2015. Ответа я к сожалению так и не получил, но и...

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& - C++
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Порядок вычисления: операторы «|» и «||», «&» и «&&» - C++
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга порядком вычеслений, а в C++ так же как и в Java или...

39
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
29.01.2013, 22:50 #16
Цитата Сообщение от Kgfq Посмотреть сообщение
soon, что значит UB?
Не предсказуемое поведение будет.
Цитата Сообщение от Kgfq Посмотреть сообщение
Но то, что это плюс - да плюс. Больше гибкости, больше возможностей.
Больше зависимости от платформы, компилятора, и неизвестные последствия - супер!
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:53 #17
Palov, используйте std::string.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Больше зависимости от платформы, компилятора, и неизвестные последствия - супер!
Что-то новое и восхитительное каждый раз! Это ведь замечательно!
1
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:54 #18
Croessmah, давайте не будем спорить об этом здесь. К тому же, констант не существует как типа в компьютере. Тем же ассемблером можно изменить любое значение
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:56 #19
К слову о неопределенном поведении
http://pastebin.com/qKGVnWCz
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
29.01.2013, 22:56 #20
Цитата Сообщение от Kgfq Посмотреть сообщение
Croessmah, давайте не будем спорить об этом здесь. К тому же, констант не существует как типа в компьютере.
Это для Вас. Книга "C++ для профессионалов"
Текстовая RPG в консоли по правилам D&D

Не по теме:

Тем же ассемблером можно изменить любое значение
Не лукавьте.

0
Palov
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:57  [ТС] #21
То есть править нужно в описание структуры chparams? Не знаю, как выделить память для char*. Структуру описывал сверяясь с учебником Подбельского. У него есть очень похожий пример, и в нём, судя по всему, всё работало...
Разобрался, спасибо soon.
0
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
29.01.2013, 23:01 #22
может я и ошибаюсь(если так то исправьте), но для "снятия" константности существует некрасивый хак const_cast, ну и мютабл? а подобные синтаксические ерудновины не есть хорошо.
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:02 #23
Croessmah, это я читал. Ну не слово в слово, но смысл был такой же. Тогда пример soon действителен. Но и мой-то, тоже действителен. Там строка записывается в массив, который просто помечен как конст.

Добавлено через 54 секунды
dederkay, конст_каст - это си++ style. В си использовались приведения типов
0
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
29.01.2013, 23:05 #24
Цитата Сообщение от Kgfq Посмотреть сообщение
конст_каст - это си++ style
та я вроде не говорил что это из си, или речь идет именно о нем?
Не зря в С++ тоже есть приведение типов, правда их синтаксис немного красивее, из за возможности перегрузки оператора приведения к типу.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 23:07 #25
Цитата Сообщение от dederkay Посмотреть сообщение
может я и ошибаюсь
Не ошибаетесь, но UB это все равно не отменяет.

Добавлено через 39 секунд
Цитата Сообщение от Kgfq Посмотреть сообщение
Но и мой-то, тоже действителен
По ссылке в конце предудущей страницы перейдите.
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:09 #26
dederkay, я к тому, что никакой это не хак, а просто переиначенное приведение типов.

Насчет ассемблера я не лукавлю. При желании можно залезть и в память процесса и изменить что надо. И в программу, лежащую на харде

Добавлено через 37 секунд
soon, я смотрел. Это зависит от того, что делает сам компилятор. Мой - справился.
0
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
29.01.2013, 23:09 #27
Цитата Сообщение от soon Посмотреть сообщение
Не ошибаетесь, но UB это все равно не отменяет.
А мютабл ведь не приводит к ЮБ?(когда речь идет о снятии константности, вроде и не настоящем).
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 23:11 #28
Цитата Сообщение от Kgfq Посмотреть сообщение
Насчет ассемблера я не лукавлю. При желании можно залезть и в память процесса и изменить что надо. И в программу, лежащую на харде
А вы не задумывались, что const квалификаторы пишутся в первую очередь для людей, а не для машин?

Добавлено через 1 минуту
Цитата Сообщение от dederkay Посмотреть сообщение
А мютабл ведь не приводит к ЮБ?
С mutable все ок.
0
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
29.01.2013, 23:11 #29
Цитата Сообщение от Kgfq Посмотреть сообщение
переиначенное приведение типов
Ну ведь не советуют его использовать
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 23:15 #30
soon, я же не утверждаю, что нужно снимать const налево и направо. Но возможен гипотетический случай, когда это нужно будет сделать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
public:
    A(){ a = 5; }
    int a;
};
 
 
void func(const A *obj)
{
    A *o = (A*)obj;
    int a = o->a;
    o->a = 3;
    // действия
    o->a = a;
}

Человеку важно видеть, что объект не изменится. Объект действительно не меняется в итоге. А для работы его неконстантность может быть удобна.
0
29.01.2013, 23:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 23:15
Привет! Вот еще темы с ответами:

Создание простой RPG - C++
Здравствуйте. В С++ полный 0, программирую в основном на php.Но вопрос вот в чём: вот на скрине скрин игры, и у меня вопрос: как, с помощью...

Friend ostream& operator<<(ostream& stream, CArr& obj); - C++
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void swap(int *a, int *b); void swap(int &amp;a, int &amp;b); ...

Текстовая RPG на Боро-Борланде - C++ Builder
Для того, чтобы не создавать туеву уйму тем по возникающим уж больно часто вопросам создам одну единую. Впервые обратился за помощью на...

Ликбез по правилам работы в консоли - Bash
Установил себе Kali linux на русском и соответсвенно появились у меня проблемы при работе с файлами через терминал. Пишу: cd Рабочий...


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

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

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