[Java] 자바 애플릿 쓰리쿠션 당구 그래픽
- 프로그래밍 정보
- 2009. 11. 9.
반응형
읽기전에 손가락 한번 클릭~ >_<
고마워요 ~ Chu ~ ♥
음.... 해 넘어가기 그래픽을 한 후엔
좀 더 새로운 그래픽을 해보고 싶어졌다
바로 당구의 쓰리쿠션인데....음....
우선 이렇게 있다면 노란 공으로 흰 공을 쓰리쿠션으로 치려면 어떻게 해야될까...?
뭐 당구의 고수분님들께선 여러 방법이 있겠지만 가장 일반적인 방법으론...
이정도 될 것인데.... ( 그림 디자인엔 소질이 없는지라....^^;;; )
자... 그러면 어떻게 노란공을 굴리면 될까
우선 시작점을 기준으로 좌표값을
x값은 늘리면서 y값은 줄여나가다가 애플릿의 위쪽부분.... 그러니까 대략 10 정도의 좌표값 부근에서
멈추게 하면 되겟고.......
2번 방법은 마찬가지로 x값을 늘리면서 y값 또한 늘려 나가다가 일정 부분 도달시 멈춘 후
3번으로 넘어가서 3번은 x y 값 둘다 감소하게 만들다가 흰색 공 부분 도달 시 또 다른 그래픽을 만들어주면 될 듯 싶다.
import javax.swing.*;
import java.awt.*;
import java.applet.*;
public class cushion extends Applet{
int x,y;
int k =150;
public void init(){
Color c = new Color(51,152,0);
setBackground(c);
setSize(600,300);
}
public void paint(Graphics g){
g.setColor(Color.white);
g.fillOval(30,30,50,50);
for(x = 10; x <= 190; x = x+5){
for( y = k; y <= k+3; k=k-4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(60); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
int a = 10;
for(x = 190; x <= 330; x = x+5){
for( y = a; y >= a-3; a=a+4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(60); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
int t = 125;
for(x = 330; x >= 270; x = x-2){
for( y = t; y >= t-3; t=t+4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(60); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
int p = 250;
for(x = 270; x >= 56; x = x-5){
for( y = p; y <= p+3; p=p-4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(80); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
g.fillOval(x,y,50,50);
g.clearRect(30,30,50,50);
int x,y;
int k =150;
public void init(){
Color c = new Color(51,152,0);
setBackground(c);
setSize(600,300);
}
public void paint(Graphics g){
g.setColor(Color.white);
g.fillOval(30,30,50,50);
for(x = 10; x <= 190; x = x+5){
for( y = k; y <= k+3; k=k-4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(60); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
int a = 10;
for(x = 190; x <= 330; x = x+5){
for( y = a; y >= a-3; a=a+4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(60); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
int t = 125;
for(x = 330; x >= 270; x = x-2){
for( y = t; y >= t-3; t=t+4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(60); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
int p = 250;
for(x = 270; x >= 56; x = x-5){
for( y = p; y <= p+3; p=p-4 ){
g.setColor(Color.yellow);
g.fillOval(x,y,50,50);
try{
Thread.sleep(80); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
g.fillOval(x,y,50,50);
g.clearRect(30,30,50,50);
int q = 10;
for(x = 15; x >= 10; x = x-2){
for( y = q; y <= q+3; q=q-4 ){
g.setColor(Color.white);
g.fillOval(x,y,50,50);
try{
Thread.sleep(250); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
g.fillOval(x,y,50,50);
}
}
for(x = 15; x >= 10; x = x-2){
for( y = q; y <= q+3; q=q-4 ){
g.setColor(Color.white);
g.fillOval(x,y,50,50);
try{
Thread.sleep(250); // 0.1초 동안(5)
} catch (InterruptedException e){}
g.clearRect(x,y,50,50);
}
}
g.fillOval(x,y,50,50);
}
}
변수가 꽤나 많이 적용 되었는데
사실 이걸 다 만들고 나니 for문을 도대체 무슨생각으로 저렇게 허술하게 했을까 하는 의문이 든다..;;
단지 그냥 늘리기만 할 것이면 ++ 를 이용해도 될 터이지만....
그 당시 그 생각을 이어가기 위해..... 그냥 수정을 안하기로 결정했다...ㅋㅋ
사실 이걸 다 만들고 나니 for문을 도대체 무슨생각으로 저렇게 허술하게 했을까 하는 의문이 든다..;;
단지 그냥 늘리기만 할 것이면 ++ 를 이용해도 될 터이지만....
그 당시 그 생각을 이어가기 위해..... 그냥 수정을 안하기로 결정했다...ㅋㅋ
( 움직이는 화면을 캡쳐하는법을 몰라서 일일이 그림판으로 하나하나 캡쳐한 후 만드니
짜증이 밀려온다.... 앞으론 움직이는 화면은 되도록 캡쳐를 지양 해야 되겠다... )
반응형