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);