Skocz do zawartości
  • 0

Int dla kazdego gracza


gbgfgf

Pytanie

Rekomendowane odpowiedzi

  • 0

Musisz stworzyć własny objekt (ktoś na pewno Ci to wytłumaczy). Kod będzie wyglądał tak:

Klasa User:

public class User {

	private int money = 0;
	
	public User(String name){
		this.money = 0;
	}
	
	public int getMoney(){
		return this.money;
	}
	public void setMoney(int i){
		this.money = i;
	}
}

Klasa UserUtil:

public class UserUtil {

	private static List<User> list = new ArrayList<User>();
	public static void addUser(User user){
		if(!list.contains(user)) list.add(user);
	}
	public static void removeUser(User user){
		if(list.contains(user)) list.remove(user);
	}
	public static List<User> getList(){
		return list;
	}
	public static User get(String name){
		for(User user : UserUtil.getList()){
			if(user.getName().equalsIgnoreCase(name)) return user;
		}
		return new User(name);
	}
}

Oczywiście musisz również stworzyć metodę: load() i save(), która będzie odpowiednio wczytywać i zapisywać dane.

Teraz gdy chcesz wyświetlić czyjeś pieniądze robisz tak:

Po 1. Gdy masz już dodanego Usera do Listy userów (UserUitl.addUser(sender.getName()));

Robisz tak:

User user = UserUtil.get(sender.getName());

I potem:

user.getMoney() - zwraca pieniądze gracza.
user.setMoney(500) - ustawia pieniadze gracza na 500.

 

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
31 minut temu, KrejzolekPRO napisał:

Musisz stworzyć własny objekt (ktoś na pewno Ci to wytłumaczy). Kod będzie wyglądał tak:

Klasa User:


public class User {

	private int money = 0;
	
	public User(String name){
		this.money = 0;
	}
	
	public int getMoney(){
		return this.money;
	}
	public void setMoney(int i){
		this.money = i;
	}
}

Klasa UserUtil:


public class UserUtil {

	private static List<User> list = new ArrayList<User>();
	public static void addUser(User user){
		if(!list.contains(user)) list.add(user);
	}
	public static void removeUser(User user){
		if(list.contains(user)) list.remove(user);
	}
	public static List<User> getList(){
		return list;
	}
	public static User get(String name){
		for(User user : UserUtil.getList()){
			if(user.getName().equalsIgnoreCase(name)) return user;
		}
		return new User(name);
	}
}

Oczywiście musisz również stworzyć metodę: load() i save(), która będzie odpowiednio wczytywać i zapisywać dane.

Teraz gdy chcesz wyświetlić czyjeś pieniądze robisz tak:

Po 1. Gdy masz już dodanego Usera do Listy userów (UserUitl.addUser(sender.getName()));

Robisz tak:


User user = UserUtil.get(sender.getName());

I potem:


user.getMoney() - zwraca pieniądze gracza.
user.setMoney(500) - ustawia pieniadze gracza na 500.

 

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
W klasie util nie ma nic o getName ;p (fuck logic)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
38 minut temu, KrejzolekPRO napisał:

Musisz stworzyć własny objekt (ktoś na pewno Ci to wytłumaczy). Kod będzie wyglądał tak:

Klasa User:


public class User {

	private int money = 0;
	
	public User(String name){
		this.money = 0;
	}
	
	public int getMoney(){
		return this.money;
	}
	public void setMoney(int i){
		this.money = i;
	}
}

Klasa UserUtil:


public class UserUtil {

	private static List<User> list = new ArrayList<User>();
	public static void addUser(User user){
		if(!list.contains(user)) list.add(user);
	}
	public static void removeUser(User user){
		if(list.contains(user)) list.remove(user);
	}
	public static List<User> getList(){
		return list;
	}
	public static User get(String name){
		for(User user : UserUtil.getList()){
			if(user.getName().equalsIgnoreCase(name)) return user;
		}
		return new User(name);
	}
}

Oczywiście musisz również stworzyć metodę: load() i save(), która będzie odpowiednio wczytywać i zapisywać dane.

Teraz gdy chcesz wyświetlić czyjeś pieniądze robisz tak:

Po 1. Gdy masz już dodanego Usera do Listy userów (UserUitl.addUser(sender.getName()));

Robisz tak:


User user = UserUtil.get(sender.getName());

I potem:


user.getMoney() - zwraca pieniądze gracza.
user.setMoney(500) - ustawia pieniadze gracza na 500.

 

słyszałeś kiedyś o hash mapach? po jakiego uja użyłeś tu listy, i po co ten getter listy...  też bez sensu że statyczne

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
3 minuty temu, GotoFinal napisał:

słyszałeś kiedyś o hash mapach? po jakiego uja użyłeś tu listy, i po co ten getter listy...  też bez sensu że statyczne

No tak trochę nie potrzebne, dlaczego? Kopiowałem kod z mojego dropu, gdzie mam punkty kopania, poziom kopania turbodrop i jeszcze inne, a tutaj to usunąłem i dodałem mu monety, co racja to racja hashmapa się bardziej sprawdzi w tym przypadku.

11 minut temu, gbgfgf napisał:

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
W klasie util nie ma nic o getName ;p (fuck logic)

Jeszcze zapomniałem o:

private String name;

this.name = name;

public String getName() {
		return this.name;
	}

 

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
9 minut temu, KrejzolekPRO napisał:

No tak trochę nie potrzebne, dlaczego? Kopiowałem kod z mojego dropu, gdzie mam punkty kopania, poziom kopania turbodrop i jeszcze inne, a tutaj to usunąłem i dodałem mu monety, co racja to racja hashmapa się bardziej sprawdzi w tym przypadku.

Jeszcze zapomniałem o:


private String name;

this.name = name;

public String getName() {
		return this.name;
	}

 

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! 
:c

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

hm.., a co się pojawia w podpowiedzi?

Spróbuj: player.getName()

player.getName() nie pomogło
 

podpowiedzi:

Change metod 'addUser(User)' to 'addUser(String)'

Create method 'addUser(String)' in type UserUtils

Edytowane przez gbgfgf
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
3 minuty temu, gbgfgf napisał:

player.getName() nie pomogło
 

podpowiedzi:

Change metod 'addUser(User)' to 'addUser(String)'

Create method 'addUser(String)' in type UserUtils

Eh.. no bo nie stworzyłeś usera :D

User user = UserUtil.get(sender.getName());

I potem dopiero dodajesz usera do userutil jako UserUtil.addUser(user); :D

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
7 minut temu, KrejzolekPRO napisał:

Eh.. no bo nie stworzyłeś usera :D


User user = UserUtil.get(sender.getName());

I potem dopiero dodajesz usera do userutil jako UserUtil.addUser(user); :D

Dziekii działa, a jak się dodaje pieniądze? Jak cos dodaje a nie ustawia.

Edytowane przez gbgfgf
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
18 minut temu, gbgfgf napisał:

Dziekii działa, a jak się dodaje pieniądze? Jak cos dodaje a nie ustawia.

Ustawiasz tak, że pobierasz najpierw jego i dodajesz:

user.setMoney(user.getMoney()+ilosc);

Tylko, że po wyłączeniu serwera te wartości się wyzerują, więc przy wyłączaniu musisz je zapisać, a przy starcie wczytać.

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

jeżu, co tu się dzieje, ech, nie mam czasu by za dużo pisać więc tylko dodam

6 minut temu, KrejzolekPRO napisał:

Ustawiasz tak, że pobierasz najpierw jego i dodajesz:


user.addMoney(user.getMoney()+ilosc);

Tylko, że po wyłączeniu serwera te wartości się wyzerują, więc przy wyłączaniu musisz je zapisać, a przy starcie wczytać.

Tak się nie powinno robić, lepiej dodać metodę .addMoney/.subtractMoney tak by umożliwić potem dodanie różnej logiki, np wywalenia błędu kiedy ktoś chce zabrać więcej pieniędzy niż ktoś ma, lub zwracać wartość opisującą ile pieniędzy udało się zabrać/dodać

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, GotoFinal napisał:

jeżu, co tu się dzieje, ech, nie mam czasu by za dużo pisać więc tylko dodam

Tak się nie powinno robić, lepiej dodać metodę .addMoney/.subtractMoney tak by umożliwić potem dodanie różnej logiki, np wywalenia błędu kiedy ktoś chce zabrać więcej pieniędzy niż ktoś ma, lub zwracać wartość opisującą ile pieniędzy udało się zabrać/dodać

Co racja to racja, no więc op musi dodać do class'y User:

public void addMoney(int i){
	this.money = this.money+i;
}

I potem user.addMoney(ilosc);

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

 

56 minut temu, KrejzolekPRO napisał:

Co racja to racja, no więc op musi dodać do class'y User:


public void addMoney(int i){
	this.money = this.money+i;
}

I potem user.addMoney(ilosc);

Money podkreślone na czerwono ;p

Juz naprawilem

                    

@KrejzolekPRO
Jeszcze 2 pytania, jak odejmować te punkty, user.addMoney(-1)? czy inaczej?
I czy         if(user.getMoney() == 0) będzie działac?

Edytowane przez gbgfgf
AAA Juz znam blad, wkleiłem to w UserUtils
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Godzinę temu, gbgfgf napisał:

 

Money podkreślone na czerwono ;p

Juz naprawilem

                    

@KrejzolekPRO
Jeszcze 2 pytania, jak odejmować te punkty, user.addMoney(-1)? czy inaczej?
I czy         if(user.getMoney() == 0) będzie działac?

Stwórz sobie własną metodę od odejmowania, analogicznie do dodawania.

Tak będzie działać. To tak jakby if(int == int)?

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...