设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

求一范围算法

查看数: 1296 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2010-11-1 22:51

正文摘要:

SOU到了敌人AI 开发了,对于只有一个主角 来说还暂时不考虑这个,但是如果开发队友系统 并且队友也会群攻的话…… 这里有一个固定长宽的矩形框 求矩形框的位置,在这个位置内有最多的敌人数量。 ...

回复

bbaugle 发表于 2010-11-2 17:03:37
拜托..这里是XP提问区..

点评

你不懂你还小  发表于 2010-11-2 17:14
六祈 发表于 2010-11-1 23:50:02
本帖最后由 六祈 于 2010-11-1 23:52 编辑

于是跟上一个方案,接受批斗

  1. def find_rect(total_width, total_height, rect_width, rect_height, events)
  2. weight_array = Array.new(total_width * total_height){0}
  3. events.each{|event| add_weight(event, rect_width, rect_height)}
  4. max_index = weight_array.index weight_array.sort[-1]
  5. return max_index % total_width + 1, max_index / total_width + 1
  6. end
  7. def add_weight(event, rect_width, rect_height)
  8. index = event.x * total_width + event.y
  9. for i in 0...rect_width
  10. for j in 0...rect_height
  11. arr[index - i - j * total_width] += 1
  12. end
  13. end
  14. end
复制代码
算法思路:
构建各个初始点【将该点作为矩形左上点】的权重数组weight_array,并初始化所有元素为0;
迭代每一个事件,将被迭代事件作为矩形右下角,加成权重数组的元素;
取出权重数组的最大值索引,对total_width取余加1为x,除以total_width加1得到y

点评

似乎好方法~  发表于 2010-11-2 17:37

评分

参与人数 1星屑 +376 收起 理由
fux2 + 376 认可答案+脸熟~

查看全部评分

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-3-1 21:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表