Diablo背包功能C++实现

Diablo – 暗黑破坏神暴雪娱乐(Blizzard Entertainment)旗下系列品牌。

一些题外话

1998年,笔者接触到了Diablo 1,被其游戏性折服;2002年暑假,与小伙伴联机Diablo 2为了一件装备的归属吵来吵去;2012年,没有第一时间买到Diablo 3亚洲服务器的激活码,最后只能在奸商的抬价中以近1.5倍的原价入手。

经历了Diablo 1~3,可以很明显感觉到游戏系统的丰富、游戏画质的提升、游戏历史的延展,但是如果有人问我:提起Diablo你首先联想到的会是什么?我会回答:背包与装备系统。

Diablo背包系统概述

整个Diablo系列,背包系统可以说是没有经过很大改动,在野外你必须得小心合理的分配背包空间来获得最大的收益(这一点在Diablo 3中有所淡化)。摆放格子的行为很像小时玩的七巧板与积木:)

下面以Diablo 3背包为背景来说明下

diablo3bag

先决条件

大小:长10格,高6格
物品:物品有固定的尺寸(占长高多少),物品无重量概念
操作:占有操作,必须有足够尺寸的空间;交换操作,被交换的背包空间里有且只有一个物品

操作分类

这里分三个操作地点:地面上,背包里,手上(粘附在鼠标,需要后续操作)

  1. 玩家没有打开背包面板,拾取地面上的物品,背包有“足够”空间,则物品在地面消失,被自动拾取进背包,反之则物品继续留在地面。
  2. 玩家打开背包面板,拾取地面上的物品,物品会拾取到手上,玩家后续进一步操作(参考3,4,5)。
  3. 玩家打开背包面板,拿取背包一件物品到手上,丢到地面上。
  4. 玩家打开背包面板,拿取背包一件物品到手上,移动到背包其他位置,没发生交换。
  5. 玩家打开背包面板,拿取背包一件物品到手上,与背包里另一件物品交换。另一件物品被交换到手上,玩家后续进一步操作(参考3,4,5)。

使用C++实现了背包操作,应该有很多不完善/不合理的地方(甚至可能还有BUG,:D),设计了一个测试用例尽量包含了所有会存在操作的可能。

代码请 点击这里

(全文结束)


转载文章请注明出处:漫漫路 - lanindex.com

Leave a Comment

Your email address will not be published.