Czemu zawsze zwraca 0?

0

Ta metoda zawsze zwraca 0...

public static int walka() {
boolean dead = false;

	int zadaneDmg = 0;
przeciwnik p1 = new przeciwnik(3, 20);

	while(dead  = false) {
		
		zadaneDmg += przeciwnik.damage;
		if(przeciwnik.health - Gracz.damage <= 0) {
			dead = true;
			break;
		}
		
	}
	dead = false;
return zadaneDmg;

	}
0

while(dead = false) { powinno być while(dead ==false) {

0
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Dzięki wielkie!
Jedno pytanie tylko: czy kiedykolwiek korzystamy z pojedynczego znaku równania do porównywania?

0
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Jednak to chyba nie to, bo sprawdziłem i nadal zwraca 0

0
stasiek_raczejava napisał(a):
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Dzięki wielkie!
Jedno pytanie tylko: czy kiedykolwiek korzystamy z pojedynczego znaku równania do porównywania?

Nie, pojedynczy to przypisanie.

0
Krzywy Pomidorek napisał(a):
stasiek_raczejava napisał(a):
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Dzięki wielkie!
Jedno pytanie tylko: czy kiedykolwiek korzystamy z pojedynczego znaku równania do porównywania?

Nie, pojedynczy to przypisanie.
thx

0

Stworzyłeś obiekt typu przeciwnik (p1) a później i tak używasz jakiegoś pola z klasy przeciwnik. Jak już to p1.damage. Po drugie używaj gettery i settery. Po trzecie i ostanie :) lepsza pomoc będzie jak pokażesz cały kod i klasę przeciwnik.

0

Nie widać co robisz po drodze z obrażeniami gracza i zdrowiem przeciwnika, tak samo nie wiadomo co się kryje pod przeciwnik.damage. Prawdopodobnie gdzieś tam masz chochoła, a przypisanie zamiast porównania to tylko jeden z kilku błędów.

A fakt, jw. dodatkowo odwołujesz się do pola klasy, a nie obiektu, tak samo w przypadku gracza, jak się domyślam.

1

Na początek obrazek, dla przykucia uwagi

stanisławie-zacznijmy-od-testu.jpg

A w zasadzie od zamknięcia tego kodu w metodzie:

public int battle(Gracz gracz, Przeciwnik przeciwnik) {
		boolean dead = false;
		int zadaneDmg = 0;
		while (!dead) {
			zadaneDmg += przeciwnik.damage;
			przeciwnik.health -= gracz.damage;
			if (przeciwnik.health <= 0) {
				dead = true;
				break;
			}
		}
		return zadaneDmg;
	}

W twoim kodzie masz maleńki błąd, który wszystko rozwala:

 if(przeciwnik.health - Gracz.damage <= 0) {

health nigdy się nie zmniejsza.

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