![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Добрый день! Я делаю на С++ в консоли простую игрушку ... нужно сделать так что бы 2 человека могли управлять своими человечками (перемещаясь по матрице). Для каждого отведены отдельные клавиши.
Дайте пожалуйста пример когда или название функции с ее сигнатурой как это правильно делается) спасибо! |
|||
|
||||
| KaraKum |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Если "Windows", то CreateThread() :
Если Linux, то pthread_create():
Это сообщение отредактировал(а) KaraKum - 21.12.2010, 17:17 |
||||
|
|||||
| 4epT |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
да, под винду .. Спасибо ) попробую)) А как закрыть поток ?)) |
||||
|
|||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
А пользователи нажимают кнопки на одном компьютере?
|
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
да. С этим могут быть проблемы? |
|||
|
||||
| KaraKum |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Если создание потоков связано с вводом пользователей, то не обязательно создавать потоки. С наличием в программе потоков (то есть не только основной функции main()) могут быть проблемы из-за параллельного использования одной и той же памяти (данных). Лучше избегать их создания если есть такая возможность, а в данном случае она вроде как есть... Это сообщение отредактировал(а) KaraKum - 21.12.2010, 17:22 |
||||
|
|||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Ну вот к примеру .... я хочу реализовать змейку ... но что бы одновременно бегало 2 змейки в консоли. Насколько я понимаю, если один пользователь будет очень быстро нажимать на клавиши, то второй просто не сможет двигаться ... или я ошибаюсь?))
|
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Второй поток здесь не нужен.
Нажимаем кнопку - двигаем змейку в сторону; для другой змейки другие кнопки. А залипание клавиш зависит уже от клавиатуры и нажимаемых групп кнопок (некоторые кнопки нельзя нажать больше двух штук, а некоторые можно и сразу 4 если правильно разбросать их по клаве), а будет ли игрок успевать нажимать клавиши зависит уже от его настойчивости и ширины плеч оппонента |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
хорошо, а такой вариант ... я зажимаю кнопку .... и я ловлю нажатие клавиш в бесконечном while при помощи getch(); Тут тоже не нужен второй поток?)))) |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Ой, я невнимательно прочитал в вопросе про консоль.
Хмм... подразумевается использование ASCII-графики? Добавлено через 59 секунд Я думаю будет проще создать обычное окно и рисовать в нём посредством GDI. |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Я с MFC не знаком ( на с++ с оконным интерфейсом писал только с использованием WinAPI ... а там с GDI сплошные проблемы( И все же что посоветуешь?) в консоли с потоком?) |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
GDI относится к WinAPI - то есть должен быть доступен сразу после установки Visual Studio Express Edition (бесплатная которая и скачивается с сайта майрософта).
На консоли - это, конечно, дохлый номер. Идеальный вариант - на OpenGL, но займёт много времени его освоение (недели), а на GDI можно быстро что-нибудь начать делать. |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Ясно ... ( у меня просто по сути есть 3-4 дня, до защиты курсового .... буду думать) Спасибо за помощь) |
|||
|
||||
| Batbko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
Кстати WM_KEYDOWN в виндовой консоли никто не отменял
и даже рисовать на нем с помощью GDI и добавлять элементы управления, мои знания API изрядно проржавели но даже где то на этом форуме я видел алгоритм получения главного окошка процесса, а дальше дело техники : остаеться только правильно подменить оконную процедуру ;) Хотя если для курсача и если препод смотрит в исходники то лучше не извращаться |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Всё вышеперечисленное можно заменить одной строчкой вызова функции создания нормально виндового окна.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |