Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
games
hextris
hextris.dif
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File hextris.dif of Package hextris
--- Makefile.Linux +++ Makefile.Linux 2008-01-10 12:26:28.138139132 +0100 @@ -0,0 +1,49 @@ +# +# +# +# Makefile.Linux to integrate package into source tree of S.u.S.E.-Linux. +# +# Copyright (c) 1995 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved. +# +# + +ScoreDir = /var/games +SCORE = $(DESTDIR)$(ScoreDir) +FONT = $(DESTDIR)$(FONTDIR)/misc +MANPRE = $(DESTDIR)$(MANDIR)/man1 + +compile: + @chmod -R +r * + @chmod +x cxhextris xhextris + make compile -f Makefile.Linux -C cxhextris FONTDIR=$(FONTDIR) ScoreDir=$(ScoreDir) + make compile -f Makefile.Linux -C xhextris FONTDIR=$(FONTDIR) ScoreDir=$(ScoreDir) + bdftopcf < xhextris.bdf | gzip -9cf > xhextris.pcf.gz + ( cd cxhextris ; \ + gzip -c -9 xhextris.man > xhextris.1.gz ) + + +install: install.man + mkdir -p -m 0755 $(SCORE) + chmod 0755 $(SCORE) + touch $(SCORE)/cxhextris-scores + touch $(SCORE)/xhextris-scores + chmod 0666 $(SCORE)/cxhextris-scores + chmod 0666 $(SCORE)/xhextris-scores + mkdir -p -m 0755 $(FONT) + install -c -m 0444 xhextris.pcf.gz $(FONT)/xhextris.pcf.gz + make install -f Makefile.Linux DESTDIR=$(DESTDIR) FONTDIR=$(FONTDIR) -C cxhextris + make install -f Makefile.Linux DESTDIR=$(DESTDIR) FONTDIR=$(FONTDIR) -C xhextris + +install.man: + ( cd cxhextris ; \ + mkdir -p -m 0755 $(MANPRE) ; \ + install -c -m 0444 xhextris.1.gz $(MANPRE)/xhextris.1.gz ) + ( cd $(MANPRE) ; \ + ln -sf xhextris.1.gz cxhextris.1.gz ) + +clean: + make clean -f Makefile.Linux -C cxhextris + make clean -f Makefile.Linux -C xhextris + rm -rf cxhextris/xhextris.1.gz + rm -rf xhextris.pcf.Z + --- xhextris.bdf +++ xhextris.bdf 2000-03-02 18:22:20.000000000 +0100 @@ -0,0 +1,1608 @@ +STARTFONT 2.1 +COMMENT Created by fdbbdf +FONT xhextris +SIZE 10 78 78 +FONTBOUNDINGBOX 37 27 0 -27 +STARTPROPERTIES 4 +Ownership " Created by Jon Slenk for Hextris by David Markley (c) 1990, Created by Khun Yee Fung " +FONT_ASCENT 0 +FONT_DESCENT 27 +DEFAULT_CHAR 0 +ENDPROPERTIES +CHARS 59 +STARTCHAR ch-0 +ENCODING -1 0 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 9 11 0 -11 +BITMAP +f000 +d800 +d800 +db00 +f300 +0000 +f800 +1800 +1800 +db00 +fb00 +ENDCHAR +STARTCHAR ch-1 +ENCODING -1 1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-2 +ENCODING -1 2 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-3 +ENCODING -1 3 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-4 +ENCODING -1 4 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-5 +ENCODING -1 5 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-6 +ENCODING -1 6 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-7 +ENCODING -1 7 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR & +ENCODING -1 38 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 37 18 0 -18 +BITMAP +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +000000000000 +ENDCHAR +STARTCHAR ' +ENCODING -1 39 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +7fffc000 +7fffc000 +7c000000 +7df7c000 +7dc7c000 +7dc7c000 +7dc7c000 +7dc7c000 +7dc7c000 +7dc7c000 +7df7c000 +7c07c000 +7fffc000 +7fffc000 +00000000 +00000000 +ENDCHAR +STARTCHAR ( +ENCODING -1 40 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +003e0000 +003e0000 +003e0000 +003e0000 +fffe0000 +fffe0000 +e0000000 +e0000000 +e0000000 +e0000000 +fffe0000 +fffe0000 +00000000 +00000000 +ENDCHAR +STARTCHAR ) +ENCODING -1 41 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +7ff00000 +7ff00000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +7ff00000 +7ff00000 +00000000 +00000000 +ENDCHAR +STARTCHAR * +ENCODING -1 42 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +fffe0000 +fffe0000 +1f3e0000 +3e3e0000 +7c3e0000 +f83e0000 +f03e0000 +e03e0000 +00000000 +00000000 +ENDCHAR +STARTCHAR + +ENCODING -1 43 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +00000000 +00000000 +ENDCHAR +STARTCHAR , +ENCODING -1 44 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +fffe0000 +fffe0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +00000000 +00000000 +ENDCHAR +STARTCHAR - +ENCODING -1 45 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +003e0000 +003e0000 +003e0000 +003e0000 +0ffe0000 +0ffe0000 +003e0000 +003e0000 +003e0000 +003e0000 +fffe0000 +fffe0000 +00000000 +00000000 +ENDCHAR +STARTCHAR . +ENCODING -1 46 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +7c00c000 +3e018000 +1f030000 +0f860000 +07cc0000 +03d80000 +01b00000 +01b00000 +03780000 +067c0000 +0c3e0000 +181f0000 +300f8000 +6007c000 +00000000 +00000000 +ENDCHAR +STARTCHAR / +ENCODING -1 47 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +eaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +aaaac000 +d5554000 +eaaac000 +7fff8000 +ENDCHAR +STARTCHAR 0 +ENCODING -1 48 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +81e04000 +87f84000 +87384000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +87384000 +87f84000 +81e04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 1 +ENCODING -1 49 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +80e04000 +81e04000 +83e04000 +83e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +81e04000 +83f04000 +83f04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 2 +ENCODING -1 50 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +83f04000 +87f84000 +8f3c4000 +8f3c4000 +803c4000 +803c4000 +803c4000 +80784000 +80f84000 +81f04000 +83e04000 +83c04000 +87804000 +87804000 +8f004000 +8f004000 +8f004000 +8f004000 +8f004000 +8ffc4000 +8ffc4000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 3 +ENCODING -1 51 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +8ffc4000 +8ffc4000 +8f3c4000 +8f3c4000 +80784000 +80f04000 +81e04000 +83e04000 +83f04000 +81f84000 +80784000 +807c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +8f384000 +8f384000 +8ff04000 +83e04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 4 +ENCODING -1 52 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +807c4000 +80fc4000 +81fc4000 +83fc4000 +87bc4000 +8f3c4000 +9e3c4000 +9ffe4000 +9ffe4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 5 +ENCODING -1 53 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +8ffc4000 +8ffc4000 +8f3c4000 +8f3c4000 +8f004000 +8f004000 +8fe04000 +8ff84000 +80f84000 +807c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +803c4000 +8f3c4000 +8f784000 +8ff84000 +83e04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 6 +ENCODING -1 54 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +81e04000 +87f84000 +87384000 +8f3c4000 +8f3c4000 +8f004000 +8f004000 +8f004000 +8fe04000 +8ff84000 +8f384000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +87384000 +87f84000 +81e04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 7 +ENCODING -1 55 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +9ffe4000 +9ffe4000 +801e4000 +801e4000 +803c4000 +80784000 +80f04000 +80f04000 +81e04000 +81e04000 +81e04000 +83c04000 +83c04000 +83c04000 +83c04000 +83c04000 +83c04000 +83c04000 +83c04000 +83c04000 +83c04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 8 +ENCODING -1 56 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +81e04000 +87f84000 +87384000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +87384000 +87f84000 +83f04000 +87384000 +87384000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +87384000 +87f84000 +81e04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR 9 +ENCODING -1 57 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +7fff8000 +80004000 +80004000 +81e04000 +87f84000 +87384000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +8f3c4000 +87fc4000 +87fc4000 +81fc4000 +803c4000 +803c4000 +803c4000 +8f3c4000 +8f3c4000 +87384000 +87f84000 +81e04000 +80004000 +80004000 +7fff8000 +ENDCHAR +STARTCHAR : +ENCODING -1 58 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +00000000 +00000000 +00000000 +01c00000 +02200000 +04300000 +3aee0000 +45d10000 +86218000 +5c170000 +380e0000 +00000000 +380e0000 +44110000 +86218000 +5c170000 +380e0000 +00000000 +380e0000 +44110000 +86218000 +5dd70000 +3a2e0000 +04300000 +02e00000 +01c00000 +00000000 +ENDCHAR +STARTCHAR ; +ENCODING -1 59 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 18 27 0 -27 +BITMAP +04300000 +3aee0000 +45d10000 +86218000 +5c170000 +380e0000 +00000000 +000e0000 +00110000 +00218000 +01d70000 +022e0000 +04300000 +02ee0000 +01d10000 +00218000 +00170000 +000e0000 +00000000 +380e0000 +44110000 +86218000 +5dd70000 +3a2e0000 +04300000 +02e00000 +01c00000 +ENDCHAR +STARTCHAR a +ENCODING -1 97 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +03fff000 +07fff800 +07fff800 +0ffffc00 +0ffffc00 +1ffffe00 +1ffffe00 +3fffff00 +3fffff00 +7fffff80 +7fffff80 +ffffffc0 +ffffffc0 +7fffff80 +7fffff80 +3fffff00 +3fffff00 +1ffffe00 +1ffffe00 +0ffffc00 +0ffffc00 +07fff800 +07fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR b +ENCODING -1 98 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +04003800 +04fff800 +09557c00 +09aabc00 +13555e00 +12aabe00 +25555f00 +26aaaf00 +4d555780 +4aaaaf80 +955557c0 +9aaaabc0 +4d555780 +4aaaaf80 +25555f00 +26aaaf00 +13555e00 +12aabe00 +09557c00 +09aabc00 +04fff800 +05fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR c +ENCODING -1 99 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +04003800 +04aab800 +09fffc00 +08fffc00 +13ff8e00 +11c09e00 +27804700 +23804f00 +4f002380 +47002780 +8e0013c0 +9e0011c0 +4f002780 +4f002380 +27804f00 +27804700 +13c09e00 +13ff8e00 +09803c00 +09001c00 +04aab800 +05fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR d +ENCODING -1 100 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +04003800 +04fff800 +09fffc00 +09fffc00 +137ffe00 +13ff7e00 +27ebff00 +26d5ff00 +4f62df80 +4fd17780 +9aa4efc0 +94017fc0 +4850bf80 +49045780 +24012f00 +24205f00 +12003e00 +12011e00 +09083c00 +09003c00 +04fff800 +05fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR e +ENCODING -1 101 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +04003800 +04fff800 +09aabc00 +09557c00 +12aabe00 +137d5e00 +26bfef00 +257bbf00 +4ae1ef80 +4fc0d780 +9ac0ebc0 +95e0d7c0 +4ac07f80 +4de1d780 +2577af00 +26bf5f00 +1355be00 +129b5e00 +09aabc00 +09557c00 +04fff800 +05fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR f +ENCODING -1 102 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +04003800 +04fff800 +09003c00 +09203c00 +12081e00 +12821e00 +24208f00 +26082f00 +4c820f80 +49208780 +904823c0 +94120bc0 +49048780 +4a412780 +24904f00 +25241f00 +12491e00 +12925e00 +0924bc00 +09493c00 +04fff800 +05fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR g +ENCODING -1 103 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +06555800 +04fff800 +0dfffc00 +09d57c00 +1beefe00 +13eefe00 +37555f00 +275f5f00 +6fbbbf80 +4fbbbf80 +dd5f57c0 +dfd577c0 +4eeeef80 +6eeeef80 +27d57f00 +375f5f00 +13bbbe00 +1bbbbe00 +09df7c00 +0dd57c00 +04fff800 +07fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR h +ENCODING -1 104 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +03fff000 +07ffe800 +07fff800 +0f002c00 +0f203400 +1f401a00 +1e879600 +3d4d8900 +3e9bcb00 +7904c480 +7c416580 +faa8e240 +f5187240 +7a70bc80 +7dd85c80 +3fac2b00 +3f051900 +1ea29200 +1f411200 +0faa2c00 +0f542400 +07ffc800 +07510800 +02a41000 +03fff000 +ENDCHAR +STARTCHAR i +ENCODING -1 105 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02215000 +0404b800 +04ffd800 +09fffc00 +09ffb400 +13fede00 +13ff3e00 +27fd8f00 +27fe4f00 +4ffb0780 +4ffc8780 +9ff603c0 +9ff903c0 +4fec0780 +4ff20780 +27d80f00 +2fe40f00 +13b01e00 +17c81e00 +0be03c00 +0d903c00 +06fff800 +05bff800 +036ff000 +03fff000 +ENDCHAR +STARTCHAR j +ENCODING -1 106 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +02001000 +04003800 +04fff800 +09003c00 +09447c00 +12001e00 +12aabe00 +24222f00 +25555f00 +4aaaaf80 +4d75d780 +9fffffc0 +9fffffc0 +4d75d780 +4aaaaf80 +25555f00 +24888f00 +12aabe00 +12001e00 +09113c00 +09003c00 +04fff800 +05fff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR k +ENCODING -1 107 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +03fff000 +06003800 +06fff800 +0dfffc00 +0dfffc00 +1bfffe00 +1bfffe00 +37fffb00 +37ffff00 +6ffffd80 +6fffff80 +dffffec0 +dffffdc0 +6fffff80 +6ffffd80 +37fffb00 +37fff700 +1bfffe00 +1bfff600 +0dffec00 +0dffdc00 +06fff800 +07555800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR l +ENCODING -1 108 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +03501000 +07e2a800 +07604800 +0d7ca400 +0aaf5400 +1d41aa00 +13602600 +22cd5b00 +2daa2500 +4bd99380 +56a2f580 +ae65aac0 +94a345c0 +6215b380 +50ab1580 +235eeb00 +2df22700 +1208ca00 +15929600 +0aa92c00 +09435c00 +06bea800 +05557800 +03fef000 +03fff000 +ENDCHAR +STARTCHAR m +ENCODING -1 109 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 26 26 0 -26 +BITMAP +03fff000 +0376b000 +07dd7800 +07bab800 +0ffde000 +1ffb4400 +1ad75e00 +0f3eb600 +0375df00 +1ceb7700 +3ff5eb80 +7babff80 +bed7bbc0 +f72ff7c0 +6bd6eb80 +57edb780 +2adb0d00 +2d77c000 +1fbfc000 +15ff7000 +0faab000 +02f57000 +007ab800 +037ff800 +03fff000 +03fff000 +ENDCHAR +STARTCHAR p +ENCODING -1 112 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 9 11 0 -11 +BITMAP +f000 +d800 +d800 +db00 +f300 +0000 +f800 +1800 +1800 +db00 +fb00 +ENDCHAR +STARTCHAR q +ENCODING -1 113 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +fffe0000 +fffe0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +00000000 +00000000 +ENDCHAR +STARTCHAR r +ENCODING -1 114 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +003e0000 +003e0000 +003e0000 +003e0000 +0ffe0000 +0ffe0000 +003e0000 +003e0000 +003e0000 +003e0000 +fffe0000 +fffe0000 +00000000 +00000000 +ENDCHAR +STARTCHAR s +ENCODING -1 115 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +7c004000 +7e00c000 +3f018000 +1f830000 +0fc60000 +07cc0000 +03980000 +03380000 +067c0000 +0c7e0000 +183f0000 +301f8000 +600fc000 +4007c000 +00000000 +00000000 +ENDCHAR +STARTCHAR t +ENCODING -1 116 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +00000000 +00000000 +ENDCHAR +STARTCHAR u +ENCODING -1 117 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +e03e0000 +e03e0000 +e03e0000 +e03e0000 +fffe0000 +fffe0000 +1f3e0000 +3e3e0000 +7c3e0000 +f83e0000 +f03e0000 +e03e0000 +00000000 +00000000 +ENDCHAR +STARTCHAR v +ENCODING -1 118 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +7ff00000 +7ff00000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +0f800000 +7ff00000 +7ff00000 +00000000 +00000000 +ENDCHAR +STARTCHAR w +ENCODING -1 119 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 19 18 0 -18 +BITMAP +00000000 +00000000 +fffe0000 +fffe0000 +003e0000 +003e0000 +003e0000 +003e0000 +fffe0000 +fffe0000 +e0000000 +e0000000 +e0000000 +e0000000 +fffe0000 +fffe0000 +00000000 +00000000 +ENDCHAR +STARTCHAR x +ENCODING -1 120 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 9 11 0 -11 +BITMAP +f000 +d800 +d800 +db00 +f300 +0000 +f800 +1800 +1800 +db00 +fb00 +ENDCHAR +STARTCHAR y +ENCODING -1 121 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR z +ENCODING -1 122 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR { +ENCODING -1 123 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR | +ENCODING -1 124 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 20 20 0 -20 +BITMAP +000000 +0fff00 +0fff00 +1fff80 +1fff80 +3fffc0 +3fffc0 +7fffe0 +7fffe0 +fffff0 +fffff0 +7fffe0 +7fffe0 +3fffc0 +3fffc0 +1fff80 +1fff80 +0fff00 +0fff00 +000000 +ENDCHAR +STARTCHAR } +ENCODING -1 125 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 20 20 0 -20 +BITMAP +1fff80 +1fff80 +1fff80 +3fffc0 +3fffc0 +7fffe0 +7fffe0 +fffff0 +fffff0 +fffff0 +fffff0 +fffff0 +fffff0 +7fffe0 +7fffe0 +3fffc0 +3fffc0 +1fff80 +1fff80 +1fff80 +ENDCHAR +STARTCHAR ~ +ENCODING -1 126 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +STARTCHAR ch-127 +ENCODING -1 127 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 8 11 0 -11 +BITMAP +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +ENDCHAR +ENDFONT --- cxhextris/Imakefile +++ cxhextris/Imakefile 2008-01-10 11:11:53.026400071 +0100 @@ -1,19 +1,14 @@ - ScoreDir = $(LIBDIR) - ScoreFile = xhextris-scores + ScoreDir = /var/X11R6/scores + ScoreFile = cxhextris-scores DEFINES = -DHIGHSCOREFILE=\"$(ScoreDir)/$(ScoreFile)\" -DHEXFONTDIR=\"$(FONTDIR)/misc\" HEADERS = header.h SRCS = hextris.c xio.c stdsys.c OBJS = hextris.o xio.o stdsys.o LOCAL_LIBRARIES = $(XLIB) DEPLIBS = $(DEPXLIB) +EXTRA_LOAD_FLAGS = -ComplexProgramTarget(xhextris) +ComplexProgramTarget(cxhextris) -hex20.pcf: hex20.bdf - bdftopcf < hex20.bdf > hex20.pcf - -install.font: hex20.pcf - install -m 444 hex20.pcf $(FONTDIR)/misc - $(MKFONTDIR) $(FONTDIR)/misc - -InstallMultipleFlags($(ScoreFile),$(ScoreDir),-m 666) +install.man:: + gzip -9 $(DESTDIR)$(MANDIR)/cxhextris.$(MANSUFFIX) --- cxhextris/Makefile.Linux +++ cxhextris/Makefile.Linux 2008-01-10 11:12:18.697665914 +0100 @@ -0,0 +1,20 @@ +# +# +# +# Makefile.Linux to integrate package into source tree of S.u.S.E.-Linux. +# +# Copyright (c) 1995 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved. +# +# + + +compile: + xmkmf -a + make cxhextris FONTDIR=$(FONTDIR) + +install: + make install + +clean: + make clean + --- cxhextris/header.h +++ cxhextris/header.h 2008-01-10 12:14:02.767549684 +0100 @@ -21,9 +21,15 @@ * PERFORMANCE OF THIS SOFTWARE. */ +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/socket.h> + /* The maximum rows in the game. */ -#define MAXROW 26 +#define MAXROW 27 /* The maximum columns in the game. */ #define MAXCOLUMN 13 @@ -47,10 +53,10 @@ #define NUMBEROFPIECES 10 /* The name of the xhextris font. DON'T CHANGE!!! */ -#define HEXFONTNAME "hex20" +#define HEXFONTNAME "xhextris" /* The directory where the text font is. */ -#define FONTDIR "/usr/lib/X11/fonts/misc/" +#define FONTDIR "/usr/share/fonts/misc/" /* The text font being used. */ #define FONTNAME "-misc-fixed-bold-r-normal--13-120-75-75-c-80-iso8859-1" /*8x13B"*/ @@ -99,6 +105,7 @@ typedef struct high_score_s * hex that is up to its neighbors in its row, or down to them. One row in the * game moves up and down, from left to right. */ +#ifdef SHAPE_REQUIRED static int shape[NUMBEROFPIECES*6][16] = {{0,0,-1,0,1,-1,1,1,-1,0,0,-1,0,1,0,0}, /* 00 */ {0,0,0,-1,0,1,1,0,-1,-1,-1,1,1,0,0,0}, /* 01 */ @@ -160,6 +167,7 @@ static int shape[NUMBEROFPIECES*6][16] {1,0,0,0,0,1,-1,1,1,0,0,0,-1,1,-2,1}, /* 93 */ {1,1,0,0,-1,0,-1,-1,0,1,0,0,-1,0,-2,-1}, /* 94 */ {0,-2,0,-1,0,0,0,1,0,-2,-1,-1,0,0,-1,1}}; /* 95 */ +#endif #ifdef LOG #define LOGHOST "waddington.andrew.cmu.edu" @@ -167,3 +175,26 @@ char log_message[80]; #endif extern int score_cardinal; + +extern void init_piece(piece_t *, int); +extern void redraw_position(); +extern int update_drop(position_t [MAXROW][MAXCOLUMN], piece_t *, piece_t *, int *, int *); +extern int is_high_score(char [], char [], int, int, high_score_t []); +extern void do_choice(char *, position_t [MAXROW][MAXCOLUMN], piece_t *, piece_t *, int *, int *, int *, int *, high_score_t []); +extern void redraw_game(position_t [MAXROW][MAXCOLUMN], piece_t *, piece_t *, int *, int*, int, high_score_t []); +extern void itoa(int, char*); +extern void new_piece(piece_t*, piece_t*); +extern int read_high_scores(high_score_t []); +extern int write_high_scores(high_score_t [], char*); +extern void set_up_display(int); +extern void set_font_path(char*); +extern void TooSmall(); +extern void clear_display(); +extern void display_scores(int*, int*); +extern void display_help(); +extern void display_help_score(); +extern void display_high_scores(high_score_t []); +extern void show_next_piece(piece_t*); +extern void draw_hex(int, int, int, int); +extern void draw_pos(int column, int fill, int type); +extern void end_game(); --- cxhextris/hextris.c +++ cxhextris/hextris.c 2008-01-10 12:13:45.189318889 +0100 @@ -28,11 +28,13 @@ * functions in this file that call functions in the I/O handler. */ +#define SHAPE_REQUIRED #include "header.h" /* This places the piece on the board in its starting position. All the * hexes in the piece are displayed. */ +void init_piece(piece, upos) piece_t *piece; int upos; { @@ -50,6 +52,7 @@ piece_t *piece; int upos; } } +void redraw_position() { int i; @@ -65,6 +68,7 @@ redraw_position() * any hexes that will be covered. In this way, any piece that is already * covered, and will be covered, is not redrawn. */ +void place_piece(piece,tpiece,upos) piece_t *piece, *tpiece; int upos; { @@ -123,6 +127,7 @@ piece_t *piece, *tpiece; int upos; /* This checks to see if the proposed position of the piece (tpiece) will * legally fit in the grid. */ +int check_piece(tpiece,grid) piece_t *tpiece; position_t grid[MAXROW][MAXCOLUMN]; @@ -157,6 +162,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This drops the piece into the grid, in its final resting place. */ +void drop_piece(piece,grid) piece_t *piece; position_t grid[MAXROW][MAXCOLUMN]; @@ -175,6 +181,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This redraws the entire grid. */ +void redraw_grid(grid) position_t grid[MAXROW][MAXCOLUMN]; { @@ -189,6 +196,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This clears the current, normal row, and moves the rest of the * grid down. */ +void shift_redraw_grid(start_row,grid) int start_row; position_t grid[MAXROW][MAXCOLUMN]; @@ -217,6 +225,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This clears the current, offset row, and moves the rest of the * grid down. */ +void shift_offset_redraw_grid(start_row,grid) int start_row; position_t grid[MAXROW][MAXCOLUMN]; @@ -249,6 +258,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This checks for any cleared rows, be they normal or offset. */ +int check_rows(grid) position_t grid[MAXROW][MAXCOLUMN]; { @@ -292,6 +302,7 @@ position_t grid[MAXROW][MAXCOLUMN]; * 4 - Drop * 6 - Quit */ +int update(choice,grid,npiece,piece,score,rows) int choice; position_t grid[MAXROW][MAXCOLUMN]; @@ -376,6 +387,7 @@ int *score, *rows; /* This process the normal dropping caused by the passage of time. The io * handler calls this, when it is time to drop the piece. */ +int update_drop(grid,npiece,piece,score,rows) position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; @@ -412,6 +424,7 @@ int *score, *rows; /* This sets up things for a new game. */ +void new_game(grid,npiece,piece,score,rows) position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; @@ -433,6 +446,7 @@ int *score, *rows; /* This draws the borders of the game. */ +void draw_borders() { int i; @@ -451,6 +465,7 @@ draw_borders() * one of his own, the lowest of hist scores is removed, and the new one * is placed. */ +int is_high_score(name,userid,score,rows,high_scores) char name[MAXNAMELENGTH]; char userid[MAXUSERIDLENGTH]; @@ -504,6 +519,7 @@ high_score_t high_scores[MAXHIGHSCORES]; * key stroke into a choice. Notice: It also transfers the variable the * I/O handler supplies it. */ +void do_choice(choice,grid,npiece,piece,score,rows,game_over,game_view,high_scores) char *choice; position_t grid[MAXROW][MAXCOLUMN]; @@ -520,7 +536,7 @@ high_score_t high_scores[MAXHIGHSCORES]; if (! *game_over) update(1,grid,npiece,piece,score,rows); break; - case 'k': case 'K': case '5': + case 'k': case 'K': case '5': case '2': if (! *game_over) update(2,grid,npiece,piece,score,rows); break; @@ -576,20 +592,20 @@ high_score_t high_scores[MAXHIGHSCORES]; #ifdef LOG loguse(LOGHOST,"xhexlog",log_message); #endif - case '\024': - if (strcmp(choice, "\024[A") == 0) { + case '\027': + if (strcmp(choice, "\027OA") == 0) { if (! *game_over) update(3,grid,npiece,piece,score,rows); } - else if (strcmp(choice, "\024[B") == 0) { + else if (strcmp(choice, "\027OB") == 0) { if (! *game_over) update(0,grid,npiece,piece,score,rows); } - else if (strcmp(choice, "\024[C") == 0) { + else if (strcmp(choice, "\027OC") == 0) { if (! *game_over) update(1,grid,npiece,piece,score,rows); } - else if (strcmp(choice, "\024[D") == 0) { + else if (strcmp(choice, "\027OD") == 0) { if (! *game_over) update(2,grid,npiece,piece,score,rows); } @@ -599,6 +615,7 @@ high_score_t high_scores[MAXHIGHSCORES]; /* This redraws all the parts of the game through the I/O handler. */ +void redraw_game(grid,npiece,piece,score,rows,game_view,high_scores) position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; --- cxhextris/stdsys.c +++ cxhextris/stdsys.c 2008-01-10 11:44:37.727951415 +0100 @@ -32,6 +32,7 @@ * * This is a standard string reverse routine. */ +void reverse(s) char *s; { @@ -48,6 +49,7 @@ char *s; * * This is a standard integer to string converter. */ +void itoa(n,s) int n; char *s; @@ -69,6 +71,7 @@ char *s; /* This randomly selects the next piece. It also selects the current * piece, if it has not yet been set (rotation = -1). */ +void new_piece(npiece,piece) piece_t *npiece,*piece; { @@ -91,6 +94,7 @@ piece_t *npiece,*piece; /* This reads in the high score file. */ +int read_high_scores(high_scores) high_score_t high_scores[MAXHIGHSCORES]; { @@ -130,6 +134,7 @@ high_score_t high_scores[MAXHIGHSCORES]; /* This writes the high score file. */ +int write_high_scores(high_scores,uniqueid) high_score_t high_scores[MAXHIGHSCORES]; char *uniqueid; --- cxhextris/xhextris.man +++ cxhextris/xhextris.man 2000-03-02 18:22:20.000000000 +0100 @@ -1,13 +1,19 @@ .TH "XHEXTRIS" 1 "06 April 1993" .SH NAME -xhextris \- X Window hexagonal block dropping game +xhextris, cxhextris \- X Window hexagonal block dropping game .SH SYNOPSIS -.B xtetris +.B xhextris +[ +.B "X options" +], +.B cxhextris [ .B "X options" ] .SH DESCRIPTION .I Xhextris +or the colored version +.I cxhextris is a game involving dropping hexagonal blocks similar to xtetris. You can use the keyboard: j for moving to the left, l for moving to the right, k to rotate clockwise, i to rotate counter-clockwise and space --- cxhextris/xio.c +++ cxhextris/xio.c 2008-01-10 12:17:16.148090759 +0100 @@ -28,6 +28,7 @@ #include <strings.h> #include <X11/Xlib.h> #include <X11/Xutil.h> +#include <X11/keysym.h> #include <sys/types.h> #include <sys/dir.h> #include <sys/time.h> @@ -39,6 +40,10 @@ #include "header.h" +extern void set_up_window(int*, int*, XSizeHints*, char *[], int); +extern void get_GC(Window, GC*, XFontStruct*); +extern void load_font(XFontStruct**, char *); + /* Macros to make 4.2 BSD select compatible with 4.3 BSD select */ #ifndef FD_SET #define fd_set int @@ -65,7 +70,7 @@ extern int PlayerUID; /* This is the big, ugly main X procedure... */ -void main(argc, argv) +int main(argc, argv) int argc; char **argv; { @@ -187,7 +192,23 @@ char **argv; XBell(display,50); break; case KeyPress: - XLookupString(&report, buffer, bufsize, &key, &compose); + XLookupString(&(report.xkey), buffer, bufsize, &key, &compose); + switch (key) { + case XK_Left: + buffer[0] = '4'; + break; + case XK_Up: + buffer[0] = '8'; + break; + case XK_Right: + buffer[0] = '6'; + break; + case XK_Down: + buffer[0] = '2'; + break; + default: + break; + } oldscore = score; do_choice(buffer,grid,&npiece,&piece,&score,&rows, &game_over, &game_view, high_scores); @@ -203,16 +224,16 @@ char **argv; } } } + return 0; } /* This sets up the basic connections to the X server, the fonts, and * which colors are to be foreground and background. */ +void set_up_display(inverse) int inverse; { - Pixmap temp; - if ( (display = XOpenDisplay(NULL)) == NULL) { fprintf(stderr, "xhextris: cannot connect to X server.\n"); exit(-1); @@ -282,18 +303,25 @@ int inverse; /* This sets up the font path to contain the directories that have the * fonts this program needs. */ +void set_font_path(fontdir) char *fontdir; { int i, font_length; char **font_path = XGetFontPath(display, &font_length); - for (i = 0; (i < font_length) && strcmp(font_path[i],fontdir); i++); + for (i = 0; (i < font_length); i++) { + char *colon = strrchr(font_path[i], ':'); + if (colon) + *colon = '\0'; + if (strcmp(font_path[i],fontdir) == 0) + break; + } if (i >= font_length) { char **new_font_path; - if (new_font_path = (char **) malloc((font_length+1)*sizeof(char *))) { + if ((new_font_path = (char **) malloc((font_length+1)*sizeof(char *)))) { for(i = 0; i < font_length; i++) new_font_path[i] = font_path[i]; new_font_path[i] = fontdir; @@ -307,6 +335,7 @@ char *fontdir; /* This sets up the window position, size, fonts, and gcs. */ +void set_up_window(width,height,size_hints,argv,argc) int *width, *height; XSizeHints *size_hints; @@ -342,6 +371,7 @@ int argc; /* This sets up a gc */ +void get_GC(win, tgc, tfont_info) Window win; GC *tgc; @@ -367,6 +397,7 @@ XFontStruct *tfont_info; /* This loads a font */ +void load_font(tfont_info, font_name) XFontStruct **tfont_info; char *font_name; @@ -379,6 +410,7 @@ char *font_name; /* This yells if the window is too small. */ +void TooSmall() { char *string1 = "Too Small"; @@ -394,6 +426,7 @@ TooSmall() * * This clears the window. */ +void clear_display() { XClearWindow(display,win); @@ -403,6 +436,7 @@ clear_display() * * This displays the current score and rows completed. */ +void display_scores(score,rows) int *score, *rows; { @@ -425,6 +459,7 @@ int *score, *rows; * * This displays the help information. */ +void display_help() { int y_offset, x_offset, i; @@ -458,6 +493,7 @@ display_help() XFlush(display); } +void display_help_score() { int y_offset, x_offset, i; @@ -479,13 +515,14 @@ display_help_score() * * This displays the high score list. */ +void display_high_scores(high_scores) high_score_t high_scores[MAXHIGHSCORES]; { int y_offset, i; static int x_offset[5] = {5,30,150,200,300}; static char *header[] = {"#","Name","UID","Score","Rows"}; - char message[40]; + char message[40] = ""; XClearWindow(display,win); XSetFillStyle(display, gc, FillSolid); @@ -517,6 +554,7 @@ high_score_t high_scores[MAXHIGHSCORES]; * * This displays the next piece to be dropped. */ +void show_next_piece(npiece) piece_t *npiece; { @@ -535,6 +573,7 @@ piece_t *npiece; * * This draws one hex at the specified row and column specified. */ +void draw_hex(row,column,fill,type) int row,column,fill,type; { @@ -600,6 +639,7 @@ int row,column,fill,type; XFlush(display); } +void draw_pos(column,fill,type) int column,fill,type; { @@ -669,6 +709,7 @@ int column,fill,type; * * This ends the game by closing everything down and exiting. */ +void end_game() { XFreeGC (display, gc); --- xhextris/Imakefile +++ xhextris/Imakefile 2000-03-02 18:22:20.000000000 +0100 @@ -1,121 +1,24 @@ -# -# hextris Copyright 1990 David Markley, dm3e@+andrew.cmu.edu, dam@cs.cmu.edu -# -# Permission to use, copy, modify, and distribute, this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of the copyright holders be used in -# advertising or publicity pertaining to distribution of the software with -# specific, written prior permission, and that no fee is charged for further -# distribution of this software, or any modifications thereof. The copyright -# holder make no representations about the suitability of this software for -# any purpose. It is provided "as is" without express or implied warranty. -# -# THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -# EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR -# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -# DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -# PERFORMANCE OF THIS SOFTWARE. -# - -CC=cc -#ifdef AFS -INCLDS=-I/usr/andrew/include -I/usr/local/include -LIBS= -L/usr/contributed/lib -L/usr/local/lib -L/usr/andrew/lib -LOGGING = -lloguse -#ifdef GAMES -CFLAGS= -DAFS -DLOG -O -AUTHLIBS+{sun4_40}= /usr/local/lib/afs/libkauth.a \ - /usr/local/lib/libr.a /usr/local/lib/liblwp.a \ - /usr/local/lib/afs/libsys.a /usr/local/lib/libscrypt.a -AUTHLIBS+{mac2_51}= /usr/local/lib/afs/libkauth.a \ - /usr/local/lib/libr.a /usr/local/lib/liblwp.a \ - /usr/local/lib/afs/libsys.a /usr/local/lib/libscrypt.a -HEXFONTDIR=/afs/andrew/usr0/games/fonts/x11 -HIGHSCOREDIR=/afs/andrew/usr0/games/lib/xhextris -HIGHSCOREEXT=xhextris.scores -#else -CFLAGS= -DLOG -O -CFLAGS+{sun4_40}= -DLOG -Dsun4_40 -g -CFLAGS+{mac2_51}= -DLOG -Dmac2_51 -g -AUTHLIBS= -HEXFONTDIR=/afs/andrew/usr10/dm3e/.fonts/X11 -HIGHSCOREDIR=/afs/andrew/usr10/dm3e/stuff/games -HIGHSCOREEXT=xhextris.scores -BIN=/afs/andrew/usr10/dm3e/bin -SECURE=${BIN} -UNPRIV=${BIN} -#endif -#else -CFLAGS= -O -# Make sure INCLDS has the correct area(s) for the needed #includes -INCLDS= -I. -# Make sure LIBS has the correct area(s) for the needed libraries (-lX11). -LIBS= -L. -LOGGING= - -# Make sure to change these same three variables in header.h - -# Make this point to where you want the xhextris font placed. -HEXFONTDIR=./ -# Make this point to where you want the high score file placed. -# Remember: This directory must be writable be another user, if you -# plan on keeping a common high score file. -HIGHSCOREDIR=./ -# Make this the name of the high score file. -HIGHSCOREEXT=xhextris.scores - -# This is where you want the binaries to be placed. -# Don't bother with the SECURE and UNPRIV, unless you have a setup where -# the game has to switch tokens to write the high scores. Send me mail if you -# do. The games maintainers at CMU have a good setup for this. -BIN=/tmp -SECURE=${BIN} -UNPRIV=${BIN} -#endif -DEFS= -DHEXFONTDIR="\"${HEXFONTDIR}/\"" --DHIGHSCOREDIR="\"${HIGHSCOREDIR}/\"" \ - -DHIGHSCOREEXT="\"${HIGHSCOREEXT}\"" -.c.o: - ${CC} ${CFLAGS} ${DEFS} ${INCLDS} -c $*.c - -all: installx installtop - bdftosnf < hex10.bdf > ${HEXFONTDIR}/xhextris.snf - mkfontdir ${HEXFONTDIR} - echo "foo" > ${HIGHSCOREDIR}/${HIGHSCOREEXT} - -xhextris : stdsys.o xio.o hextris.o header.h - ${CC} ${CFLAGS} ${DEFS} -o xhextris stdsys.o xio.o hextris.o \ - ${INCLDS} ${AUTHLIBS} ${LIBS} -lX11 ${LOGGING} - -# This is only usefull if you use the Andrew Window Manager -wmhextris: stdsys.o wmio.o hextris.o header.h - ${CC} ${CFLAGS} ${DEFS} -o wmhextris stdsys.o wmio.o hextris.o \ - ${INCLDS} ${AUTHLIBS} ${LIBS} -lwm ${LOGGING} - -tophextris: stdsys.o tophextris.o header.h - ${CC} -O ${DEFS} ${INCLDS} -o tophextris stdsys.o tophextris.o \ - ${AUTHLIBS} ${LIBS} - -installx: xhextris - install -s xhextris ${SECURE}/xhextris - -# This is only usefull if you use the Andrew Window Manager -installwm: wmhextris - install -s wmhextris ${SECURE}/hextris - -installtop: tophextris - install -s tophextris ${UNPRIV}/tophextris - -clean: - - rm *.o xhextris wmhextris hextris - - -xio.o: header.h -hextris.o: header.h -stdsys.o: header.h -tophextris.o: header.h + ScoreDir = /var/X11R6/scores + ScoreFile = xhextris-scores + DEFINES = -DHIGHSCOREFILE=\"$(ScoreDir)/$(ScoreFile)\" -DHEXFONTDIR=\"$(FONTDIR)/misc\" + HEADERS = header.h + SRC1S = hextris.c xio.c stdsys.c + SRC2S = stdsys.c tophextris.c + OBJ1S = hextris.o xio.o stdsys.o + OBJ2S = stdsys.o tophextris.o +LOCAL_LIBRARIES = $(XLIB) + DEPLIBS = $(DEPXLIB) +EXTRA_LOAD_FLAGS = + +all:: xhextris tophextris + +$(OBJ1S): $(HEADERS) +$(OBJ2S): $(HEADERS) + + +NormalProgramTarget(xhextris,$(OBJ1S),$(DEPLIBS),$(LOCAL_LIBRARIES),$(SYSLIBS)) +NormalProgramTarget(tophextris,$(OBJ2S),$(DEPLIBS),$(LOCAL_LIBRARIES),$(SYSLIBS)) + +InstallProgramWithFlags(xhextris,$(BINDIR),-m 0755) +InstallProgramWithFlags(tophextris,$(BINDIR),-m 0755) --- xhextris/Makefile.Linux +++ xhextris/Makefile.Linux 2000-03-02 18:22:20.000000000 +0100 @@ -0,0 +1,20 @@ +# +# +# +# Makefile.Linux to integrate package into source tree of S.u.S.E.-Linux. +# +# Copyright (c) 1995 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved. +# +# + + +compile: + xmkmf -a + make + +install: + make install + +clean: + make clean + --- xhextris/header.h +++ xhextris/header.h 2008-01-10 12:16:28.550050339 +0100 @@ -21,6 +21,12 @@ * PERFORMANCE OF THIS SOFTWARE. */ +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/socket.h> + /* The maximum rows in the game. */ #define MAXROW 26 @@ -38,7 +44,7 @@ #define MAXNAMELENGTH 40 /* The maximum length of the users id. */ -#define MAXUSERIDLENGTH 5 +#define MAXUSERIDLENGTH 40 /* The maximum nuber of high scores a user can have in the high score file. */ #define MAXUSERHIGHS 3 @@ -50,10 +56,10 @@ #define HEXFONTNAME "xhextris" /* The directory where the text font is. */ -#define FONTDIR "/usr/lib/X11/fonts/misc/" +#define FONTDIR "/usr/share/fonts/misc/" /* The text font being used. */ -#define FONTNAME "8x13B" +#define FONTNAME "-misc-fixed-bold-r-normal--13-120-75-75-c-80-iso8859-1" /*8x13B"*/ /* The name on the window. */ #define WINDOWNAME "xhextris" @@ -61,18 +67,6 @@ */ #define ICONNAME "xhextris" -/* Don't worry about this stuff, it's Andrew specific. - */ -#ifdef sun4_40 -#define FONTDIR "/afs/andrew.cmu.edu/usr10/dm3e/.fonts/.X11/sun4_40/" -#define HIGHSCOREDIR "/afs/andrew.cmu.edu/usr10/dm3e/.logs/" -#endif - -#ifdef mac2_51 -#define FONTDIR "/afs/andrew.cmu.edu/usr10/dm3e/.fonts/.X11/mac2_51/" -#define HIGHSCOREDIR "/afs/andrew.cmu.edu/usr10/dm3e/.logs/" -#endif - /* This is the type definition for a piece. */ typedef struct piece_s @@ -111,6 +105,7 @@ typedef struct high_score_s * hex that is up to its neighbors in its row, or down to them. One row in the * game moves up and down, from left to right. */ +#ifdef SHAPE_REQUIRED static int shape[NUMBEROFPIECES*6][16] = {{0,0,-1,0,1,-1,1,1,-1,0,0,-1,0,1,0,0}, /* 00 */ {0,0,0,-1,0,1,1,0,-1,-1,-1,1,1,0,0,0}, /* 01 */ @@ -172,9 +167,33 @@ static int shape[NUMBEROFPIECES*6][16] {1,0,0,0,0,1,-1,1,1,0,0,0,-1,1,-2,1}, /* 93 */ {1,1,0,0,-1,0,-1,-1,0,1,0,0,-1,0,-2,-1}, /* 94 */ {0,-2,0,-1,0,0,0,1,0,-2,-1,-1,0,0,-1,1}}; /* 95 */ +#endif #ifdef LOG #define LOGHOST "waddington.andrew.cmu.edu" char log_message[80]; #endif +extern void init_piece(piece_t *); +extern void redraw_position(); +extern int update_drop(position_t [MAXROW][MAXCOLUMN], piece_t *, piece_t *, int *, int *); +extern int is_high_score(char [], char [], int, int, high_score_t []); +extern void do_choice(char *, position_t [MAXROW][MAXCOLUMN], piece_t *, piece_t *, int *, int *, int *, int *, high_score_t []); +extern void redraw_game(position_t [MAXROW][MAXCOLUMN], piece_t *, piece_t *, int *, int*, int, high_score_t []); +extern void itoa(int, char*); +extern void new_piece(piece_t*, piece_t*); +extern int read_high_scores(high_score_t []); +extern int write_high_scores(high_score_t [], char*); +extern void set_up_display(int); +extern void set_font_path(char*); +extern void TooSmall(); +extern void clear_display(); +extern void display_scores(int*, int*); +extern void display_help(); +extern void display_help_score(); +extern void display_high_scores(high_score_t []); +extern void show_next_piece(piece_t*); +extern void draw_hex(int, int, int, int); +extern void draw_pos(int column, int fill, int type); +extern void end_game(); + --- xhextris/hextris.c +++ xhextris/hextris.c 2008-01-10 12:14:53.165945561 +0100 @@ -28,11 +28,13 @@ * functions in this file that call functions in the I/O handler. */ +#define SHAPE_REQUIRED #include "header.h" /* This places the piece on the board in its starting position. All the * hexes in the piece are displayed. */ +void init_piece(piece) piece_t *piece; { @@ -51,6 +53,7 @@ piece_t *piece; * any hexes that will be covered. In this way, any piece that is already * covered, and will be covered, is not redrawn. */ +void place_piece(piece,tpiece) piece_t *piece, *tpiece; { @@ -96,6 +99,7 @@ piece_t *piece, *tpiece; /* This checks to see if the proposed position of the piece (tpiece) will * legally fit in the grid. */ +int check_piece(tpiece,grid) piece_t *tpiece; position_t grid[MAXROW][MAXCOLUMN]; @@ -130,6 +134,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This drops the piece into the grid, in its final resting place. */ +void drop_piece(piece,grid) piece_t *piece; position_t grid[MAXROW][MAXCOLUMN]; @@ -148,6 +153,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This redraws the entire grid. */ +void redraw_grid(grid) position_t grid[MAXROW][MAXCOLUMN]; { @@ -162,6 +168,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This clears the current, normal row, and moves the rest of the * grid down. */ +void shift_redraw_grid(start_row,grid) int start_row; position_t grid[MAXROW][MAXCOLUMN]; @@ -190,6 +197,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This clears the current, offset row, and moves the rest of the * grid down. */ +void shift_offset_redraw_grid(start_row,grid) int start_row; position_t grid[MAXROW][MAXCOLUMN]; @@ -222,6 +230,7 @@ position_t grid[MAXROW][MAXCOLUMN]; /* This checks for any cleared rows, be they normal or offset. */ +int check_rows(grid) position_t grid[MAXROW][MAXCOLUMN]; { @@ -265,6 +274,7 @@ position_t grid[MAXROW][MAXCOLUMN]; * 4 - Drop * 6 - Quit */ +int update(choice,grid,npiece,piece,score,rows) int choice; position_t grid[MAXROW][MAXCOLUMN]; @@ -349,6 +359,7 @@ int *score, *rows; /* This process the normal dropping caused by the passage of time. The io * handler calls this, when it is time to drop the piece. */ +int update_drop(grid,npiece,piece,score,rows) position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; @@ -385,6 +396,7 @@ int *score, *rows; /* This sets up things for a new game. */ +void new_game(grid,npiece,piece,score,rows) position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; @@ -406,6 +418,7 @@ int *score, *rows; /* This draws the borders of the game. */ +void draw_borders() { int i; @@ -424,6 +437,7 @@ draw_borders() * one of his own, the lowest of hist scores is removed, and the new one * is placed. */ +int is_high_score(name,userid,score,rows,high_scores) char name[MAXNAMELENGTH]; char userid[MAXUSERIDLENGTH]; @@ -477,14 +491,15 @@ high_score_t high_scores[MAXHIGHSCORES]; * key stroke into a choice. Notice: It also transfers the variable the * I/O handler supplies it. */ +void do_choice(choice,grid,npiece,piece,score,rows,game_over,game_view,high_scores) -char choice; +char *choice; position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; int *score, *rows, *game_over, *game_view; high_score_t high_scores[MAXHIGHSCORES]; { - switch (choice) { + switch (choice[0]) { case 'j': case 'J': case '4': if (! *game_over) update(0,grid,npiece,piece,score,rows); @@ -493,7 +508,7 @@ high_score_t high_scores[MAXHIGHSCORES]; if (! *game_over) update(1,grid,npiece,piece,score,rows); break; - case 'k': case 'K': case '5': + case 'k': case 'K': case '5': case '2': if (! *game_over) update(2,grid,npiece,piece,score,rows); break; @@ -549,11 +564,30 @@ high_score_t high_scores[MAXHIGHSCORES]; #ifdef LOG loguse(LOGHOST,"xhexlog",log_message); #endif + case '\027': + if (strcmp(choice, "\027OA") == 0) { + if (! *game_over) + update(3,grid,npiece,piece,score,rows); + } + else if (strcmp(choice, "\027OB") == 0) { + if (! *game_over) + update(0,grid,npiece,piece,score,rows); + } + else if (strcmp(choice, "\027OC") == 0) { + if (! *game_over) + update(1,grid,npiece,piece,score,rows); + } + else if (strcmp(choice, "\027OD") == 0) { + if (! *game_over) + update(2,grid,npiece,piece,score,rows); + } + break; } } /* This redraws all the parts of the game through the I/O handler. */ +void redraw_game(grid,npiece,piece,score,rows,game_view,high_scores) position_t grid[MAXROW][MAXCOLUMN]; piece_t *npiece,*piece; --- xhextris/stdsys.c +++ xhextris/stdsys.c 2008-01-10 11:44:53.125900153 +0100 @@ -32,6 +32,7 @@ * * This is a standard string reverse routine. */ +void reverse(s) char *s; { @@ -48,6 +49,7 @@ char *s; * * This is a standard integer to string converter. */ +void itoa(n,s) int n; char *s; @@ -69,6 +71,7 @@ char *s; /* This randomly selects the next piece. It also selects the current * piece, if it has not yet been set (rotation = -1). */ +void new_piece(npiece,piece) piece_t *npiece,*piece; { @@ -91,6 +94,7 @@ piece_t *npiece,*piece; /* This reads in the high score file. */ +int read_high_scores(high_scores) high_score_t high_scores[MAXHIGHSCORES]; { @@ -99,8 +103,7 @@ high_score_t high_scores[MAXHIGHSCORES]; char high_score_file_name[512]; char buffer[40]; - strcpy(high_score_file_name,HIGHSCOREDIR); - strcat(high_score_file_name,HIGHSCOREEXT); + strcpy(high_score_file_name,HIGHSCOREFILE); if ((high_score_file = fopen(high_score_file_name , "r")) == NULL) { fprintf(stderr,"xhextris: Can't open high score file.\n"); @@ -120,8 +123,8 @@ high_score_t high_scores[MAXHIGHSCORES]; break; } for (j = i; j < MAXHIGHSCORES; j++) { - strcpy(high_scores[j].name,"David Markley"); - strcpy(high_scores[j].userid,"CMU"); + strcpy(high_scores[j].name,"nobody"); + strcpy(high_scores[j].userid,"NON"); high_scores[j].score = 0; high_scores[j].rows = 0; } @@ -131,25 +134,22 @@ high_score_t high_scores[MAXHIGHSCORES]; /* This writes the high score file. */ +int write_high_scores(high_scores,uniqueid) high_score_t high_scores[MAXHIGHSCORES]; char *uniqueid; { int i; FILE *high_score_file; - char tmp_high_score_file_name[512]; char high_score_file_name[512]; char buffer[40]; - strcpy(tmp_high_score_file_name,HIGHSCOREDIR); - strcat(tmp_high_score_file_name,uniqueid); - strcpy(high_score_file_name,HIGHSCOREDIR); - strcat(high_score_file_name,HIGHSCOREEXT); + strcpy(high_score_file_name,HIGHSCOREFILE); #ifdef AFS beGames(); #endif - if ((high_score_file = fopen(tmp_high_score_file_name, "w")) == NULL) { + if ((high_score_file = fopen(high_score_file_name, "w")) == NULL) { fprintf(stderr,"xhextris: Can't open high score file.\n"); return 0; } @@ -165,7 +165,7 @@ char *uniqueid; } fflush(high_score_file); fclose(high_score_file); - rename(tmp_high_score_file_name,high_score_file_name); +/* rename(tmp_high_score_file_name,high_score_file_name);*/ #ifdef AFS bePlayer(); #endif --- xhextris/tophextris.c +++ xhextris/tophextris.c 2008-01-09 18:54:59.054630877 +0100 @@ -24,16 +24,17 @@ #include <stdio.h> #include "header.h" +int main() { high_score_t high_scores[MAXHIGHSCORES]; int i; read_high_scores(high_scores); - printf("%-3s %-40s %-5s %-10s %-3s\n", "#", "Name", "UID", "Score", -"Row"); + printf("%-3s %-40s %-5s %-10s %-3s\n", "#", "Name", "UID", "Score", "Row"); for (i = 0; i < MAXHIGHSCORES; i++) printf("%3d %-40s %-5s %10d %3d\n", i+1, high_scores[i].name, high_scores[i].userid, high_scores[i].score, high_scores[i].rows); + return 0; } --- xhextris/wmio.c +++ xhextris/wmio.c 2000-03-02 18:22:20.000000000 +0100 @@ -138,9 +138,11 @@ hexfont=wm_DefineFont("/afs/andrew.cmu.e tp.tv_usec = newintvl; FD_ZERO(&fdst); FD_SET(fileno(winin),&fdst); - if(select(fileno(winin)+1,&fdst,0,0,&tp)) - do_choice(getc(winin),grid,&npiece,&piece,&score,&rows, + if(select(fileno(winin)+1,&fdst,0,0,&tp)) { + char tmp[1] = getc(winin); + do_choice(tmp,grid,&npiece,&piece,&score,&rows, &game_over,&game_view,high_scores); + } } } --- xhextris/xio.c +++ xhextris/xio.c 2008-01-10 12:17:34.286392586 +0100 @@ -28,6 +28,7 @@ #include <strings.h> #include <X11/Xlib.h> #include <X11/Xutil.h> +#include <X11/keysym.h> #include <sys/types.h> #include <sys/dir.h> #include <sys/time.h> @@ -39,6 +40,10 @@ #include "header.h" +extern void set_up_window(int*, int*, XSizeHints*, char *[], int); +extern void get_GC(Window, GC*, XFontStruct*); +extern void load_font(XFontStruct**, char *); + /* Macros to make 4.2 BSD select compatible with 4.3 BSD select */ #ifndef FD_SET #define fd_set int @@ -61,7 +66,7 @@ extern int PlayerUID; /* This is the big, ugly main X procedure... */ -void main(argc, argv) +int main(argc, argv) int argc; char **argv; { @@ -182,9 +187,25 @@ char **argv; XBell(display,50); break; case KeyPress: - XLookupString(&report, buffer, bufsize, &key, &compose); + XLookupString(&(report.xkey), buffer, bufsize, &key, &compose); + switch (key) { + case XK_Left: + buffer[0] = '4'; + break; + case XK_Up: + buffer[0] = '8'; + break; + case XK_Right: + buffer[0] = '6'; + break; + case XK_Down: + buffer[0] = '2'; + break; + default: + break; + } oldscore = score; - do_choice(buffer[0],grid,&npiece,&piece,&score,&rows, + do_choice(buffer,grid,&npiece,&piece,&score,&rows, &game_over, &game_view, high_scores); if ((score != oldscore) || (! score)) { XSync(display,True); @@ -198,11 +219,14 @@ char **argv; } } } + + return 0; } /* This sets up the basic connections to the X server, the fonts, and * which colors are to be foreground and background. */ +void set_up_display(inverse) int inverse; { @@ -221,24 +245,31 @@ int inverse; white = temp; } set_font_path(HEXFONTDIR); - set_font_path(FONTDIR); +/* set_font_path(FONTDIR); */ } /* This sets up the font path to contain the directories that have the * fonts this program needs. */ +void set_font_path(fontdir) char *fontdir; { int i, font_length; char **font_path = XGetFontPath(display, &font_length); - for (i = 0; (i < font_length) && strcmp(font_path[i],fontdir); i++); + for (i = 0; (i < font_length); i++) { + char *colon = strrchr(font_path[i], ':'); + if (colon) + *colon = '\0'; + if (strcmp(font_path[i],fontdir) == 0) + break; + } if (i >= font_length) { char **new_font_path; - if (new_font_path = (char **) malloc((font_length+1)*sizeof(char *))) { + if ((new_font_path = (char **) malloc((font_length+1)*sizeof(char *)))) { for(i = 0; i < font_length; i++) new_font_path[i] = font_path[i]; new_font_path[i] = fontdir; @@ -252,6 +283,7 @@ char *fontdir; /* This sets up the window position, size, fonts, and gcs. */ +void set_up_window(width,height,size_hints,argv,argc) int *width, *height; XSizeHints *size_hints; @@ -269,7 +301,7 @@ int argc; size_hints->height = *height; size_hints->min_width = 300; size_hints->min_height = 700; - XSetStandardProperties(display, win, WINDOWNAME, ICONNAME, NULL, argv, + XSetStandardProperties(display, win, WINDOWNAME, ICONNAME, (int) NULL, argv, argc, size_hints); XSelectInput(display, win, ExposureMask | KeyPressMask | ButtonPressMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask); @@ -283,6 +315,7 @@ int argc; /* This sets up a gc */ +void get_GC(win, tgc, tfont_info) Window win; GC *tgc; @@ -308,6 +341,7 @@ XFontStruct *tfont_info; /* This loads a font */ +void load_font(tfont_info, font_name) XFontStruct **tfont_info; char *font_name; @@ -320,6 +354,7 @@ char *font_name; /* This yells if the window is too small. */ +void TooSmall() { char *string1 = "Too Small"; @@ -335,6 +370,7 @@ TooSmall() * * This clears the window. */ +void clear_display() { XClearWindow(display,win); @@ -344,6 +380,7 @@ clear_display() * * This displays the current score and rows completed. */ +void display_scores(score,rows) int *score, *rows; { @@ -366,6 +403,7 @@ int *score, *rows; * * This displays the help information. */ +void display_help() { int y_offset, x_offset, i; @@ -403,13 +441,14 @@ display_help() * * This displays the high score list. */ +void display_high_scores(high_scores) high_score_t high_scores[MAXHIGHSCORES]; { int y_offset, i; static int x_offset[5] = {5,30,150,200,300}; static char *header[] = {"#","Name","UID","Score","Rows"}; - char message[40]; + char message[40] = ""; XClearWindow(display,win); XSetFillStyle(display, gc, FillSolid); @@ -440,6 +479,7 @@ high_score_t high_scores[MAXHIGHSCORES]; * * This displays the next piece to be dropped. */ +void show_next_piece(npiece) piece_t *npiece; { @@ -458,6 +498,7 @@ piece_t *npiece; * * This draws one hex at the specified row and column specified. */ +void draw_hex(row,column,fill,type) int row,column,fill,type; { @@ -482,6 +523,7 @@ int row,column,fill,type; * * This ends the game by closing everything down and exiting. */ +void end_game() { XFreeGC (display, gc);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor