public class Personaggio {
private int puntiVitaMax;
private int puntiVita;
private int staminaMax;
private int stamina;
private int manaMax;
private int mana;
private int livello;
private boolean vivo;
private int forza;
private int costituzione;
private int puntiEsperienza;
public Personaggio(int puntiVitaMax, int staminaMax, int manaMax, int forza,
int costituzione) {
[Link] = puntiVitaMax;
[Link] = puntiVitaMax;
[Link] = staminaMax;
[Link] = staminaMax;
[Link] = manaMax;
[Link] = manaMax;
[Link] = 1;
[Link] = true;
[Link] = forza;
[Link] = costituzione;
[Link] = 0;
}
public void getVita() {
[Link](puntiVita);
}
public void getStamina() {
[Link](stamina);
}
public void getMana() {
[Link](mana);
}
public boolean isVivo() {
return vivo;
}
public void attaccoSemplice() {
if (!vivo) {
[Link]("Il personaggio non è più vivo.");
return;
}
if (stamina >= 5) {
stamina -= 5;
} else {
[Link]("Stamina insufficiente per attaccare.");
}
}
public void recuperaStamina() {
if (vivo) {
stamina = staminaMax;
}
}
public void danniSubiti(int danni) {
if (!vivo) return;
danni -= costituzione;
danni = [Link](0, danni);
puntiVita -= danni;
if (puntiVita <= 0) {
puntiVita = 0;
vivo = false;
[Link]("Il personaggio è morto.");
}
}
public void pozione() {
if (vivo) {
puntiVita = puntiVitaMax;
}
}
public void aumentaLivello() {
livello++;
puntiVitaMax += 5;
staminaMax += 5;
manaMax += 5;
forza += 2;
costituzione += 2;
[Link]("Livello aumentato a: " + livello);
}
public void guadagnaEsperienza(int punti) {
puntiEsperienza += punti;
[Link]("Esperienza guadagnata: " + punti);
if (puntiEsperienza >= livello * 100) {
puntiEsperienza -= livello * 100;
aumentaLivello();
}
}
public void combatti(Personaggio avversario) {
if (!vivo) {
[Link]("Non puoi combattere. Sei morto.");
return;
}
if (![Link]()) {
[Link]("Il tuo avversario è già morto.");
return;
}
if (stamina < 5) {
[Link]("Stamina insufficiente per combattere.");
return;
}
stamina -= 5;
int danni = forza;
[Link](danni);
[Link]("Hai inflitto " + danni + " danni al nemico.");
}
public void attaccoCritico(Personaggio avversario) {
if (!vivo) {
[Link]("Non puoi combattere. Sei morto.");
return;
}
if (![Link]()) {
[Link]("Il tuo avversario è già morto.");
return;
}
if (stamina < 10) {
[Link]("Stamina insufficiente per un attacco critico.");
return;
}
stamina -= 10;
boolean critico = [Link]() < 0.3;
int danni = critico ? forza * 2 : forza;
[Link](danni);
if (critico) {
[Link]("Attacco critico! Hai inflitto " + danni + " danni
al nemico.");
} else {
[Link]("Hai inflitto " + danni + " danni al nemico.");
}
}
public void difesa() {
if (!vivo) {
[Link]("Non puoi difenderti. Sei morto.");
return;
}
costituzione += 3;
[Link]("Hai aumentato temporaneamente la tua costituzione di 3
per un turno.");
}
}