Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Движение шаров по экрану борланд 3.1 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализация алгоритма Йена на С++ http://www.cyberforum.ru/cpp-beginners/thread580911.html
помогите пожалуста реализовать алгоритм Йена есть алгоритм Дейкстры нужно его доделать до Йена#include<iostream> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<conio.h>...
C++ даны два целых числа:Д(день) и М(месяц), определяющие правильную дату не высокосного года. Вывести значения D и M для даты, предшествующей указанной Даны два целых числа:Д(день) и М(месяц), определяющие правильную дату не высокосного года. Вывести значения Д и М для даты, предшествующей указанной. Добавлено через 7 часов 57 минут помогите!... http://www.cyberforum.ru/cpp-beginners/thread580907.html
Правильно реализована функция C++
//функция удалить с массива и уровнение id //function delete from massive and equalize id AddPluss * DelOnePerson (AddPluss * person , int &size) { AddPluss * tmp = new AddPluss; char...
Корень и модуль C++
как записать без библиотеки <math.h> корень (x), модуль (x).
C++ Побайтное сравнение двух файлов http://www.cyberforum.ru/cpp-beginners/thread580879.html
#include <locale.h> #include <stdio.h> #include <conio.h> int main(int argc, char *args) { setlocale(LC_ALL, "rus"); int counter = 0; FILE *file1, *file2;
C++ Определить, принадлежит ли точка с координатами (х,у) закрашенной области Определить, принадлежит ли точка с координатами (х,у) закрашенной области подробнее

Показать сообщение отдельно
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14

Движение шаров по экрану борланд 3.1 - C++

21.05.2012, 00:26. Просмотров 722. Ответов 2
Метки (Все метки)

нужно смоделировать движение шаров по экрану. не могу сделать чтобы шары отталкивались друг от друга, помогите кто сможет.

все что написал
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<iostream.h>
#include <time.h>
#include<math.h>
#include<graphics.h>
 
class Circle
{
public:
Circle(float x,float y,float s,float dx,float dy, float r)
{
xCoord=x;
yCoord=y;
speed=s;
dirx=dx;
diry=dy;
rad=r;
}
void Move();
void Draw();
friend void impact(Circle&A, Circle&B);
private:
float xCoord;
float yCoord;
float speed;
float dirx;
float diry;
float rad;
};
 
void Circle :: Draw()
{
setcolor(YELLOW);
circle(xCoord,yCoord,rad);
}
 
void Circle :: Move()
{
 
xCoord+=dirx*speed;
yCoord+=diry*speed;
if((yCoord-rad)<=0||(yCoord+rad)>=getmaxy())
{
diry=-diry;
}
if((xCoord-rad)<=0 || (xCoord+rad)>=getmaxx())
{
dirx=-dirx;
}
}
 
void impact(Circle&A,Circle&B)
{
int hist_dist = A.rad+B.rad;
double x_dist = (A.xCoord-B.xCoord)*(A.xCoord-B.xCoord);
double y_dist = (A.yCoord-B.yCoord)*(A.yCoord-B.yCoord);
 
if((sqrt(x_dist + y_dist)) <hist_dist)
{
A.dirx = -A.dirx;
A.diry = -A.diry;
B.dirx = -B.diry;
B.diry = -B.diry;
}
}
 
int main()
{ /* select a driver and mode that supports multiple pages. */
int gdriver = EGA, gmode = EGAHI, errorcode;
int x, y, ht;
 
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
 
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
Circle A (200,300,2,1,1,35);
Circle B (150,400,3,-1,-1,35);
Circle C (100,250,1,1,1,35);
Circle D (187,300,5,-1,-1,35);
 
do
{
setvisualpage(0);
setactivepage(1);
cleardevice();
A.Draw();
B.Draw();
C.Draw();
D.Draw();
setvisualpage(1);
delay(10);
setactivepage(0);
cleardevice();
A.Move();
B.Move();
C.Move();
D.Move();
A.Draw();
B.Draw();
C.Draw();
D.Draw();
impact(A,B);
impact(A,C);
impact(B,C);
 impact(A,D);
 impact(B,D);
 impact(C,D);
 
}while(!kbhit());
 
getch();
closegraph();
return(0);
}
Добавлено через 8 минут
void impact
что то на подобие функции отталкивания шариков(нарыл в инете), но работает некорректно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru