Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 15:59   #1
hacher
Новичок
Джуниор
 
Регистрация: 23.04.2009
Сообщений: 1
Радость Игра волейбол Си++

Могогите доделать игру
Главная задача сделать ее по физическим законам тойсть чтоб мяч двигался реально
Я чёт пробовал но ничего не получаеться
Вот ссылка на мой старания -- http://fileland.ru/file_id-243146

Код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  // стереть изображение мяча
    Form1->Canvas->Pen->Color = cBack;
    Form1->Canvas->Ellipse(x,y,x+r,y+r);
     if ( rd == 3 )
        {
        jumping = true;
        vel_y=100;
        }
   if (jumping == true)          // Джо в воздухе
  {
    // ** вычислить новое положение мяча **
    if ( dx > 0 )
    {
        // мяч движется вправо
        if ( x + dx + r > wp ) dx = - (dx + accel*cos(a)*t);
    }
    else
        // мяч движется влево
        if ( x + dx - r < 0 ) dx = -(dx + accel*cos(a)*t);

        if ((x == 295) & (y>=200))
        {
dx = -(dx + accel*cos(a)*t);
dy = dy + accel*sin(a)*t + g*t*t/2;
jumping=false;
s1++;
        }

  if ((x == 325) & (y>=200))
  {
dx = -(dx + accel*cos(a)*t);
dy =  dy + accel*sin(a)*t + g*t*t/2;
jumping=false;
s2++;
  }
    if ( dy > 0 )
    {
        // мяч движется вниз
        if ((x >= rx1) && (x <= rx2) && (y == ry+45 ))
            // мячик попал в ракетку
            dy = -( dy + accel*sin(a)*t + g*t*t/2);
        else
           { if (  y + dy + r > Form1->ClientHeight )
            { dy = -( dy + accel*sin(a)*t + g*t*t/2);
            }
    }   }
    else
    {
        if ( y + dy - r < 0 ) dy = -( dy + accel*sin(a)*t + g*t*t/2);
    }
    x += dx;
    y += dy;
    // нарисовать мяч в новой точке
    Form1->Canvas->Pen->Color = cBall;
    Form1->Canvas->Ellipse(x,y,x+r,y+r);
    // *** ракетка ***
    if ( rd != 0 )
    {
        // игрок нажал и удерживает одну из клавиш
        // "стрелка вправо" или "стрелка влево"
        // (см. FormKeyDown )
        if ( rd == 1 )
        {
            // вправо
            if ( rx2 < wp )
            {
                // стереть часть слева
                Form1->Canvas->Pen->Color = cBack;
                Canvas->Pen->Style = psSolid;
                Form1->Canvas->Rectangle(rx1, ry, rx1 + rdx, ry+45);
                // дорисовать часть справа
                Canvas->Pen->Style = psSolid;
                Form1->Canvas->Pen->Color = clRed;
                Form1->Canvas->Rectangle (rx2, ry, rx2 + rdx, ry+45);
                rx1 += rdx;
                rx2 += rdx;
            }
        }
        else
           // влево
           if (rd == 2 )
           {    // стереть часть справа
                Form1->Canvas->Pen->Color = cBack;
                Form1->Canvas->Rectangle (rx2, ry, rx2 - rdx, ry+45);
                // дорисовать слева
                Form1->Canvas->Pen->Color = clRed;
                Form1->Canvas->Rectangle(rx1 - rdx, ry, rx1 + rdx,ry+45);
                rx1 -= rdx;
                rx2 -= rdx;
            }
    }
}
if (y <= 450 )          // Проверка, стоит ли Джо на полу
    {
     vel_y = 0;
     jumping = false;
  }
     Canvas->Pen->Color = (Graphics::TColor) 111;
  Canvas->Pen->Style = psSolid;
  Canvas->Rectangle(320, 420, 330, 210);
  Label2->Caption=s1;
  Label1->Caption=s2;
}
//---------------------------------------------------------------------------

Последний раз редактировалось Stilet; 23.04.2009 в 16:27.
hacher вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра на C# ЧеширскийКот Общие вопросы .NET 3 11.04.2009 11:25
Игра [LOL] Помощь студентам 2 13.06.2007 18:36
игра S.T.A.L.K.E.R. rpy3uH Свободное общение 7 10.04.2007 00:17