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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Palov
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 21:37     Текстовая RPG в консоли по правилам D&D #1
Доброго времени суток! Решил попробовать себя на новой, так сказать, стезе. Буду рад любой помощи в плане организации хранения информации, ведь текста будет очень много, а доступ к нему должен быть быстрым и удобным.

Возник первый вопрос:
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;
}
Данная проверка работоспособности показала наличие ошибки при попытке ввода, а именно нарушение прав доступа к записи. Объясните пожалуйста, что не правильно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 21:37     Текстовая RPG в консоли по правилам D&D
Посмотрите здесь:

Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) C++
C++ Клавиши F1-F12 в консоли, и работа с мышкой в консоли
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& C++
C++ Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Создание простой RPG C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
29.01.2013, 22:17     Текстовая RPG в консоли по правилам D&D #2
Цитата Сообщение от Palov Посмотреть сообщение
cout << "\n Введите имя персонажа:"; scanf("%s",mainp.Name);
Что это такое? Два языка мешать в одной программе не желательно
Palov
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:20  [ТС]     Текстовая RPG в консоли по правилам D&D #3
cin >> mainp.Name; Даёт точно такой же результат, так что я сомневаюсь, что дело в этом.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:22     Текстовая RPG в консоли по правилам D&D #4
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    char* str = "Hello";
    std::cin >> str;
    return 0;
}
(Это подсказка)
Palov
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:29  [ТС]     Текстовая RPG в консоли по правилам D&D #5
using namespace std у меня отписано, если вы об этом. Спасибо.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:34     Текстовая RPG в консоли по правилам D&D #6
Цитата Сообщение от Palov Посмотреть сообщение
using namespace std у меня отписано, если вы об этом. Спасибо.
Ни в коем случае. Дабы не отвлекать на мелочи
C++
1
2
3
4
5
6
int main()
{
    char* str = "Hello";
    *str = 'h';
    return 0;
}
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:36     Текстовая RPG в консоли по правилам D&D #7
soon, кстати интересно, а что произойдет в вашем примере. str указывает на константную строку. По идее элемент этой строки можно изменить.

Добавлено через 55 секунд
Palov, хорошо, скажу проще. У вас есть коробка, вы хотите в нее положить что-то. А если нет коробки, то куда вы кладете это же самое? Так вот память в этом случае выступает в роли коробки. А вы ее не выделили.

Добавлено через 26 секунд
И если хочется быстрого результата без понимания си, копайте в сторону std::string
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:40     Текстовая RPG в консоли по правилам D&D #8
Цитата Сообщение от Kgfq Посмотреть сообщение
soon, кстати интересно, а что произойдет в вашем примере. str указывает на константную строку. По идее элемент этой строки можно изменить.
Если она костантнта, то с какой стати?
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:42     Текстовая RPG в консоли по правилам D&D #9
soon, ну смотри:

C++
1
2
3
const char constStr[16] = "qwe";
char *str = (char*)constStr;
*str = 'y';
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:43     Текстовая RPG в консоли по правилам D&D #10
Цитата Сообщение от Kgfq Посмотреть сообщение
*str = (char*)constStr;
А вот за такое не грех и руки оторвать.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:44     Текстовая RPG в консоли по правилам D&D #11
формально str - указатель на char, а не на const char, поэтому по нему менять можно

Добавлено через 30 секунд
soon, это одно из достоинств си. Так что руки вы зря хотите оторвать
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:46     Текстовая RPG в консоли по правилам D&D #12
Kgfq, запись по константному указателю - UB. Вы можете сколь угодно убеждать меня, что снятие константности есть true way, но не пудрите мозги новичкам.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:47     Текстовая RPG в консоли по правилам D&D #13
soon, что значит UB?

Я не говорю, что это безопасно. Но то, что это плюс - да плюс. Больше гибкости, больше возможностей.

Добавлено через 21 секунду
Те, кому нравятся безопасность кодят, как правило, на c#
Palov
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:49  [ТС]     Текстовая RPG в консоли по правилам D&D #14
Если честно, не понял.
Ясно, что на выходе результаты получаются разные, то есть в данном случае мы заменим только первую букву на h. Пробовал добавить * к mainpc.Name в своём коде, но это ничегого не изменило. Объясните пожалуйста.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:50     Текстовая RPG в консоли по правилам D&D #15
Undefined behavior - неопределенное поведение.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
29.01.2013, 22:50     Текстовая RPG в консоли по правилам D&D #16
Цитата Сообщение от Kgfq Посмотреть сообщение
soon, что значит UB?
Не предсказуемое поведение будет.
Цитата Сообщение от Kgfq Посмотреть сообщение
Но то, что это плюс - да плюс. Больше гибкости, больше возможностей.
Больше зависимости от платформы, компилятора, и неизвестные последствия - супер!
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:53     Текстовая RPG в консоли по правилам D&D #17
Palov, используйте std::string.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Больше зависимости от платформы, компилятора, и неизвестные последствия - супер!
Что-то новое и восхитительное каждый раз! Это ведь замечательно!
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:54     Текстовая RPG в консоли по правилам D&D #18
Croessmah, давайте не будем спорить об этом здесь. К тому же, констант не существует как типа в компьютере. Тем же ассемблером можно изменить любое значение
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:56     Текстовая RPG в консоли по правилам D&D #19
К слову о неопределенном поведении
http://pastebin.com/qKGVnWCz
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 22:56     Текстовая RPG в консоли по правилам D&D
Еще ссылки по теме:

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? C++
Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &) C++
Friend ostream& operator<<(ostream& stream, CArr& obj); C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
29.01.2013, 22:56     Текстовая RPG в консоли по правилам D&D #20
Цитата Сообщение от Kgfq Посмотреть сообщение
Croessmah, давайте не будем спорить об этом здесь. К тому же, констант не существует как типа в компьютере.
Это для Вас. Книга "C++ для профессионалов"
Текстовая RPG в консоли по правилам D&D

Не по теме:

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

Yandex
Объявления
29.01.2013, 22:56     Текстовая RPG в консоли по правилам D&D
Ответ Создать тему
Опции темы

Текущее время: 09:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru