A Go version of the https://lcthw.dev/learn-code-the-hard-way/curseyou-python-rogue that makes a tiny Rogue in Go.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
822 B

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)
}
}