Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68

Два шарик

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

Студворк — интернет-сервис помощи студентам
Подскажите, плз, новичку, где в нижеследующей проге ошибки
Code
1
2
[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);
        }
}
Может быть, надо было объединить циклы в один?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2010, 13:45
Ответы с готовыми решениями:

В программе, где шарик ударяется об стены, заменить сам шарик
Вопрос в том, как заменить сам шарик на другой объект/текст. Вот например сделать Hello World...

Шарик внутри вращающегося треугольника
Всем доброго времени суток. Нужно написать программу: равносторонний треугольник вращается вокруг...

Поймай шарик!
Ребят помогаем. Кароче время с 15 сенкундами это нудно) и долго. Придумал мини игру. в архиве моя...

4
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
15.12.2010, 13:49
Ошибка в имени фун-и
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);
}
1
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
15.12.2010, 13:50  [ТС]
Спасибо большое, компилятор не ругнулся, но почему-то второй шарик не рисуется.
0
Бродяга
 Аватар для dihlofos
315 / 269 / 56
Регистрация: 27.08.2010
Сообщений: 553
15.12.2010, 14:29
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);
    }
}
1
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68
15.12.2010, 19:20  [ТС]
Можешь ещё подсказать, что означают 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 минут
И что значит ::
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2010, 19:20
Помогаю со студенческими работами здесь

Видеоэффект "теннисный шарик"
Здравствуйте. Есть такая задача: Применяя прямую запись в видеопамять получить на экране...

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

Динамическая система: тележка, балка и шарик
Нужны функции для перерисовки динамической системы, состоящей из тележки, балки на ней и шарика...

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

Неподвижный шарик
Пишу арканоид на C++ и SFML. Создал окно и шарик, также написал функцию update() которая перемещает...


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

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

Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru