You are on page 1of 6

Kapitulli 9 Detyra 1.

Detyra: Ktheheni nj aplikacion q keni shkruar n kapitullin e 7 ose 8 t


Programming Project. Ridizajno dhe riimplemento aplikacionin me ndihmen
e interfejsit dhe klass abstrkte. (Nse nuk keni punuar ndonj projekt nga
dy kapitujt e m parshm, pastaj ndrto aplikacionin library database q
sht e prshkruar n projektin 6 t kapitullit 8.)

1. Problemi ka qen q ta bjm nj aplikacion I cili e bn lvizjen e vezs, ku


animacioni shifet (duket) me shpejtsi korrekte, veza bjen nga lart dhe godet
tokn.

2. Rnja e vezs sht llogaritur me kt formul nga Fizika:

Lartsia = IO (0.5*g*t2)

Ku IO sht iniciali i lartsis s vezs ( n metr), t sht koha (n


sekonda) q veza bie n tok, dhe g sht nxitimi I gravitetit, I cili sht
9.81 metr/sekond2.Animacioni duhet t lejoj shfrytzuesin q t specifikoj
lartsin nga vendi q veza bie. Kur voja t arrin lartsin Zero, duhet t thehet
n tok.

3. Test FallingEgg
main

BounceController
runAnimation() : void
delay(int milisecs) : void

FalligEgg
AnimationWriter xPosition(): int
paintComponent(Graphics g) : void radiusOf(): int
time(): int
move(): void
yPosition(): int
BoxWraiter
paint(Graphics g) : void

ObjektiLevizes
xPosition(): int
yPosition(): int
EggWriter radiusOf(): int
paint(Graphics g) : void time(): int
move(): void
5.

/** Kontrollon nje top levizes brenda nje kutie */


public class BounceController
{ private ObjektiLevizes egg;
private AnimationWriter writer;
/** Inicializon kontrolluesin
* @param b - objekti model
* @param w - objekti output view */
public BounceController(ObjektiLevizes
e,AnimationWriter w)
{ egg = e;
writer = w;
}
/** Ekzekuton animimin permes ores interne */
public void runAnimation()
{ while ( egg.yPosition()<=700 )
{ delay(500);
egg.move();
writer.repaint();
}
}

private void delay(int milisecs)


{ try { Thread.sleep(milisecs);}
catch (InterruptedException e) { }
}
}

import javax.swing.*;
import java.awt.*;
/**Afishon nje kuti me nje top ne te*/
public class AnimationWriter extends JPanel
{ private BoxWriter boxWriter;
private EggWriter eggWriter;
/** konstrukton pamjen e kutis dhe vezes
* @param bx- shkruesi i kutis
* @param eg- shkruesi i vezes
* @param height - lartesia e kornizes
* @param width - gjersia e kornizes */
public AnimationWriter(BoxWriter bx , EggWriter eg,int
height,int width)
{ boxWriter=bx;
eggWriter=eg;
JFrame f= new JFrame();
f.getContentPane().add(this);
f.setTitle("veza e leshuar nga lart");
f.setSize(height,width) ;
f.setVisible(true);
}
/** Vizaton kutin dhe vezen
* @param g - penda grafike*/
public void paintComponent(Graphics g)
{ boxWriter.paint(g);
eggWriter.paint(g);
}
}

import java.awt.*;
/** Afishon kutine */
public class BoxWriter
{ private int height;
private int width;
/** Konstrukton shkruesin
* @param b - kutia qe afishon */
public BoxWriter(int h,int w)
{ height=h;
width= w;
}
/** Vizaton kutine
* @param g - penda grafike */
public void paint(Graphics g)
{g.setColor(Color.gray);
g.fillRect(0, 0,width,height);
g.setColor(Color.black);
g.drawRect(0, 0,width,height);
g.setColor(Color.blue);
}
}
import java.awt.*;
/** Afishon nje vezen levizese */
public class EggWriter
{ private ObjektiLevizes egg;
private Color color;
/** Konstrukton shkruesin
* @param e - veja qe afishohet
* @param c - ngjyra e vezes */
public EggWriter(FallingEgg e, Color c)
{egg = e;
color = c;
}
/** Vizaton vezen
* @param g - penda grafike */
public void paint(Graphics g)
{ if(egg.yPosition()>=700)
{ g.setColor(Color.white);
g.fillOval(egg.xPosition()-20,693,40,14);
g.setColor(Color.orange);
g.fillOval(egg.xPosition()-10,695,20,10);
int n = egg.time();
g.setColor(Color.yellow);
g.drawString("koha e renjes "+n,20,600);
}
else
{g.setColor(color);
int radius = egg.radiusOf();
g.fillOval(egg.xPosition() - radius,
egg.yPosition()-radius, 2 * radius, 2 * radius);
int n = egg.time();
g.setColor(Color.yellow);
g.drawString("koha e renjes "+n,20,600);
g.drawString(""+(700-
egg.yPosition()),egg.xPosition()+10,egg.yPosition());
}

}
}

import java.util.*;
/**Modelon vezen qe bije nga nje lartesi*/
public class FallingEgg implements ObjektiLevizes
{ private int IO;
private int xPos;
private int height;
private int radius;
private int t=0;
private GregorianCalendar time=new
GregorianCalendar();
/* KOnsrtukton vezen
@param hight- lartesia iniciale e qendres se vezes
@param pozita- horizontale e qendres se vesez
@param r-rrezja e topit
*/
public FallingEgg(int initHeight,int xp,int r)
{ IO=initHeight;
xPos=xp;
radius = r;
}

/**Kthen poziten horizontale te vezes*/


public int xPosition()
{return xPos;}
/**kthen rrezen e vezes*/
public int radiusOf()
{return radius;}
/** rrit per nje variablen t
* t sherben si numrues i kohes*/
public int time()
{t=t+1;
return t;}

/** leviz vezen nje hap*/


public void move()
{ height=700-(int)((IO-(0.5*9.81*t*t)));
}
/**kthen poziten vertikale te vezes*/
public int yPosition()
{
return height;
}

/**ObjektiLevizes paraqet objektet levizese */


public interface ObjektiLevizes
{ /** xPosition kthen poziten horizontal te objektit */
public int xPosition();

/** yPosition kthen poziten vertikale te objektit */


public int yPosition();

/** radiusOf kthen madhesin e objektin */


public int radiusOf();

/** time sherben si numruesi kohes*/


public int time();

/**move leviz objektin per nje hap */


public void move();
}

import javax.swing.*;
import java.awt.*;
/** Konstrukton dhe starton objektet ne nje aninim */
public class TestFallingEgg
{ public static void main(String[] args)
{ int boxHeight=700;
int boxWidth=200;
int eggRadius = 6;
int lartesia=(new
Integer(JOptionPane.showInputDialog("cakto lartesin nga
e cila do te leshohe vezane intervalin 10-
700")).intValue());
FallingEgg egg = new
FallingEgg(lartesia,boxWidth/2,eggRadius);
EggWriter eggWriter = new EggWriter(egg,
Color.pink);
BoxWriter boxWriter = new
BoxWriter(boxHeight,boxWidth);
AnimationWriter writer = new
AnimationWriter(boxWriter, eggWriter,
boxWidth,boxHeight+40);
new BounceController(egg, writer).runAnimation();

You might also like