home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.x
- From: jck@kimba.catt.citri.edu.au (Justin Kibell)
- Subject: v20i111: xboing - a simple blockout type game, Part04/26
- Message-ID: <1993Sep3.123052.6775@sparky.sterling.com>
- X-Md4-Signature: 3e8b73960f62e439441275e530ac0fdf
- Sender: chris@sparky.sterling.com (Chris Olson)
- Organization: Sterling Software
- Date: Fri, 3 Sep 1993 12:30:52 GMT
- Approved: chris@sterling.com
-
- Submitted-by: jck@kimba.catt.citri.edu.au (Justin Kibell)
- Posting-number: Volume 20, Issue 111
- Archive-name: xboing/part04
- Environment: X11, xpm, color
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # Contents: bitmaps/titleBig.xpm gun.c
- # Wrapped by chris@sparky on Fri Sep 3 07:14:42 1993
- PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 4 (of 26)."'
- if test -f 'bitmaps/titleBig.xpm' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bitmaps/titleBig.xpm'\"
- else
- echo shar: Extracting \"'bitmaps/titleBig.xpm'\" \(35636 characters\)
- sed "s/^X//" >'bitmaps/titleBig.xpm' <<'END_OF_FILE'
- X/* XPM */
- Xstatic char * titleBig_xpm[] = {
- X/* width height ncolors chars_per_pixel */
- X"474 74 9 1",
- X/* colors */
- X" s None c None",
- X". c #A06000",
- X"X c #F0D040",
- X"o c #F0C030",
- X"O c #D09E20",
- X"+ c #903F10",
- X"@ c #802F00",
- X"# c #C07F10",
- X"$ c black",
- X/* pixels */
- X" .XoOOOOOOOOOOOOOoX. .XXXoooOOOOOOOOOOOOOoX. ",
- X" .XOOOOOOOOOOOOOOoX. .XXXooOOOOOOOOOOOOOOoX. ",
- X"..++++++++++++++++++++++++++++++++++++.....+++++++++++++++++++++++++++ @.++++++++++++++++++++++++++++++++++++++++++++++...... @.++++++OOoOOOOOOOOOOOOOOo#+++++.. @.++++++++++++++++++++++++++++++++++++++ @.++++++++++++++++++++++++++ @.++++++++++++++++++++++++++++ @....+++OOoOoOOOOOOOOOOOOOOOOo#+++.. @.++++++++++ ",
- X"XXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoXXXoOOOOOOOOOOOOOOOOOOOOOOOOOOO. .XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoXXXXX# .XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoX# .XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO. .XXOOOOOOOOOOOOOOOOOOOOOOOOO. .XXOOOOOOOOOOOOOOOOOOOOOOOOOOO. .XXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoX# .XXOOOOOOOOO. ",
- X"XXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOXXOoOOOOOOOOOOOOOOOOOOOOOOOO# .XXoOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooOXX#+++ @+++OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX#+++ .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO# .XXoOOOOOOOOOOOOOOOOOOOOOoooO. .XXoOOOOOOOOOOOOOOOOOOOOOOOOO# @+++OOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX#+++ .XXoOOOOOOO# ",
- X"XXXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoXO.OXXXoOOOOOOOOOOOOOOOOOOOOOOO#.@ .XXXoOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOO. +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO. .XXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#.@ .XXXoOOOOOOOOOOOOOOOOOOOoXXXXX# .XXXoOOOOOOOOOOOOOOOOOOOOOOO#.@ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO. .XXXoOOOOO#.@ ",
- X"XXXXooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOO#.OXXXXOOOOOOOOOOOOOOOOOOOOOO#.. .XXXXOoOoOOOOOOOOoOOOoOoOOOOOOOoOOOoOOOOOOOOOoOOOOOOOXOOoOO+.. @+++#OOOOOOOOOOOOoOo#.........OoOoOOOOOOOOOOOO#+++ .XXXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#.. .XXXXOOOOOOOOOOOOOOooooooXXXXXO. .XXXXOOOOOOOOOOOOOOOOOOOOOO#.. @+++#OOOOOOOOOOOOoOo#...............OOoOOOOOOOOO#+OXXXXOOOO#.. ",
- X"XXXXXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOoXO...OXXXXXoOOOOOOOOOOOOOOOOOOO#...@ .XXXXXXoOOOOOOOOOXOOOXooOOOOOOOXOOOXOOOOOOOOOXOOOOOOOXoOOXoXXX. +OOOOOOOOOOOOOOOoXXX#@@@@@+@@@#XXXoOOXOOOOOOOOOOOO. .XXXXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOO#...@ .XXXXXoOOOOOOOOOOOoXXXXXXXXXXXXX# .XXXXXoOOOOOOOOOOOOOOOOOOO#...@ +OOOOOOOOOOOOOOOoXXX#@@@@@+@@+@@+@@@#XXXXOOOOOOOOOoXXXXXoO#...@ ",
- X"XXXXXXO...........OOO.............#O#...OXXXXXO..................#.... .XXXXXO#.#.....#OXXoO#.##....#.##.##.......#.#OoOoOOOOOoooooOOO. @.++#OOOOOOOOOOOOo#..###++@@@@@@@@+###..OXoOOOOOOOOOOO#+.. .XXXXXO...........OOooO#..........##.... .XXXXXO.........OOXXXXXXXXXXXXXXO. .XXXXXO.......##Oo#.....##.... @.++#OOOOOOOOoOOOo#..###++@@@@@@@@@@@@@@+###..OOoOOOOOOooXXXO#.... ",
- X"XXXXXX#@@@@@@@@@@@#X#@@@@@@@@@@@@@+.....OXXXXX#@@@@@@@@@@@@@@@@@+...... .XXXXX#@@@@+@+@@#XXX#@@@@@+@+@@@@@@@++@+@+@@@@#XXXoOOOooooooOOOX. .XXOOOOOOXOOOOOOoX#@+@@@@@@@@@@@@@@@@@@@#XXoOOOOOOOOOOOOoX# .XXXXX#@@@@@@@@@@@#XXXO.+@+@@@@@@@+...... .XXXXX#@@@@@@@@@#XXXXXXXXXXXXXXXXX# .XXXXX#@@@@@@@+.OX#@@@@@+...... .XOOOOOOOOOXooOOoX#@@@@@@@@@@@@@@@@@@@@@@@@@@@#XXXoOOOOOOXXXO...... ",
- X"XXXXO#++@@@@+####.OX#@@+@@@@@@@@@@@+@...OXXXO#++@@@@@@+##.##++@@+@.... .XXXO#++@@+#####OXXX#@+@@@@@@@@@@@@@@@@@@@@@@@+####.OOoOooooooXXO. @+OXoOoOOOXooOO#...#++@@@@@@@@@@@@@@@@@@@@+######OOOOOOOOoOo#. .XXXO#++@@@@+#####OXXX#+.++@+@@@@@@@.... .XXXO#++@@@@+###OXO#OXXXXXXXXXXXXXO. .XXXO#++@@@++@@.#XO#.++@@@.... @+#XoOOOOOOOOXOOO..#++@@@@@@@@@@@@@@@@@@@@@@@@@@+O##..#OOOXXXXO..... ",
- X"XXXX#@@@@@@@#XXXXXoo#+++@@@@@@@@@@@@....OXXX#@@@@@@@@+OXXXXX#@@@@@@...@ .XXX#@@@@@#XXXXXXoXX#+++@@@@@@@+@@@@@@@++@@+@@+@++@@#XoOOXoXXXXXXX. +OOXooooXooooo#.+@+@+@@@@@@@@@@@@@@@@@@@@@@@@@+.#OOXOOOXXOoOOX. .XXX#@@@@@@@#XXXXXXoXX#++...@+@@@@+@@...@ .XXX#@@@@@@@#XXXXX#@#XXXXXXXXXXXXXXX# .XXX#@@@@@@++..+#XXXO.+@@@@...@ +OOooXOOOOOOOooO.+@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@++@@+@#XOOOXXXO.....@ ",
- X"XXO#++@@+###OXXXoooXO#.++++++@@@@@@@@@..OXO#++@@@@++++#XooXXO###+++@..@ .XO#+++###OXXXXXooXX#++++@+++@@++@@@@@@@@@+++@++++@@+OOOXXooXoXXoXO. @+#OooooooooOOOO.@+@@@@@@@@@@@@ @ @ @@@@@@@@@@@@++.#OooOOOoooOXX#+ .XO#++@@+###OXXXXXooXX#++.@.@@@@@+@@+@..@ .XO#++@@+###OXXXXX#@+#OXXXXXXXXXXXXXO. .XO#++@@@@++.@++#ooXOO.@@++@..@ @+#oooOOoOOOOOXoO.+@@@@@@@@@@@@@@ @ @ @ @ @@@@@+@@@@@@@@+#OoooXXO.....@ ",
- X"XX#@@@@@#XXXXoooooXXXXO.....++@@@@@@@++.OX#@@@@@@+@.++#ooooXXXXX#@@++. .X#@+@#XXXXXXoooooXX#++.+++.+@+.++@@@@@@@++.+@+.@++@++#XXXXOXXXXXXXX# +OooooooooooOO#.@@+@@@@@@@@@@@ @@@@@@@@@@@@++.OoOOOOOXooooOO. .X#@+@@@#XXXXXXoooooXX#+++++.....@@@@@@. .X#@+@@@#XXXXXXoXX#@@@#XXXXXXXXXXXXXXX# .X#@+@@@@....+++#oooXXO..@@@@. +OOoooOOOXXoXoXX#++@@@@+@@@@@+@@ @@@@++@@@@@@@@@#XOOOXO..... ",
- X"..+ @ @ #XXXoooXoooXXXOO#...+++@+++@@ @ +. +@@@++..##OXooXXXXO.+ @ @ # +.OXXXooooXXXX#+.+.+..+@@@@ @ @ @ @+..++@..+++@+.#OXXXoXXXoXXX#+ @.#OooooooooooO#..@+@@@@@@@@$@ @ @ @@@@@@+@@@+++##OOOOOoXooooo#+ # @ #OXXXooooooXX#++++++...+ @ @ @ # @ #OXXXoooX#@@@+#OXXXXXXXXXXXXXO. # @ @.@++++#ooXXX# @ @ @@ @.#oooooOOooooXXO#++@@@@@@@@@@@ @ @ @ @ @@@@@@@@@@@+#OXXXO.....@ ",
- X" .XXooooXXoXXXXXXO....++++.++@ @++..++.OoooXXXXXX. .XXoooooXXXXO.+++...++ @..........+++++OXXXXXoXXXXXO#+ .XXoooooooooooO.@+@@@@@@@@@@@ @@@@++@@@@+..OooOoooOoXooOO. +XooooooooXX#++++++++.@ .XXooXoX#@@@+@#XXXXXXXXXXXXXXX# .++++#ooOXX. .XooooooOOOoXooo#@+@@+@@@@@@@+@ @++@@@+@@+@#XXXO..... ",
- X" #OXXXXXooXXXXXXO+.#...+.#.+@ @ ++..++.OOoooXXXXO. .XooXXXXXXXXO...#.....@ @@@@+.#...+++++.#OXoOooOOOOO#+ +oooooooooooO##@.++@@@@@@@@ @@@++@@@++@@+.OOOoooooooooO. .XoooXooooXX#++++++++.@ .XooooXX#@@@@@+#OXXXXXXXXXXXXXO. @+++.+#XoooX. @.OOXooooooOXoooOO++@@++@@@@@ @ @ @@@+++@@@+#OXO.....@ ",
- X" .XXXXXXooXXXXo#.#####..##.@ @.#.++++#XXoooXXXX. .oooXXXXXXXXO..####...@ @+.##........+OXO#OXO#####+ .Xoooooooooo#..+++++++++++ @@++++++@@@@+.OoooooooXoXo. .oooooooXOXX#++++..+++ .ooXooXX#+@@@@@@#XXXXXXXXXXXXXXX# @++...OooooX+ .ooXoooooooooooX#++@@+++@@@@ +++++@@++#XO.....@ ",
- X" +OoXXXOOOOoXXXoO###..###..+@ @@....@##OXoOOOoXO. .oooXXXXXXXXO..####.#.@ @+...#...#..+OXoOOO##OOOO+ @.OoooooooooooO@++++++++++@ @ @@++++++@+@++#ooooXoooXooO+ .oXXooooXoXX#++++.+++.@ .ooXoXXX#++@@@@@+#OXXXXXXXXXXXXXO. .+...#ooooo. .XoooooooooXoXOO.++@+++++@@ @ @@++++@++.#...... ",
- X" +#OXXXO###OXXXXXO#..######..@ @.......OXXXO###OX. .oXXXXXXXOoXO..#######@ @..####..##.OXXXO...OXXX. .ooooooooooooo#+++++++++++@ +++++++++@@#XXXXXoooXXooX# .ooXXooOXXXX#++++..+..@ .oXXXXXXO.+@@@@@+@#XXXXXXXXXXXXXXX# +.++..Oooooo. .XXooooooooXXX#+++++++++++@ @++++++++++.....@ ",
- X" +#OoXO###OOOOoXoOO.#######.#.......#OOXXOOOOO#. .XoXXXXXXoXXO.#####.##@ @.####.###.OXoO##..#OOO+ .ooXoooooooXO#++++++++++@ @ +++++.+++@.#OXXooXooooXO. .XoXoXOXooXXO++++.+.+.@ .oXXXXXXO.+@@@@@@@+#OXXXXXXXXXoOoXO. @@.+.+#ooooX. @.OXXXoooooooXO#.+++++++++@ @@++++++++.....@ ",
- X" +#OXO#######OXXXO#########OXO...##OXXXO#OXXX. .XXoXXXXXXXXO#####..##@ @#########OXO######+##+ .oooooooooXX#+++++++++++@ @..++.++++++#oooXXooXXXX. .XXooooooooXO.++++....@ .ooXXXXXO+@+@+++@@+@#XXXXXXXXXO#OXXX# @++..+#ooooX. .oooXXooXXXooXO+++++++++++@ @....++++..... ",
- X" +#OO###OOO#OOOOOOOOOOOOO#OXO.#OOOOOOO##OOO. .XXoXXXXXooXoOOOO##.#O. @#####OOO#OXO..#...#.#@ @.OooooooXoOXX#+++++++++++@ @.++...+++++#XoXXXXoooooO+ .XoXXXooXoXXO..++++...@ .XXXXXXXO.+@++++@@@@+#OXoOoXXXoOOOoX#+ ....+#XoooX. .oooXoXoXoXoXX#+++++++++@ @+++++++......@ ",
- X" +#####OXO#####oXXXXXXXO#OXOOOXXXOO...###+ .XXXXOXOoooXXXXXO###OX. @#####OXO#OX#++.++.#.. .oooooooXXoXXX#+++++++++..@ @.@+..++++++#XXXXXXXooXXXX# .ooXXXXXXXXXO....+....@ .XXXXXXXO.@+@+++@@@++@#XO#OXXXXXO#OXO#+ @.....OXooXX. .oXXXooXoooXXXO....+++++@ +++++........@ ",
- X" @..###O#####.#OXXXXoOO.OXO#OXoO#.#.##++ .XoXXooXooXXXXoOO#OOoX. @.OOOOOOOOOooXO+...+....+ .XXoXooooXoXO#.+++++.+++@@ @@++.+.++++#OOXXXXXoooXXo+ .XXXXXXXXXXXO....+....@ .XXXXXXXO.++@@@+@@@@@@+#OOXXXXoOOOXXoOO. @.....OoXXoX. @.OooXXXXXXXoXOO#...++++++ @+.+..#.++...@ ",
- X" @..##.####..##OXXXO#..OXO#OXO....#..@ .ooooooXXXXXXXO###OXXX. .XXXXXXoO#OXXXO.....+++.@ .XXXXoooOXXX#++#.......+ @++++.+++++.OXXXXXoooXoX. .XXXXXXXXXXXO.........@ .XXXXoXXO.@+@@@@@@@@@@+@#XXXXXO#OXXXXXXX# @.....#oXXXX. .XXoXXXXXXXXXXO.....++...+@ @....#+@+...@ ",
- X" @...#.###.#...OXXXoO#.#OOOOO#.+..#@@ .XoXXoXooXoXXXoOOOOOXX. +#XXXXXoooOXXO#.+..+.++++@ .XXXXooXXXoXO+++.....+.+@ .+++.+.+.++OXXXXXXoXXXX. .XXXXXXXXXXXO.........@ .XXXXXXoO..+++@@@@@@@@@@.#OOoXO#OXXXXXXXO. @...#.OooXXX. .XXoXXXXXXXXXX#+......+.@@ @.....+@+++. ",
- X" @....###......OXXXXXO.##oXO...@++.@ .XXXXOoooooXXXooXXo#OX. @#OXXXoXoXXXXX#++++..+++++ .XXXXXXXXXXXO..++....++.@ @.++++.....+#XXXXXXXXXoX. .XXXXXXXXXXXO.........@ .XXXXXXXO....+@@@@@@++++++.#OXO#OXXXXXXXXX# @..###OoXXXX. .XXXXXXXXXXXXXO++.......@ @..#.@@@@@+.@ ",
- X" @@..........##OOXXoO..##O#.+.+.@@ .XXXXXoXooXXXXXooXoOoo. @++#OoooOooXXooO#.++@++++++@@ @.OXXXoOoXXXXXO.+......+..@ @..+.+.....+OXXXXXXXXXXXO. .XoOoXXXoOoXO..#...#..@ .XXXXXXXO+..+@@@@@@+@++++++.OXoOXXoOoXoOOO#. @..###OXoXXX. .XXXXXXXXXXXOO.+........@ @+.+@@@@@@+@ ",
- X" @.+++++....#..Oooo#.##....++..@ .XXXXXXXXXXXXXooXoXXXo. @#OOOXoXoOOXoXoo#@@@@@++++@@ .XXXXXO#OXXXXXO...........@ @.......###.OXXXXXXXXXXXXX# .XO#OXXXO#OXO..#..##..@ .XXXXXXXO...+@@@@@++@@@+++++#XXXXXO#OXO###OX# @..###OXXXXX. .XXXXXXXXXXXO...........@ @@@@@@@@@ ",
- X" @@.++.+.+.#.+##OXOOOO#..++++@ +OoXoOoXXXXXXXooXXXXXo#+++..++++##OOooXooOoOXoO#++@@@+@++++@@ +OXXoOO#OXoOOO#......#..@@ @@.........#OOOOOOOoXXXXX. .XoOXXoOOOXXO.###...#.@ .XoOoXXXO...+ @@@@++++++++++.#OOoXoOOOOOO#OOO. @.####OXXXXX. +OXoOoXXXXXXXO...........@ @ @ @ @ @ ",
- X" @....++++..++.OoXXXXO.++++ +#OXO#OXXXXXoooooXXXXXoOOOOXoOOOOOOXooooooOOOo#@++@@@++@@+@@ +#OXO###OXO#...##+..##..@ @O...........#####OXXXXX. .XXXXXO#OXXXO..#.....#@ .XO#OXXXO+..@ @++++++++++++++@+#OXXXO#OXO###OX# @#####OXXXXX. @#OXO#OXXXXXXXO##.........@ ",
- X" @+...+.+.+++..OoXXO##+.+.#+ +#OOOOOOoXXXXooXXXooOoOOOOOOOOOOOOOoOOXooXooO#.@@+@@@+@@@+@ @ @#OXO###OOOOO+.##.....#.@ @#.....#.#..#OO###OXoOoX. +OOOOOOOXXXXO.#.#.#.##@ +OOOXXXXO...@ @@++++++++++++++.OXoOO#OOO#OOOO#. @#####OXoOoX. +oOOOOOOOOOOoXO#........@@ ",
- X" ++.....+++++.OXXX#+++++#X. @###OXO#OXXXoooXXXoOOOOOOOOOOOOOOOOOOOOooOXX#++++@@@@@@@@@ @#OXO#####OXO.##.......#@ @#....####..OXO###OXO#OX. +#####OXXXXXO##..#####@ +#OXXXXXO... +++++++++++++++#XO#######OXO#OX# @#####OXO#OX. .XO#OXO##O##OXO##....##.@ ",
- X" @@..+.+.++++.#XXXO#####Oo#. +OO#OXXOoOoXXXoooOOOOOOOOOOOOOOOOOOOOXooO###++@@@@@@@@@@@ @ @OOOO#####OOO.###.#...##@ @###.#.####.#OOOO#OOOooX. +#####OOXXXXO##.#.#.##@ +#OOXXXXO..#+ @ ++++++++++++++.#####OOOOOOOOoO#+ @####OoOO#OX. +OO#OOO####OXXO#..#.###.@ ",
- X" @.++++++++++#XXXXooooooXoX. .XO#OXXXO#OXXooOOOOOOOOOOOOOOOOOOOOOoXXX#@@@+@@@@@@@@@@@ @####################..#@ @#############oXO###OXXX. @#######OXXXO###.....#@ @###OXXXO###@ @++++++++++..+++.###OXXXo#OXO###+ @###OXO###OX. +#########OXXXO#########@ ",
- X" @@+.###########OoooooooooO. +OOOOOOOOOXXO#....#.#................###+++#........##.#@ @###########OOO###OO####@ @#############OOO###OOOO+ +OO#####OOoXO####.#.##@ @###OOoXO###@ @@+++++++..+.+++.#OoOOOO#OXO###.+ @#OOXXO###OX. @#########OOoXO#########@ ",
- X" @+#XooooXX#@++#oooooXooooX. @.OXOO##oXXX#@@@@@@+@@@@@@@@@@+++@@@+@@@@@#XoOOOOOOOOooO+ @###########OXO###OXO###@ @#######################+ .XO#######OXO#########@ @#####OXO###@ ++++++++...++++#XO#####OXO#####+ @#OXXXO###OX. @###########OXO#########@ ",
- X" +#OoooooO#.@++OXXoXooooXooO. @.OOO####OoX#@+@@@+++@+@@@@@@@@++@@@@@@@@@+#..OoOOOOOoOO#+.. @###########OXO#OOOOO###@ @#OO######OOO##########.+ +oO#######OXO#####OOO#@ @#####OXO#OO+ @@+++++...+++++.#####OOoOOOO###.+#OOOXXO###OO+ @##.######.#OXO#OOO#####@ @.++++++++++++++++++++++++++++++++++++..",
- X" .XXooXoo#++@+.OXXXXXXoooooXX# @#######..OX#++++@@++++++@@@@@@+++@@@@@@@+++@@#XoOOOOOooOOoX# @O.#########OXO#OXO#####@ @#OXO#####OXO#########..@ @#########OXo#####OXO#@ @O####OXO#OX. @.+++++.++++++++.###OXO#oXO#####OXO#OXO#####+ @#...#####..OXO#OXO#####@ .XXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoX",
- X" @.OXXoooO#.++@+.##OXXXoooXoXoX. @##.#####.OX#++++@++++@+@++@@@@++@+@+++@++@@@@.#OoOOOoOXOOOo#. @###....####OOOOXXoOOOOO. @#OOOo##OOOOO######.###.@ @##.##..##OXO#####OOOO. @...#.OXo#OX. @+++....+++++++.###OXO#OXoOOOO#OXXOXXO#####+ @#####..###.OXoOXXoOO#OO+ .XXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOO",
- X" .XXXXooo#++#+@+.++#XXXXooXXXXo+ @#...#####OXO++++++.+@@@+.+@@@++@@@++..++++++@++#XoOOooooOOOoX# @###.....#####OXXXXXXXXX. @###OXO#OXo#######..####@ @#...##..#OXO#######OX. @.....OXO#OX. @++...+++++..++..#OXo#OXXXXXO#OXXXXXO#####@ @######..#..OXXXXXXXO#OX. .XXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoXO.",
- X" @.OXXoXoO#.+++++.++..#oXXXoOoXXXO. @#..######OX#++++.+.++@ @@ @ @ @ @@@+.@@+@++@@@+.#OoooXooOOOOo+ @#.##..#.#.##OXXXXXXXXoO+ +OOooXO#OOOOO######..#.#@ @O#.##...#OXXOO##OO#OX. @.....OXoOOO. @@..+.+.+..+++..##OO#OOoXoOO#OXXXXXO#####@ @#..##.####.OXXXXXXXoOoXO. .XXXXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOO#.",
- X" .XXXXooo#+++++..++..++#XXXO#OXXXXX# @....#####OX#++...++..@ +@++@@@+++@@+++#XXoooooOOOO+ @..#..##....OXXXXXXXXXO#+ .XXXXXO###OXO########...@ @#####....OXXXO#OXO#OX. @.....OXXXo#+ @.++......++....######OXO###OoXXXXO#####@ @....#####..OXXXXXXXXXXXXX# .XXXXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOoXO...",
- X" @.OOoXXoXX#++++++#..+..+##OOOOOOoXoO.+ @....##.#.OXO+...+..++@ @ @@@++++++++++.#OooXooXoOoO. @.###.#.##.#OXXXXXXXXXoO#. @.OOXXXXoOOOXXO.#.#.##....@ @##..#...#OXXXoOXXoOXX. @....+OXoO##+ @@++.....++++...#####OOO###OXoXXXO#####@ @@...#.#.#.#OoXXXXXXXXXXX. .XXXXXO...........OOooO##.........#O#...",
- X" .XO#OXXXXXO.++++.#......++.#OXo#OXO###+ @....#....OXO...+++..+ +.........+++#ooXXooXXooX# @#####...###OXXXXXXXXXXXXX# .XO#OXXXXXXXXXO......##...@ @#......##OXXXXXXXXXXX. @#....OXO###+ @++......++++..+##########OXXXXXO..###@ @........###OXXXXXXXXXXX. .XXXXX#@@@@@@@@@@@#XXXO#+@@+@@@@@@+.....",
- X" +#OOOXXXXOO#...+++#........#OoOOOXXoOO##. +.....#..OXO.........+ @ +#.+...#.++.#XXXXXXXoXXX. @...#.####.OXXoXXXXXoXXXX. .XXOoXXXXXXXXXO......#..@@ @#.......#OXXXXXoOoXXX. @#....OXoOOO+ @@......++......#########OOoXoXO.###.@ @........#.#OXXoXXXXoXoX. .XXXO#++@@@@@@+###OOoXO...++@+@@@@@+@...",
- X" @###OXXXXXO....#.@+.......##OXO#OXXXXXO#OX# @+@.++.##.OXO...###.##@ +#.++.##.#..OXXXXXXXXooo+ @...####..OXXoXXXXXooXXX. .XXXXXXXXXXXXXO.........@ @.........OXXXXXO#OXXX. @.....OXXXXX. @..............+##########OoXXO###..@ @...........OXooXXXXXooo. .XXX#@@@@@@@@@#XXXO#OXO.###O.@@@@@@@....",
- X" @.###OOoXoO#...#.+ .....#...#OO##OXoOOOO#OX#+ @++.+++.+.#XO.#.#..#.#@ @+..#.##...OXXXoOooooXo. @.........#OOooXXXooooXX. .XXXXXXXXXXXO##.........@ @.........OXXXXXoOXXXX. @.....OXXXXX. @+..............#########OoooO#.##.@ @...........OXooXXXXXoooO+ .XO#++@@@@+###OXXXO#OXO..###.++.+@@@@@..",
- X" @#O#####OXO#...#..+ @##..#..##..##OXO#####OXO#+ +++++++++#XO###..####@ +########.OXXXO#OoXXoX+ @.....+++...OooXXXXoooXX. .ooXXXXXXXXX#++.........@ @.........OXXXXXXXXXXX. @....+OXXXXX. @..............+########Oooo#.##..@ @...........OXoooXXXXXooXX. .X#@+@@@@@#XXXXoXXO#OXO..#######+@@@@@@.",
- X" +.####.###O###.#..@ @.OO##.###O##OOO#####OOO..+ @+++++++++OXoOO##.####@ @#OOO#OO##OXoOO#OOOOoX. @..@.......+#XXXXoXooooXO. @.OooXXXXXXooXO+.........+@ +.@......OXXXXXXXXooX. .@.@.OXXoXX. @@..........#....######OoooO.###.@ @@..++.....#OOXXXXoXooooX. # +#OXXXXoXXOOOXO.########@@ @ @ @",
- X" @..###...O...###..+ .XO#####OXO###########...#+ @.++++++..OXXXO#######@ @#OXO#OXO#OXO#######OX. @.@+......++#XXXXooXXooXXX. .ooooooooXXooXO.........++ @+++@.....OXXXXXXXoooo. @+++++#XXooX. @.........##....######OoooO###..@ @.@@+++.....OXXXXooooooX. #XXXXXXXXXO#OXO#########+ ",
- X" @....#.#.OO#.####. .OO#OOO#OOO#OO########...#@ @@.++++.++OXoOOOOOO#OO+ @#OOOOOoOOoXO#######OO+ +@+++.+...+#OOXoooXoooXoX. .oooXOXoooXoO#.+.+.+.+..+@ @+.@.....+OXXXXoXXXooX. +++++OXoXXX. @@....#....#.....####OOooO.#...@ @...+.......OXoXoooooooXO+ +.OOoXoOOOO#OXoO##OOO#OO+ ",
- X" @O###....#OXOO####+ +###OXO#####OXO..######...@ .+++++..+#XO#OXXXO#OX. @###OXO#OXXXO+########+ ++++++.+++.OoooooooooXX. .ooooXooXoXXO++++++++++.@ @.......++#XXXXoXXoooX. @++++.OXXXXX. +##.##..........######Oo#.....@ @...........OXooooooooooXX# +#OXO#####OXXXO#OXO#OX. ",
- X" @.#.#....##OOO###++ +.#OOOOO###OO#.#....#.#..@@ @++++.+.+.#XO#OXXOOOXX. @.OOOOXXO#OOoXO..######.@ @++.+....+++#OoooooooooXO+ @.OooXOoooooOO#++++++.+.++@ @+.@.+..+.#XXXoooXoXoX. @@+...OXXXXX. @.+.##....#.#.#.#####OoO.....@ @@.@..+...+.#oooOoooooooo#. +OoXoOOOO#OXXooOoXoOoX. ",
- X" @#O#.......#######+ +###OXO######+..+++..#....@ @.++..+++.OXO#oXO#oXXX. .oXXXXXXO###OXO.######..@ @++.....++++.#OoooooooooXX. .oooooXoXooXO#...++++....+ ++++++++.OXXXXoooXXoo. @.....OXXXoX+ @..####..#####...###Oo#.....@ +...++.++++#XoOOooooooXoX. .XXXXXXXO#OXoooooXXXXX. ",
- X" +........#OOOO###++ @#OoXoOOOOOOO.+.+...#....@@ @@.+.+.+.+OXXOoXO#OXXX. @.OXXXXXoXoOOOOO#..##.#.#+@ @@.+.+.+++++.OooooOoOooOo#. @.OooXoooooooX#..++++++.+.@@ @++++++++.#XXoXooooXoo. @+++.+OXoooX. @.####.#####.#.####OXO+....@ @++.+++.++++.#OooooooOOOoXO. +.OXXXXXXXoOXXXoooooXXXX. ",
- X" @...+++...OXXXO###@ .XXXXXXoXXoo#++++.......@+@ .+..++..+#XXXXoO#OXXX. .XXXXXoXooooXXo##..##.....@ @..+++++++++#XXooOOOOoOOoX. .XXoooooooooXoO+++++++++++ +++++++++#XXooXXooooo. +.+++#XXooo+ @#########...#####OX#++...@ +...+++++++++#XXoooOOOOOooX. .XXXXoXXooXXXXooooooXXoo. ",
- X" @....@....#OOOoXO#+@ .OXXXXooXooO##+..+.+.+..++. +O.+.+.++.#XXXXooOoXXX. @.++OXXXXXooooooXXO#.+.#....@@ @@++++++++++.#OooOoOoooOOOO. @.OXoXOXOOooooO#.++++++++++@@ @+++++++++#XXooXoooooX. +O++++#XXooX. @.####.####.####.OXO+....@ @ ++++++++++++.#OXoOoOOooooX#.++ .XXoXooXooXXXXoooooooXoo. ",
- X" .XO.+++...OXO#OXO#@ .XXXooooooXXO...++++..++OX# .XO++.++..OXXXXXXXXoXX. .XXOOXOXOoooXooXXXO#.++.....@ +++++++++++++#XXoooooOOOOOX. .XXoooXooOOooX#+++++++++++@@ @+++++++++#XoooooooooX. .XO+++#XXooo. @###..####...#..OXO.....@ @+++++++++++++#XoOOOooooooXXOO. .oooooooXooooXXooooooooo. ",
- X"++..OXOO.++.#OOXoOXXoO#.+. @..+++#oOXooXoXoXXOO#+.+++.OO#OXO.++++.. @.++++..OXO#.+.+++OXXoXXXooooO#+++++++++++OOOOOXoOoOOOOOoXoO##.+.+.+..@ @ +++++++@++++.#OXoOoOOOOooo#+++ @.++OOoOOOOOOOoXO#.++++@++++++@ @ @.++++++++.###.+++++#XXooooooXoXO+++++++ @.++++..OXO#.+#XXoooO.++++++.. @.##.#####.###.OO#..+.+@ @@@++++++++++.#OoOOOooOOOOOoO#+++ @++#OOoOOooooooO###OOoooooo. ",
- X"OOoXXXXXO+++#XXXXXXXXXoOOO. .XoOOOOOOOOXXXXXooXX#+++++#XXXXXXXXOOOXX# .XXOOOOXoXXXO+++++#XXoXXooooOOOOOOOOOOOOOOOOOOooOOOOOOOOoXO.....+++++.@ @+++++@@@++++@#XoOOOOOOooXOOOO. .XXOOOOOOOOOOOoX#+++++@@++++++@ .XXOOOOOOOXXXX#+++++#XXoooooXXXXOOOOOOOO. .XXOOOXXXXXX#+OXXooXXXXOOOOOOX. +###############...+++ @@++++++++++@#XoOOoOOOOOOOOOOOO. @#OOOOOOOOOXOooo#@@+.#Oooooo. ",
- X"OOOoOXoXO#.+#XXXXXooOXOOO#+ .XXoOOOOOOOooOXXXoXX#+++.#oXooOXOoOOOoOO+ .XXoOOOoooXXO###.+#XoooXoOoOoOOOOOOOOOOOOOOOOOOOOOOOOOOoO#.++.++.+++@@ @@++++@+++++@.#OoOOOOOOoOOOOO#+++++OOOOOOOOOOOOOXO#+++@+@@@@+@@@ .XXoOOOOOOOoOXO###.+#XoooXoXooOoOOOOOOO# .XXoOOOoOooXO#OXXXXXXOOOOOOoOO+ @.##############.++++@ @@++++++++@@@.##.OXoOOOOOOOOOOO#+++++++++##OOOOOOOOOoXoO#+++++.##OOoo. ",
- X"OOOOOOOXXX#+#XXXXXoOOOOO#. .XXXoOOOOOOOOOoXXXoo#+++#XXXoOOOOOOOXXO. .XXXoOOOOXooXXXX#+#XXooooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXo#+++++++...+@ +++++++++++++#XoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoX.++@@@@@@@@@@@@ .XXXoOOOOOOOOOOXXX#+#XXoXXXooOOOOOOOOO#.@ .XXXoOOOOOoXXXXXXXXXOOOOOOoXO. @#############..++++ @@+++++++@@@++@@#XoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX#@+++++@+..#OX. ",
- X"oOOOOOOoooO#OXXoOoOOOO##..@ .XXXXOOOOOOOOOOooOXXO###OoOoOOOOOOOoOO#.+ .XXXXOOOOOOOoXXXO#oXoOoOOOOOOOOOOOOOOOOOOOOOOOOOO#O##.##.++++++@++@ @@+@@@@+@+++++##.#oOOOOOOOOOOOOOOOOOOOOOOOoO.##++@@@@@@@@@@@ .XXXXOOOOOOOOOOXOXO#oXoOooOoOOOOOOOO###. .XXXXOOOOOOoXXXXXXXoOOOOOoOO#.@ @.#########OO#.++++@ @@@@@@@@@@@+@@@.#OoOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoO#++@@+@@@++..#O+ ",
- X"XXXOOOOOOOOXXXOOOOOOOO#...+ .XXXXXXOOOOOOOOOOOoXXXXXoOOOOOOOOOoXO... .XXXXXXOOOOOooooXXXXoOOOOOOOOOOOOOOOOOOOOOOOOOOO####.++++@@+++@@@+@ ++@@@@@++@@@@@@#XoOOOOOOOOOOOOOOOOOOOOOoX#+@@++++@@@@@@@@ .XXXXXoOOOOOOOOOOOoXXXoOOOOOOOOOOOOO#...@ .XXXXXXOOOOOOXXXXXoOOOOOoXO... +#########OX#+++++@ @@@@@@@++@@@@++#XXXoOOOOOOOOOOOOOOOOOOOOOOOOOOOoX#++@@@@@@@@+@@+.@ ",
- X"XXO+......#####..#..##.... .XXXXXO...........######..........#O#...@ .XXXXXO..#.#.########.#.#.........................+.++++@@++++@+@ @ @+@@@@@+@@@@@@.##.OooOOOOOOOOOOOOoOo#..#++@@@@@@@@@@@@@ @ .XXXXXO...........####....#........##... .XXXXXO.....######......#O#...@ @.#######OX#+++++ @ @@@@@@+@@@+@++####.#oOXOOOOOOOOOOOOOOOoOoO....#.@@@@@@@@@@@+@@@ ",
- X"XX#++@@@@@@@@@@@@@@@+.....@ .XXXXX#@@@@@@@@@@@@@@@@@@@+@@+@@@@++.... .XXXXX#++++++++++@++++++@@@@@@@@@@+++++++@@@@@+++++@++++++++@@@+@ @+@@@@@@@@@@@@++++#XXXoOOOOOOOOOoXXX#@+@+@@@@@@@@@@++@ .XXXXX#@@@@@@@@@@@@@@@@@+@@@@@@@@@+.....@ .XXXXX#@@@@@@@@@@@@@@@+@+..... @#######OX#+++++@ @@@@@@@@++@@+@++@@#XXXOOOOOOOOOOOOOOoXXX#++@@@@@@@@@@@@@@@@+ ",
- X"##+@@@@@@@@@@@@@@@@@++....@ .XXXO#++@@@@@@@@@@@@@@@@@@@@@@@@@@+@....@ .XXXO#.++++@@+++@@@++++++@@@@@@@@@@@+++++@@@@@@@+@@@@++@++++@@@ @ @@@@@@@@@@@@+@++###...........###++@@@@@@@@@@@@@@ @ .XXXO#++@@@@@@@@@@@@@@@@@@@@@@@@@@++@...@ .XXXO#++@@@@@@@@@@@@@@@@@@....@ @.###OOoXO+++++@ @ @@@@@@@+@@@@+@@+O###..............###++@@@@@@@@@@@@@@@ @@ ",
- X"@@@@@@@@@@@@@@@@@@@@@@+...@ .XXX#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...@ .XXX#@@+++@@@@@++@@@@+++@@@@@@@@@@@@@@@+@@@@@@@@@@@@@+@@++@@@@ @@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@ .XXX#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+... .XXX#@@@@@@@@@@@@@@@@@@@@@@...+ +###OXXXO.++++ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@ ",
- X"@@@@@@@@@@@@@@@@@@@@@@@++.@ .XO#++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@.. .XO#++@@@@@@@@@+@@@@+@++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@ @ @ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ .XO#++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++.@ .XO#++@@@@@@@@@@@@@@@@@@@@+@.. @.#OXO#.+.+++@ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ @ ",
- X"@@@@@@@@@@@@@@@@@@@@@@@@+.@ .X#@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.+ .XO++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .X#@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+.@ .X#@+@@@@@@@@@@@@@@@@@@@@@@@+.@ @#OX#@@@+..+@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
- X" @ @ @ @ @ @ @ @ @ @ @ @ @ # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ # + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @ @ # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # @ @ @ @ @ @ @ @ @ @@ +.#++@@@+++@ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ ",
- X" +@@@@@@@@@@@@@@@@@ ++@@@@@+.@ @@@@@@@@@@@@@@@@@@@@@ "};
- END_OF_FILE
- if test 35636 -ne `wc -c <'bitmaps/titleBig.xpm'`; then
- echo shar: \"'bitmaps/titleBig.xpm'\" unpacked with wrong size!
- fi
- # end of 'bitmaps/titleBig.xpm'
- fi
- if test -f 'gun.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'gun.c'\"
- else
- echo shar: Extracting \"'gun.c'\" \(16090 characters\)
- sed "s/^X//" >'gun.c' <<'END_OF_FILE'
- X#include "copyright.h"
- X
- X/*
- X * Include file dependencies:
- X */
- X
- X#include <xpm.h>
- X#include <stdio.h>
- X#include <math.h>
- X#include <assert.h>
- X
- X#include "bitmaps/bullet.xpm"
- X#include "bitmaps/tink.xpm"
- X
- X#include "error.h"
- X#include "audio.h"
- X#include "score.h"
- X#include "init.h"
- X#include "main.h"
- X#include "stage.h"
- X#include "blocks.h"
- X#include "paddle.h"
- X#include "misc.h"
- X#include "level.h"
- X#include "ball.h"
- X#include "special.h"
- X
- X#include "gun.h"
- X
- X/*
- X * Internal macro definitions:
- X */
- X
- X#define BULLET_DY -10
- X
- X#define BULLET_WIDTH 7
- X#define BULLET_HEIGHT 16
- X
- X#define BULLET_START_Y (PLAY_HEIGHT - 40)
- X
- X#define BULLET_WC (BULLET_WIDTH / 2)
- X#define BULLET_HC (BULLET_HEIGHT / 2)
- X
- X#define TINK_WIDTH 10
- X#define TINK_HEIGHT 5
- X
- X#define TINK_WC (TINK_WIDTH / 2)
- X#define TINK_HC (TINK_HEIGHT / 2)
- X
- X#define X2COL(col, x) (col = x / colWidth)
- X#define Y2ROW(row, y) (row = y / rowHeight)
- X
- X#define BULLET_FRAME_RATE 5
- X
- X#define MAX_BULLETS 20
- X
- X/* Should be the same */
- X#define MAX_MOVING_BULLETS 10
- X#define MAX_TINKS 10
- X
- X#define TINK_DELAY 100
- X
- X/*
- X * Internal type declarations:
- X */
- X
- X#if NeedFunctionPrototypes
- Xstatic int ResetBulletStart(Display *display, Window window);
- Xstatic void CheckTinks(Display *display, Window window);
- Xstatic void AddTink(Display *display, Window window, int xpos);
- Xstatic void ClearTinks(void);
- Xstatic void UpdateBullet(Display *display, Window window);
- Xstatic int StartABullet(Display *display, Window window, int xpos);
- Xstatic void ClearBullet(int i);
- Xstatic void DrawTheTink(Display *display, Window window, int x, int y);
- Xstatic void EraseTheTink(Display *display, Window window, int x, int y);
- Xstatic void DrawBullet(Display *display, Window window, int i);
- Xstatic int CheckForBulletCollision(Display *display, Window window,
- X int x, int y);
- Xstatic int CheckBallBulletCollision(Display *display, Window window,
- X int bx, int by, int j);
- X#else
- Xstatic int ResetBulletStart();
- Xstatic void CheckTinks();
- Xstatic void AddTink();
- Xstatic void ClearTinks();
- Xstatic void UpdateBullet();
- Xstatic int StartABullet();
- Xstatic void ClearBullet();
- Xstatic void DrawTheTink();
- Xstatic void EraseTheTink();
- Xstatic void DrawBullet();
- Xstatic int CheckForBulletCollision();
- Xstatic int CheckBallBulletCollision();
- X#endif
- X
- Xstatic struct
- X{
- X int xpos; /* x position of tink centre */
- X int clearFrame; /* Last frame to clear it */
- X} tinks[MAX_TINKS];
- X
- Xstatic struct
- X{
- X int xpos; /* x position of bullet */
- X int ypos; /* y position of bullet */
- X int oldypos; /* previous y position */
- X int dy; /* Change in y positoon */
- X} bullets[MAX_MOVING_BULLETS];
- X
- X/*
- X * Internal variable declarations:
- X */
- X
- Xstatic Pixmap bulletPixmap, bulletMask;
- Xstatic Pixmap tinkPixmap, tinkMask;
- Xstatic int numBullets;
- X
- X#if NeedFunctionPrototypes
- Xvoid InitialiseBullet(Display *display, Window window, Colormap colormap)
- X#else
- Xvoid InitialiseBullet(display, window, colormap)
- X Display *display;
- X Window window;
- X Colormap colormap;
- X#endif
- X{
- X XpmAttributes attributes;
- X int XpmErrorStatus;
- X
- X attributes.valuemask = XpmColormap;
- X attributes.colormap = colormap;
- X
- X /* Create the xpm pixmap bullet */
- X XpmErrorStatus = XpmCreatePixmapFromData(display, window, bullet_xpm,
- X &bulletPixmap, &bulletMask, &attributes);
- X HandleXPMError(display, XpmErrorStatus, "InitialiseBullet(bullet)");
- X
- X /* Create the xpm pixmap tink for bullet */
- X XpmErrorStatus = XpmCreatePixmapFromData(display, window, tink_xpm,
- X &tinkPixmap, &tinkMask, &attributes);
- X HandleXPMError(display, XpmErrorStatus, "InitialiseBullet(tink)");
- X
- X /* Free the xpm pixmap attributes */
- X XpmFreeAttributes(&attributes);
- X
- X SetNumberBullets(4);
- X ClearTinks();
- X ClearBullets();
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void CheckTinks(Display *display, Window window)
- X#else
- Xstatic void CheckTinks(display, window)
- X Display *display;
- X Window window;
- X#endif
- X{
- X int i;
- X
- X /* Clear and tinks that need to be cleared */
- X for (i = 0; i < MAX_TINKS; i++)
- X {
- X /* Is this tink active */
- X if (tinks[i].xpos != -1)
- X {
- X /* Time to clear tink? */
- X if (frame >= tinks[i].clearFrame)
- X {
- X /* Clear the tink! */
- X EraseTheTink(display, window, tinks[i].xpos, 2);
- X
- X /* Free the tink up for another */
- X tinks[i].xpos = -1;
- X tinks[i].clearFrame = 0;
- X }
- X }
- X }
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void AddTink(Display *display, Window window, int xpos)
- X#else
- Xstatic void AddTink(display, window, xpos)
- X Display *display;
- X Window window;
- X int xpos;
- X#endif
- X{
- X int i;
- X
- X /* Cycle through tinks and try to add one */
- X for (i = 0; i < MAX_TINKS; i++)
- X {
- X /* Is this tink free? */
- X if (tinks[i].xpos == -1)
- X {
- X /* Set the tink array position */
- X tinks[i].xpos = xpos;
- X tinks[i].clearFrame = frame + TINK_DELAY;
- X
- X /* Draw the new found tink! */
- X DrawTheTink(display, window, xpos, 2);
- X
- X return;
- X }
- X }
- X
- X /* Full tink array - lots of shooting? */
- X ErrorMessage("Warning: Cannot draw tink - tink array full.");
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void ClearTinks(void)
- X#else
- Xstatic void ClearTinks()
- X#endif
- X{
- X int i;
- X
- X /* Initialise tinks array to empty */
- X for (i = 0; i < MAX_TINKS; i++)
- X {
- X tinks[i].xpos = -1;
- X tinks[i].clearFrame = 0;
- X }
- X}
- X
- X
- X#if NeedFunctionPrototypes
- Xstatic void UpdateBullet(Display *display, Window window)
- X#else
- Xstatic void UpdateBullet(display, window)
- X Display *display;
- X Window window;
- X#endif
- X{
- X int i, j;
- X int row, col;
- X int ballX, ballY;
- X struct aBlock *blockP;
- X
- X /* Obtain the position of the ball */
- X GetBallPosition(&ballX, &ballY, 0);
- X
- X /* Draw all bullets that need updating */
- X for (i = 0; i < MAX_MOVING_BULLETS; i++)
- X {
- X /* Is this bullet active */
- X if (bullets[i].xpos != -1)
- X {
- X /* Update bullet position using dy value */
- X bullets[i].ypos = bullets[i].oldypos + bullets[i].dy;
- X
- X /* Has the bullet gone off the top edge */
- X if (bullets[i].ypos < -BULLET_HC)
- X {
- X /* Clear the bullet from the screen */
- X EraseTheBullet(display, window,
- X bullets[i].xpos, bullets[i].oldypos);
- X
- X /* Draw a tink on the top edge */
- X AddTink(display, window, bullets[i].xpos);
- X
- X /* Free the bullet up for another */
- X ClearBullet(i);
- X
- X continue;
- X }
- X
- X if (mode == MODE_GAME)
- X {
- X for (j = 0; j < MAX_BALLS; j++)
- X {
- X if (balls[j].active == True)
- X {
- X /* Has the bullet killed the ball */
- X if (CheckBallBulletCollision(display, window,
- X bullets[i].xpos, bullets[i].ypos, j))
- X {
- X /* Clear the bullet from the screen */
- X EraseTheBullet(display, window,
- X bullets[i].xpos, bullets[i].oldypos);
- X ClearBullet(i);
- X
- X /* Kill the ball off */
- X ClearBallNow(display, window, j);
- X
- X /* Play the lovel ahhh pop sound for ball shot */
- X if (noSound == False) playSoundFile("ballshot", 50);
- X break;
- X }
- X }
- X }
- X }
- X
- X /* Convert the new bullet pos to rows and cols for collision */
- X X2COL(col, bullets[i].xpos);
- X Y2ROW(row, bullets[i].ypos);
- X
- X /* Pointer to the correct block we need - speed things up */
- X blockP = &blocks[row][col];
- X
- X /* Check if the bullet has hit a brick or something */
- X if (CheckForBulletCollision(display, window,
- X bullets[i].xpos, bullets[i].ypos) == True)
- X {
- X /* Clear the bullet from the screen */
- X EraseTheBullet(display, window,
- X bullets[i].xpos, bullets[i].oldypos);
- X
- X /* Switch on the type of block hit */
- X switch (blockP->blockType)
- X {
- X case COUNTER_BLK:
- X if (blockP->counterSlide == 0)
- X {
- X /* Counter has counted down to 0 so kill off */
- X DrawBlock(display, window, row, col, KILL_BLK);
- X }
- X else
- X {
- X /* Decrement counter block and draw new one */
- X blockP->counterSlide--;
- X DrawBlock(display, window, row, col,
- X COUNTER_BLK);
- X }
- X break;
- X
- X case HYPERSPACE_BLK:
- X DrawBlock(display, window, row, col, HYPERSPACE_BLK);
- X break;
- X
- X case BLACK_BLK:
- X DrawBlock(display, window, row, col, BLACK_BLK);
- X break;
- X
- X case REVERSE_BLK:
- X case MGUN_BLK:
- X case STICKY_BLK:
- X case WALLOFF_BLK:
- X case MULTIBALL_BLK:
- X case DEATH_BLK:
- X /* Shoot the block times to kill it */
- X blockP->counterSlide--;
- X
- X if (blockP->counterSlide == 0)
- X {
- X /* Ok then a hit, explode that block */
- X DrawBlock(display, window, row, col, KILL_BLK);
- X }
- X else if (noSound == False)
- X playSoundFile("shootdeath", 70);
- X break;
- X
- X default:
- X /* Ok then a hit, explode that block */
- X DrawBlock(display, window, row, col, KILL_BLK);
- X break;
- X }
- X
- X /* Free the bullet up for another */
- X ClearBullet(i);
- X }
- X else
- X DrawBullet(display, window, i);
- X
- X /* Keep track of old position */
- X bullets[i].oldypos = bullets[i].ypos;
- X
- X } /* Bullet active? */
- X } /* For loop */
- X}
- X
- X
- X#if NeedFunctionPrototypes
- Xstatic int StartABullet(Display *display, Window window, int xpos)
- X#else
- Xstatic int StartABullet(display, window, xpos)
- X Display *display;
- X Window window;
- X int xpos;
- X#endif
- X{
- X int i;
- X
- X /* Cycle through bullets and try to add one */
- X for (i = 0; i < MAX_MOVING_BULLETS; i++)
- X {
- X /* Is this bullet free? */
- X if (bullets[i].xpos == -1)
- X {
- X /* Set the bullet array position */
- X bullets[i].xpos = xpos;
- X
- X /* Get out of here */
- X return True;
- X }
- X
- X /* Break out as the machine gun is not active */
- X if (fastGun == False) return False;
- X }
- X
- X /* Full moving bullet array - lots of shooting? */
- X ErrorMessage("Warning: Cannot draw bullet - bullet array full.");
- X
- X return False;
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void ClearBullet(int i)
- X#else
- Xstatic void ClearBullet(i)
- X int i;
- X#endif
- X{
- X /* Setup the bullet entry */
- X bullets[i].xpos = -1;
- X bullets[i].ypos = BULLET_START_Y;
- X bullets[i].oldypos = BULLET_START_Y;
- X bullets[i].dy = BULLET_DY;
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid ClearBullets(void)
- X#else
- Xvoid ClearBullets()
- X#endif
- X{
- X int i;
- X
- X /* Initialise bullets array to empty */
- X for (i = 0; i < MAX_MOVING_BULLETS; i++)
- X ClearBullet(i);
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid FreeBullet(Display *display)
- X#else
- Xvoid FreeBullet(display)
- X Display *display;
- X#endif
- X{
- X if (bulletPixmap) XFreePixmap(display, bulletPixmap);
- X if (bulletMask) XFreePixmap(display, bulletMask);
- X
- X if (tinkPixmap) XFreePixmap(display, tinkPixmap);
- X if (tinkMask) XFreePixmap(display, tinkMask);
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid SetNumberBullets(int num)
- X#else
- Xvoid SetNumberBullets(num)
- X int num;
- X#endif
- X{
- X /* Set the number of bullets available */
- X numBullets = num;
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid IncNumberBullets(void)
- X#else
- Xvoid IncNumberBullets()
- X#endif
- X{
- X /* Increment the number of bullets */
- X numBullets++;
- X
- X /* But don't give to many */
- X if (numBullets > MAX_BULLETS)
- X numBullets = MAX_BULLETS;
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid DecNumberBullets(void)
- X#else
- Xvoid DecNumberBullets()
- X#endif
- X{
- X /* Decrement the number of bullets */
- X numBullets--;
- X
- X /* But not to far */
- X if (numBullets < 0)
- X numBullets = 0;
- X}
- X
- X#if NeedFunctionPrototypes
- Xint GetNumberBullets(void)
- X#else
- Xint GetNumberBullets()
- X#endif
- X{
- X assert(numBullets >= 0);
- X
- X /* How many bullets do I have */
- X return numBullets;
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid shootBullet(Display *display, Window window)
- X#else
- Xvoid shootBullet(display, window)
- X Display *display;
- X Window window;
- X#endif
- X{
- X /* Only shoot if no bullet is active and bullets and ball active */
- X if ((GetNumberBullets() > 0) && (IsBallWaiting() == False))
- X {
- X /* Reset the bullet to the starting possy to go forward */
- X if (ResetBulletStart(display, window) == True)
- X {
- X /* Remove a bullet from the ammunition */
- X DeleteABullet(display);
- X
- X /* Play a shooting sound */
- X if (noSound == False)
- X playSoundFile("shoot", 50);
- X }
- X }
- X else if (GetNumberBullets() == 0)
- X {
- X /* Play an trigger clicking sound */
- X if (noSound == False)
- X playSoundFile("click", 100);
- X }
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid EraseTheBullet(Display *display, Window window, int x, int y)
- X#else
- Xvoid EraseTheBullet(display, window, x, y)
- X Display *display;
- X Window window;
- X int x;
- X int y;
- X#endif
- X{
- X /* Erase the bullet pixmap from the window */
- X XClearArea(display, window, x - BULLET_WC, y - BULLET_HC,
- X BULLET_WIDTH, BULLET_HEIGHT, False);
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void DrawTheTink(Display *display, Window window, int x, int y)
- X#else
- Xstatic void DrawTheTink(display, window, x, y)
- X Display *display;
- X Window window;
- X int x;
- X int y;
- X#endif
- X{
- X /* Draw the tink pixmap into the window */
- X RenderShape(display, window, tinkPixmap, tinkMask,
- X x - TINK_WC, y - TINK_HC, TINK_WIDTH, TINK_HEIGHT, False);
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void EraseTheTink(Display *display, Window window, int x, int y)
- X#else
- Xstatic void EraseTheTink(display, window, x, y)
- X Display *display;
- X Window window;
- X int x;
- X int y;
- X#endif
- X{
- X /* Erase the tink pixmap from the window */
- X XClearArea(display, window, x - TINK_WC, y - TINK_HC,
- X TINK_WIDTH, TINK_HEIGHT, False);
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid DrawTheBullet(Display *display, Window window, int x, int y)
- X#else
- Xvoid DrawTheBullet(display, window, x, y)
- X Display *display;
- X Window window;
- X int x;
- X int y;
- X#endif
- X{
- X /* Draw the bullet pixmap into the window */
- X RenderShape(display, window, bulletPixmap, bulletMask,
- X x - BULLET_WC, y - BULLET_HC, BULLET_WIDTH, BULLET_HEIGHT, False);
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic void DrawBullet(Display *display, Window window, int i)
- X#else
- Xstatic void DrawBullet(display, window, i)
- X Display *display;
- X Window window;
- X int i;
- X#endif
- X{
- X /* Clear the window of the bullet in the old position */
- X XClearArea(display, window, bullets[i].xpos - BULLET_WC,
- X bullets[i].oldypos - BULLET_HC, BULLET_WIDTH, BULLET_HEIGHT, False);
- X
- X /* Now draw the new bullet in the new position */
- X DrawTheBullet(display, window, bullets[i].xpos, bullets[i].ypos);
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic int CheckBallBulletCollision(Display *display, Window window,
- X int bx, int by, int j)
- X#else
- Xstatic int CheckBallBulletCollision(display, window, bx, by, j)
- X Display *display;
- X Window window;
- X int bx;
- X int by;
- X int j;
- X#endif
- X{
- X int ballX, ballY;
- X
- X GetBallPosition(&ballX, &ballY, j);
- X
- X /* Check if any part of the bullets coords is inside the balls box */
- X if (((bx + BULLET_WC) >= (ballX - BALL_WC)) &&
- X ((bx - BULLET_WC) <= (ballX + BALL_WC)) &&
- X ((by + BULLET_HC) >= (ballY - BALL_HC)) &&
- X ((by - BULLET_HC) <= (ballY + BALL_HC)))
- X return True;
- X else
- X return False;
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic int CheckForBulletCollision(Display *display, Window window,
- X int x, int y)
- X#else
- Xstatic int CheckForBulletCollision(display, window, x, y)
- X Display *display;
- X Window window;
- X int x;
- X int y;
- X#endif
- X{
- X /* Check for bullet to block collision */
- X int row, col;
- X struct aBlock *blockP;
- X
- X /* Get the row and col for block where bullet is */
- X X2COL(col, x);
- X Y2ROW(row, y);
- X
- X blockP = &blocks[row][col];
- X
- X /* If blocks is occupied then check for collision */
- X if (blockP->occupied == 1 && blockP->exploding == False)
- X {
- X /* Check if x adjusted for bullet width is in block region */
- X if (((x + BULLET_WC) > blockP->x) &&
- X ((x - BULLET_WC) < (blockP->x + blockP->width)))
- X {
- X if (((y + BULLET_HC) > blockP->y) &&
- X ((y - BULLET_HC) < (blockP->y + blockP->height)))
- X {
- X /* Collision */
- X return True;
- X }
- X }
- X }
- X
- X /* No collision if reached here */
- X return False;
- X}
- X
- X#if NeedFunctionPrototypes
- Xstatic int ResetBulletStart(Display *display, Window window)
- X#else
- Xstatic int ResetBulletStart(display, window)
- X Display *display;
- X Window window;
- X#endif
- X{
- X /* Start a bullet on the way if possible */
- X return StartABullet(display, window, paddlePos);
- X}
- X
- X#if NeedFunctionPrototypes
- Xvoid HandleBulletMode(Display *display, Window window)
- X#else
- Xvoid HandleBulletMode(display, window)
- X Display *display;
- X Window window;
- X#endif
- X{
- X /* Update all the bullets that may be moving */
- X if ((frame % BULLET_FRAME_RATE) == 0)
- X UpdateBullet(display, window);
- X
- X /* Clear any tinks that are due to be cleared */
- X CheckTinks(display, window);
- X}
- X
- END_OF_FILE
- if test 16090 -ne `wc -c <'gun.c'`; then
- echo shar: \"'gun.c'\" unpacked with wrong size!
- fi
- # end of 'gun.c'
- fi
- echo shar: End of archive 4 \(of 26\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 26 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- echo "merging split files..."
- cat blocks.c[12] > blocks.c
- rm blocks.c[12]
- echo "blocks.c done"
- cat bitmaps/earth.xpm.Z.u.[ab] > bitmaps/earth.xpm.Z.uue
- rm bitmaps/earth.xpm.Z.u.[ab]
- echo "bitmaps/earth.xpm.Z.uue done"
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
- --
- // chris@Sterling.COM | Send comp.sources.x submissions to:
- \X/ Amiga - The only way to fly! | sources-x@sterling.com
- "It's intuitively obvious to the |
- most casual observer..." | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
-