Um Parser para o jogo Quake 3, que lê o arquivo de log (.txt), agrupa os dados de cada partida e organiza as informações em um .json
O programa separa o arquivo .txt linha por linha e as transforma em listas. O arquivo então analisa as linhas e busca alterações na partida e de acordo com as alterações, cria e modifica um dicionario que contem as informações da partida.
O programa então agrupa os dicionarios das partidas em uma grande lista de partidas e finaliza o inserindo em um .json
Listas e Variaveis do programa:
- players (list): Armazena os jogadores da partida. A lista é reiniciada a cada jogo
- game_count (int): Contabiliza o numero de partidas
- total_kills (int): Contabiliza o numero de mortes da partida. É reiniciado a cada jogo
- game_list (list): Contém todas as partidas jogadas. É inserida no .json no final do programa
Analisando as linhas, o programa executa tarefas especificas de acordo com o que o log diz:
- ClientConnect: Adiciona um dicionario do jogador junto com seu id
- ClientDisconnect: Remove o dicionario do jogador mencionado
- ClientUserinfoChanged: Altera o nome do jogador caso haja necessidade
- Kill: Adiciona uma kill global para a partida e altera os valores de kill dos jogadores de acordo com as informações da linha
- ShutdownGame: Finaliza um jogo, armazenando as informações da partida em um dicionario e o adiciona na lista de partidas. Logo em seguida reinicia as variaveis, pronto para um novo jogo.
Cria um dicionario para o jogador e o adiciona na lista de jogadores
A função adiciona o id como um item no dicionario
- id (int): id do jogador
Retorna a posição de um jogador na lista de jogadores após busca-lo de acordo com o id.
Caso a função não encontre o jogador ela retorna -1
- id (int): id do jogador
Altera o nome de um jogador e atualiza a lista de nomes antigos.
A função verifica se o novo nome esta na lista dos nomes antigos e o remove caso esteja. Caso contrario, a função adiciona o nome na lista de nomes antigos.
Logo em seguida, ela altera o nome atual pelo novo.
- pos (int): posição do jogador na lista de jogadores
- new_name (string): novo nome do jogador
Adiciona uma kill para o jogador que eliminou
Remove uma kill do jogador que morreu, caso o mesmo tenha morrido para o "mundo"
- killer_id (int): id do jogador que matou
- killed_id (int): id do jogador que morreu
Insere os valores e informações da partida em uma camada de dicionarios e adiciona o dicionario da partida na lista de partidas.
- game_count (int): Valor do jogo atual
- total_kills (int): Valor total de mortes que ocorreram no jogo
- game_list (list): Contém todas as partidas jogadas.