我认为Ruby被解释为C.如果是这样,我如何使用指针和其他功能的概念作为C环境的一部分?我们如何利用Ruby的简单性来利用C的强大功能?
我正在为一个小型游戏编写一个Dungeon Generator.
地下城是由房间组成的.A room有connections其他房间.
room.connections = [room_a, room_b]
和
room.number = 1 # unique id
现在我需要按它的号码选择一个房间.
我首先用一个recursive_scan方法做了这个,因为房间可以导入圆圈而导致StackOverflowError无效.所以我把一个already_scanned带有房间号码的数组放进去,这个数字已被选入方法的算法中.然后它没有扫描所有的房间 - 顺便说一句,我不知道为什么,根据我的逻辑不合理它应该有效.
然后我试图将所有房间也放在一个阵列中,然后迭代阵列为想要的房间 - 但在这里我得到了问题,每个房间基本上连接到其他每个房间,至少与其他房间相连; 所以阵列变得如此大dungeon_size * array_of_rooms.length.
我现在需要的是一个显式指针 - 我知道几乎每个ruby中的var都是一个指针,除了Fixnums和Float(还有其他一些).尽管如此,数组变得很大,所以我需要一个真正的指针.
(我也尝试设置一个object_ids数组并通过ObectSpace加载它们,但遗憾的是 - 因为我经常需要加载房间 - 那些带有想要的object_id的房间已经被回收了,正如错误信息所解释的那样.)
这是我的递归扫描方法:
def room(number)
recursive_scan(@map, number, []) # @map is the entrance room
end
private
def recursive_scan(room, number, scanned)
scanned << room.room_number
if room.room_number == number
room
else
r = nil
room.connections.each do |next_room|
if !scanned.include?(next_room.room_number)
r = recursive_scan(next_room, …Run Code Online (Sandbox Code Playgroud)