https://github.com/developerdavi/cloudwalk-test
https://github.com/developerdavi/cloudwalk-test
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/developerdavi/cloudwalk-test
- Owner: developerdavi
- Created: 2023-08-03T16:07:21.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-03T22:44:37.000Z (over 2 years ago)
- Last Synced: 2025-03-17T04:39:06.293Z (11 months ago)
- Language: Go
- Size: 32.2 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# CloudWalk test
## Technologies
- Go
- Git
## How to run
### 1. Clone the repository
```bash
git clone https://github.com/developerdavi/cloudwalk-test
```
### 2. Run the project
```bash
go run .
```
## Tasks
### 1. Log parser
Create a project to parse the Quake log file.
The log file was generated by a Quake 3 Arena server, including a great deal of information of every match.
The project should implement the following functionalities:
- Read the log file
- Group the game data of each match
- Collect kill data
#### Example
```
21:42 Kill: 1022 2 22: killed Isgalamido by MOD_TRIGGER_HURT
```
_The player "Isgalamido" died because he was wounded and fell from a height enough to kill him._
```
2:22 Kill: 3 2 10: Isgalamido killed Dono da Bola by MOD_RAILGUN
```
_The player "Isgalamido" killed the player "Dono da Bola" using the Railgun weapon._
Example of grouped information for each match:
```json
"game_1": {
"total_kills": 45,
"players": ["Dono da bola", "Isgalamido", "Zeh"],
"kills": {
"Dono da bola": 5,
"Isgalamido": 18,
"Zeh": 20
}
}
```
Additional notes:
1. When `` kill a player, that player loses -1 kill score.
2. Since `` is not a player, it should not appear in the list of players or in the dictionary of kills.
3. The counter `total_kills` includes player and world deaths.
## 2. Report
Create a script that prints a report (grouped information) for each match and a player ranking.
## 3. Plus
Generate a report of deaths grouped by death cause for each match.
Death causes (extracted from [source code](https://github.com/id-Software/Quake-III-Arena/blob/master/code/game/bg_public.h))
```c
// means of death
typedef enum {
MOD_UNKNOWN,
MOD_SHOTGUN,
MOD_GAUNTLET,
MOD_MACHINEGUN,
MOD_GRENADE,
MOD_GRENADE_SPLASH,
MOD_ROCKET,
MOD_ROCKET_SPLASH,
MOD_PLASMA,
MOD_PLASMA_SPLASH,
MOD_RAILGUN,
MOD_LIGHTNING,
MOD_BFG,
MOD_BFG_SPLASH,
MOD_WATER,
MOD_SLIME,
MOD_LAVA,
MOD_CRUSH,
MOD_TELEFRAG,
MOD_FALLING,
MOD_SUICIDE,
MOD_TARGET_LASER,
MOD_TRIGGER_HURT,
#ifdef MISSIONPACK
MOD_NAIL,
MOD_CHAINGUN,
MOD_PROXIMITY_MINE,
MOD_KAMIKAZE,
MOD_JUICED,
#endif
MOD_GRAPPLE
} meansOfDeath_t;
```
#### Example
```json
"game-1": {
"kills_by_means": {
"MOD_SHOTGUN": 10,
"MOD_RAILGUN": 2,
"MOD_GAUNTLET": 1,
...
}
}
```