package main import "fmt" /* // 普通函数 func 函数名(参数) 返回值 { // 函数体 } // 方法 = 函数 + 接收者 func (接收者) 方法名(参数) 返回值 { // 方法体 } */ // 游戏角色系统 type Player struct { Name string Level int Health int MaxHealth int Attack int } // 值接收器方法 - 只读操作 func (p Player) DisplayStatus() { fmt.Printf("=== %s的状态 ===\n", p.Name) fmt.Printf("等级: %d\n", p.Level) fmt.Printf("生命值: %d/%d\n", p.Health, p.MaxHealth) fmt.Printf("攻击力: %d\n", p.Attack) } func (p Player) IsAlive() bool { return p.Health > 0 } // 指针接收器方法 - 修改状态 func (p *Player) TakeDamage(damage int) { p.Health -= damage if p.Health < 0 { p.Health = 0 } fmt.Printf("%s受到%d点伤害!剩余生命值: %d\n", p.Name, damage, p.Health) } func (p *Player) Heal(amount int) { p.Health += amount if p.Health > p.MaxHealth { p.Health = p.MaxHealth } fmt.Printf("%s恢复%d点生命值!当前生命值: %d\n", p.Name, amount, p.Health) } func (p *Player) LevelUp() { p.Level++ p.MaxHealth += 20 p.Health = p.MaxHealth // 升级回满血 p.Attack += 5 fmt.Printf("%s升级了!现在等级: %d\n", p.Name, p.Level) } // 战斗方法 func (p *Player) AttackTarget(target *Player) { if !p.IsAlive() { fmt.Printf("%s已经倒下,无法攻击!\n", p.Name) return } if !target.IsAlive() { fmt.Printf("%s已经倒下,无需攻击!\n", target.Name) return } damage := p.Attack fmt.Printf("%s攻击%s,造成%d点伤害!\n", p.Name, target.Name, damage) target.TakeDamage(damage) } func main() { fmt.Println("=== 游戏战斗演示 ===\n") // 创建两个玩家 hero := &Player{ Name: "勇者", Level: 1, Health: 100, MaxHealth: 100, Attack: 15, } monster := &Player{ Name: "怪物", Level: 1, Health: 80, MaxHealth: 80, Attack: 12, } // 显示初始状态 hero.DisplayStatus() monster.DisplayStatus() fmt.Println("\n=== 战斗开始 ===") // 第一轮攻击 hero.AttackTarget(monster) monster.AttackTarget(hero) // 第二轮攻击 hero.AttackTarget(monster) monster.AttackTarget(hero) // 勇者升级 fmt.Println("\n=== 勇者升级 ===") hero.LevelUp() hero.DisplayStatus() // 最终攻击 fmt.Println("\n=== 最终攻击 ===") hero.AttackTarget(monster) // 检查存活状态 fmt.Printf("\n战斗结果:\n") fmt.Printf("勇者存活: %t\n", hero.IsAlive()) fmt.Printf("怪物存活: %t\n", monster.IsAlive()) }