Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
den_yakush
0 / 0 / 0
Регистрация: 11.10.2009
Сообщений: 11
#1

Графика+классы с++ - C++

10.12.2009, 18:11. Просмотров 1227. Ответов 1
Метки нет (Все метки)

В общем ребят суть проги такова: реализовать балистическое движение тела под действием сил ньютона(стрельба из пушки), при создании использовать классы.
Не могу сообразить,как сделать так:
1)чтобы например задаешь угол, пушка поворачивает на этот угол, следавательно и меняется траектория движения.
2)задать n-количество шаров, вылетающих из пушки
Жду любые подсказки, а лучше конечно конкретный код, спасибо
Исходный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include    <conio.h>
#include        <string.h>
#include    <graphics.h>
#include    <stdio.h>
#include        <stdlib.h>
#include        <math.h>
#include        <dos.h>
#include    <iostream.h>
class Vect{
public:
double x, y;
};
//------------
class Newton{
public:
double m,v,a;
Vect Poz;
};
class telo{
    static int n;
    double x,y,ax,ay;
public:
    Vect F;
    Newton M;
    double tt;
    public:
    telo();
    telo(Newton &M, Vect &F, double tt);
    pad();
    pad(Newton &M, Vect &F, double tt);
    ~telo(){};
    };
//------------------
telo :: telo(Newton &M, Vect &F, double tt){
double x,y,ax,ay,vx,vy;
            ax=F.x/M.m;
            ay=F.y/M.m;
            vx+=ax*tt/2;
            vy+=ay*tt/2;
            M.Poz.x+=(vx+ax*tt/2)*tt;
            M.Poz.y+=(vy+ay*tt/2)*tt;
            int c1=getcolor();
    setcolor(1);
    circle(M.Poz.x,M.Poz.y,10);
    setfillstyle(1,1);
    floodfill(M.Poz.x,M.Poz.y,1);
    delay(50);
    setcolor(c1);
}
//--------------------------------
void main(){
randomize();
int t=DETECT,u;
double ax,ay;
int i,j;
int n;
unsigned int size;
cout<<"VVedite n: "<<endl;
cin>>n;
initgraph(&t,&u,"d:");
Vect F;F.x=1.7;F.y=-1.5;Newton M;M.m=5;M.Poz.x=0;M.Poz.y=479;
 
 
 
    //   putpixel(random(640),random(480),random(16));
for(i=1;i<40;i+=1)
 
{
    line(10,460,72,394);
    line(40,475,76,435);
    line(10,455,20,479);
    fillellipse(70,420, 6,26);
    //for(j=0;j<n;j++)
      telo(M,F,i);
       cleardevice();
if((M.Poz.x>=getmaxx()/2+20) && (M.Poz.x<=getmaxx())|| M.Poz.y<=getmaxy()/2-50)  {
    F.x=2;
    F.y=1.5;}
if(M.Poz.x>=getmaxx()/2-45 && M.Poz.x<=getmaxx()/2|| M.Poz.y<=getmaxy()/2-150)  {
    F.x=1.3;
    F.y=0;
 
}
if(kbhit())
exit(1);
}
 
//cleardevice();
 
getchar();
exit(1);
closegraph();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2009, 18:11     Графика+классы с++
Посмотрите здесь:

Графика + классы - C++
Необходимо реализовать позднее связывание. Пока что это у меня не особо получается. Нет, само связывание получилось, но вот проблемы с...

Классы и графика: объяснить работу кода - C++ Builder
Поясните код программы плиз: 1) заголовочный файл #ifndef Unit1H #define Unit1H ...

какие компоненты, классы, методы использовать для построения 2D графика функции? - C++ Builder
Здравствуйте, подскажите пожалуйста какие компоненты, классы, методы использовать для построения 2D графика функции? И посоветуйте хорошие...

Классы с++ - C++
Правильно ли я описал класс? #include &quot;stdafx.h&quot; #include &lt;algorithm&gt; #include &lt;iostream&gt; using namespace std; int main(int...

классы - C++
Нужно написать программу с помощью класса Пожалуйста нужна ваша помощь

Классы - C++
Всем привет! Очень прошу помочь написать программу на классы, для меня это нереально сложное задание, надеюсь на вас - не оставьте в беде,...

Классы - C++
Всем доброго времени суток, кто поможет реализовать след пункты: -конструктор без аргументов: -конструктор инициализации: ...

классы - C++
составить описание класса для представления комплексных чисел. обеспечить выполнение операции представления числа в тригонометрическком...

Классы - C++
Здравствуйте господа. Сегодня у меня очередная Лабораторка. Только уже по С++. Задание: Определить класс &quot;Паспортные данные&quot;,...

Классы - C++
Помогите пожалуста решить задачу Создайте класс в соответствии с условием задачи. Определить функции-члены класса для вывода реализации...

Классы - C++
Определить пользовательский класс в соответствии с вариантом задания (СТУДЕНТ: имя – char*, факультет - char*? курс – int).Определить в...

Классы С++ - C++
пишу класс матрица проблема такая : Пусть в классе Есть функция прибавления матрицы AddMa(Alma mat); где Alma - имя класса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
19.12.2009, 22:22     Графика+классы с++ #2
наклон пушки:
организовать цикл в котором программа будет запрашивать ввод. Если введено, например 'u' - up то угол увеличиватеся на 0.001 рад,(посколку в цикле, то если пользователь зажмет кнопку угол будет менять в реальном времени), а если 'd' - down угол буедет уменьшаться, если же нажать ктопку ' ', по известному углу можно расчиать траикторию полета.

необходимо написать классы ядлро (кружочек) и пушка (прямоугольничек).

класс ядро должн содержать поля:
центр кружка,
методы:
движение в лево (или вправо, смотря куда летим).
переместить в заданную точку()
показать ядро,
спрятать ядро.

клсс пушка: поля:
угол наклона,
серединные координаты (по мним можно посторить весть прямоугольник),
методы:
поворот вверх (изменится угол),
поворот вниз (изменится угол),
показать пушку
спрятать пушку.

после нажатия ' ' (выстрел), наклон пушки менять должно быть невозможно, и надо проанимировать полет ядра, запустив цикл в котором во время каждо итерациибудет показыться и прятаться ядро (подобие анимации) в соответствии с посчитаными для данной итерации координатами.

а насчет n шаров, просто заставь прогу нестолько раз за пользователя понажимать ' ', с должной задержкой.

вот подсказка:
класс ядро
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include<graphics.h>
#include<iostream.h>
#include<conio.h>
#include<dos.h>
 
class Bullet
{
private:
    int x,y;
    int R;
public:
    Bullet(int,int,int);
    int Getx();
           int Gety();
    void Putx(int);
           void Puty(int);
    void PutRx(int);
    void Show();
    void Hide();
    void Move(int);
};
 
Coin::Bullet(int x,int y, int R)
{
    this -> x=x;
    this -> y=y;
    this -> R;
}
 
int Bullet::Getx(){return x;}
int Bullet::Getx(){return y;}
void Bullet::Putx(int x){this -> x=x;}
void Bullet::Puty(int x){this -> y=y;}
void Bullet::PutR(int Rx){this ->R;}
void Bullet::Show()
{
    ellipse(x,y,0,360,R,R);
}
 
void Bullet::Hide()
{
    unsigned TempColor;
    TempColor=getcolor();
    setcolor(getbkcolor());
    Show();
    setcolor(TempColor);
}
void Bullet::Move(int x,int y)
{
    Hide();
           this->x=x;
           this->y=y;
    Show();
}
 
void main()
{
    int gdriver=DETECT, gmode, errcode;
    initgraph(&gdriver, &gmode,"");
    errcode=graphresult();
    if (errcode != grOk)
    {
        cout<<"Graphics error: %s"<<grapherrormsg(errcode)<<endl;
        cout<<"Press any key to halt:"<<endl;
        getch();
    }
         Bullet B(200,200,50);
         B.Show();
         delay(100000);
         B.Move(300,300);
         delay(100000);
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru