728x90
반응형
양쪽 벽에 공이 충돌하면 튕겨나가는 프로그램을 만들어 볼 것이다.
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
|
int x,y;
int diam;//ball's diameter
//ball's direction
int xDir;
int yDir;
void setup(){
//Initialize variables in setup()
size(600,400);
x=10;//if x is 0 --> it alreay less than 0 --> error
y=100;
diam=30;
xDir=+4;
}
void draw(){
background(200);
ellipse(x,y,diam,diam);
x=x+xDir;//ball is going to the right
//if ball touches the border
if((x+diam/2)>600){ //radius
//change the direction
//xDir=-4;
xDir*=-1;
}else if((x-diam/2)<0){
//xDir=+4;
xDir*=-1;
}
}
|
cs |
이 부분을 자세히 보면 만약 600보다 클 경우에 다시 왼쪽으로 튕겨나가야 하는 것인데
x>600을 해버리면 원의 반쪽이 벽안으로 들어가버린다. 그래서
원이 딱 벽에서 튕기게 하기 위해 반지름 만큼인 diam/2를 더해준다.
마찬가지로 반대의 경우도 x-(diam/2)<0으로 설정해주어서 원이 벽 안으로 들어가지 않게 해준다.
그리고 x값이 600보다 커질 때 xDir=-4를 해줘서 왼쪽으로 방향을 트는 방법도 있지만
xDir*=-1을 해서 방향을 반대로 트는 방법도 있다.
반대의 경우도 xDir=4를 xDir*=-1을 해서 방향을 반대로 트는 방법이 있다. (이미 x값이 0이기에 xDir=xDir*-1을 해주면 마이너스였던 xDir값이 플러스로 바뀌면서 x값이 양수로 변한다)
그리고 중요한건 x를 0으로 두면 안된다. 적어도 x는 diam/2보다는 큰 수를 두는 것을 추천한다.
그래야 이 분기문에 걸리지 않는다..!
728x90
반응형
'processing' 카테고리의 다른 글
[Processing] Chapter 7_function/ Chapter8_Object (0) | 2022.03.13 |
---|---|
[Processing] Chapter5_조건문 (0) | 2022.03.12 |
[Processing] Chapter4_variables (0) | 2022.03.12 |
[processing] Chapter3_Interaction (0) | 2022.03.10 |
[processing] Chapter1_Pixel,Shape (0) | 2022.03.03 |
댓글