[Java]poprawienie jednej metody

0

Witam czy ktoś byłby mi w stanie napisać w inny sposób metodę ponieżej, aby nie było wykonywane kilkakrotnie to samo działanie?
(żeby nie były liczone kilkakrotnie te same wyrażenia)

public void keyPressed(KeyEvent evt)
	// Virtual keys (arrow keys, function keys, etc) - handled with keyPressed()
	// listener.
	{
		if (ile == 0)
			return;
		int dx = 0, dy = 0, zmiana;
		Random r = new Random();
		if (evt.isShiftDown())
			zmiana = r.nextInt(100);
		else
			zmiana = r.nextInt(10);
		switch (evt.getKeyCode()) {
		case KeyEvent.VK_LEFT:
			dx -= zmiana;
			break;
		case KeyEvent.VK_RIGHT:
			dx += zmiana;
			break;
		case KeyEvent.VK_UP:
			dy -= zmiana;
			break;
		case KeyEvent.VK_DOWN:
			dy += zmiana;
			break;
		}

		figury[biezacy].liczbaRuchow++;

		// sprawdzenie czy figura jest wolna lub czy jest zablokowana na obszar
		// który został zwolniony
		if (figury[biezacy].getZablokowanaNaObszar() == -1
				|| sektory.get(figury[biezacy].getZablokowanaNaObszar()) == true) {

			figury[biezacy].setZablokowanaNaObszar(-1); // zdjecie blokady z
														// figury

			int[] wierzcholki = new int[] { -1, -1, -1, -1 };
			for (int h = 0; h < ile; h++) {
				int i = -1;
				for (i = 0; i < figury[h].getWierzcholki().length; i++) {
					wierzcholki[i] = getNrSektora(
							figury[h].getWierzcholki()[i].podajX(),
							figury[h].getWierzcholki()[i].podajY());
				}

				if ((wierzcholki[0] == -1 || wierzcholki[0] == wierzcholki[1])
						&& (wierzcholki[1] == -1 || wierzcholki[1] == wierzcholki[2])
						&& (wierzcholki[2] == -1 || wierzcholki[2] == wierzcholki[3])
						&& (wierzcholki[3] == -1 || wierzcholki[3] == wierzcholki[0])) {
					figury[h].setNrSektora(getNrSektora(figury[h].podajX(),
							figury[h].podajY()));
				}
			}

			boolean czyZmianaSektora = false;

			// sprawdzenie czy w wyniku ruchu nie nastąpi zmiana sektora
			int biezacySektor = getNrSektora(figury[biezacy].podajX(),
					figury[biezacy].podajY());
			int i = -1;
			for (i = 0; i < figury[biezacy].getWierzcholki().length; i++) {
				if (getNrSektora(figury[biezacy].getWierzcholki()[i].podajX()
						+ dx, figury[biezacy].getWierzcholki()[i].podajY() + dy) != biezacySektor
						&& getNrSektora(
								figury[biezacy].getWierzcholki()[i].podajX()
										+ dx,
								figury[biezacy].getWierzcholki()[i].podajY()
										+ dy) != figury[biezacy].getNrSektora()) {
					czyZmianaSektora = true;
					break;
				}
			}

			if (!czyZmianaSektora) {
				// ten sam sektor - brak zmiany
				figury[biezacy].przesun(dx, dy, getWidth(), getHeight());
			} else {
				// zmiana sektora jest synchronizowana, ze wzgledu na to, zeby w
				// dwie figury nie znalazly sie
				// w tym samym sektorze, tylko jeden watek ma prawo zmieniac
				// obszar w danej chwili
				synchronized (this) {
					if (sektory.get(getNrSektora(
							figury[biezacy].getWierzcholki()[i].podajX() + dx,
							figury[biezacy].getWierzcholki()[i].podajY() + dy))) {
						// jesli wolny
						sektory.set(
								getNrSektora(figury[biezacy].podajX(),
										figury[biezacy].podajY()), new Boolean(
										true));
						sektory.set(
								getNrSektora(
										figury[biezacy].getWierzcholki()[i]
												.podajX() + dx,
										figury[biezacy].getWierzcholki()[i]
												.podajY() + dy), new Boolean(
										false));
						figury[biezacy].setNrSektora(getNrSektora(
								figury[biezacy].getWierzcholki()[i].podajX()
										+ dx,
								figury[biezacy].getWierzcholki()[i].podajY()
										+ dy));
						figury[biezacy]
								.przesun(dx, dy, getWidth(), getHeight());

						// w momencie kiedy jedna z figur zmieni sektor zwalnia
						// ona poprzedni sektor
						// wiec wszystkie watki zostaja o tym poinformowane o
						// tej sytuacji
						notifyAll();

					} else {
						// jeśli jest zmiana sektora oraz sektor jest
						// zablokowany dana figura jest zablokowana
						figury[biezacy].setZablokowanaNaObszar(getNrSektora(
								figury[biezacy].getWierzcholki()[i].podajX()
										+ dx,
								figury[biezacy].getWierzcholki()[i].podajY()
										+ dy));
					}
				}
			}

0

Zgaduję, że chodzi o:

figury[biezacy].getWierzcholki()[i].podajX() + dx;
figury[biezacy].getWierzcholki()[i].podajY() + dy;

Zapisz to do jakichś zmiennych na początku pierwszego ifa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1