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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2008, 20:14   #1
SadMan
Новичок
Джуниор
 
Регистрация: 03.06.2008
Сообщений: 1
По умолчанию ргр по си, нужна помощь

Здравствуйте,не могу дописать ргр...идея в том что по экрану летает 3 шарика...закон сохранения импульса я реализовал,"Туннельный эффект" вроде не наблюдается...Осталось реализовать отчеркивание линий (границ для шариков) в этом и проблема...я в программирование савсем новичок поэтому прошу помощи...на всякий случай приведу уже написанный код:
Код:
#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <bios.h>
#include <stdlib.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
//koordinati
float X1=300,X2=325,X3=350,Y1=190,Y2=190,Y3=190;
//stenki
float XL=110,XP=540,YV=30,YN=350;

//modifikatori
float k1,k2,k3,dx1,dx2,dx3,dy1,dy2,dy3;
//rasschet
float XX12,YY12,XX23,YY23,XX13,YY13,I12,I23,I13;
//
float r=8; int t1,t2,t3;
//////////////////////////////////////////////////
void ris()
{
setfillstyle(1,RED);
bar(0,0,639,479);
setfillstyle(1,BLACK);
bar(100,20,550,360);
}
/////////////////////////////////////////////////
void ranko()
{
randomize();
t1=random(29)-10;
t1=t1/10;
if(t1==0) dx1=1;else dx1=-1;
t2=random(29)-10;
t2=t2/10;
if(t2==0) dx2=-1;else dx2=1;
t3=random(29)-10;
t3=t3/10;
if(t3==0) dx3=1;else dx3=-1;

dy1=random(200)-100;
dy1=dy1/1000;
dy2=random(200)-100;
dy2=dy2/1000;
dy3=random(200)-100;
dy3=dy3/1000;
}
/////////////////////////////////////////////////
void stenko1()
{
if(X1>XP)dx1=-dx1;
if(X1<XL)dx1=-dx1;
if(Y1>YN)dy1=-dy1;
if(Y1<YV)dy1=-dy1;
}
/////////////////////////////////////////////////
void stenko2()
{
if(X2>XP)dx2=-dx2;
if(X2<XL)dx2=-dx2;
if(Y2>YN)dy2=-dy2;
if(Y2<YV)dy2=-dy2;
}
/////////////////////////////////////////////////
void stenko3()
{
if(X3>XP)dx3=-dx3;
if(X3<XL)dx3=-dx3;
if(Y3>YN)dy3=-dy3;
if(Y3<YV)dy3=-dy3;
}
/////////////////////////////////////////////////
void stenko()
{
stenko1();
stenko2();
stenko3();
}
/////////////////////////////////////////////////
void shariki1()
{
k1=(dx1*XX12+dy1*YY12);k1=k1/pow(I12,2);
k2=(dx2*XX12+dy2*YY12);k2=k2/pow(I12,2);
dx1=dx1+XX12*k2-XX12*k1;
dy1=dy1+YY12*k2-YY12*k1;
dx2=dx2+XX12*k1-XX12*k2;
dy2=dy2+YY12*k1-YY12*k2;

stenko1();
stenko2();

}
/////////////////////////////////////////////////
void shariki2()
{
k2=(dx2*XX23+dy2*YY23);k2=k2/pow(I23,2);
k3=(dx3*XX23+dy3*YY23);k3=k3/pow(I23,2);
dx2=dx2+XX23*k3-XX23*k2;
dy2=dy2+YY23*k3-YY23*k2;
dx3=dx3+XX23*k2-XX23*k3;
dy3=dy3+YY23*k2-YY23*k3;

stenko2();
stenko3();

}
/////////////////////////////////////////////////
void shariki3()
{
k1=(dx1*XX13+dy1*YY13);k1=k1/pow(I13,2);
k3=(dx3*XX13+dy3*YY13);k3=k3/pow(I13,2);
dx1=dx1+XX13*k3-XX13*k1;
dy1=dy1+YY13*k3-YY13*k1;
dx3=dx3+XX13*k1-XX13*k3;
dy3=dy3+YY13*k1-YY13*k3;

stenko1();
stenko3();

}
/////////////////////////////////////////////////
void main()
{
int driver=DETECT,mode;
int m;
initgraph(&driver,&mode,"C:\\TURBOC.30\\BGI");
ris();
ranko();
setcolor(BLACK);
do
{

XX12=X2-X1;YY12=Y2-Y1;
XX23=X3-X2;YY23=Y3-Y2;
XX13=X3-X1;YY13=Y3-Y1;

setfillstyle(1,BLACK);
fillellipse(X1,Y1,r,r);
fillellipse(X2,Y2,r,r);
fillellipse(X3,Y3,r,r);

I12=sqrt(XX12*XX12+YY12*YY12);
I23=sqrt(XX23*XX23+YY23*YY23);
I13=sqrt(XX13*XX13+YY13*YY13);

if(I12<16 || I12==16) shariki1();
if(I23<16 || I12==16) shariki2();
if(I13<16 || I13==16) shariki3();

stenko();
X1+=dx1;X2+=dx2;X3+=
dx3;
Y1+=dy1;Y2+=dy2;Y3+=dy3;
/////////////////////////////////////////////////
setfillstyle(1,YELLOW);
fillellipse(X1,Y1,r,r);
setfillstyle(1,RED);
fillellipse(X2,Y2,r,r);
setfillstyle(1,GREEN);
fillellipse(X3,Y3,r,r);

delay(1);
m=bioskey(1);
}
while(!m);
getche();
closegraph;
}
SadMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по таб. *Иван* Microsoft Office Excel 1 22.11.2007 20:50
Нужна помощь по Си. Coach Помощь студентам 3 08.11.2007 01:08
нужна помощь Селезнёв Microsoft Office Excel 1 02.03.2007 03:19
нужна помощь verto Помощь студентам 1 02.01.2007 07:48