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.
41 lines
822 B
41 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)
|
|
}
|
|
}
|
|
|