Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:goupilmtos:2024: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