package main import ( "fmt" "math/rand" ) func (game *Game) EnemyDeath() { is_dead := make([]Position, 0, len(game.Enemies)) for pos, enemy := range game.Enemies { if enemy.HP < 0 { is_dead = append(is_dead, pos) } } for _, pos := range is_dead { delete(game.Enemies, pos) } } func (game *Game) ApplyDamage(attacker *Enemy, defender *Enemy) { damage := rand.Int() % attacker.Damage defender.HP -= damage if damage == 0 { game.SetStatus("MISSED!") } else if defender.HP > 0 { game.SetStatus(fmt.Sprintf("HIT %d damage", damage)) } else { game.SetStatus("DEAD!") } } func (game *Game) Attack(target Position) { enemy, hit_enemy := game.Enemies[target] if hit_enemy { game.ApplyDamage(&game.Player, enemy) game.ApplyDamage(enemy, &game.Player) } }