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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
#1

Два шарик - C++

15.12.2010, 13:45. Просмотров 587. Ответов 4
Метки нет (Все метки)

Подскажите, плз, новичку, где в нижеследующей проге ошибки
[Linker error] undefined reference to `Draw2Circle(int, int, int)'
ld returned 1 exit status :
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
#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);
void Move2Circle (int x2, int y2, int v2, int dx2, int dy2, int r);
 
 
int main()
{
        txCreateWindow (500, 500);
        MoveCircle (200, 300, 10, 1, 1, 20);
        Move2Circle (150, 400, 15, 2, 2, 20);
}
 
void DrawCircle (int x, int y, int r)
{
        txClear ();  
        txSetColor (TX_RED);
        txSetFillColor (TX_BLACK);
        txCircle (x, y, r);
}
 
void Draw2Cirle (int x2, int y2, int r)
{
        txClear ();
        txSetColor (TX_GREEN);
        txCircle (x2, y2, r);
}        
 
void MoveCircle (int x, int y, int v, int dx, int dy, int r)
{
        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);
        }
}
 
void Move2Circle (int x2, int y2, int v2, int dx2, int dy2, int r)
{
        while (true)
        {
                 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);
        }
}
Может быть, надо было объединить циклы в один?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 13:45     Два шарик
Посмотрите здесь:

Шарик, летающий по экрану и ударяющийся об его стенки - C++
Тут такая тема: срочно нужна помощь в создании задания на С++. С помощью графического редактора С++ необходимо создать программу в которой...

Нацелить пушку так, чтобы шарик ударился сначала о стену, а затем попал в цель - C++
Всем привет. Вынужден в очередной раз просить помощи. Задача В начале координат установлена пушка, стреляющая шариками для...

Придумать формулу/алгоритм, который будет определять в какой из пяти корзин расположен шарик - C++
Доброго времени суток. Помогите придумать формулу/алгоритм, который будет определять в какой из пяти корзин расположен шарик. Шарики...

Известно, что среди элементов массива два и только два равны между собой. Напечатать их индексы - C++
Дан массив А. Известно, что среди его элементов два и только два равны между собой. Напечатать их индексы Помогите)))пожалуйста

Найти два таких два таких элемента, разность модулей которых имеет максимальное значение - C++
в целочисленном массиве найти два таких два таких элемента,разность модулей котооых имеет максимальное значение, и удалить из их состава...

Программа просит ввести число и умножить его на два, затем произведение умножить на два и т.д. - C++
3.Программа просит ввести число и умножить его на два, затем произведение умножить на два и т.д. выполнять эти операции пока произведение...

Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора - C++
Дано вектор В, состоящий из N действительных чисел. Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые...

Два симметрично вложенных квадрата и шарик - Геометрия
Заданы стороны a и b двух квадратов, симметрично вложенных. Определить угол, под которым шарик надо выпустить из точки A, чтобы он попал в...

Найти вероятность того, что наугад вытянутый шарик из второй урны будет больше, чем шарик с первой урны - Теория вероятностей
Доброе время суток, проконсультируйте по задачке. Есть две урны, в которых шарики с цифрами от 1 до 10. Найти вероятность того, что наугад...

Шарик - ActionScript
Здравствуйте. Нужно чтобы шарик из левого угла падал в вниз на центр поля потом отскакивал в правый угол и при том при ударе...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
15.12.2010, 13:49     Два шарик #2
Ошибка в имени фун-и
C++
1
2
3
4
5
6
7
//void Draw2Circle (int x2, int y2, int r);
void Draw2Cirle (int x2, int y2, int r)
{
        txClear ();
        txSetColor (TX_GREEN);
        txCircle (x2, y2, r);
}
TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
15.12.2010, 13:50  [ТС]     Два шарик #3
Спасибо большое, компилятор не ругнулся, но почему-то второй шарик не рисуется.
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
15.12.2010, 14:29     Два шарик #4
TXLib.h, так у вас до второго шарика дело никогда и не дойдет. Т.к. в ф-ции MoveCircle бесконечный цикл

Добавлено через 15 минут
Вот что получилось, лови. До идеала конечно далеко, но вроде чё-то рисует
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
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 rad;
    int dirX;
    int dirY;
}; 
///////////////////////////////////////////
void Circle::Draw()
{
    txSetColor (TX_RED);
    txSetFillColor (TX_BLACK);
    txCircle (xCoord, yCoord, rad);
}
///////////////////////////////////////////
void Circle::Move()
{
    xCoord += dirX * speed;
    yCoord += dirY * speed;
    
    if (xCoord - rad < 0 || xCoord + rad > 500)
    {
        dirX = - dirX;
    } 
 
    if (yCoord - rad < 0 || yCoord + rad > 500)
    {
        dirY = - dirY;
    }    
               
    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);
    }
}
TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
15.12.2010, 19:20  [ТС]     Два шарик #5
Можешь ещё подсказать, что означают class,public и private
Добавлено через 5 минут
Я сам тогда пытался ещё что-то изобразить. Вот что у меня получилось:

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
#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 минут
И что значит ::
Yandex
Объявления
15.12.2010, 19:20     Два шарик
Ответ Создать тему
Опции темы

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