Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13

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

29.01.2013, 21:37. Показов 6640. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2013, 21:37
Ответы с готовыми решениями:

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

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

Текстовая стратегия в консоли. Нанесение урона персонажам
Доброе время суток! Ребята подскажите как можно написать бой между 2 персонажами... Т.е. Есть к примеру классы орк и человек как написать...

39
погромист
 Аватар для coloc
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
29.01.2013, 22:17
Цитата Сообщение от Palov Посмотреть сообщение
cout << "\n Введите имя персонажа:"; scanf("%s",mainp.Name);
Что это такое? Два языка мешать в одной программе не желательно
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:20  [ТС]
cin >> mainp.Name; Даёт точно такой же результат, так что я сомневаюсь, что дело в этом.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:22
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    char* str = "Hello";
    std::cin >> str;
    return 0;
}
(Это подсказка)
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:29  [ТС]
using namespace std у меня отписано, если вы об этом. Спасибо.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:34
Цитата Сообщение от Palov Посмотреть сообщение
using namespace std у меня отписано, если вы об этом. Спасибо.
Ни в коем случае. Дабы не отвлекать на мелочи
C++
1
2
3
4
5
6
int main()
{
    char* str = "Hello";
    *str = 'h';
    return 0;
}
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:36
soon, кстати интересно, а что произойдет в вашем примере. str указывает на константную строку. По идее элемент этой строки можно изменить.

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

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

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

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

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

Добавлено через 21 секунду
Те, кому нравятся безопасность кодят, как правило, на c#
0
0 / 0 / 0
Регистрация: 27.12.2012
Сообщений: 13
29.01.2013, 22:49  [ТС]
Если честно, не понял.
Ясно, что на выходе результаты получаются разные, то есть в данном случае мы заменим только первую букву на h. Пробовал добавить * к mainpc.Name в своём коде, но это ничегого не изменило. Объясните пожалуйста.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:50
Undefined behavior - неопределенное поведение.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
29.01.2013, 22:50
Цитата Сообщение от Kgfq Посмотреть сообщение
soon, что значит UB?
Не предсказуемое поведение будет.
Цитата Сообщение от Kgfq Посмотреть сообщение
Но то, что это плюс - да плюс. Больше гибкости, больше возможностей.
Больше зависимости от платформы, компилятора, и неизвестные последствия - супер!
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:53
Palov, используйте std::string.

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Больше зависимости от платформы, компилятора, и неизвестные последствия - супер!
Что-то новое и восхитительное каждый раз! Это ведь замечательно!
1
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
29.01.2013, 22:54
Croessmah, давайте не будем спорить об этом здесь. К тому же, констант не существует как типа в компьютере. Тем же ассемблером можно изменить любое значение
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.01.2013, 22:56
К слову о неопределенном поведении
http://pastebin.com/qKGVnWCz
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
29.01.2013, 22:56
Цитата Сообщение от Kgfq Посмотреть сообщение
Croessmah, давайте не будем спорить об этом здесь. К тому же, констант не существует как типа в компьютере.
Это для Вас. Книга "C++ для профессионалов"

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2013, 22:56
Помогаю со студенческими работами здесь

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

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume WHERE ' &amp; ''' &amp;...

error '80020009' &Icirc;&oslash;&egrave;&aacute;&ecirc;&agrave;. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error '80020009' ...

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2
pci\ven_8086&amp;DEV_266E&amp;SUBSYS_A002145&amp;REV_05\3&amp;13C0B0C5&amp;0&amp;F2 Мультимедиа аудиоконтроллер помогите плз найти...

Нужен драйвера, код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17
всем привет !! уменя нет звука нужен драйвер код PCI\VEN_1039&amp;DEV_7012&amp;SUBSYS_0C98105B&amp;REV_A0\3&amp;B1BFB68&amp;0&amp;17 скачал прогу их много ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru