本文整理汇总了Golang中github.com/karlek/worc/area.Area.MoveDown方法的典型用法代码示例。如果您正苦于以下问题:Golang Area.MoveDown方法的具体用法?Golang Area.MoveDown怎么用?Golang Area.MoveDown使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/karlek/worc/area.Area
的用法示例。
在下文中一共展示了Area.MoveDown方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: HeroMovement
func HeroMovement(ev termbox.Event, a *area.Area) int {
var col *area.Collision
var err error
switch ev.Key {
case ui.MoveUpKey:
col, err = a.MoveUp(&creature.Hero)
case ui.MoveDownKey:
col, err = a.MoveDown(&creature.Hero)
case ui.MoveLeftKey:
col, err = a.MoveLeft(&creature.Hero)
case ui.MoveRightKey:
col, err = a.MoveRight(&creature.Hero)
default:
return 0
}
// Creature moved out of bounds.
if err != nil {
return 0
}
stk, ok := a.Items[creature.Hero.Coord()]
if ok && stk.Len() > 0 {
if stk.Len() > 1 {
status.Println("You find a heap of items on the ground:", termbox.ColorWhite)
} else {
status.Println("You find a single item on the ground:", termbox.ColorWhite)
}
print := " "
for _, s := range []area.DrawPather(*stk) {
i, _ := s.(item.DrawItemer)
if stk.Len() < 4 {
print += i.Name() + ", "
} else {
print += string(i.Graphic().Ch) + ", "
}
}
status.Println(print[:len(print)-2], termbox.ColorBlack+termbox.AttrBold)
}
// Successful movement.
if col == nil {
return creature.Hero.Speed
}
// Another creature occupied that tile -> battle!
if c, ok := col.S.(*creature.Creature); ok {
creature.Hero.Battle(c, a)
return creature.Hero.Speed
}
// Hero walked into an object.
if obj, ok := a.Objects[col.Coord()].(*object.Object); ok {
// If the hero walked into a door -> open!
switch obj.Name() {
case "door (closed)":
a.Objects[col.Coord()] = object.Objects["door (open)"].New()
status.Println("You open the closed door.", termbox.ColorBlack+termbox.AttrBold)
return creature.Hero.Speed
}
}
return 0
}
示例2: Action
// Action performs simple AI for a creature.
func (c *Creature) Action(a *area.Area) int {
if i := a.Items[c.Coord()].Peek(); i != nil {
c.PickUp(a)
return c.Speed
}
if c.Equipment.MainHand == nil && len(c.Inventory) > 0 {
for _, pos := range item.Positions {
if i, ok := c.Inventory[pos]; ok {
if !item.IsEquipable(i) {
break
}
if i.Name() != "Iron Sword" {
break
}
c.Equip(pos)
return c.Speed
}
}
}
var col *area.Collision
var err error
if c.X() < Hero.X() {
col, err = a.MoveRight(c)
} else if c.X() > Hero.X() {
col, err = a.MoveLeft(c)
} else if c.Y() < Hero.Y() {
col, err = a.MoveDown(c)
} else if c.Y() > Hero.Y() {
col, err = a.MoveUp(c)
}
if err != nil {
// log.Println("err / collide?")
return c.Speed
// return 0
}
if col == nil {
return c.Speed
}
if mob, ok := col.S.(*Creature); ok {
if mob.IsHero() {
c.Battle(mob, a)
return c.Speed
}
}
// If all fails, creature waits.
return c.Speed
}