Keresés

Új hozzászólás Aktív témák

  • Zulfaim

    csendes tag

    kicsit haladtam, most az a baj, hogy nem mindegyik egérkattintást észleli.

    public class Labda extends Applet implements Runnable, MouseListener
    {
    private int w,h;
    private double dx, dy;
    private int x, y;
    private Graphics offGraphics; // háttérgrafika
    private Image offImage; // háttérkép
    private Image labda;
    private Thread animator=null;
    boolean stopFlag;

    public void init(){
    offImage=createImage(400,400); // a háttérkép létrehozása
    offGraphics=offImage.getGraphics();
    labda=getImage(getDocumentBase(),"labda.jpg");
    x=200;
    y=200;
    // indulási pozíció
    dx=0;
    dy=10; // indulási lépéstáv
    setSize(400,400);
    setBackground(Color.white);
    addMouseListener(this);
    }

    public void start() { // a szál indítása
    animator=new Thread(this);
    stopFlag=false;
    animator.start();
    }

    public void run() {
    while(true) {
    if (stopFlag) // ha megállt az animáció
    break;
    try {
    Thread.sleep(50); // 0,2 másodperces várakozás
    }
    catch (InterruptedException ex){}
    w = labda.getWidth(this); // a labda méretei
    h = labda.getHeight(this);
    if ((x+w+dx)>400 || (x+dx)<0)
    dx=-dx * 0.6; // x irányváltás

    if ((y+h+dy)>400 || (y+dy)<0)
    dy=-dy * 0.6; // y irányváltás

    // léptetés
    x += dx;
    y += dy;
    dy += 1.2;

    repaint();
    }
    }

    public void stop() { // a szál törlése
    stopFlag = true;
    animator = null;
    }

    // kettőspuffer
    public void paint(Graphics g) {
    int h = getSize().height;
    int w = getSize().width;
    offGraphics.setColor(Color.white);
    offGraphics.fillRect(0,0,w,h); // a rajzlap törlése
    offGraphics.drawImage(labda,x,y,this);
    g.drawImage(offImage,0,0,this);
    }

    // egérkattintáskor módosítjuk a lépéseket - irányváltás
    public void mouseClicked(MouseEvent e){
    /*int dxx,dyy;

    dxx = e.getX()-x;
    dyy = e.getY()-y;*/

    if ( Math.sqrt ( Math.pow (e.getX() - (x + w/2), 2) + Math.pow (e.getY() - (y + w/2), 2)) < w)
    {
    dy += -20;
    dx += (x+w/2) - e.getX();
    }

    }

    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e) {}
    }

  • Zulfaim

    csendes tag

    Szevasztok!

    Egy dekázós appletet szeretnék írni, de valahogy nem sikerül megvalósítanom a következőket:
    -legyen gravitáció
    -ha a labda bal oldalára kattintok, akkor jobbra, ha a jobb oldalára kattintok akkor balra elpattanjon

    Eddig így néz ki a kódom:

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;

    public class Labda extends Applet implements Runnable, MouseListener
    {
    private int dx,dy,w,h;
    private int x, y;
    private Graphics offGraphics; // háttérgrafika
    private Image offImage; // háttérkép
    private Image labda;
    private Thread animator=null;
    boolean stopFlag;

    public void init(){
    offImage=createImage(400,400); // a háttérkép létrehozása
    offGraphics=offImage.getGraphics();
    labda=getImage(getDocumentBase(),"labda.jpg");
    x = y = 150; // indulási pozíció
    dx =0;
    dy = 20; // indulási lépéstáv
    setSize(400,400);
    setBackground(Color.white);
    addMouseListener(this);
    }

    public void start() { // a szál indítása
    animator=new Thread(this);
    stopFlag=false;
    animator.start();
    }

    public void run() {
    while(true) {
    if (stopFlag) // ha megállt az animáció
    break;
    try {
    Thread.sleep(100); // 0,1 másodperces várakozás
    }
    catch (InterruptedException ex){}
    w = labda.getWidth(this); // a labda méretei
    h = labda.getHeight(this);
    if ((x+w+dx)>400 || (x+dx)<0)
    dx=-dx; // x irányváltás
    if ((y+h+dy)>400)
    dy=-dy;
    if ((y+dy)<0)
    {
    dy=-dy; // y irányváltás
    y-=10;
    }
    // léptetés
    x += dx;
    y += dy;
    repaint();
    }
    }

    public void stop() { // a szál törlése
    stopFlag = true;
    animator = null;
    }

    // kettőspuffer
    public void paint(Graphics g) {
    int h = getSize().height;
    int w = getSize().width;
    offGraphics.setColor(Color.white);
    offGraphics.fillRect(0,0,w,h); // a rajzlap törlése
    offGraphics.drawImage(labda,x,y,this);
    g.drawImage(offImage,0,0,this);
    }

    // egérkattintáskor módosítjuk a lépéseket - irányváltás
    public void mouseClicked(MouseEvent e){
    int dxx,dyy;

    dxx = e.getX()-x;
    dyy = e.getY()-y;

    if((Math.abs(dxx)<=w/2) && (Math.abs(dyy)<=h/2))
    {
    y += -30;
    }

    }

    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e) {}
    }

  • Zulfaim

    csendes tag

    Mi jövő félévben fogjuk tanulni(BME), nem akarok 0-ról kezdeni.

  • Zulfaim

    csendes tag

    Honnan érdemes elkezdeni Java-t tanulni?
    Valaki tud esetleg valami jó könyvet?

Új hozzászólás Aktív témák

Hirdetés