2009-05-05 22:08:37 Чижик программа апроксимирует точки, рисует график, вопщем эт не важно, надо сделать чтобы курсор стоял в середине экрана, в графическом режиме, по нажатию стрелок перемещался, сколько-то пикселей шаг, и чтобы в углу выводились координаты курсора. вопщем вопрос в том, как сделать чтобы по нажатию кнопок курсор перемещался :) |
|
2009-05-05 22:09:23 KillerSystem букв много( |
|
2009-05-05 22:15:02 Чижик KillerSystem
не тебе писал *( |
|
2009-05-05 22:43:58 Кровавый_ворон а какая оплата будет за прогу?) |
|
2009-05-06 09:20:41 MrHide Чижик
среда разработки какая? |
|
2009-05-06 15:18:12 Чижик MrHide
BC 3.1
Кровавый_ворон
да мне не прогу надо, прогу написал ) я тока не знаю, как сделать, чтобы курсор по экранчику бегал по нажатии стрелок )) |
|
2009-05-06 16:37:39 полишка сначала прочит надо... |
|
2009-05-06 17:26:42 MedMax полишка
это спрашивают у адекватных людей.ты к ним не относишся :р |
|
2009-05-06 19:38:54 MrHide Чижик
сейчас на работе очень занят
вечером напишу как сделать |
|
2009-05-06 19:49:13 PAYNE Чижик
https://www.fantasyland.ru/cgi/f_show_thread.php?id=278811&n=2&rid=11
https://msdn.microsoft.com/en-us/library/ms648394(VS.85).aspx |
|
2009-05-06 21:54:07 MrHide
Чижик писал(а): | как сделать чтобы по нажатию кнопок курсор перемещался :) |
значит смотри:
функция int getch(void); - вводит с клавиатуры один символ, при этом на экране введенный символ не отображается (по сути возвращает код нажатой клавиши)
в общем ловишь клавишу, дальше проверяешь его код и в зависимости от этого выполняешь действия
коды некоторых клавиш:
72 - стрелка вверх
75 - стрелка влево
77 - стрелка вправо
80 - стрелка вниз
27 - клавиша Esc
13 - клавиша Enter
для иллюстрации небольшой примерчик. Прога двигает точку (кружок) по экрану стрелками клавиатуры, Esc - выход, Enter - меняет цвет кружка. Все комментировал, правда на английском, чтобы проблем с кодировкой не возникло (мой английский иногда специфичен, если вдруг что не понятно спрашивай)
Цитата: | #include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %sn", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}
//====================================================================
//There is my code starting here...
//for example I am moving the point, which is the circle
char ch='!';//variable for catch the key pressed
//variables for the current coordinates:
int m_X=(int)(getmaxx()/2);
int m_Y=(int)(getmaxy()/2);
int i=0;//counter of loop
int m_Color=getcolor();//variable for current color
int m_Step=20;//step of moving (in pixels)
for(;;)//infinite loop
{
for(i=0;i<5;i++)circle(m_X,m_Y,i);
ch=getch();//catch the key pressed
switch(ch)
{
//®Ўа Ў влў Ґ¬ бв५ЄЁ
case 72:/*up array*/
if(m_Y>=m_Step)//check coordinates for range
{//if correct
m_Color=getcolor();//save current color
setcolor(0);//set black color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//clear old point
m_Y-=m_Step;//change coordinate
setcolor(m_Color);//set new color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//draw new point
}
break;
case 75:/*left array*/
if(m_X>=m_Step)//check coordinates for range
{//if correct
m_Color=getcolor();//save current color
setcolor(0);//set black color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//clear old point
m_X-=m_Step;//change coordinate
setcolor(m_Color);//set new color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//draw new point
}
break;
case 77:/*right array*/
if(m_X<=getmaxx())//check coordinates for range
{//if correct
m_Color=getcolor();//save current color
setcolor(0);//set black color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//clear old point
m_X+=m_Step;//change coordinate
setcolor(m_Color);//set new color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//draw new point
}
break;
case 80:/*down array*/
if(m_Y<=getmaxy())//check coordinates for range
{//if correct
m_Color=getcolor();//save current color
setcolor(0);//set black color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//clear old point
m_Y+=m_Step;//change coordinate
setcolor(m_Color);//set new color
for(i=0;i<5;i++)circle(m_X,m_Y,i);//draw new point
}
break;
//catch Enter (if useful)
case 13:/*Enter*/
/*make anything*/
//change color more random
setcolor(random(15)+1);
break;
case 27://catch Esc key
closegraph();
exit(1);//exit to the operatuon system
default:
/*make anything*/
break;
}
}
//end of my code
//====================================================================
/* clean up */
// getch();
// closegraph();
// return 0;
}
|
|
|
2009-05-06 22:07:06 PAYNE Вопрос про консоль что ли
Прикладные програмки со всякими графиками нынче под консоль пишут вообще? Некрофилы |
|
2009-05-06 22:10:05 MrHide PAYNE
MrHide писал(а): | среда разработки какая? |
естесно под форточки малешко по другому надо, хотя идея таже перехватить мессадж от клавы определить какая клавиша и обработать |
|
2009-05-06 22:11:23 MrHide
PAYNE писал(а): | Прикладные програмки со всякими графиками нынче под консоль пишут вообще? Некрофилы |
лабораторка, наверное....
я когда детей учу тоже под консоль задания даю...
для того чтобы научиться программировать лучше начинать с консоли |
|
2009-05-07 08:47:36 PAYNE Да это понятно =) Отлаживать тоже в консольке порой более удобно. |
|
2009-05-07 16:52:40 Чижик можно было и в VS и в Builder, мне так удобнее было :)
спасибо, щас доделаю :)) |
|
2009-05-07 21:24:28 MrHide Чижик
да не за что, главное, чтобы на пользу пошло =) |
|
2009-05-09 00:37:07 LaMere
PAYNE писал(а): | Некрофилы |
Как точно подмечено)))) |
|