Programlama dilleri ve veri tabanları ile ilgili ipuçları

12/2/2009 - İki cismin çarpışmasına örneklerle ulaşmak: Örnek3 BallCollision

Kategori: Programming
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

/**
 *
 * @author KAYWINSOFT
 */
public class BallCollision extends Applet implements Runnable{
   
    Image bgIM;
    Graphics bgGA;
    Thread one = new Thread(this);
   
    int ball1X = 50;
    int ball1Y = 50;
    int ball2X = 300;
    int ball2Y = 50;
    int radius = 20;
    int[] b1CO = new int[400];
    int[] b2CO = new int[400];
   
    public void init(){
       bgIM = createImage(400,400);
       bgGA = bgIM.getGraphics();
       setBackground(Color.ORANGE);
    }
   
    public void start(){
        one.start();
    }
   
    public void run(){
        int i = 0;
        int one;
        int two;
       
        while(true){
            System.out.println(i);
            one = i;
            two = i;
            if(ball1X + radius != ball2X - radius)
           {
              b1CO[i] = ball1X++;
              b2CO[i] = ball2X--;
           }
          else{
              
                while(true)
                {
                    if(ball1X != 0 && ball2X != 300)
                    {
                       
                        ball1X -=1 ;
                        ball2X +=1;
                        bgGA.setColor(Color.black);
                        bgGA.drawOval(ball1X, ball1Y, 2 * radius, 2 * radius);
                        bgGA.setColor(Color.blue);
                        bgGA.drawOval(ball2X, ball2Y, 2*radius, 2*radius);
                        repaint();
                    }
                    try{
                        Thread.sleep(20);
                    }catch(Exception e){
                       
                    }
                }
            }
            repaint();
            try{
                Thread.sleep (20);
            }
            catch (InterruptedException ex)
            {
                System.out.println(ex.toString());
            }
            i++;
        }
    }
   
    public void paint(Graphics g){
        g.setColor(Color.black);
        g.fillOval(ball1X , ball1Y , 2 * radius, 2 * radius);
        g.setColor(Color.blue);
        g.fillOval(ball2X, ball2Y, 2 * radius, 2 * radius);
    }
}

En sonunda bu kodla 2 cismin çarpışmasını izleyebiliyoruz. Burda da baya bir amatörce davranıldı ki henüz geliştirme aşamasındadır. İleriki safhalarda çarpışma anında ses ve bir kaç aksiyon daha eklenmesini planlıyorum.
-----------------------------------------------------------------
Onur, bu benim programımım abi :D

































amatörlükten kastettiğim yer şuydu, henüz eski oluşturulan (paint fonksiyonunda) toplarla işlemleri sonlandıramadım. Global olarak oluşturulan bgGA grafik nesnesi ile işlemleri sonlandırdım. Bunu halledersem zaten işlem tamam :D

EkleBunu Sosyal Paylaşım Butonu
Yorum yaz!

<- :: Sonraki Sayfa ->

Hakkımda

Kategoriler

Arkadaşlarım