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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++ Графика, Моделирование 
:(
    Опции темы
_JunioR_
  Дата 11.5.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот такая тема 
Моделирование полета стрелы в графическом режиме...
нужно что бы с одной точки (0,400) выберался угол полёта и при нажатии клавишы пробел она летит..но сколько раз не пробова она либо не летит либо прога зацыклюеться...
Вот то что есть:

#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <iostream.h>
#include <math.h>

void Figure (int x,int y,int color)
{

setfillstyle (SOLID_FILL,BLACK);
bar(0,0,639,479);
setcolor (color);
line(x,y,x+50,y);
line(x+50,y,x+20,y+10);
line(x+50,y,x+20,y-10);
line (0,400,639,400);
line (639,400,620,390);
line (639,400,620,410);
line (0,1,0,400);
line (0,0,10,15);

}
void main()
{

int d=VGA,m=VGAHI;
int x,y,dx,v0,a0,max_x,max_y,key,g=9.81,tt;

cout<<"Vedit  pocchatkovu svidkist m/s"<<endl;
cin>>v0;
cout<<"Vedit ugol viletu (gradusi)"<<endl;
cin>>a0;
cout<<"Ugol Naklona="<<a0/(180/3.14)<<endl;
cout<<"Chas polyotu="<<2*v0*sin(a0/(180/3.14))/g<<endl;
initgraph( &d,&m,"D:\\BC\\BGI");
x=0;y=240;
dx=1;
while (x+40<640)
{
Figure (x,y, WHITE);
key = getch();
if (key == 27) break;
Figure (x,y,WHITE);
switch (key){
case 75: x--;break;
case 77: x++;break;
case 72: y --;break;
case 80: y++;
}
if(kbhit())
if(getch()==27)break;
Figure(x,y,WHITE);

delay(10);
Figure(x,y,WHITE);
if (x+20 >=639) dx=-1;
if (x<=0) dx=1;
x+=dx;
}
closegraph();
}



Жду помощи!!!  
PM MAIL   Вверх
Promitheus
Дата 11.5.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

while (x+40<640)
{
Figure (x,y, WHITE);
key = getch();
if (key == 27) break;
Figure (x,y,WHITE);
switch (key){
case 75: x--;break;
case 77: x++;break;
case 72: y --;break;
case 80: y++;
}


На мой взгляд в этом цикле дело.  Он забирает управление и не даёт отлавливать getch(), а  x (читать икс)  ты никак кроме как при отхвате кода клавиши не меняешь, тем более как то не факт что будешь приходит в case 77: x++;break;, если case 75: x--;break; будет чаще выполнятся, что икс всегда будет маленьким.

Потом ты в задаче написал мол жмём пробел и полетели, а по ходу программы ты везде отлавливаешь коды нажатых клавишь...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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