Java hra - draggovanie obrázku (nejde) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java hra - draggovanie obrázku (nejde) – Java – Fórum – Programujte.comJava hra - draggovanie obrázku (nejde) – Java – Fórum – Programujte.com

 

Vlado
~ Anonymní uživatel
38 příspěvků
23. 11. 2012   #1
-
0
-

Zdravím... som v podstate začiatočník a v škole máme projekt, takú menšiu hru (zadanie vyzerá takto http://edi.fmph.uniba.sk/~tomcsanyiova/Java/11hra3x3/index.htm) a mám problém s pohybom objektu v applete... kód vyzerá takto:

(ide o môj prvý príspevok tu vo fóre, takže ak som niečo urobil zle, berte na to pls ohľad a upozornite ma, aby som vedel do budúcna)

import java.awt.*;
import java.applet.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Color;
import java.awt.event.*;
import java.awt.image.BufferedImage;

public class Pocitanie extends Applet implements MouseListener, MouseMotionListener {

	int c,c1,x,y,sx,sy;
	Obrazok Cisla [] [] = new Obrazok [3] [3];
	Pricitadlo Pric;
	private BufferedImage bufImage;	
	boolean tahanie = false;
	
	class Obrazok {
		Image obr;
		int x,y,z;
		
		Obrazok (int xx, int yy, int zz) {
			this.x = xx;
			this.y = yy;
			this.z = zz;
			obr = getImage(getCodeBase(),"images/" + zz + ".gif");
		}
	}
	
	class Pricitadlo {
		Image obr;
		int x,y,nx,ny,z;
		
		Pricitadlo (int xx, int yy, int zz) {
			this.x = xx;
			this.y = yy;
			this.z = zz;
			this.nx = xx;
			this.ny = yy;
			obr = getImage(getCodeBase(),"images/" + zz + ".gif");
		}
	}
	
	public void init () {
		resize(600,450);
		bufImage = new BufferedImage(600, 450, BufferedImage.TYPE_INT_ARGB);
		addMouseMotionListener((MouseMotionListener) this);
		addMouseListener((MouseListener) this);
        
        for (int i = 0; i < 3; i++) {
        	for (int j = 0; j < 3; j++) {
        		y = 40;
        		x = 30;
        		switch (i) {
        		  case 1: y+= 110; break;
        		  case 2: y+= 220; break;
        		}
        		switch (j) {
        		  case 1: x+= 85; break;
        		  case 2: x+= 170; break;
        		}
        	    c = (int) (Math.random()*5+1);
        		Cisla [i] [j] = new Obrazok(x,y,c);	
        	}
        } 
    }
	
	public void update(Graphics g)
	  {
		  paint(g);
	  }
	
	public void paint(Graphics g) {
		c1 = (int) (Math.random()*9+1);
		sx = 325;
		sy = 150;
		Pric = new Pricitadlo (sx, sy, c1);
		
		Graphics bg = bufImage.getGraphics();
		bg.setColor(new Color(255,255,255));
		bg.fillRect(0, 0, 650, 450);
		
		bg.drawImage(Pric.obr,Pric.x,Pric.y,this);
				
		System.out.println(Pric.x);
				
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				bg.drawImage(Cisla[i][j].obr,Cisla[i][j].x,Cisla[i][j].y,this);	
				System.out.print(Cisla[i][j].x + " " + Cisla[i][j].y + " " + Cisla[i][j].z + " ");
			}
		
		g.drawImage(bufImage, 0, 0,this);
		g.fillRect(300, 25, 5, 350);
		g.drawString("Pričítadlo", 325, 125);
		}
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		int x = e.getX();
        int y = e.getY();	
        
        if ((x >= Pric.x) && (x <= (Pric.x) + 75) && (y >= Pric.y) && (y <= (Pric.y+100))) {
        	tahanie = true;
        }
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		Pric.x=Pric.nx;	
		Pric.y=Pric.ny;
		int cis = (int) Math.random()*9+1;
		Pric.obr= getImage(getCodeBase(),"images/" + cis + ".gif");
		Pric.z = cis;
		
		repaint();
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		if (tahanie == true) {
			Pric.x = e.getX()-20;
			Pric.y = e.getY()-20;
		}
		this.repaint();
	}

	@Override
	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
}

Díky moc

Nahlásit jako SPAM
IP: 91.127.70.–
zlz
~ Anonymní uživatel
634 příspěvků
24. 11. 2012   #2
-
0
-

Při každém paint vytváříš nové Pricitadlo. Zbytek jsem moc nestudoval.

Nahlásit jako SPAM
IP: 80.188.216.–
Vlado
~ Anonymní uživatel
38 příspěvků
24. 11. 2012   #3
-
0
-

Jop, díks. Už som vytváranie pričítadla hodil do inicializácie a je to ok. Ešte raz díky  

Nahlásit jako SPAM
IP: 91.127.70.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Podobná vlákna

Java 2D hra — založil Hano

Java hra po síti — založil kucape2

Java-Hra Projekt — založil Dušan

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý