Przekazywanie obiektów z jednej klasy do drugiej

0

Cześć,
mam takie pytanie bo uczę się javy i postanowiłem ze spróbuje napisać mały projekt tj. tekstowa gra rpg i już na starcie mam problem. Stworzyłem klasę gracz oraz klasę przeciwnik.Teraz postanowiłem stworzyć klasę Walka która będzie odpowiadał za walkę w momencie spotkania gracza i jakiegoś moba i problem mam taki ze nie wiem do końca jak przekazać obiekt gracza i moba z klasy głównej do owej klasy Walka. To znaczy przekazuje te obiekty w konstruktorze klasy Walka ale kiedy próbuje wywołać metodę z klasy mob odpowiedzialna za otrzymywanie obrazę to linijka kodu jest podkreślona z info "@ expected after this token".Kody klas ponizej.

Klasa Gracz

import java.util.Random;

public class Gracz {

    private String nick;
	private int hp;
	private int level;
	private int atak;
    private int crit;
    Random kryt = new Random();
    public Gracz(String name,int hp,int level,int atak,int crit)
    {
    	this.nick=name;
    	this.hp=hp;
    	this.level=level;
    	this.atak=atak;
    	this.crit=crit;
    	
    }

    public int getHp()
    {
    	return hp;
    }
	public int atak()
	{
		int krytyczny=kryt.nextInt(100);
		if(krytyczny>=crit)
			return atak+10; //10 to bonus do ataku
		else
		return atak; 
	}
	
	public void wypisz_staty()
	{
		System.out.println("Imie:"+nick+" punkty zdrowia:"+hp+" poziom: "+level+" sila ataku:"+atak+" szansa na kryt:"+crit);
		
	}
	
}

Klasa Przeciwnik

import java.util.Random;
public class Przeciwnik {
	
	    private String nick;
		private int hp;
		private int level;
		private int atak;
        Random a=new Random();
		public Przeciwnik(String name,int hp,int level,int atak)
		{
			this.nick=name;
			this.hp=hp;
			this.level=level;
			this.atak=atak;
		
		}
		
		public int atak()
		{
			int attack=a.nextInt(50);
			return attack;
			
		}
		public void obrazenia(int attack)
		{
			hp=hp-attack;
		}
		public void getHP()
		{
			System.out.println(hp);
		}
		
}

Klasa Walka

public final class Walka {

	Gracz radi;
	Przeciwnik mob;
	public Walka(Gracz radi,Przeciwnik mob) {
		
		this.radi=radi;
		this.mob=mob;
		
	}
	
	mob.obrazenia(radi.atak()); //blad ??
	
}

Main



import java.util.Random;

public final class Gra {

	public static void main(String[] args) {
		
		Gracz radi = new Gracz("Radi",250,1,10,15);
		
		radi.wypisz_staty();
		Przeciwnik goblin = new Przeciwnik("Kog",100,1,15);
		
		Walka bitwa = new Walka(radi,goblin);
		
	}

}
0

Kolego, to się chwali, że uczysz się Javy. Ale powiedz z jakiego podręcznika się uczysz, że próbujesz sobie radośnie w klasie poza metodami wołać cokolwiek? Nie było przypadkiem w książce napisane, że w języku Java kod umieszcza się w metodach i konstruktorach, a nie gdzieś poza nimi?

0

W sumie to czytam juz 3 raz to co napisałeś i dałej jakoś nie rozumiem :D . Mam ksiazke Java podstawy X ale nie znalazłem tam jak przekazać obiekty jeden klasy do drugiej,wiec to żeby zrobić to w konstruktorze znalazłem w internetach ale i tak nie moge sie odwołać do metody z innej klasy ;/

1

Czego dokładnie nie rozumiesz? Nie rozumiesz co to jest metoda i konstruktor czy czego dokładnie?

Nie pisze się kodu w dowolnym miejscu w klasie! Kod trzeba pisać w metodach i konstruktorach.

public final class Walka {
 
    Gracz radi;
    Przeciwnik mob;
    public Walka(Gracz radi,Przeciwnik mob) {
 
        this.radi=radi;
        this.mob=mob; // ten kod jest w konstruktorze. Tak jest ok.
 
    }
 
    mob.obrazenia(radi.atak()); // ten kod jest poza konstruktorem i poza metodą. Tak się nie pisze w Javie!
 
}
0

Juz wygooglowalem o co chodzi xd dzieki,przyzwyczajenia z C i cpp

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