arrays vergleichen geht nicht?

  • Themenstarter Themenstarter pixartist
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

pixartist

Gast
Code:
	public void paint(Graphics g) {
		g.drawImage(bgImage, 0, 0, this);
		int size = _bombs.size();
		for (int i = 0; i < size; i++) {
			_bombs.get(i).drawBomb(g);
			if (_bombs.get(i).count()) {

				_bombs.get(i).explode();
				i--;

			}
			size = _bombs.size();

		}
		size = _blocks.size();
		for (int i = 0; i < size; i++) {
			_blocks.get(i).draw(g);

		}
		size = _morebombs.size();
		for (int i = 0; i < size; i++) {
			_morebombs.get(i).draw(g);

		}
		size = _morepower.size();
		for (int i = 0; i < size; i++) {
			_morepower.get(i).draw(g);

		}
		if (!p1.isDead())
			p1.drawPlayer(g);
		if (!p2.isDead())
			p2.drawPlayer(g);
		size = _explosions.size();
		for (int i = 0; i < size; i++) {
			_explosions.get(i).draw(g);
			if (_explosions.get(i).count()) {
				// _explosions.get(i).unset();
				_explosions.remove(i);
				i--;

			}
			size = _explosions.size();
		}
		if(!p1_oldpos.equals(p1.getFieldPos()))
		{
			p1.checkForPowerUps();
			p1_oldpos = p1.getFieldPos().clone();
		}
		if(!p2_oldpos.equals( p2.getFieldPos()))
		{
			p2.checkForPowerUps();
			p2_oldpos = p2.getFieldPos().clone();
		}

	}

hier unten sieht man, wie ich überprüfe, ob die position von p1/p2 sich verändert hat, wenn ja, dann führe ich checkForPowerUps() durch und setze p1/p2_oldpos = p1/p2.getFieldPos().clone();

nun wird aber jedesmal wieder checkForPowerUps aufgerufen, auch wenn sich p1/p2.getFieldPos() nicht ändert!
 
Ich sehe leider nicht, was deine Frage mit Arrays zu tun hat? Was ist p1/p2? Ist die equals-Methode überschrieben worden? Im Normalfall wird da nur die Speicherposition verglichen, und die ist bei zwei verschienen Objekten verschieden (was dann bedeutet, dass equals false zurückgibt).
 
ne die equals methode ist nicht überschrieben, womit kann man denn vergleichen ob der inhalt zweier "int[]" arrays gleich ist?
 
Mit der Methode Arrays.equals( int[], int[] ).

Für mehr Informationen: in die API gucken.

Code:
import java.util.Arrays;

int[] a = ...
int[] b = ...

if( Arrays.equals( a, b )){
  ...
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben