Skip to content

Instantly share code, notes, and snippets.

@hitode909
Created December 19, 2008 12:27
Show Gist options
  • Save hitode909/37994 to your computer and use it in GitHub Desktop.
Save hitode909/37994 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
def walk(hash, start, goal, level)
cur = start
level.times do |i|
now = { cur, hash[cur] }
puts "#{i+1}/#{level}: #{now.inspect}"
cur = hash[cur]
return false unless cur
return true if cur == goal and (i+1) == level
end
return false
end
def bar
puts "="*30
end
# main
bar
puts "迷路ゲーム"
puts "ようこそ!!!!!!"
bar
maze = { }
level = 0
until level > 0
print "select level(0以上): "
level = gets.to_i
end
level.times do
maze[rand(level)] = rand(level)
end
start = rand(level)
goal = rand(level)
score = 0
loop do
bar
puts "start:#{start} goal:#{goal} score:#{score}"
puts "maze=#{maze.inspect}"
puts "mazeを更新して、回数通りにゴールに行きたいです。"
bar
print "> "
begin
input = eval(gets)
maze.update( input ) if input.kind_of?(Hash)
rescue
puts "update error!!\n"
else
puts "mazeを更新しました"
score += 1
ensure
puts "check"
result = walk(maze, start, goal, level)
if result
puts "オメデトウ!!!"
puts "score: #{score}"
exit
else
puts "失敗しました"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment