程序部门按照如下需求文档,设计了一个游戏程序:
用面向对象的思想,设计一个简单的游戏框架。 程序需求如下:
1. 用命令行模式实现,不需要界面
2. 游戏世界中,存在5个房间:A、B、C、D、E。有些房间之间存在连通性(从一个房间所能到达的另一个房间),而有些房间之间则不存在。具体如下: 双向:A<->B、A<->C、C<->D、单向:D->A、D->E、E->B
3. 玩家可以控制角色从一个房间走到另一个房间(敲入命令goto A,则进入A房间),每次只能走一步路径。起始房间为A 每次进入房间,需要列出下一步可进入的房间。 例如:在房间C敲入:goto D,会列出: A E C
4. 每个房间里存在不同的NPC,NPC具有名称,玩家进入一个房间后,需要列出该房间的所有NPC名称。具体如下: A房间:无
B房间:杂货商、渔民 C房间:武器商 D房间:防具商 E房间:大海龟、海猫猫
5. NPC具有简单的对话功能,敲入talk NPC名称,则可以看到NPC所说的话。对话内容可自行设计。 扩展需求1
1
玩家拥有金钱和背包,初始金钱为100,背包中有5个格子,每个格子中可以放下一个物品。初始物品为“回城符”、“小刀” 扩展需求2
其中的一些NPC具有交易功能,玩家可以将自己身上的物品交易给NPC以获得金钱、或者通过身上的金钱购买物品。具体如下:
杂货商:出售 蜡烛(20)、小刀(30)、回城符(10) 渔民: 出售 鱼肉(10) 武器商:出售 乌木剑(50) 防具商:出售 木盾(40)
括号里的表示出售价格,同时也是收购价格。
打命令“shop NPC名称”可以列出该NPC所出售的物品和价格 打命令“buy NPC名称 物品名称”可购买物品 打命令“sell NPC名称 物品名称”可出售物品 打命令item可以列出自己背包中的物品。
背包满的情况下,不允许再买入物品,并提示“背包满”。
阅读文档时间为1小时,阅读文档完毕后请在2小时内完成如下题目: 1, 请为按照文档画出五个房间和他们之间的路径和方向;
2, 按照文档说明和,填写下表 Start room 示例A A A A A B B B Input Goto A Goto B Goto C Goto D Goto E GotoA Goto B Goto C Output B,C 1
B B C C C C C D D D D D E E E E E Goto D Goto E Goto A Goto B Goto C Goto D Goto E Goto A Goto B Goto C Goto D Goto E Goto A Goto B Goto C Goto D Goto E 3, 针对扩展需求1和2,测试背包功能,描述你的测试思路和方法。
一道AS3面试题的解答
题目:
对一批编号为1-100全部开关朝上(开)的灯进行以下操作:
开关编号凡是1的倍数反方向拨一次开关;若该编号也是2的倍数反方向又拨一次开关;若该编号又是3的倍数反方向又拨一次开关……以此类推一直计算到100为止。 目的:请trace出经过反复开关操作后所有关闭的灯的开关编号。
这是我写给大家看的易懂版本:
var n:int, m:int; var range:int = 100;
for(var i:int = 1; i <= range; i ++){ n = 1; while(true){ if(n > i / n){ break;
1
}
if(i % n == 0){ if(i / n == n){ trace(\结果\ break; } } n ++; } }
下面是写着玩的缩写版本,不过正常写项目代码,我不会这样干的,在这儿只是娱乐一下而已。下面这段代码想玩就看看,不想玩的看上面就行了,判断原理是一样,没区别! var n:int = 1, range:int = 1000; for(var i:int = 1; i <= range; i += n = 1){
while(n > 0) n = n > i / n ? 0 : !(i % n) ? i / n == n ? -1 : n + 1 : n + 1; if(n == -1) trace(\结果\ }
我将range都改成100000后,第一种方法耗时7233毫秒,第二种缩减的写法耗时1840毫秒。对于易读易懂,你会选择那种方法呢? 对于暗泪同学的回复,下面增加一点内容:
其实上面写的是正常算法,如果2亿次,通过分析题目,可以得出只要该数能被开平方时,就是关闭状态,因此这道题目如果是写在项目里面,可以这样写: var range:int = 1000000000; var num:int = Math.pow(range,0.5); for(var i:int = 1; i <= num; i ++){ trace(\结果\ }
我测试过10亿次的效率,仅需要6毫秒~何其快啊!
1