home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume5 / golddig2 / part02 < prev    next >
Encoding:
Internet Message Format  |  1989-12-13  |  47.7 KB

  1. Path: uunet!ssbell!kent@ssbell.uu.net
  2. From: kent@ssbell.uu.net (Kent Landfield)
  3. Newsgroups: comp.sources.x
  4. Subject: v05i046: golddig2 -- A game for X11, Part02/04
  5. Message-ID: <595@ssbell.uu.net>
  6. Date: 14 Dec 89 03:16:34 GMT
  7. Sender: kent@ssbell.uu.net
  8. Lines: 1225
  9. Approved: kent@ssbell.uu.net (Kent Landfield)
  10.  
  11. Submitted-by: Alexander Siegel <siegel@cs.cornell.edu>
  12. Posting-number: Volume 5, Issue 46
  13. Archive-name: golddig2/part02
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then unpack
  17. # it by saving it into a file and typing "sh file".  To overwrite existing
  18. # files, type "sh file -c".  You can also feed this as standard input via
  19. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  20. # will see the following message at the end:
  21. #        "End of archive 2 (of 4)."
  22. # Contents:  golddig2/Makefile golddig2/golddig.h golddig2/golddig.p
  23. #   golddig2/goldlev010 golddig2/goldlev011 golddig2/goldlev012
  24. #   golddig2/goldlev013 golddig2/goldlev014 golddig2/goldlev015
  25. #   golddig2/goldlev016 golddig2/goldlev018 golddig2/makelev.c
  26. #   golddig2/scores.c
  27. # Wrapped by kent@ssbell on Wed Dec 13 20:36:50 1989
  28. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  29. if test -f 'golddig2/Makefile' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'golddig2/Makefile'\"
  31. else
  32. echo shar: Extracting \"'golddig2/Makefile'\" \(2241 characters\)
  33. sed "s/^X//" >'golddig2/Makefile' <<'END_OF_FILE'
  34. X# This program was written by Alexander Siegel in September of 1989   
  35. X# at Cornell University.  It may may copied freely for private use or 
  36. X# public dispersion provided that this comment is not removed.  This  
  37. X# program, any portion of this program, or any derivative of this     
  38. X# program may not be sold or traded for financial gain.
  39. X
  40. X# Name of game executable
  41. XGAME = golddig
  42. X# Name of level editor executable
  43. XEDITOR = makelev
  44. X# Directory where games binaries are stored
  45. XBIN = /usr/public/${HOSTTYPE}/games
  46. X# Directory where the library for this game will be stored
  47. XLIB = /usr/public/sun3/games/lib/${GAME}
  48. X# Directory where manual pages are kept
  49. XMANEXT = p
  50. XMAN = /usr/public/man/man${MANEXT}
  51. X# Font used to display score
  52. XSCOREFONT = -adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1
  53. X# Height of SCOREFONT
  54. XSCORESIZE = 18
  55. X
  56. X# Common compilers
  57. X#CC = cc
  58. XCC = gcc
  59. X
  60. X# Some common choices for CFLAGS.
  61. X#CFLAGS = -O2
  62. X#CFLAGS = -O
  63. XCFLAGS = -O -W -Wreturn-type -Wunused -g -finline-functions
  64. X#CFLAGS = -g
  65. XLDFLAGS = -g
  66. X
  67. Xall: ${GAME} ${EDITOR}
  68. X
  69. Xinstall: all
  70. X    -mkdir ${LIB}
  71. X    cp ${GAME} ${EDITOR} ${BIN}
  72. X# The next line sets up the level files so that anyone can edit all of
  73. X# the levels.  Remove this line to have better security.
  74. X    chmod 4755 ${BIN}/${EDITOR}
  75. X    touch ${LIB}/scores
  76. X# Allow anyone to modify the high score file.  An alternative is to
  77. X# change the mode bits of ${GAME} to be 4755.
  78. X    chmod 666 ${LIB}/scores
  79. X    cp goldlev* default ${LIB}
  80. X    cp golddig.p ${MAN}/golddig.${MANEXT}
  81. X
  82. Xupdate: all
  83. X    cp ${GAME} ${EDITOR} ${BIN}
  84. X# The next line sets up the level files so that anyone can edit all of
  85. X# the levels.  Remove this line to have better security.
  86. X    chmod 4755 ${BIN}/${EDITOR}
  87. X
  88. Xclean:
  89. X    rm -f *.o *~ bitmap/*~ core ${GAME} ${EDITOR}
  90. X
  91. XSRCS = golddig.c shared.c badguy.c movement.c scores.c
  92. XOBJS = golddig.o shared.o badguy.o movement.o scores.o
  93. X
  94. Xlint:
  95. X    lint -DLIB=\"${LIB}\" -DSCOREFONT=\"${SCOREFONT}\" \
  96. X                       -DSCORESIZE=${SCORESIZE} ${SRCS}
  97. X
  98. X${GAME}: ${OBJS}
  99. X    ${CC} ${LDFLAGS} -o ${GAME} ${OBJS} -lX11
  100. X
  101. X${EDITOR}: makelev.o shared.o
  102. X    ${CC} ${LDFLAGS} -o ${EDITOR} makelev.o shared.o -lX11
  103. X
  104. X.c.o:
  105. X    ${CC} ${CFLAGS} -c -DLIB=\"${LIB}\" -DSCOREFONT=\"${SCOREFONT}\" \
  106. X                       -DSCORESIZE=${SCORESIZE} $<
  107. END_OF_FILE
  108. if test 2241 -ne `wc -c <'golddig2/Makefile'`; then
  109.     echo shar: \"'golddig2/Makefile'\" unpacked with wrong size!
  110. fi
  111. # end of 'golddig2/Makefile'
  112. fi
  113. if test -f 'golddig2/golddig.h' -a "${1}" != "-c" ; then 
  114.   echo shar: Will not clobber existing file \"'golddig2/golddig.h'\"
  115. else
  116. echo shar: Extracting \"'golddig2/golddig.h'\" \(7140 characters\)
  117. sed "s/^X//" >'golddig2/golddig.h' <<'END_OF_FILE'
  118. X/* This program was written by Alexander Siegel in September of 1989   */
  119. X/* at Cornell University.  It may may copied freely for private use or */
  120. X/* public dispersion provided that this comment is not removed.  This  */
  121. X/* program, any portion of this program, or any derivative of this     */
  122. X/* program may not be sold or traded for financial gain.               */
  123. X
  124. X/* Start up default values */
  125. X#define DEFWORLD "goldlev"  /* Default world name */
  126. X
  127. Xint xsize,ysize;        /* Current level width and height */
  128. Xint levelstart;         /* Level that player started at */
  129. Xint levelnum;           /* Current level number */
  130. Xint score;              /* Total score */
  131. Xint speed;              /* Speed of game.  1 is slowest, 5 is default */
  132. Xint goldleft;           /* Total number of treasure blocks left */
  133. Xchar *worldname;        /* Name of world (set of levels) */
  134. Xchar filename[300];     /* Current file name of this level */
  135. Xint curtick;            /* Current clock tick number */
  136. X
  137. XDisplay *disp;          /* X11 display of client */
  138. XWindow wind;            /* X11 window where game is displayed */
  139. X
  140. X/* Enumerated type to described direction or activity */
  141. Xenum directs {
  142. X  STAND,UP,DOWN,LEFT,RIGHT,DIGLEFT,DIGRIGHT,PUTDOWN
  143. X};
  144. X/* Structure describing all stats of thing */
  145. Xstruct thing_s {
  146. X  int xstart,ystart;        /* Starting position of thing.  For both */
  147. X                            /* this pair and (xpos,ypos), the value is */
  148. X                            /* actually 2 times the expected value. */
  149. X                            /* This allows for describing when a thing */
  150. X                            /* is half way between one block and another. */
  151. X  int xpos,ypos;            /* Current position of thing */
  152. X  int xold,yold;            /* Previous position before last movement */
  153. X  int redraw;               /* Non-zero if thing should be redrawn */
  154. X  enum directs dir;         /* Current movement direction or action */
  155. X  char hold;                /* What is it carrying */
  156. X} player;   /* The player is a thing too */
  157. X
  158. X/* These are used in the bit pattern for the generalized block */
  159. X/* description data structure which is in shared.c.  New bit */
  160. X/* descriptor can be added without modifying anything else. */
  161. X#define UPLEVEL 0x2         /* Jump to next level on contact */
  162. X#define ULEAVE  0x4         /* Can you leave this block upwards */
  163. X#define DLEAVE  0x8         /* Can you leave this block downwards */
  164. X#define LLEAVE  0x10        /* Can you leave this block to the left */
  165. X#define RLEAVE  0x20        /* Can you leave this block to the right */
  166. X#define HENTER  0x40        /* Can you enter this block horizontally */
  167. X#define VENTER  0x80        /* Can you enter this block vertically */
  168. X#define STOPBAD 0x100       /* Stops badguys from passing through. */
  169. X                            /* They must climb out. */
  170. X#define CANDIG  0x200       /* Can this block be dug */
  171. X#define INACTIVE 0x400      /* Does this block activate after treasure */
  172. X                            /* is gone, space is used otherwise */
  173. X#define TREASURE 0x800      /* Get points for contact, then turned */
  174. X                            /* into space */
  175. X#define KILLIN  0x1000      /* Kills anyone standing in it */
  176. X#define NODRAW  0x2000      /* Can not draw it in editor */
  177. X#define DIGUND  0x4000      /* Can dig out underneath this block */
  178. X#define PICKUP  0x8000      /* Can pickup block and replace it with space */
  179. X#define TELEPORT 0x10000    /* Does this cause teleportation on contact */
  180. X#define ARMOR   0x20000     /* Grants invulnerability to player if held */
  181. X#define STOPFALL 0x40000    /* Prevent holder from falling */
  182. X#define NSHOVEL 0x80000     /* Holder can dig much bigger holes */
  183. X#define TIMESTOP 0x100000   /* Stop time for all except player if held */
  184. X#define REVERSE 0x200000    /* Reverse bad guy direction if player holds */
  185. X#define UPTWO   0x400000    /* Causes jump up two spaces on contact */
  186. X#define ANCHOR  0x800000    /* Slows movement to one half if held, and */
  187. X                            /* prevents jumps or teleports */
  188. X#define UPALL  0x1000000    /* Jump to the top of screen on contact */
  189. X#define SPEED  0x2000000    /* Allow player double movement if held */
  190. X#define PSHOVEL 0x4000000   /* Makes holes permanent when dug */
  191. X#define RSHOVEL 0x8000000   /* Make bricks out of space */
  192. X#define DFALL   0x10000000  /* Fall downwards out of this space */
  193. X#define UFALL   0x20000000  /* Fall upwards out of this space */
  194. X#define LFALL   0x40000000  /* Fall to the left out of this space */
  195. X#define RFALL   0x80000000  /* Fall to the right out of this space */
  196. X#define CANFALL (DFALL | UFALL | LFALL | RFALL) /* Bitmask for */
  197. X                                                /* detecting gravity */
  198. X
  199. X/* Predefined important block types.  Other types can be added WITHOUT */
  200. X/* adding to this list. */
  201. X#define SPACE ' '
  202. X#define BRICK '#'
  203. X#define STONE '@'
  204. X#define HOLE1 '1'
  205. X#define PLAYER 'p'
  206. X#define BADGUY 'b'
  207. X
  208. X#define MAXLEVEL 5000     /* Maximum size of a level */
  209. Xchar level[MAXLEVEL];     /* Array describing level using characters */
  210. X                          /* from above */
  211. Xchar moveallow[MAXLEVEL]; /* Array describing which directions can be moved */
  212. X                          /* out of any position in level */
  213. X/* Bit patterns for moveallow array */
  214. X#define MOVEUP    0x1   /* Upward movement is allowed */
  215. X#define MOVEDOWN  0x2   /* Downward movement is allowed */
  216. X#define MOVELEFT  0x4   /* Left movement is allowed */
  217. X#define MOVERIGHT 0x8   /* Right movement is allowed */
  218. X#define FORCEUP    0x10 /* Upward movement is forced */
  219. X#define FORCEDOWN  0x20 /* Downward movement is forced */
  220. X#define FORCELEFT  0x40 /* Left movement is forced */
  221. X#define FORCERIGHT 0x80 /* Right movement is forced */
  222. X#define FORCEALL   0xf0 /* Movement is forced in some direction */
  223. X
  224. X/* Array of block type descriptors.  The actual values for this array */
  225. X/* are in shared.c. */
  226. Xstruct symbs_s {
  227. X  char symb;    /* Character symbol representing block */
  228. X  char inplay;  /* Character describing what this block looks like */
  229. X                /* during actual play.  It is the symbol character */
  230. X                /* for this or another block type. */
  231. X  char *name;   /* Symbol name in English */
  232. X  char *bits;   /* Bitmap defined by a X11 bitmap file. */
  233. X  long code;    /* Bit code describing properties of block */
  234. X  KeySym xkey1,xkey2;   /* One or two X11 keyboard symbols for symbol */
  235. X};
  236. X
  237. X/* Array for fast lookup of block types.  This array is index by the */
  238. X/* actual block character. */
  239. Xstruct fast_s {
  240. X  GC gc;        /* Graphics cursor used for drawing block */
  241. X  long code;    /* Code describing block properties */
  242. X} fast_lookup[256];
  243. X
  244. X/* Global declarations of some functions */
  245. XGC makegc();
  246. Xvoid xstart();
  247. Xvoid xend();
  248. Xvoid setchar();
  249. Xvoid draw_block();
  250. Xvoid draw_level();
  251. Xvoid load_level();
  252. Xvoid save_level();
  253. Xint overlap_badguy();
  254. Xvoid move_badguy();
  255. Xvoid init_badguy();
  256. Xvoid start_badguy();
  257. Xvoid move_badguys();
  258. Xvoid draw_badguys();
  259. Xint in_hole();
  260. Xint movething();
  261. Xvoid fill_hole();
  262. Xvoid regen_tree();
  263. Xvoid regen_allow();
  264. Xvoid add_score();
  265. Xvoid draw_score();
  266. Xvoid change_holes();
  267. Xvoid redrawall();
  268. END_OF_FILE
  269. if test 7140 -ne `wc -c <'golddig2/golddig.h'`; then
  270.     echo shar: \"'golddig2/golddig.h'\" unpacked with wrong size!
  271. fi
  272. # end of 'golddig2/golddig.h'
  273. fi
  274. if test -f 'golddig2/golddig.p' -a "${1}" != "-c" ; then 
  275.   echo shar: Will not clobber existing file \"'golddig2/golddig.p'\"
  276. else
  277. echo shar: Extracting \"'golddig2/golddig.p'\" \(5026 characters\)
  278. sed "s/^X//" >'golddig2/golddig.p' <<'END_OF_FILE'
  279. X.TH GOLDDIG P "September 29 1989"
  280. X.UC 4
  281. X.SH NAME
  282. Xgolddig - Getting the Gold and Avoiding Death
  283. X.SH
  284. X.B golddig
  285. X[
  286. X.B \-l
  287. X.I level
  288. X]
  289. X[
  290. X.B \-s
  291. X.I speed
  292. X]
  293. X[
  294. X.I world
  295. X]
  296. X.br
  297. X.B makelev
  298. X.B \-l
  299. X.I level
  300. X[
  301. X.B \-w
  302. X.I width
  303. X]
  304. X[
  305. X.B \-h
  306. X.I height
  307. X]
  308. X[
  309. X.I world
  310. X]
  311. X.SH DESCRIPTION
  312. X.PP
  313. X.I golddig
  314. Xis a fast action game designed for use with the X window system.
  315. X.I makelev
  316. Xis used to create and edit new levels which can be used by
  317. X.I golddig.
  318. X.PP
  319. XThe goal in
  320. X.I golddig
  321. Xis to pick up all the gold pieces and then go to the next level
  322. Xwithout getting eaten by one of the bad guys.  The gold pieces are
  323. Xdistinctive small circular coins.  After picking up all of the gold,
  324. Xthe player must get to an open door or the top row of the level.
  325. XAfter accomplishing this, the game will start the next level.
  326. X.PP
  327. XThe
  328. X.B "\-l"
  329. Xoption sets the level number for editing or for starting the game.
  330. XThis may be any integer greater than 0.  By default, the game starts
  331. Xat level 1.  The
  332. X.B "\-s"
  333. Xoptions sets the game speed.  A value of 1 is very slow and a value of
  334. X10 is fast.  The default value is 5.  The
  335. X.B "\-w"
  336. Xand
  337. X.B "\-h"
  338. Xoptions set the width and height of the level when creating a new
  339. Xlevel.  The
  340. X.B world
  341. Xoption is used to select a world name.  A world is a distinct set of
  342. Xnumbered levels.  Any valid file name may be used as the world name.
  343. XDifferent worlds may be used to allow users to control private sets of
  344. Xlevels.
  345. X.PP
  346. XWhen playing
  347. X.I golddig
  348. Xthe following keyboard commands may be used:
  349. X.PP
  350. X<space>,R11 \- stop
  351. X.br
  352. Xa,j,left arrow \- move left
  353. X.br
  354. Xd,l,right arrow \- move right
  355. X.br
  356. Xw,i,up arrow \- move up
  357. X.br
  358. Xs,k,down arrow \- move down
  359. X.br
  360. Xz,<,q,u,R13 \- make hole left
  361. X.br
  362. Xx,>,e,o,R15 \- make hole right
  363. X.br
  364. Xr,y,R7 \- put down any held item
  365. X.br
  366. X1\-9 \- change the game speed during the game
  367. X.PP
  368. XIn addition, some control keys can be used:
  369. X.PP
  370. X^S,^Z \- freeze the game
  371. X.br
  372. X^Q,^Y \- reactivate the game
  373. X.br
  374. X^C,^U,^\\ \- kill the game
  375. X.br
  376. X^R - redraw the level
  377. X.PP
  378. XThe mouse must be placed in the game window to use the keyboard
  379. Xcommands.  When a level starts, everything is frozen, and any key will
  380. Xstart the game.
  381. X.PP
  382. X.I makelev
  383. Xis used as a graphics editor.  Each level is divided into a grid of
  384. Xblocks.  The blocks are "painted" by pressing the left mouse button
  385. Xdown and moving the mouse.  The right mouse button always erases
  386. Xblocks.  A new block type is selected by a keyboard
  387. Xkey.  Currently, the following block types are supported:
  388. X.PP
  389. X<space> \- draw spaces
  390. X.br
  391. X! \- draw escapes
  392. X.br
  393. X# \- draw walls
  394. X.br
  395. X$ \- draw golds
  396. X.br
  397. X- \- draw ropes
  398. X.br
  399. X< \- draw left arrows
  400. X.br
  401. X= \- draw tubes
  402. X.br
  403. X> \- draw right arrows
  404. X.br
  405. X@ \- draw stones
  406. X.br
  407. X^ \- draw anti-spaces
  408. X.br
  409. Xa \- draw armors
  410. X.br
  411. Xb \- draw bad guys
  412. X.br
  413. Xc \- draw chutes
  414. X.br
  415. Xd \- draw down arrows
  416. X.br
  417. Xe \- draw reverse monsters
  418. X.br
  419. Xf \- draw up arrows
  420. X.br
  421. Xg \- draw ghost bricks
  422. X.br
  423. Xi \- draw invisible blocks
  424. X.br
  425. Xj \- draw jump pads
  426. X.br
  427. Xk \- draw kill zones
  428. X.br
  429. Xl \- draw power shovels
  430. X.br
  431. Xm \- draw super jump pads
  432. X.br
  433. Xn \- draw nuclear shovels
  434. X.br
  435. Xo \- draw anchors
  436. X.br
  437. Xp \- draw players
  438. X.br
  439. Xq \- draw speed boots
  440. X.br
  441. Xr \- draw parachutes
  442. X.br
  443. Xs \- draw step ladders
  444. X.br
  445. Xt \- draw teleporters
  446. X.br
  447. Xu \- draw leave levels
  448. X.br
  449. Xv \- draw vertical ropes
  450. X.br
  451. Xw \- draw windows
  452. X.br
  453. Xx \- draw extra bricks
  454. X.br
  455. Xy \- draw heavy fogs
  456. X.br
  457. Xz \- draw time stops
  458. X.br
  459. X| \- draw ladders
  460. X.br
  461. X~ \- draw portable ropes
  462. X.PP
  463. XA player block sets where the player begins in the level.  If more
  464. Xthan one is used in a level, all but one will be ignored.  Bad guy
  465. Xblocks set where the bad guys begin the level.  There is a limit to
  466. Xthe total number of bad guys, and that number is compiled into the game.
  467. XPressing control W inside the editor window will stop editing
  468. Xand save the level.  Pressing control C quits without saving.
  469. XPressing control E will erase the contents of the
  470. Xeditor.  The properties of the rest of the block can be
  471. Xdetermined with experimentation.
  472. X.PP
  473. XA really good level has several properties.  The first important
  474. Xproperty is efficiency.  A good level makes careful use of all of the
  475. Xavailable space unless it is trying to achieve a specific effect.
  476. XAnother critical property is fairness.  A player should always be
  477. Xforewarned or have an escape if trouble comes up.  Nothing is more
  478. Xirritating than a killer trap where the user had no way of guessing that
  479. Xit was coming up.  It is also important to avoid tedious and repetative
  480. Xlevels.  Really difficult traps should be rewarded with lots of gold.
  481. X.SH AUTHORS
  482. XAlex Siegel at Cornell University during September of 1989.
  483. X.SH
  484. X/usr/games/golddig - golddig executable
  485. X.br
  486. X/usr/games/makelev - level editor executable
  487. X.br
  488. X/usr/games/lib/golddig - directory for storing files which are private to
  489. X.I golddig
  490. X.br
  491. X/usr/games/lib/golddig/scores - file for storing high score list
  492. X.br
  493. X/usr/games/lib/golddig/default - default level for use when no
  494. Xgenerated level is available
  495. X.br
  496. X/usr/games/lib/golddig/goldlev### - default levels used when no world
  497. Xname is specified
  498. X.SH BUGS
  499. XThis game is the first totally bug free program ever written.
  500. END_OF_FILE
  501. if test 5026 -ne `wc -c <'golddig2/golddig.p'`; then
  502.     echo shar: \"'golddig2/golddig.p'\" unpacked with wrong size!
  503. fi
  504. # end of 'golddig2/golddig.p'
  505. fi
  506. if test -f 'golddig2/goldlev010' -a "${1}" != "-c" ; then 
  507.   echo shar: Will not clobber existing file \"'golddig2/goldlev010'\"
  508. else
  509. echo shar: Extracting \"'golddig2/goldlev010'\" \(1536 characters\)
  510. sed "s/^X//" >'golddig2/goldlev010' <<'END_OF_FILE'
  511. X50 30
  512. X          !                          !            
  513. X-- |------!                          !     ------ 
  514. X| -|      |--     $$    $      $$    |#@@#@      |
  515. X|         |  @@@@@@@@@@@@@@@@@@@@@@@ |           |
  516. X|         |    $$$      b      $$$   |      |#|##|
  517. X|         |   |@@@@@@@@###@@@@@@@@   |  $   |$|$$|
  518. X|  $ $ $  |   |    $$   b   $$   |   | $|   |#|##|
  519. X|         |   |   |@@@@###@@@@   |   | |$   |$|$$|
  520. X|         |   |   |     b    |   |   | $|   |#|##|
  521. X|         |   |   |   |@#@   |   |   | |$   |$|$$|
  522. X|         |   |   |   |-$| @ | @ | @ | $|   |#|##|
  523. X|   p     |   |   |   | -| $ | $ | $ | |$   |$|$$|
  524. X|  @@@@@@ |   |   |   |  | @ | @ | @ | $|   |#|##|
  525. X|  @$== @ |   |   |   |  | $ | $ | $ | |$   |$|$$|
  526. X|   $  v  |   |   |   |  | @ | @ | @ | $|   |####|
  527. X|      v  |   |   |   |  | $ | $ | $ | |$   |    |
  528. X|      v  |   |   |-$ |  | @ | @ | @ | $| @ |$$$$|
  529. X| |# ##v  |   |-$ |   |  |  @|  @|   | |$ @@@@@@@@
  530. X| |####v  |   |   | #$|b $ # |   |   | $|         
  531. X| |   #v  |   |   | ######## |   |   | |$ #b      
  532. X| | $ #v  |   | # | $  b   $   # |   | $| #######|
  533. X| |####v  |   | ################ |   | |$ #      |
  534. X|   $  v  | # |  $  $     $        # | $| #|######
  535. X|-  $  v  | ##|##################### | |  #|      
  536. X|   c  v  |  $|$$  $    $   $$  $$   |  | #######|
  537. X|  @$==v@ | #|####|####|#####|####|  | |   ----- |
  538. X|  @@  @@ |  |$$ b|    |b    |b $$|  |  |  |$$$$$|
  539. X|---------| |######################| | |   |     |
  540. X$$      $$| |$$    $$       $$   $$| | |- |######|
  541. X##########|##########################|           |
  542. END_OF_FILE
  543. if test 1536 -ne `wc -c <'golddig2/goldlev010'`; then
  544.     echo shar: \"'golddig2/goldlev010'\" unpacked with wrong size!
  545. fi
  546. # end of 'golddig2/goldlev010'
  547. fi
  548. if test -f 'golddig2/goldlev011' -a "${1}" != "-c" ; then 
  549.   echo shar: Will not clobber existing file \"'golddig2/goldlev011'\"
  550. else
  551. echo shar: Extracting \"'golddig2/goldlev011'\" \(1536 characters\)
  552. sed "s/^X//" >'golddig2/goldlev011' <<'END_OF_FILE'
  553. X50 30
  554. X                                    @   @         
  555. X |||                                 @ @          
  556. X |v| |= |- |- | |                @ @     @ @      
  557. X | | |= |  |   |                   $!@ @          
  558. X              |                   ^^# @ @         
  559. X        | |                      ^^@^ $  @        
  560. X         |  == || c-            $^^i^^$           
  561. X        | | cc ||  c            ^^^iii$           
  562. X                  -             ^^i  $t$          
  563. X |----------------------        ^i   $|$          
  564. X |  i iii i i iii i i i i      ^^i  $t$t$         
  565. X |i $$$$$$$$$$$$$$$$$$$$$      ^^i  $|$|$         
  566. X | i ii  i i i  ii i   i i     ^i  $t$t$t$        
  567. X |  $i     i  i    i    $i    $^i  $|$|$|$        
  568. X |  i  i i  i i i ibi   i     ^^i $t$t$t$t$       
  569. X |  $     i   i        i$ i   ^i  $|$|$|$|$       
  570. X |   ii iibi i i i iii i i    ^i  t$t$t$t$t       
  571. X | i$            i      $    $^i k|-|-|-|-|k      
  572. X |  i $ii$i i$$$i i$i $ i  i ^^i$t$t$t$t$t$t$     
  573. X |i $i       i      i ii$    ^i $|$|$|$|$|$|$     
  574. X | i i  ii iii i iii   i i  i^i$t$t$t$t$t$t$t$    
  575. X |  $ i        i     i  $i   ^i$|$|$|$|$|$|$|$    
  576. X |i i   i iii ibi i ii ii   ^^it!t!t!t t!t!t!t    
  577. X |  $i  i         i ib  $ i ^i j!!!!!!c!!!!!!j    
  578. X | i i i i i i i i   i  ii  ^i b!c c!ccc!c c!b    
  579. X |  $ $ $ $ $ $ $ $ $ $i$  i^i  !   ! c !   !     
  580. X |  i ii  i i   i ii  i  ii ^i  !   ! c !   !     
  581. X | i     i    i     i         i !   ! c !   !  i  
  582. X ||                         p @ !   !@m@!   ! @   
  583. X##################################################
  584. END_OF_FILE
  585. if test 1536 -ne `wc -c <'golddig2/goldlev011'`; then
  586.     echo shar: \"'golddig2/goldlev011'\" unpacked with wrong size!
  587. fi
  588. # end of 'golddig2/goldlev011'
  589. fi
  590. if test -f 'golddig2/goldlev012' -a "${1}" != "-c" ; then 
  591.   echo shar: Will not clobber existing file \"'golddig2/goldlev012'\"
  592. else
  593. echo shar: Extracting \"'golddig2/goldlev012'\" \(3556 characters\)
  594. sed "s/^X//" >'golddig2/goldlev012' <<'END_OF_FILE'
  595. X70 50
  596. X                                                                      
  597. X                                                !----------------     
  598. X                                                  $$k ##       k$^    
  599. X                                                 ^^ ^ ^^  ^^^^ ^^^    
  600. X                            @@@                  ^^   ^k^ ^ ^k ^^     
  601. X                           @@$@                  ^^### ^^ ^^^^^^^     
  602. X                           @$|@ @@@@@             ^$$^#$^k^^ ##^^     
  603. X                        @@@@$|@ @$$ @@           ^^^^^^ ^^ ^^^^$^     
  604. X                        @$---|@@@|-$ @           ^k^ ^^ ^^^k^^^^^     
  605. X                        @$  $|$   $|$$           ^^^$$$$^k^$$^^ ^     
  606. X                       @@@@|@@@@@@@@@@@|         ^## ^^^##^^ ^###     
  607. X                       @  b|           |         ^^^ ^^^^#^^ ^^k^     
  608. X                       @|@@@@@@|@@@@@|#|         | k$$$ $^|^ ^^^^     
  609. X                       @|   @|-| @ $ |@|         | ^^^^ ^^^^$$^^^     
  610. X                       @| $ @|-$$@$|$|@|         |    k^ ^k^^^ #^     
  611. X                       @|$|$@$-|$@|@@@@|  #      | ^^^^^ ^^ ^^^^^     
  612. X                       @|$|$@|  $@|$ $@ |#       |                    
  613. X                       @| | @|$  @$|$|@ |=#|-----|                    
  614. X@@@@@@@@@@@@@@@      @@@@@@@@@@@@@@@@@@@@@@@     |                    
  615. Xd<<<<<<<<<<<<<<      @ $$$$$$$$$$$$$$$$$$        |                    
  616. Xd>>>>>>>>>>>>df    @@@ #############|####f<<     |                    
  617. Xdfd<<<<<<<<<<df    $$$<>>>>>>>>>>>>df<|>dff|k    |####@#|             
  618. Xdfd>>>>>>>>dfdf    |=|kf<<d<<>>>>dd>fdfd<<<f     |     @              
  619. X f f <<<<<< f f    #j#>>>fkdffd<<d>>>ffd>>|f     |###@#j              
  620. X f f -    f f f    #j#fd<|>>ffddf|f>>>f>fk|f     |    @               
  621. Xbfbfb $$$ fbfbf    #j#fdk|>>>|ddfdffkd<<<<df     |##@#j               
  622. Xdfdfd ### fdfdf!   #j#f>ffd<<<<kfdfff<>>dfdf     |   @                
  623. Xdfdfd     fdfdf    #j#fd<fd>d>>>f>>ff<fk<fdf     |#@#j                
  624. Xdfdf>>>>>>fdfdf    #j#fdffdf<f|<<<<d<|f<<f<f     |  @                 
  625. Xdfdf<<<<<<<<fdf    #j#fdff>>>fd<><fdff>kff>f     |@#j      @          
  626. Xdf>>>>>>>>>>fdf    #j#fdf|<<|<|>f>fdff|>ffd      |@|$$$    @          
  627. Xdf<<<<<<<<<<<<f    #j#fdf<<<<d<<<fddfffd<f<      |@@@@@@@@@@          
  628. Xd         >>  f    #j#f>>d>d|>>|ff<<d|fdf<|k@    |         -          
  629. X>>>>>>>>>>f####|-- #j#fd<dfdfd<d|<d<dffd>df    -=========== @|        
  630. X  b    b    b     |#j#fdf>fdfdfdkf<f<ff>fdf  |#- #        @ @|        
  631. X$$yyyyyyyyyyyyyyy#|#j#fdf<<<fdf|>>>>>|fd<<f  |# #  $$$-t  @s@|        
  632. X#|y#|########|#|#   |  >>>>>|>>>d>>>>>|>>>f  |@>===>>>>>  @ @|        
  633. Xy|yy|y$$yyyyy|y|@@@@@@@@@       >f           |@@@@@@@@@@  @  |        
  634. X#####y|#y#|###y|@           #                |         tc @  @        
  635. Xyyyyyy|yyy|yyyy|@###@@@@|    #       #       |   t-$$$--  @@@@        
  636. Xy###|#######|#y|@   @   |        #           |   <<<<<<<<@            
  637. Xyyyy|yyyyyyy|yy|@###@   |  $ #   $   $ |     |   @@@@@@@@             
  638. Xy#|########|##y|    @ b |    $## $ $ $ |     |  ct                    
  639. Xyy|yy$$yyyy|y$y|@@@@@   | #    $      $|     |   --$$$-t              
  640. Xy|##y#|y#|##y|y|@       | $ ##   $ $   |     | @>>>>>>>>              
  641. Xy|yyyy|yy|yyy|y|@       |#  $$ $#   $ #|     |  @@@@@@@@              
  642. X###########|##y|@       |  #     $   $ |     |         tc             
  643. X$$yyyyyyyyy|yyy|@       | $# $   # # # |     |  ---$$$--              
  644. X#|y##|########y|@       |      $   $   |     |  <<<<<<<<<@|           
  645. Xy|yyy|yyyyyyyy |@  lx  p|###   ##   ## |     |  @@@@@@@@@ |           
  646. END_OF_FILE
  647. if test 3556 -ne `wc -c <'golddig2/goldlev012'`; then
  648.     echo shar: \"'golddig2/goldlev012'\" unpacked with wrong size!
  649. fi
  650. # end of 'golddig2/goldlev012'
  651. fi
  652. if test -f 'golddig2/goldlev013' -a "${1}" != "-c" ; then 
  653.   echo shar: Will not clobber existing file \"'golddig2/goldlev013'\"
  654. else
  655. echo shar: Extracting \"'golddig2/goldlev013'\" \(3556 characters\)
  656. sed "s/^X//" >'golddig2/goldlev013' <<'END_OF_FILE'
  657. X70 50
  658. X   -------------   d             d                                    
  659. X ######## | | | |@-~-------------~----------------#|                  
  660. X #######  | | | |@dd<<<<d>>dd>>>d |||||||||||||||||#|                 
  661. X #######  | | | |@fd<<<>f<>dd>>dd ||||||||||||||||-j#|                
  662. X #######  | | | |@fdff<ff<<ddfd<d |||||||||||||||||# |#yyyyyyyyyyyyyy|
  663. X #######  | | | |@fd>>>>f>fd>f>dd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  664. X #######  | | | |@fd>>>>ff>dfffdd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  665. X $$$$$$# > >  |>|@f><<d>>f>dfffdd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  666. X ####### f| | | |@fd>ff<f<<dfffdd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  667. X ####### f|<|<|<|@f<f<fddf>dfffdd |||||||||||||||||#v|#yyyyyyyyyyyy$ |
  668. X #######  | | |f|@f>d<d>f<fd|<<<d |||||||||||||||||#v|#yyyyyyyyyyyy##|
  669. X ####### >|>|>|f|@ff>>>>dd>ddddfd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  670. X ####### f| | | |@f<ff<<d><d>>dfd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  671. X ####### f|<|<|<|@fd>f>ddd>dddddd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  672. X $$$$$$#  | | |f|@f<<f<<<<<<dd>dd |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  673. X ####### > > >|f|@kkkkkkkkkkkkkd> |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  674. X ####### f| | | |@>>>>>>>>>>>>>d# |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  675. X ####### f|<|<|<|@| |$|$|$|$|$|d# |||||||||||||||||#v|#yyyyyyyyyyyyyy|
  676. X #######  # # | |@|q|$|$|$|$|$|d# |||||||||||||||||#vv#@@@@@@@@@@@@@@@
  677. X ####### |    |j|@| |$|$|$|$|$| # |||||||||||||||||#vv                
  678. X ####### |#b #| |@| |$|$|$|$|$| # |||||||||||||||||#v>>>>>>>>         
  679. X $$$$$$# |####| |@| |$|$|$|$|$| # |||||||||||||||||#v<d<<<<<<-->>>>>>>
  680. X ####### ||-|-| |@| |$|$|$|$|$| # |||||||||||||||||# fd        f      
  681. X ####### || | | |@| |-|-|-|-|-| # |||||||||||||||||# fd        f      
  682. X ######$ || | | | < | | | | | | # |||||||||||||||||# fd  a   d-f      
  683. X #######@@@@@@@@|####g#g#g#g#g#g# |||||||||||||||||# fd      d        
  684. X ####### kg     |#m|m|m|m|m|m|m|#k#||||||||||||||||# fd      d        
  685. X #######kj-od   |################################### fd      d        
  686. X $$$$$$# <j-gd  |----------------------------------| f>>>>>>>d        
  687. X #######  >j-gd |                                  | f<<<<<<<$<       
  688. X #######   dj-gd|                                  |         #        
  689. X #######d$$ fj-g|                                  |                  
  690. X #######d###g-jg| r                               |r $$$$$$$$$$$$$$$$ 
  691. X #######  dg-jg |#v#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y##v##################
  692. X ####### dg-jg  |#vy#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#v#|--              
  693. X $$$$$$#dg-jg   |#v#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y##v#| @ $            
  694. Xb#######g-jg    |#vy#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#v#| @@@            
  695. X        -jg    $|#v#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y##v#|                
  696. Xm@      j p$$$$$|#vy#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#v#|                
  697. X@@@@@@@#@@@@@@@@@#v#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y##v#|                
  698. X b           b #t#vy#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y#v#|                
  699. Xt|t|t|t|t|t|t|t# #v#y#y#y#y#y#y#y#y#y#y#y#y#y#y#y##v#|                
  700. X|$|$|$|$|$|$|$|# #vy#y#y#y $ y#y#y#y#y#y $ y#y#y#y#v#|      @ @ @ @ @ 
  701. Xt| | | | | | |t# #v#y#y#y#####y#y#y#y#y#####y#y#y##v#|     @ = @ = @$@
  702. X|$#$#$#$#$#$#$|# #v========== = == == = ===========v#|    u@v@v@v@v@v@
  703. Xt|t|t|t|t|t|t|t#     e       # g     g #           # |     @v@v@v@v@v@
  704. X|$|$|$|$|$|$|$|# #####|                           $  |  !-|@v@v@v@v@v@
  705. Xt|t|t|t|t|t|t|t#-#$   |#                         |#  |  !@|@v@v@v@v@v@
  706. X|$|$|$|$|$|$|r|# ###### # ----  b               |# # |@b!@|@v@v@v@v@v@
  707. Xt|t|t|t|t|t---t#t######  #yyyyyyyyyyyyyyyyyyyyyy#   #|@@@@| |@|=|@|=|@
  708. END_OF_FILE
  709. if test 3556 -ne `wc -c <'golddig2/goldlev013'`; then
  710.     echo shar: \"'golddig2/goldlev013'\" unpacked with wrong size!
  711. fi
  712. # end of 'golddig2/goldlev013'
  713. fi
  714. if test -f 'golddig2/goldlev014' -a "${1}" != "-c" ; then 
  715.   echo shar: Will not clobber existing file \"'golddig2/goldlev014'\"
  716. else
  717. echo shar: Extracting \"'golddig2/goldlev014'\" \(1536 characters\)
  718. sed "s/^X//" >'golddig2/goldlev014' <<'END_OF_FILE'
  719. X50 30
  720. X||||||||||||  |                  !               @
  721. X|        # |  |                  !       b       @
  722. X|@@@@@@@@# |  |                  !               @
  723. X|@        #|##|------------      !               @
  724. X|@|#@####@##@#|                  !               @
  725. X|@|  |### @###|         #b###|###!$$$$$$$ $$$$$$ @
  726. X|@|##@#@###@##|         #|###|##################|@
  727. X|@|###########|         #|#$#|#$#|$$$$$$$ $$$$$$|@
  728. X|@|$$$$$$$####|         #|###|###|###############@
  729. X|@|###########|         #|#$#|#$#|$$$$$$$ $$$$$$|@
  730. X|@@@@@@@@@@@@@|##########|###|##################|@
  731. X|             |      |-|#|#$#|#$#|$$$$$$$ $$$$$$|@
  732. X|   @@@@   - -|      |#|#|###|###|###############@
  733. X|   @$     |         |#|#|#$#|#$#|               @
  734. X|  @@@ @###############|#|###|###|               @
  735. X|  @ @@@               |#|#$#|#$#|         #| |  @
  736. X@@@@                   |#|###|################|  @
  737. X                       |#|#$#|#$#            #|  @
  738. X     |     |  #|# #|  #|#|###|###            #|  @
  739. X#####|  ###|###|###|###|#|#$#|#$#            #|  @
  740. X|  $-|$-## |$-#|$-#|#-$|#|###|###            #|  @
  741. X|                      |#|#$#|#$#            #|  @
  742. X|@@@@@@@@@@@@@@@@@@@@@@@#|#@$$$$$$           -| p@
  743. X|#b$$$$$$$$$$$$$$$$$$$$$ |  ##################### 
  744. X|####################### @                      b@
  745. X|####################### @ @@@@@@@@@@@@@@@@@@@@@@@
  746. X|!!!!!!!!!!!!!!!!!!!!|!!!!-    @ @ @--------------
  747. X|!!!!!!!!!!!!!!!!!!!!|--|!- |@|@|@|@ $$$$$$$$$$$$|
  748. X|!!!!!!!!!!!!!!!!!!!!|!!|!- |@| | |  ------------|
  749. X|!!!!!!!!!!!!!!!!!!!!|!!|#@@@@@@@@@@@@@@@@@@@@@@@@
  750. END_OF_FILE
  751. if test 1536 -ne `wc -c <'golddig2/goldlev014'`; then
  752.     echo shar: \"'golddig2/goldlev014'\" unpacked with wrong size!
  753. fi
  754. # end of 'golddig2/goldlev014'
  755. fi
  756. if test -f 'golddig2/goldlev015' -a "${1}" != "-c" ; then 
  757.   echo shar: Will not clobber existing file \"'golddig2/goldlev015'\"
  758. else
  759. echo shar: Extracting \"'golddig2/goldlev015'\" \(1536 characters\)
  760. sed "s/^X//" >'golddig2/goldlev015' <<'END_OF_FILE'
  761. X50 30
  762. Xl>            $$$$        $$$$                    
  763. X|$##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  764. X$|@                                              @
  765. X|$@                                              @
  766. X$|@                                              @
  767. X|$@k$$                                           @
  768. X$|@ ##@@@@@                   ##      # ##@@@@@@ @
  769. X|$@ @|----|@                  ###     # @|-----|@@
  770. X$|@ @|$$$$|@  $$$$$$$         # #     # @|$$$$$|@@
  771. X|$@ @|$$$$|@|@@@@@@@@         # ##    # @|$$$$$|@@
  772. X$|@ @|$$$$|@|                 #  #    # @|$$$$$|@@
  773. X|$@ @|$$$$|@|                 #  ##   # @|$$$$$|@@
  774. X$|@ @|$$$$|@| !!!!!!!-!#!     #   #   # @|$$$$$|@@
  775. X|$@ @|----b@| k!!!!!!!#!!!    #   ##  # @|$$$$$|@@
  776. X$|@ @@@@@@@ | k|----|@@@@@    #    #  # @|-----b@@
  777. X|$@ @       | k|kk!!#bs  i    #    ## # @@@@@@@@ @
  778. X$|@ @       | k|--|@@@@@@@    #     # # @        @
  779. X|$@ @$      | kkkk#!!!!!!!    #     ### @        @
  780. X$|@ @|------| !!!#!$!!!!!!    #       # @        @
  781. X|$@ @|        !!!#!#!!!!!!    #       # @        @
  782. X$|@ -|        !!!###!!!!!!                       @
  783. X|$@     b                                        @
  784. X$|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##
  785. X|$  $    $     $   b   $      $    $     $        
  786. X ###############################################| 
  787. X    $    $     $   b   $      $    $     $      |@
  788. X|##########################|####################@w
  789. X|   $    $     $   b   $      $    $     $      p!
  790. X|################################################|
  791. X|   $    $     $       $      $    $     $       |
  792. END_OF_FILE
  793. if test 1536 -ne `wc -c <'golddig2/goldlev015'`; then
  794.     echo shar: \"'golddig2/goldlev015'\" unpacked with wrong size!
  795. fi
  796. # end of 'golddig2/goldlev015'
  797. fi
  798. if test -f 'golddig2/goldlev016' -a "${1}" != "-c" ; then 
  799.   echo shar: Will not clobber existing file \"'golddig2/goldlev016'\"
  800. else
  801. echo shar: Extracting \"'golddig2/goldlev016'\" \(1536 characters\)
  802. sed "s/^X//" >'golddig2/goldlev016' <<'END_OF_FILE'
  803. X50 30
  804. X#!b####b####b####b####b####b####b####b####b####b##
  805. X !t    t    t    t    t    t    t    t    t    |  
  806. X !|    |    |    |    |    |    |    |    |    |  
  807. X$!|  $ |  $ |  $ | $$$| $$$| $$$|  $ | $ ||| $ | $
  808. X|!| $| |  | |  | |  | |  | |  | |  | | | |t| | |$|
  809. X##|####|####|####|####|####|####|####|###|||###|##
  810. X  |    |    |    |    |    |    |   |||   |    |  
  811. X$$|  $ |  $ |  $ |    |  $ |  $ |  $|t| $ |  $ |$$
  812. X@@|@@@@|@@@@|@@@@|@@@@|@@@@|@@@@|@@@|||@@@|@@@@|@@
  813. X  |    |    |    |    |    |   |||   |    |    |  
  814. X$$|  $ |  $ |  $ |    |  $ |  $|t| $ |  $ |  $ |$$
  815. X@@|@@@@|@@@@|@@@@|@@@@|@@@@|@@@|||@@@|@@@@|@@@@|@@
  816. X  |    |    |    |    |   |||   |    |    |    |  
  817. X$$|  $ |  $ |  $ |  $ |  $|t| $ |  $ |  $ |  $ |$$
  818. X##|####|####|####|####|###|||###|####|####|####|##
  819. X  |    |    |    |   |||   |    |    |    |    |  
  820. X$$|  $ |  $ |  $ |  $|t| $ |  $ |  $ |  $ |  $ |$$
  821. X##|####|####|####|###|||###|####|####|####|####|##
  822. X  |    |    |   |||   |    |    |    |    |    |  
  823. X$$|  $ |  $ |  $|t| $ |  $ |  $ |  $ |  $ |  $ |$$
  824. X##|####|####|###|||###|####|####|####|####|####|##
  825. X  |    |   |||   |    |    |    |    |    |    |  
  826. X$$|  $ |  $|t| $ |  $ |  $ |  $ |  $ |  $ |  $ |$$
  827. X##|####|###|||###|####|####|####|####|####|####|##
  828. X  |   |||   |    |    |    |    |    |    |    |  
  829. X$$|  $|t| $ |  $ |  $ |  $ |  $ |  $ |  $ |  $ |$$
  830. X##|###|||###|####|####|####|####|####|####|####|##
  831. X$|||   |    |    |    |    |    |    |    |    |  
  832. Xp|t| $ |  $ |  $ |  $ |  $ |  $ |  $ |  $ |  $ |$$
  833. X#|||##############################################
  834. END_OF_FILE
  835. if test 1536 -ne `wc -c <'golddig2/goldlev016'`; then
  836.     echo shar: \"'golddig2/goldlev016'\" unpacked with wrong size!
  837. fi
  838. # end of 'golddig2/goldlev016'
  839. fi
  840. if test -f 'golddig2/goldlev018' -a "${1}" != "-c" ; then 
  841.   echo shar: Will not clobber existing file \"'golddig2/goldlev018'\"
  842. else
  843. echo shar: Extracting \"'golddig2/goldlev018'\" \(1536 characters\)
  844. sed "s/^X//" >'golddig2/goldlev018' <<'END_OF_FILE'
  845. X50 30
  846. X  b# $ $ $ $ $ $  i    $-- $-k  v  v |   -   |    
  847. X>  #|@@@@@@@@@@@@#$    vk-kv--$ $--$k  | $- $  v -
  848. X > #f$$------$~$#@#    | --|k -k|$k| -v  | v-$| v 
  849. X   -==-|-------v####$   v$k $- $-| k$ |k|$ $ - - v
  850. X m -===========f#@@##    | kv k|-$k--k   |--$k c  
  851. X   f$$---------$~$####$   v$-$- $| -k|-$k  $|c$ k 
  852. X   -=-|----------v#####    | = cv k$ v |$ -|k-|k |
  853. X m -=============f#@@@##$   v$k-v$ -|$ k-|kk-| |  
  854. X   f$$------------$~$####    | $|-$k$-v$ k$|- k - 
  855. X   -=-|-------------v#####$   |-  |-|  | $| kk |  
  856. X m -================f#@@@##    |-k  $-|$k- k$-  $$
  857. X   f$$---------------$~$####$     -|v$ -$ck v ####
  858. X   -=-|----------------v#@@@#   k-|  |- |c -|k    
  859. X m -===================f  $$@#$#   k   $|c v      
  860. X   f$$$~-#   $$v$$$$$$$$$$@|###        | -vk      
  861. X   -===-|#   |@t@@#########|############  $       
  862. X m |#@#@##   | v -~-|     i| ===========      $   
  863. X   f$$~-#$$$$|$@ $  |    i |  $$$$$$ ==========   
  864. X   -==-|#|#####t@$~-|   i  |   @@@@|           c  
  865. X m |#@@##|$$$$@b $$ |  i   | b   b |            = 
  866. X   f$~-#@@###|   $@ |  i   | $   $ |             =
  867. X   -=-|#|---~|   $u |  i   | ~   ~ |              
  868. X m |#@##|           |p#    | ~   ~ |              
  869. X   f$~-#######@ @######    | ~   ~ |              
  870. X   -=-|##@@@@@ t      i    | ~   ~ |              
  871. X m |#@##$<<         ii     | ~   ~ |              
  872. X   f$~-$~ f       ii       | ~   ~ |              
  873. X>  -=-|$$#f   $ @ $$$$$$$$$|c~   ~c|$$$$$$$$$     
  874. X > |#@#@@#f$ ~s$# |            @            | @   
  875. X @m@$$$$$$ $@ #################=|#############=   
  876. END_OF_FILE
  877. if test 1536 -ne `wc -c <'golddig2/goldlev018'`; then
  878.     echo shar: \"'golddig2/goldlev018'\" unpacked with wrong size!
  879. fi
  880. # end of 'golddig2/goldlev018'
  881. fi
  882. if test -f 'golddig2/makelev.c' -a "${1}" != "-c" ; then 
  883.   echo shar: Will not clobber existing file \"'golddig2/makelev.c'\"
  884. else
  885. echo shar: Extracting \"'golddig2/makelev.c'\" \(6268 characters\)
  886. sed "s/^X//" >'golddig2/makelev.c' <<'END_OF_FILE'
  887. X/* This program was written by Alexander Siegel in September of 1989   */
  888. X/* at Cornell University.  It may may copied freely for private use or */
  889. X/* public dispersion provided that this comment is not removed.  This  */
  890. X/* program, any portion of this program, or any derivative of this     */
  891. X/* program may not be sold or traded for financial gain.               */
  892. X
  893. X/* Modified by Josh Siegel to work with NeWS/X11                       */
  894. X
  895. X#include <stdio.h>
  896. X#include <X11/Xlib.h>
  897. X#include <X11/keysym.h>
  898. X#include <X11/Xutil.h>
  899. X#include "golddig.h"
  900. X
  901. X#define EVMASK KeyPressMask | ExposureMask | ButtonMotionMask | ButtonPressMask
  902. X
  903. X/* Plug into original block type definitions in shared.c */
  904. Xextern struct symbs_s symbs[];
  905. X
  906. X/* Current drawing character */
  907. Xchar curchar = ' ';
  908. X
  909. X/* Redraw the entire level */
  910. Xvoid redrawall()
  911. X{
  912. X  draw_level();
  913. X  XFlush(disp);
  914. X}
  915. X
  916. X/* Set the score to be equal to the number of gold pieces */
  917. Xvoid count_gold()
  918. X{
  919. X  register int i,levsize;
  920. X
  921. X  levsize = xsize*ysize;
  922. X  score = 0;
  923. X  for(i=0;i<levsize;++i)
  924. X    if(fast_lookup[level[i]].code & TREASURE)
  925. X      score ++;
  926. X}
  927. X
  928. X/* Main routine for editing levels */
  929. Xvoid main(argc,argv)
  930. Xint argc;
  931. Xchar **argv;
  932. X{
  933. X  register int i;
  934. X  static XEvent xev;
  935. X  KeySym keyhit;
  936. X  int keycount;
  937. X  char buf[50];
  938. X
  939. X  /* Set up default values for describing world */
  940. X  worldname = DEFWORLD;
  941. X  levelnum = -1;
  942. X  goldleft = 0;
  943. X  score = 0;
  944. X  speed = 0;
  945. X  /* Use size of default level as default level size */
  946. X  xsize = -1;
  947. X  ysize = -1;
  948. X
  949. X  /* Read in command line options */
  950. X  for(i=1;i<argc;++i) {
  951. X    if(argv[i][0] == '-') {
  952. X      /* -w sets the level width */
  953. X      if(argv[i][1] == 'w') {
  954. X        if(argv[i][2] == '\0' && i+1 < argc) {
  955. X          sscanf(argv[i+1],"%d",&xsize);
  956. X          i++;
  957. X        }
  958. X        else
  959. X          sscanf(argv[i]+2,"%d",&xsize);
  960. X      }
  961. X      /* -h sets the level height */
  962. X      else if(argv[i][1] == 'h') {
  963. X        if(argv[i][2] == '\0' && i+1 < argc) {
  964. X          sscanf(argv[i+1],"%d",&ysize);
  965. X          i++;
  966. X        }
  967. X        else
  968. X          sscanf(argv[i]+2,"%d",&ysize);
  969. X      }
  970. X      /* -l sets the level number */
  971. X      else if(argv[i][1] == 'l') {
  972. X        if(argv[i][2] == '\0' && i+1 < argc) {
  973. X          sscanf(argv[i+1],"%d",&levelnum);
  974. X          i++;
  975. X        }
  976. X        else
  977. X          sscanf(argv[i]+2,"%d",&levelnum);
  978. X      }
  979. X      else {
  980. X        printf("usage: makelev [-h <height>] [-w <width>] -l <level> [<world name>]\n");
  981. X        exit(1);
  982. X      }
  983. X    }
  984. X    /* If it doesn't start with a dash, it must a the world name */
  985. X    else {
  986. X      worldname = argv[i];
  987. X      break;
  988. X    }
  989. X  }
  990. X  /* Make sure some value was chosen for the level number.  This */
  991. X  /* discourages everybody editing the same level all the time. */
  992. X  if(levelnum == -1) {
  993. X    printf("usage: levelmake [-h <height>] [-w <width>] -l <level> [<world name>]\n");
  994. X    exit(1);
  995. X  }
  996. X
  997. X  /* Load in level data from file. */
  998. X  load_level();
  999. X
  1000. X  printf("Welcome.  Type h for help.\n");
  1001. X
  1002. X  /* Start up X windows and create all graphics cursors */
  1003. X  xstart(EVMASK);
  1004. X  /* Set the name of the output window */
  1005. X  XStoreName(disp,wind,"Gold Digger 2.0 Level Generator");
  1006. X
  1007. X  /* Main event loop */
  1008. X  do {
  1009. X    /* Get the next X window event */
  1010. X    XWindowEvent(disp,wind,EVMASK,&xev);
  1011. X    /* If it was an expose event, redraw everything */
  1012. X    if(xev.type == Expose) {
  1013. X      /* Count the number of gold pieces in level */
  1014. X      count_gold();
  1015. X      /* Redraw the level */
  1016. X      redrawall();
  1017. X    }
  1018. X    else if(xev.type == KeyPress) {
  1019. X      keycount = XLookupString(&xev,buf,50,&keyhit,(XComposeStatus *) NULL);
  1020. X      /* If the 'h', '?' or '/' key was hit, print out the text */
  1021. X      /* descriptions of each block type */
  1022. X      if(keyhit == XK_H || keyhit == XK_h || keyhit == XK_question ||
  1023. X         keyhit == XK_slash) {
  1024. X        for(i=0;symbs[i].symb != '\0';++i)
  1025. X          if(! (symbs[i].code & NODRAW))
  1026. X            printf("%c - draw %ss\n",symbs[i].symb,symbs[i].name);
  1027. X        puts("Type ^W to finish editing and save the level.");
  1028. X        puts("Type ^C to quit editing.");
  1029. X        puts("Type ^E to erase level.");
  1030. X        puts("Use the left mouse button to paint blocks.");
  1031. X        puts("Use the right mouse button to erase blocks.");
  1032. X        putchar('\n');
  1033. X      }
  1034. X      /* A ^E erases the entire level */
  1035. X      else if((keyhit == XK_E || keyhit == XK_e) &&
  1036. X              (xev.xkey.state & ControlMask)) {
  1037. X        /* Replice level contents with space */
  1038. X        for(i=0;i<xsize*ysize;++i)
  1039. X          level[i] = SPACE;
  1040. X        /* There is no gold now */
  1041. X        score = 0;
  1042. X        /* Redraw empty level */
  1043. X        redrawall();
  1044. X      }
  1045. X      else {
  1046. X        /* Search through the block descriptions for one which has a */
  1047. X        /* key code which matches the key code of the key which was */
  1048. X        /* hit. */
  1049. X        for(i=0;symbs[i].symb != '\0';++i)
  1050. X          if(! (symbs[i].code & NODRAW))
  1051. X            if(keyhit == symbs[i].xkey1 || keyhit == symbs[i].xkey2) {
  1052. X              /* Change the current drawing character to the symbol */
  1053. X              /* which was found. */
  1054. X              curchar = symbs[i].symb;
  1055. X              /* Count and display the number of gold pieces in level */
  1056. X              count_gold();
  1057. X              draw_score();
  1058. X              break;
  1059. X            }
  1060. X      }
  1061. X    }
  1062. X    /* If the mouse moves with the button pressed, or the button is */
  1063. X    /* pressed, draw the current block at that position */
  1064. X    else if(xev.type == MotionNotify) {
  1065. X      if(xev.xmotion.state & Button3Mask)
  1066. X        setchar(xev.xmotion.x >> 4,xev.xmotion.y >> 4,SPACE);
  1067. X      else
  1068. X        setchar(xev.xmotion.x >> 4,xev.xmotion.y >> 4,curchar);
  1069. X    }
  1070. X    else if(xev.type == ButtonPress) {
  1071. X      if(xev.xbutton.button == Button3)
  1072. X        setchar(xev.xbutton.x >> 4,xev.xbutton.y >> 4,SPACE);
  1073. X      else
  1074. X        setchar(xev.xbutton.x >> 4,xev.xbutton.y >> 4,curchar);
  1075. X    }
  1076. X    /* Flush the graphics commands out to the server */
  1077. X    XFlush(disp);
  1078. X  /* Loop until a control key is pressed */
  1079. X  } while(xev.type != KeyPress ||
  1080. X          (keyhit != XK_C && keyhit != XK_c &&
  1081. X           keyhit != XK_W && keyhit != XK_w) ||
  1082. X          ! (xev.xkey.state & ControlMask));
  1083. X  
  1084. X  /* Terminated X windows connection */
  1085. X  xend();
  1086. X  /* Save level to data file */
  1087. X  if(keyhit == XK_W || keyhit == XK_w)
  1088. X    save_level();
  1089. X  exit(0);
  1090. X}
  1091. END_OF_FILE
  1092. if test 6268 -ne `wc -c <'golddig2/makelev.c'`; then
  1093.     echo shar: \"'golddig2/makelev.c'\" unpacked with wrong size!
  1094. fi
  1095. # end of 'golddig2/makelev.c'
  1096. fi
  1097. if test -f 'golddig2/scores.c' -a "${1}" != "-c" ; then 
  1098.   echo shar: Will not clobber existing file \"'golddig2/scores.c'\"
  1099. else
  1100. echo shar: Extracting \"'golddig2/scores.c'\" \(3716 characters\)
  1101. sed "s/^X//" >'golddig2/scores.c' <<'END_OF_FILE'
  1102. X/* This program was written by Alexander Siegel in September of 1989   */
  1103. X/* at Cornell University.  It may may copied freely for private use or */
  1104. X/* public dispersion provided that this comment is not removed.  This  */
  1105. X/* program, any portion of this program, or any derivative of this     */
  1106. X/* program may not be sold or traded for financial gain.               */
  1107. X
  1108. X#include <stdio.h>
  1109. X#include <X11/Xlib.h>
  1110. X#include <X11/keysym.h>
  1111. X#include "golddig.h"
  1112. X
  1113. Xchar *getenv(),*sprintf();
  1114. X
  1115. X#define NUMHIGH 15  /* Number of high scores that will be remembered */
  1116. X
  1117. X/* Add a high score to the high score list */
  1118. Xvoid add_score(whydie)
  1119. Xchar *whydie;       /* Textual description of reason for death */
  1120. X{
  1121. X  /* Structure containing top game results */
  1122. X  struct {
  1123. X    int score;      /* Final score */
  1124. X    int slev,elev;  /* Starting and ending level */
  1125. X    int uid;        /* Player account uid */
  1126. X    char desc[80];  /* Text description */
  1127. X  } tops[NUMHIGH],next;
  1128. X  FILE *sfile;      /* High score file */
  1129. X  char buf[200];
  1130. X  register int i;
  1131. X  int numscore,cur,numgame;
  1132. X
  1133. X  /* Generate name of high score file */
  1134. X  sprintf(buf,"%s/scores",LIB);
  1135. X  /* Open high score file */
  1136. X  sfile = fopen(buf,"r");
  1137. X  /* Set default values for number of games and high scores */
  1138. X  numscore = 0;
  1139. X  numgame = 0;
  1140. X  /* If file is readable, load in old high score list */
  1141. X  if(sfile != NULL) {
  1142. X    /* Load a line on text */
  1143. X    if(fgets(buf,200,sfile))
  1144. X      sscanf(buf,"%d",&numgame);
  1145. X    /* Extract score information from line */
  1146. X    while(fgets(buf,200,sfile) && numscore < NUMHIGH) {
  1147. X      sscanf(buf,"%d %d %d %d %[^\n]",&(next.score),&(next.slev),&(next.elev),
  1148. X         &(next.uid),next.desc);
  1149. X      tops[numscore] = next;
  1150. X      numscore ++;
  1151. X    }
  1152. X    fclose(sfile);
  1153. X  }
  1154. X
  1155. X  /* Contruct the structure containing the score for this game */
  1156. X  next.score = score;
  1157. X  next.slev = levelstart;
  1158. X  next.elev = levelnum;
  1159. X  next.uid = getuid();
  1160. X  sprintf(next.desc,"%s %s",getenv("USER"),whydie);
  1161. X  cur = -1;
  1162. X  /* Insert new score in old high score list */
  1163. X  if(numscore < NUMHIGH || tops[NUMHIGH - 1].score < next.score) {
  1164. X    /* Iterate through high score list */
  1165. X    for(i = (numscore >= NUMHIGH ? NUMHIGH-2 : numscore-1);i >= 0;i--) {
  1166. X      /* Look for place for insertion */
  1167. X      if(next.score > tops[i].score)
  1168. X        tops[i+1] = tops[i];    /* Move old scores down one place in list */
  1169. X      else
  1170. X        break;                  /* Found spot for insertion */
  1171. X    }
  1172. X    tops[i+1] = next;   /* Overwrite entry in high score list */
  1173. X    cur = i+1;          /* Remember where new high score was inserted */
  1174. X    /* Increment the number of high scores */
  1175. X    if(numscore < NUMHIGH)
  1176. X      numscore ++;
  1177. X  }
  1178. X
  1179. X  /* Increment and print the number of games played */
  1180. X  numgame ++;
  1181. X  printf("High scores after %d games played:\n",numgame);
  1182. X  /* Print out new high score list */
  1183. X  for(i=0;i<numscore;++i) {
  1184. X    /* Flag new high score with a leading > */
  1185. X    if(i == cur)
  1186. X      putchar('>');
  1187. X    else
  1188. X      putchar(' ');
  1189. X    printf("%s on level %d (started at %d).  Final score was %d.\n",
  1190. X       tops[i].desc,tops[i].elev,tops[i].slev,tops[i].score);
  1191. X  }
  1192. X  /* If current game did not make it to the high score list, print it */
  1193. X  /* afterwords */
  1194. X  if(cur == -1) {
  1195. X    puts("...");
  1196. X    printf(">%s on level %d (started at %d).  Final score was %d.\n",
  1197. X       next.desc,next.elev,next.slev,next.score);
  1198. X  }
  1199. X
  1200. X  /* Save new high score list to score file */
  1201. X  sprintf(buf,"%s/scores",LIB);
  1202. X  sfile = fopen(buf,"w");
  1203. X  if(sfile == NULL) {
  1204. X    perror(buf);
  1205. X    return;
  1206. X  }
  1207. X  fprintf(sfile,"%d\n",numgame);
  1208. X  for(i=0;i<numscore;++i)
  1209. X    fprintf(sfile,"%d %d %d %d %s\n",tops[i].score,tops[i].slev,
  1210. X         tops[i].elev,tops[i].uid,tops[i].desc);
  1211. X  fclose(sfile);
  1212. X}
  1213. END_OF_FILE
  1214. if test 3716 -ne `wc -c <'golddig2/scores.c'`; then
  1215.     echo shar: \"'golddig2/scores.c'\" unpacked with wrong size!
  1216. fi
  1217. # end of 'golddig2/scores.c'
  1218. fi
  1219. echo shar: End of archive 2 \(of 4\).
  1220. cp /dev/null ark2isdone
  1221. MISSING=""
  1222. for I in 1 2 3 4 ; do
  1223.     if test ! -f ark${I}isdone ; then
  1224.     MISSING="${MISSING} ${I}"
  1225.     fi
  1226. done
  1227. if test "${MISSING}" = "" ; then
  1228.     echo You have unpacked all 4 archives.
  1229.     rm -f ark[1-9]isdone
  1230. else
  1231.     echo You still need to unpack the following archives:
  1232.     echo "        " ${MISSING}
  1233. fi
  1234. ##  End of shell archive.
  1235. exit 0
  1236.