public class Jogador
{
public int Nivel;
public int Placar;
public string Percentual;
public Estado CriaEstado(Jogador jogador)
{
return new Estado(jogador.Nivel, jogador.Placar, jogador.Percentual);
}
public void RestauraEstado(Estado estadoJogador)
{
Nivel = estadoJogador.Nivel;
Placar = estadoJogador.Placar;
Percentual = estadoJogador.Percentual;
}
public void DisplayInfoJogador()
{
Console.WriteLine("Nivel: " + Nivel);
Console.WriteLine("Placar: " + Placar);
Console.WriteLine("Percentual: " + Percentual);
}
}
public class Estado
{
public int Nivel;
public int Placar;
public string Percentual;
public Estado(int nivel,int placar,string percentual)
{
Nivel = nivel;
Placar = placar;
Percentual = percentual;
}
}
public class Historico
{
public Estado Estado;
}
class Program
{
static void Main(string[] args)
{
Jogador jogador = new Jogador();
jogador.Nivel = 1;
jogador.Placar = 100;
jogador.Percentual = "100%";
Console.WriteLine("--------- Informação do jogador apos completar o Nivel 1 -----------");
jogador.DisplayInfoJogador();
// Quando o jogador completar qualquer nível, crie um ponto de verificação para esse nível.
Historico historico = new Historico();
historico.Estado = jogador.CriaEstado(jogador);
Thread.Sleep(2000);
jogador.Nivel = 2;
jogador.Placar = 130;
jogador.Percentual = "80%";
Console.WriteLine("--------- Informação do jogador apos completar o Nivel 2 -----------");
jogador.DisplayInfoJogador();
// Se os jogadores perderem toda a linha de vida, então, restaure o jogo a partir do nível 1
jogador.RestauraEstado(historico.Estado);
Console.WriteLine("--------- Informação do jogador apos restaurar o nivel 1 ----------");
jogador.DisplayInfoJogador();
Console.ReadLine();
}
}