Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++] деформация шара при ударе 
V
    Опции темы
Dakotta
Дата 26.11.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 20.9.2010

Репутация: нет
Всего: нет



Добрый день!

Мне нужно написать программу, имитирующую движение мяча. Подскажите, пожалуйста, как сделать, чтобы мяч при ударе деформировался? 

Я пробую делать так, но не выходит.

Код

TForm1 *Form1;
int x, y;     //положение мяча
int dx, dy;   //приращение координат
int r;        // радиус мяча
TColor cBall; //цвет мяча
TColor cBack; //цвет фона
int wp, hp;   //размеры поля
//-----------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
r = 70; //радиус
x = r; y = 50; //начальное положение мяча
dx = 1;
dy = 10;
cBall = (TColor)RGB(217, 217, 25); //цвет мяча
cBack = (TColor)RGB(255, 255, 255);   //цвет поля
Form1->Color = cBack;
wp = Form1->ClientWidth;
hp = Form1->ClientHeight;
//настройка таймера
Timer1->Interval = 30;
Timer1->Enabled = true;
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    // стереть изображение мяча
     Form1->Canvas->Pen->Color = cBack;
     Form1->Canvas->Ellipse(x,y,x+r,y+r);

    // здесь я пытаюсь стереть изображение деформированного мяча, но работает не корректно
     Form1->Canvas->Pen->Color = cBack;
     Form1->Canvas->Ellipse(x,y,x+r+10,y+r-10);

     //вычисляем новое положение мяча
     if ( x > 0 )
     {
        // мяч движется вправо
        if  (x + dx + r >= wp)  dx = -dx;
      
        //мяч движется влево
        if  (x + dx <= 0)  dx = -dx;

    if ( y > 0 )
    {
         // мяч движется вниз
         if (x >= wp) dy = - dy;    
         else
              if (y + dy + r > hp ) dy = -dy;
    }
    else
    {
         //мяч движется вверх
          if ( y + dy - r <= 0 )
         {
             dy = -dy;   
   //здесь я пытаюсь ДЕФОРМИРОВАТЬ при ударе вверх
    Form1->Canvas->Pen->Color = clBlack;
    Form1->Canvas->Brush->Color = clRed;
    Form1->Canvas->Ellipse(x,y,x+r+5,y+r-5);
    Form1->Canvas->Brush->Color = cBack;
         }
    }
    }
    x += dx;
    y += dy;

    //рисуем мяч в новой точке
    Form1->Canvas->Pen->Color = clBlack;
    Form1->Canvas->Brush->Color = clRed;
    Form1->Canvas->Ellipse(x,y,x+r,y+r);
    Form1->Canvas->Brush->Color = cBack;
}


В приведенном коде я пыталась деформировать мяч при ударе вверх, но изображение деформированного мяча перекрывается изображением обычного. 
Помогите, пожалуйста, это исправить!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0385 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.