随笔分类 -  XNA

摘要:下载地址:QQMarketSet2D_1.16.rar改了2个bug。更新历史: 1.16:更新日期:2012-4-3 修正货架销售量计算的bug。(bug提交:龙缘) 1.15:更新日期:2012-3-23 修正一个寻路方向的bug。(bug提交:_﹎X! 鍵o○) 阅读全文
posted @ 2012-04-03 22:21 妖気 阅读(292) 评论(0) 推荐(0)
摘要:方法取决于游戏配置里的开发模式1.Reach模式: 使用的是RenderTarget2D对象,将屏幕绘制至此对象,然后直接调用其保存命令即可。 (RenderTarget2D也经常用于后期渲染)RenderTarget2D screenshot;//添加绘制目标protected override void LoadContent(){ screenshot = new RenderTarget2D(GraphicsDevice, width, height, false, SurfaceFormat.Color, null);//初始化}protected override voi... 阅读全文
posted @ 2012-03-23 10:17 妖気 阅读(1160) 评论(0) 推荐(0)
摘要:今天是个可喜的日子!经过一系列的改进,1店5口计算时间从之前的近20分钟减少至99秒……改进内容如下1.取消链表搜索: 搜索过程和计算过程中,都需要判断目标节点是否在路径链表中,用的是LinkedList的Contains方法。 这个方法在每次递归循环中调用了0~8次,在面数计算方法中也要调用0~4次。花费的时间绝对不少。 原本先是用List去代替LinkedList,结果花费时间不减反增。 后来才想到应该直接在地图数据上做标记。地图标记原本很复杂,空地、起点、终点,都是不同标记。 干脆把地图数据取出来重新建立一个标记表,不可行走的都是0,可行走都是1,而路径标记为2. 每次入栈做... 阅读全文
posted @ 2012-03-21 19:34 妖気 阅读(829) 评论(0) 推荐(0)
摘要:昨天一直在琢磨,看怎样能缩短时间。函数、方法、判断什么的都没办法改进了。那就只有改善算法了。后来总算想到一个还算可行的办法。当如上图的情况下,很明显往后再怎么寻路,都不可能到达终点。加个判断直接把此节点false掉岂不是能节省大部分的无用递归?那如何判断呢?当point(2,5)遍历寻找四周可用节点进行递归之前,先调用A*寻路看所有可用节点能否到达终点即可。无法到达则放弃。此图里面,point(2,5)是被放弃的,后面省去的递归数至少好几千。而如果每次递归之前调用A*的话,总时间是会翻好几番的。到底A*花的时间多,还是省去的递归时间多,那就只能实际测试一下才知道了。于是花了大量时间把A*独立出 阅读全文
posted @ 2012-03-20 21:16 妖気 阅读(528) 评论(0) 推荐(0)
摘要:经群里高人点拨。决定还是先把算法优化下试试。递归算法本身效率就比较低下,由于其便捷性,还有本人思维狭隘性,目前还无法想出替代它的方法。只能从递归内部的逻辑运算和变量等开始着手。先在各个过程里加上计时器,看哪里耗时最大。例如: timer = new Stopwatch(); timer.Start(); times[0] = (int)timer.Elapsed.TotalMilliseconds; searchAll(startTile, paths); times[0] = (in... 阅读全文
posted @ 2012-03-17 23:39 妖気 阅读(807) 评论(1) 推荐(0)
摘要:应广大群众的要求,终于开始着手研究最优路径了。其实最初一直认为,计算量太大,家用电脑的性能根本就无法实现。等真的做了之后才知道……真的无法实现!!何谓最优?以QQ超市的经营理念,应该满足如下要求: 1.销售面数最大 2.充分利用所有空间 3.既要满足非RMB玩家的要求(全单面),又要满足RMB玩家的要求(多放双面和4面) 4.单格货架、双格货架能合理搭配摆放在空位上。基本上,除了第一点,其他都无法满足要求……----------------------------------------------------想了很久,基本思路:用穷举法找到所有路径,然后计算找出面数最大路径。具体如下... 阅读全文
posted @ 2012-03-16 20:09 妖気 阅读(861) 评论(0) 推荐(0)