-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRelatorio.cs
185 lines (160 loc) · 6.34 KB
/
Relatorio.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text;
namespace TrabalhoPratico1
{
/// <summary>
/// Controla a criação e edição do relatório do jogo Ludo.
/// </summary>
internal class Relatorio
{
private static int contadorCapturas = 0;
private static int contadorRetaFinal = 0;
private static int contadorFinalistas = 0;
private static int contadorMomentosImportantes = 0;
private static int contadorTurno = 0;
private static string diretorio = "Relatorio_JogoLudo.txt";
private static string nomeDoVencedor;
private static string relatorioGeral = "----- RELATORIO GERAL -----\n\n";
private static string momentosImportantes = "----- MOMENTOS IMPORTANTES -----\n\n";
private static string andamentoDoJogo = "----- ANDAMENTO DO JOGO -----\n\n";
public static int ContadorCapturas
{
get { return contadorCapturas; }
}
public static int ContadorRetaFinal
{
get { return contadorRetaFinal; }
}
public static int ContadorFinalistas
{
get { return contadorFinalistas; }
}
public static int ContadorMomentosImportantes
{
get { return contadorMomentosImportantes; }
}
public static int ContadorTurno
{
get { return contadorTurno; }
}
public static string Diretorio
{
get { return diretorio; }
}
public static string NomeDoVencedor
{
get { return nomeDoVencedor; }
set { nomeDoVencedor = value; }
}
/// <summary>
/// Propiedade facilitadora para adicionar textos ao final do relatório.
/// </summary>
private static StreamWriter writerAdicionar
{
get { return new StreamWriter(diretorio, true, Encoding.UTF8); }
}
/// <summary>
/// Propiedade facilitadora que substitui o relatório por um texto.
/// </summary>
private static StreamWriter writerSubstituir
{
get { return new StreamWriter(diretorio, false, Encoding.UTF8); }
}
/// <summary>
/// Começa um novo relatório.
/// </summary>
public static void Comecar()
{
StreamWriter Writer = writerSubstituir;
string texto = "O jogo de LUDO começou";
Writer.WriteLine(texto);
andamentoDoJogo += $"{texto}\n";
Writer.Close();
}
/// <summary>
/// Escreve um texto no relatório.
/// </summary>
public static void Escrever(string texto)
{
StreamWriter Writer = writerAdicionar;
Writer.WriteLine(texto);
andamentoDoJogo += $"{texto}\n";
Writer.Close();
}
/// <summary>
/// Escreve no relatório o turno atual e quem está jogando.
/// </summary>
public static void EscreverTurno(string nomeJogador)
{
StreamWriter Writer = writerAdicionar;
contadorTurno++;
string texto = $"\n======== TURNO {contadorTurno} ========\n\nO jogador {nomeJogador} está jogando.";
Writer.WriteLine(texto);
andamentoDoJogo += $"{texto}\n";
Writer.Close();
}
/// <summary>
/// Atualiza todas as informações e a formatação do relatório.
/// </summary>
public static void AtualizarRelatorio()
{
StreamWriter Writer = writerSubstituir;
if (contadorMomentosImportantes > 0)
Writer.WriteLine($"{ReceberRelatorioGeral()}\n{momentosImportantes}\n{andamentoDoJogo}");
else
Writer.WriteLine($"{ReceberRelatorioGeral()}\n{momentosImportantes}Não há momentos importantes\n\n{andamentoDoJogo}");
Writer.Close();
}
/// <summary>
/// Adiciona um texto que aparecerá na seção de Momentos Importantes no relatório.
/// </summary>
public static void AdicionarMomentoImportante(string texto)
{
momentosImportantes += $"TURNO {contadorTurno}: {texto}\n";
contadorMomentosImportantes++;
texto = texto.ToUpper();
if (texto.Contains("RETA FINAL"))
contadorRetaFinal++;
else if (texto.Contains("CHEGOU AO FINAL"))
contadorFinalistas++;
else if (texto.Contains("CAPTUROU"))
contadorCapturas++;
}
/// <summary>
/// Obtem todas as estatísticas para a seção Relatorio Geral.
/// </summary>
/// <returns>Texto do Relatório Geral</returns>
public static string ReceberRelatorioGeral()
{
string capturasTexto, retaFinalTexto, finalistaTexto, turnosTexto, importantesTexto, vitoriosoTexto;
if (nomeDoVencedor == null)
vitoriosoTexto = "Não há vencedor";
else
vitoriosoTexto = $"O Jogador {nomeDoVencedor} venceu o jogo";
// Corrigindo textos por questão de português.
if (contadorCapturas == 1)
capturasTexto = "1 Peão foi capturado";
else
capturasTexto = $"{contadorCapturas} Peões foram capturados";
if (contadorRetaFinal == 1)
retaFinalTexto = "1 Peão chegou na reta final";
else
retaFinalTexto = $"{contadorRetaFinal} Peões chegaram na reta final";
if (contadorFinalistas == 1)
finalistaTexto = "1 Peão finalizou o percurso";
else
finalistaTexto = $"{contadorFinalistas} Peões finalizaram o percurso";
if (contadorTurno == 1)
turnosTexto = "1 Turno aconteceu";
else
turnosTexto = $"{contadorTurno} Turnos aconteceram";
if (contadorMomentosImportantes == 1)
importantesTexto = "1 Momento importante ocorreu";
else
importantesTexto = $"{contadorMomentosImportantes} Momentos importantes ocorreram";
return relatorioGeral + $"{vitoriosoTexto}\n{turnosTexto}\n{importantesTexto}\n{capturasTexto}\n{retaFinalTexto}\n{finalistaTexto}\n";
}
}
}