#!/usr/bin/ruby files = ['zombiesmap.png', '../html/demtoc/img/plans/calques/plan_persos_1.png'] require 'libpng' def init_zombies(file, zombies) i = Png.new(File.read(file)) 600.times { |y| l = i.lines[y] 800.times { |x| zombies[[x, y]] = i.palette[l[x]] if l[x] > 0 } } puts "#{file}: #{zombies.keys.length} cases" i end def update_zombies(file, zombies) i = Png.new(File.read(file)) c = zombies.keys.dup c.each { |x, y| zombies.delete([x, y]) if zombies[[x, y]] != i.palette[i.lines[y][x]] } puts "#{file}: #{zombies.keys.length} zombies" i end zombies = Hash.new png = init_zombies(files.shift, zombies) cases = zombies.dup while not files.empty? png2 = update_zombies(files.shift, zombies) end k, v = nil cases.each { |k, v| png.lines[k[1]][k[0]] = 0 unless zombies[k] } png.write 'zombiesmap.png', true zombies.each { |k, v| png2.lines[k[1]][k[0]] = 0 } png2.write 'zombiesnzmap.png', true File.open('zombieslist', 'w') { |fd| zombies.each_key { |k| fd.puts "#{k[0]}, #{600-k[1]}" } }