Понедельник, 25 Ноября 2024, 13:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
0x90Дата: Вторник, 15 Ноября 2011, 23:04 | Сообщение # 41
участник
Сейчас нет на сайте
А что делает класс a?

Сообщение отредактировал 0x90 - Вторник, 15 Ноября 2011, 23:07
SWFcreatorДата: Вторник, 15 Ноября 2011, 23:12 | Сообщение # 42
участник
Сейчас нет на сайте
пример.
у меня два класса: строка - массив символов и текст - массив строк. каждый ввод getch добавляется символ в строку, после ентера - новая строка.


Сообщение отредактировал SWFcreator - Вторник, 15 Ноября 2011, 23:13
0x90Дата: Вторник, 15 Ноября 2011, 23:34 | Сообщение # 43
участник
Сейчас нет на сайте
Понятно. Во первых два класса тебе не нужны, одного хватит с лихвой(вообще-то решение такой задачи без ООП было бы "естественнее"), во вторых никакие реаллоки тебе не тоже не нужны, для строки используй буфер фиксированного размера(или выделяй пул и увеличивай по мере надобности), для "текста"-контейнер хранящий твои строки.
SWFcreatorДата: Вторник, 15 Ноября 2011, 23:46 | Сообщение # 44
участник
Сейчас нет на сайте
Без ООП работает практически без проблем, но как то некрасиво выглядит. Вот решил переписать по новой, для разнообразия попробовать классы. Теперь в коде все понятно и ясно, зато не работает biggrin . А про пул ничего не слышал, но книга длинная, дойду. Спасибо за совет.
БатлфилдерДата: Вторник, 13 Декабря 2011, 15:31 | Сообщение # 45
почетный гость
Сейчас нет на сайте
Помогите! Я пишу код, объявляю переменную:
int choose;
Дальше пишу:
cin >> choose;
switch (choose);
{
case 1: cout << "Текст";break;
case 2: cout << "Текст";break;
сase 3: cout << "Проигрыш";break;
default: cout << "Текст";
}

VStudio пишет в списке ошибок:
1|error C2046 недопустимый вариант выбора
2|error C2046 недопустимый вариант выбора
3|error C2046 недопустимый вариант выбора
4|error C2043 недопустимый break
6|error C2043 недопустимый break
9|error C2043 недопустимый break
8|error C2047 недопустимый вариант, используемый по умолчанию

Почему? surprised







Сообщение отредактировал Батлфилдер - Вторник, 13 Декабря 2011, 15:37
Animan2010Дата: Вторник, 13 Декабря 2011, 15:50 | Сообщение # 46
постоянный участник
Сейчас нет на сайте
после switch(choose) точку с запятой не надо вроде бы.

Anima Games
Animan Publishing
БатлфилдерДата: Вторник, 13 Декабря 2011, 15:54 | Сообщение # 47
почетный гость
Сейчас нет на сайте
ооо, спасибо)))) smile




SWFcreatorДата: Вторник, 20 Декабря 2011, 21:43 | Сообщение # 48
участник
Сейчас нет на сайте
Кто знает как быстро обновлять консоль, незаметно для глаза? Я делаю это циклом cout-system("cls"), но это слишком медленно и рябит в глазах. Желательно без ВинАпи, т.к. с ним не дружу, но если др. выхода нет, сойдет и он. Давно интересует этот вопрос, кто подскажет работающий способ, огромное спасибо и + однозначно.

Сообщение отредактировал SWFcreator - Вторник, 20 Декабря 2011, 21:48
warzesДата: Среда, 21 Декабря 2011, 09:50 | Сообщение # 49
участник
Сейчас нет на сайте
Quote (SWFcreator)
Кто знает как быстро обновлять консоль, незаметно для глаза? Я делаю это циклом cout-system("cls"), но это слишком медленно и рябит в глазах. Желательно без ВинАпи, т.к. с ним не дружу, но если др. выхода нет, сойдет и он. Давно интересует этот вопрос, кто подскажет работающий способ, огромное спасибо и + однозначно.

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

1) Вызываешь команды "рисования". Здесь ты сообщаешь что надо рисовать текст. При этом эти команды не рисуют на самом деле а редактируют массив (задний буфер - так это называется).
2) Командами из 1) до конца доделываешь буфер
3) выводишь буфер (массив) на экран
4) обрабатываешь остльное и повторяешь с первого


Мой блог
Вики DirectX
SWFcreatorДата: Среда, 21 Декабря 2011, 16:20 | Сообщение # 50
участник
Сейчас нет на сайте
Спасибо, напиши, как выводить поверх выведенного буфера с начальной координаты, а не следом. Функция какая-то?
[SS]Дата: Среда, 21 Декабря 2011, 17:14 | Сообщение # 51
был не раз
Сейчас нет на сайте
Подскажите как и где подключить к Code::Blocks движок? (незнал куда написать)

ElsДата: Среда, 21 Декабря 2011, 17:31 | Сообщение # 52
почетный гость
Сейчас нет на сайте
Вот показуеться как hge подключают
warzesДата: Четверг, 22 Декабря 2011, 06:23 | Сообщение # 53
участник
Сейчас нет на сайте
SWFcreator, используй что-нибудь на подобии - conio, curses, ncurses и т.д. Если пишешь на винду, то поищи в MSDN, там на net платформе вроде что-то есть...

Добавлено (22.12.2011, 06:23)
---------------------------------------------
А, вот на винапи - http://msdn.microsoft.com/en-us/library/windows/desktop/ms686025(v=vs.85).aspx

И собственно список консольных команд - http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073(v=vs.85).aspx


Мой блог
Вики DirectX
SWFcreatorДата: Пятница, 23 Декабря 2011, 02:05 | Сообщение # 54
участник
Сейчас нет на сайте
Спасибо большое, функция по первой ссылке - самое оно.
xPFaNДата: Воскресенье, 25 Декабря 2011, 00:03 | Сообщение # 55
был не раз
Сейчас нет на сайте
У меня вопрос. Экспериментирую с консольными проектами. Делаю ввод текста в консоли. Суть вопроса в том. Для ввода текста с клавы я использую cin. Возможно ли каким ли образом приравнять cin к key и использовать key заместо cin. А так же привык в Basic вводить переменные Dim. Возможно ли приравнять int к Dim и вводить переменные посредством Dim?
0x90Дата: Воскресенье, 25 Декабря 2011, 00:19 | Сообщение # 56
участник
Сейчас нет на сайте
Не уверен, что правильно понял вопрос, но может вам нужно следуюющее:
Code

#define key cin
#define dim int     // вообще-то для этого есть typedef, да фиг с ним.

Дальше можно просто юзать key>>buffer или dim a[100].
xPFaNДата: Воскресенье, 25 Декабря 2011, 00:37 | Сообщение # 57
был не раз
Сейчас нет на сайте
0x90, мне нужно заменить, к примеру, чтобы переменная вводилась не при помощи
int
А при помощи
Dim.

На ваш вариант матюгается.

Добавлено (25.12.2011, 00:37)
---------------------------------------------
компилятор матюгается

AikidosДата: Воскресенье, 25 Декабря 2011, 01:27 | Сообщение # 58
постоянный участник
Сейчас нет на сайте
Привыкайте к стандарту C++. Зачем пытаться из C++ сделать Basic? Если сейчас не будете приучать себя к стандартам C++, то дальше будут вообще дрова.

Quote (xPFaN)
На ваш вариант матюгается.

Мб весь код в студию? Или хотяб на что ругается.


Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
0x90Дата: Воскресенье, 25 Декабря 2011, 20:39 | Сообщение # 59
участник
Сейчас нет на сайте
Quote (xPFan)
компилятор матюгается

Не может такого быть
Quote (Aikidos)
код в студию
Xe[N]oДата: Пятница, 06 Января 2012, 23:43 | Сообщение # 60
частый гость
Сейчас нет на сайте
Quote
На ваш вариант матюгается.

Ам... А вы уверены, что поставили это правильное место? Черт, не знаю как это объяснить, никогда не учил термины и понятия... Вы уверены что вы поставили этот код вне всяких "блоков" типо "main", а куданить по дальше, типо под инклуды?

Я бы тоже матерился, если бы мой желудок, мозг пытался заставить взять что-то...
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг