Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для TXLib.h
3 / 3 / 0
Регистрация: 01.12.2010
Сообщений: 68

Два шарик

15.12.2010, 13:45. Показов 1220. Ответов 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): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru