Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
TXLib.h
3 / 3 / 3
Регистрация: 01.12.2010
Сообщений: 68
#1

Движение шариков - C++

15.12.2010, 20:07. Просмотров 2018. Ответов 1
Метки нет (Все метки)

Как сделать так, чтобы два шара двигались одновременно? При моей программе изображается лишь тот, который написан первым(поскольку они засунуты в один бесконечный цикл).
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
#include "TXLib.h"
 
void DrawCircle (int x, int y, int r);
void Draw2Circle (int x2, int y2, int r);
void MoveCircle (int x, int y, int v, int dx, int dy, int r, int x2, int y2, int v2, int dx2, int dy2);
 
 
int main()
{
        txCreateWindow (500, 500);
        MoveCircle (200, 300, 10, 1, 1, 20, 150, 450, 15, - 1, - 1);
}
 
void DrawCircle (int x, int y, int r)
{
        txClear ();  
        txSetColor (TX_RED);
        txSetFillColor (TX_BLACK);
        txCircle (x, y, r);
}
 
void Draw2Circle (int x2, int y2, int r)
{
        txClear ();
        txSetColor (TX_GREEN);
        txSetFillColor (TX_BLACK);
        txCircle (x2, y2, r);
}        
 
void MoveCircle (int x, int y, int v, int dx, int dy, int r, int x2, int y2, int v2, int dx2, int dy2)
{
        while (true)
        {
                x += dx*v;
                y += dy*v;
                if (x - r < 0 || x + r > 500)
                {
                        dx = - dx;
                } 
 
                if (y - r < 0 || y + r > 500)
                {
                        dy = - dy;
                }    
               
                DrawCircle (x, y, r);
                txSleep (100);
          }
          {
                 x2 += dx2*v2;
                 y2 += dy2*v2;
                 if (x2 - r < 0 || x2 + r > 500)
                 {
                        dx2 = - dx2;
                 }
                 
                 if (y2 - r < 0 || y2 + r > 500)
                 {
                        dy2 = - dy2;
                 }
                 
                 Draw2Circle (x2, y2, r);
                 txSleep (100);
         }
}
Добавлено через 10 минут
Вот другой вариант. Здесь-то что неправильно?

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
#include "TXLib.h"
 
class Circle
{
public:
       Circle (int x, int y, int v, int dx, int dy, int r);
       void MoveCircle ();
       void DrawCircle ();
private:
        int x;
        int y;
        int v;
        int dx;
        int dy;
        int r;
        
void Circle :: Draw ()
{
        txSetColor (TX_RED);
        txSetFillColor (TX_BLACK);
        txCircle (x, y, r);
}
 
void Circle :: Move ()     
{
         x += dx*v;
         y += dy*v;
         
         if (x - r < 0 || x + r > 500)
         {
               dx = - dx;
         }
         
         if (y - r < 0 || y + r > 500)
         {
               dy = - dy;
         }  
         
         Draw ();
}
 
int main()
{
         txCreateWindow (500, 500);
         Circle A (200, 300, 10, 1, 1, 20);
         Circle B (150, 400, 15, -1, -1, 20);
         while (true)
         {
               txClear ();
               A.Move ();
               B.Move ();
               txSleep (100);
         } 
}           
}
Добавлено через 15 минут

Добавлено через 2 минуты
Правда, 2ю мне написал dihlofos,я чуть-чуть её изменил и не совсем понимаю
http://www.cyberforum.ru/cpp-beginners/thread1847112.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 20:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Движение шариков (C++):

Программная модель движения шариков
вот код: #include &lt;stdlib.h&gt; #include &lt;GL/glut.h&gt; #include &lt;GL/glaux.h&gt;...

Координаты заданного кол-ва шариков изменяются на случайную величину по вертикали и горизонтали.
Координаты заданного кол-ва шариков изменяются на случайную величину по...

Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета
Написал код для одной задачи. Ответ выдает он вроде правильный. Но на сайте при...

Наследование двух классов от базового. Отрисовка двух шариков, движущихся по синусоиде и косинусоиде
Здравствуйте, только начали изучать наследование, поэтому некоторые вещи...

Движение планеты в системе двойной звезды или движение трех тел
программа должна выводить координаты движения звезд и планеты в файл (рисую в...

1
dihlofos
Бродяга
304 / 258 / 56
Регистрация: 27.08.2010
Сообщений: 553
16.12.2010, 06:49 #2
Цитата Сообщение от TXLib.h Посмотреть сообщение
я чуть-чуть её изменил
Мда... Зачем-то правда переименовали методы и удивляетесь почему оно не работает В классе описаны методы MoveCircle() и DrawCircle(), а вызываете Draw() и Move(), как так? Используйте уж тогда одинаковые названия.
Зачем-то убрали список инициализаторов конструктора, и кое где скобки и точки с запятой... Ну может быть так будет понятней:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Circle
{
public:
       Circle (int x, int y, int s, int dx, int dy, int r) // конструктор
    {
                 // каждому полю задаётся значение, переданное параметром конструктора
        xCoord = x;
        yCoord = y; 
        speed = s; 
        dirX = dx; 
        dirY = dy; 
        rad = r;
    }
       void Move(); // имена методов должны совпадать!
       void Draw();
private:
        int xCoord;
        int yCoord;
        int speed;
        int dirX;
        int dirY;
        int rad;
}; // точка с запятой и скобка
Насчёт первой проги отписал вам в ЛС (надеюсь вы иногда их читаете).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2010, 06:49
Привет! Вот еще темы с решениями:

движение флага си/с++
помогите дописать код , нада заставить круг и прямоугольник двигатса вверх,вниз...

Движение switch()
Вот примерный код: const int H = 30; const int W = 30; char karta; ...

Движение в консоли
Здравствуйте, уважаемое сообщество. Помогите, пожалуйста, разобраться с...

движение фигуры
помогите пожалуйста.нужно сделать тест видеокарты-любая...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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