Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> управление челом 
V
    Опции темы
max07
Дата 25.1.2007, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Здрасте

Пытаюсь написать простенькую игруху под DOS, использую С++. Никак не могу найти способ управления движениями в ДОСЕ (движение вперёд, назад, прыжок). Как можно это реализовать? Мож есть какие ф-ции которые перехватывают нажатие например кнопки вверх?
PM MAIL   Вверх
binisio
Дата 25.1.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 12.1.2005
Где: санкт-петербург

Репутация: 2
Всего: 2



попробуй использовать функцию getch()

что-то вроде

Код

char ch = getch();
switch(ch)
{
case "r": 
break;
case "l": 
break;
}


ну, и так далее
PM MAIL WWW   Вверх
max07
Дата 25.1.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Такой вариант может и сработает, но управление ведь получится буквами, а не стрелками.
PM MAIL   Вверх
binisio
Дата 25.1.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 12.1.2005
Где: санкт-петербург

Репутация: 2
Всего: 2



max07, я когда-то делал игруху в консольном режиме dos. управление было стрелками. если не ошибаюсь - эти клавиши можно обрабатывать по их коду. постараюсь вечером отыскать исходники своей игрухи и отписаться.   
PM MAIL WWW   Вверх
max07
Дата 25.1.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



binisio, буду благодарен. Если найдёшь, выложи код, пожалуйста.
PM MAIL   Вверх
binisio
Дата 25.1.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 12.1.2005
Где: санкт-петербург

Репутация: 2
Всего: 2



max07, вспомнил! при вызове getch() нужно делать проверку на 0. если функция возвращает 0, то вызываем ее повторно. это связанно с тем, что в ms-dos при нажатии функциональных клавиш и клавиш управления курсором в буфер помещается двухбайтная последовательность: сначала символ #0, а затем расширенный код клавиши. 
код я не помню, но ты можешь выяснить сам, поискав в инете или написав вот такую программку

Код

int key;
key = getch();

if( (key == 0) 
{
        key = getch();
        printf("%d\n",key);
}


должно сработать. узнаешь код, и будешь потом проверять на соответствие с ним               

                  
PM MAIL WWW   Вверх
max07
Дата 25.1.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



cпасибо.
PM MAIL   Вверх
binisio
Дата 25.1.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 12.1.2005
Где: санкт-петербург

Репутация: 2
Всего: 2



max07, ждем игруху )
PM MAIL WWW   Вверх
dragomir
Дата 28.1.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 28.1.2007
Где: Брянск

Репутация: нет
Всего: нет



клавиша\её код\всякая фигня
F1    112    $70    VK_F1    
F2    113    $71    VK_F2    
F3    114    $72    VK_F3    
F4    115    $73    VK_F4    
F5    116    $74    VK_F5    
F6    117    $75    VK_F6    
F7    118    $76    VK_F7    
F8    119    $77    VK_F8    
F9    120    $78    VK_F9    
F10    121    $79    VK_F10    
??????    32    $20    VK_SPACE    
BackSpace    8    $8    VK_BACK    
Tab    9    $9    VK_TAB    
Enter    13    $0D    VK_RETURN    
Shift    16    $10    VK_SHIFT    
Ctrl    17    $11    VK_CONTROL    
Alt    18    $12    VK_MENU    
CapsLock    20    $14    VK_CAPITAL    
Esc    27    $1B    VK_ESCAPE    
Insert    45    $2D    VK_INSERT    
PageUp    33    $21    VK_PRIOR    
PageDown    34    $22    VK_NEXT    
End    35    $23    VK_END    
Home    36    $24    VK_HOME    
37    $25    VK_LEFT    
38    $26    VK_UP    
39    $27    VK_RIGHT    
40    $28    VK_DOWN    
Delete    46    $2E    VK_DELETE    
PrintScreen    44    $2C    VK_SNAPSHOT    
ScrollLock    145    $91    VK_SCROLL    
Pause    19    $13    VK_PAUSE    
NumLock    144    $90    VK_NUMLOCK    
0,)    48    $30        ord('0')
1 !    49    $31        ord('1')
2 @    50    $32        ord('2')
3 #    51    $33        ord('3')
4 $    52    $34        ord('4')
5 %    53    $35        ord('5')
6 ^    54    $36        ord('6')
7 &    55    $37        ord('7')
8 *    56    $38        ord('8')
9 (    57    $39        ord('9')
` ~    192    $C0        
- _    189    $BD        
= +    187    $BB        
[ {    219    $DB        
] }    221    $DD        
; :    186    $BA        
' "    222    $DE        
\ |    220    $DC        
, <    188    $BC        
. >    190    $BE        
/ ?    191    $BF        
a,A    65    $41        ord('A')
b,B    66    $42        ord('B')
c,C    67    $43        ord('C')
d,D    68    $44        ord('D')
e,E    69    $45        ord('E')
f,F    70    $46        ord('F')
g,G    71    $47        ord('G')
h,H    72    $48        ord('H')
i,I    73    $49        ord('I')
j,J    74    $4A        ord('J')
k,K    75    $4B        ord('K')
l,L    76    $4C        ord('L')
m,M    77    $4D        ord('M')
n,N    78    $4E        ord('N')
o,O    79    $4F        ord('O')
p,P    80    $50        ord('P')
q,Q    81    $51        ord('Q')
r,R    82    $52        ord('R')
s,S    83    $53        ord('S')
t,T    84    $54        ord('T')
u,U    85    $55        ord('U')
v,V    86    $56        ord('V')
w,W    87    $57        ord('W')
x,X    88    $58        ord('X')
y,Y    89    $59        ord('Y')
z,Z    90    $5A        ord('Z')
?? ?????? ?????????? ??? ??????????? NumLock                
0    96    $60    VK_NUMPAD0    
1    97    $61    VK_NUMPAD1    
2    98    $62    VK_NUMPAD2    
3    99    $63    VK_NUMPAD3    
4    100    $64    VK_NUMPAD4    
5    101    $65    VK_NUMPAD5    
6    102    $66    VK_NUMPAD6    
7    103    $67    VK_NUMPAD7    
8    104    $68    VK_NUMPAD8    
9    105    $69    VK_NUMPAD9    
*    106    $6A    VK_MULTIPLY    
+    107    $6B    VK_ADD    
-    109    $6D    VK_SUBTRACT    
.    110    $6E    VK_DECIMAL    
/    111    $6F    VK_DIVIDE



А чего в досе? ты что через примитивы рисуешь?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.