#!/usr/local/bin/perl -- # -*-Perl-*- # # From: greg@hansen.ncd.com (Greg Renda) # Newsgroups: alt.games.xpilot # Date: 25 Sep 1993 02:02:57 GMT # Organization: Network Computing Devices Inc., Mt. View, CA, USA # # Here's a perl script to convert map files to ppm format. This lets # you browse maps without having to run xpilot or the map editor. Of # course you'll need the pbm utilities as well. I use it with the # following simple script: # # maptoppm < $1 | pnmenlarge 2 | pnmtoxwd | xwud # # The colors are as follows: # # space - black # walls - gray # fuel - red # cannon - white # bases - blue # # left gravity - green # right gravity - green # positive gravity - cyan # negative gravity - magenta # # two-way wormhole - yellow # in wormhole - orange # out wormhole - pink # # Enjoy! # # -Greg # $black='0 0 0'; $white='255 255 255'; $gray='128 128 128'; $red='255 0 0'; $green='0 255 0'; $blue='0 0 255'; $yellow='255 255 0'; $magenta='255 0 255'; $cyan='0 255 255'; $orange='255 165 0'; $pink='255 192 203'; $wall='xswqa'; $space=' '; $fuel='#'; $cannon='rdfc'; $base='_*'; $gravLeft='<'; $gravRight='>'; $gravPlus='+'; $gravMinus='\-'; $gravity=$gravLeft.$gravRight.$gravPlus.$gravMinus; $wormbi='@'; $wormin='('; $wormout=')'; $wormhole=$wormbi.$wormin.$wormout; $symbols=$wall.$fuel.$cannon.$gravity.$wormhole.$base; while (<>) { ($lower = $_) =~ tr/[A-Z]/[a-z]/; if ($lower =~ /^mapwidth/) { s/\s//g; ($dummy, $width) = split(/:/); next; } if ($lower =~ /^mapheight/) { s/\s//g; ($dummy, $height) = split(/:/); next; } if (!$data) { if ($data = $lower =~ /^mapdata/) { s/\s//g; ($dummy, $dummy, $end) = split(/:/); print "P3\n$width $height\n255\n"; } next; } last if /^$end/; chop; s/[^$symbols]/ /g; # get rid characters we don't care about s/[$space]/$black /g; s/[$wall]/$blue /g; s/[$fuel]/$red /g; s/[$cannon]/$white /g; s/[$base]/$gray /g; s/[$gravLeft]/$green /g; s/[$gravRight]/$green /g; s/[$gravPlus]/$cyan /g; s/[$gravMinus]/$magenta /g; s/[$wormbi]/$yellow /g; s/[$wormin]/$orange /g; s/[$wormout]/$pink /g; print "$_\n"; }