Skip to main content

Java Thread Kullanımı : Duvara Çarpan Top

Kaynak kodlarını paylacağım uygulama Bir Java Aplleti  ve Thread kullanarak daha önceden tek bir  adet  için yaptığımız duvara carpıp seken top  uygulamasını birden çok top için gerçekler. Bu program İstanbul Üniversitesinde Nesneye Yönelik Programlama dersinde haftalık verilen ödevlerden bir tanesidir. Çıktısı aşağıdaki fotoğrafa benzer olacaktır.

Program 3 sınıftan oluşur :

1- Tek bir Top Nesnesinin ve metodlarının tanımladığı sınıf.

2-Top Nesnelerinin yerleştirildiği ve ekrana cizdirildiği Java Applet Sınıfı

3-   Topların herhangi birinin carptiği noktayı koordinat olarak  döndüren  Hata Yakalama Sınıfı

 

Tek Bir top nesnesinin oluşturulduğu  Sınıfın yapısı su şekildedir..

 

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package threadtop;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.ImageObserver;
 
/**
 *
 * @author Aytac
 */
public class top {
 
    int x;  // Topun X Baslangic noktası
    int y;  // Topun Y baslangic noktası
    int vx; // Topun x koordinatındaki hareket miktari
    int vy; // Topun y koordinatindaki hareket miktari
    int r; // Topun Yari Capi;
 
    public top(int x, int y, int vx, int vy, int r) {
        this.x = x;
        this.y = y;
        this.vx = vx;
        this.vy = vy;
        this.r = r;
    }
 
    public top(){
        // Boş Kurucu Metot
    }
 
    public int getR() {
        return r;
    }
 
    public void setR(int r) {
        this.r = r;
    }
 
    public int getVx() {
        return vx;
    }
 
    public void setVx(int vx) {
        this.vx = vx;
    }
 
    public int getVy() {
        return vy;
    }
 
    public void setVy(int vy) {
        this.vy = vy;
    }
 
    public int getX() {
        return x;
    }
 
    public void setX(int x) {
        this.x = x;
    }
 
    public int getY() {
        return y;
    }
 
    public void setY(int y) {
        this.y = y;
    }
 
public void topCiz(Graphics g, top topum){
   g.setColor(Color.BLACK); 
   g.fillOval(topum.x, topum.y, topum.r, topum.r);
   topum.Git(g, topum);
 
} 
 
public void Git(Graphics g, top topum){
topum.x+=topum.x+topum.vx;
topum.x+=topum.y+topum.vy;
           topum.topCiz(g, topum);     
 
  }
 
}

Şimdide Cizim işlemini yaptığımız Ve Extends olarak JApplet alan ve Runnanble özelliği vererek Thread caliştirmaya izin verdiğimiz sınıfın kodlarını verelim..

 
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 *
 * @author Aytac CİCİ 
 * 16 Mayıs 2012
 * Java Nesneye Yönelik Programlama  Thread Ödevi 
 */
public class balls extends Applet implements Runnable{
    tekTop top1,top2,top3,top4; 
    Thread Gorev; // Thread tipinden tanımlama yapıldı
    public  void init()  { // İnit bir Aplette ilk olarak calisan metodtur. 
         Gorev=new Thread(this);
         setSize(800,600); // Ekran genişliği 800 600 olarak ayarlandı
         top1=new tekTop(30,30,Color.red,"Kırmızı");   // Birinci Topun Özellikleri
         top2=new tekTop(80,200,Color.BLACK,"Siyah");// İkinci Topun Özellikleri
         top3=new tekTop(100,100,Color.yellow,"Sarı"); //Ücüncü Topun Özellikleri
         top4=new tekTop(150,150,Color.blue,"Mavi"); // Dördüncü Topun Özellikleri
         Gorev.start(); // Thread başlatıldı ve Run fonksiyonu cağrıldı
    }
    public void run(){ //Thread calis Start edildiğinde bu metod calisir. .
         while(true){
             try{
              hareketet();   // hareket isimli Metodo gidip Top oradanda top nesnesinin
              // Gelismis isimli fonksiyonuna cağrı yapacaz.
              repaint();// Ekranın yeniden cizilmesini saglayan metod
              Gorev.sleep(1);} catch(InterruptedException e){
 
                      System.out.println("Hata Meydana Geldi -->" + e);
              }
         }
    }
    public void stop() {
        Gorev=null; 
     // Thread sonlandırıldıgında Gorev isimli Thread'a null atadık.
    }
 
    public void hareketet()
      {  top1.gelismis();
         top2.gelismis(); 
         top3.gelismis();
         top4.gelismis();
      }
 
    public void paint(Graphics g)
      { 
        try {
            top1.ciz(g,top1);   // Top nesnesinin ciz isimli metodu cagaraildi.
        } catch (hataFirlat ex) {
 
        }
        try {
            top2.ciz(g,top2);
        } catch (hataFirlat ex) {
 
        }
        try {
            top3.ciz(g,top3);
        } catch (hataFirlat ex) {
 
        }
        try {
            top4.ciz(g,top4);
        } catch (hataFirlat ex) {
 
        }
      }
}

Şimdide Hata fırlatma işlemini yaptığımız sınıfın kodlarını paylaşarak programa son verelim..

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author Aytac CİCİ 
 * 16 Mayıs 2012
 * Java Nesneye Yönelik Programlama  Thread Ödevi 
 */
public class hataFirlat extends Exception{
   tekTop topum; 
    hataFirlat(tekTop t){
      topum=t;  
      System.out.println(topum.isim  + " top  -->  "  + (int)t.px + " x " + (int)t.py + "noktasında caprtı" );  
    }
}

Başka bir örnek kodda görüşmek dileğiyle.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Email
Print