X-BASED CUBES ============= Cubes X widget, V5.0 It has been tested on the following platforms: HP 3xx & 700 HP-UX 9.0x X11R5 Sun4, SPARC SunOS 4.1.3 X11R4 Sun4, SPARC SunOS 5.4 X11R5 PC, 486 Linux 1.0.9 X11R5(*) PC, 486 Linux 1.2.8 X11R6(**) * Keypad 5 key may not work, in which case, try it with the Num-Lock on ** Keypad may not work, since various keycodes may not be defined by default. Check that "KP_1 - KP_9, Home, Up, Prior, Left, Begin, Right, End, Down, Next" are defined towards the end of /usr/lib/X11/etc/xmodmap.std . If not defined cp /usr/lib/X11/etc/xmodmap.std /usr/lib/X11/xinit/.Xmodmap and then motify this or create your own at ${HOME}/.Xmodmap . You should just have to uncomment them (get rid of some '!'). This should be done before X is started. If yours is not in this list, please let me know -- thanks. The most updated source could be found on ftp.x.org under /contrib/games/puzzles. HOW TO BUILD? Do you have Motif? If so, uncomment line 28 of Imakefile. It should be easy. Edit the Imakefile (or Makefile.std, see below) for appropriate settings of variable SCOREFILE, then do: xmkmf make xcubes [motif version will be xmcubes] Note: if you don't have 'xmkmf' or the "Makefile" it generates doesn't work well, edit Makefile.std for appropriate settings for XINCLUDEPATH and XLIBPATH, then try: make -f Makefile.std xcubes or if you have Motif, uncomment appropriate sections, then try: make -f Makefile.std all.xm xmcubes You should have Cubes.ad copied to $(HOME)/Cubes or /usr/lib/X11/app-defaults/Cubes to run, especially if the background is similar to one of the faces. Edit this file for your preferences. You might want to move xcubes into /usr/bin/X11 (or wherever your X binaries are). You might also want to move xcubes.man to /usr/man/man6/xcubes.6 ANYTHING SPECIAL IN USING? Click on the left mouse button to move brick (but not on space or a tile that is not in line with space). One must double click on the middle mouse button if the puzzle is being worked on. Click on the right mouse button if you want to randomize Cubes. Also 'R' or 'r' does the same thing. One must double click on the right mouse button if the puzzle is being worked on. 'S' or 's' to auto-solve. Unfortunately, its unimplemented. 'U' or 'u' to undo last move. 'E' or 'e' to enter saved puzzle. 'W' or 'w' to write or save a puzzle. 'Q', 'q', or Control-C to kill program. Key pad is defined for Cubes as: / 8 ^ 4 < 5 > 6 v 2 Bricks can also be moved by the keypad, KP_DIVIDE=>OUT KP_8=>TOP KP=>LEFT KP_5=>IN KP=>RIGHT KP_2=>BOTTOM 'I', 'i', and 'O', 'o' also work for in and out. Notice one can move more than one brick at a time by clicking on the brick farthest from the space but in line with the space. Since you only have a 2-D screen the next level down is either the box to the right of the current box or the bottom of the current box. The control key allows you to change the complexity of xcubes. Hold down control key and use the keypad. Try resizing xcubes. Notice the puzzle resizes to take advantage of the "room" available. The title is in the following format (non-motif version): xcubes: xx @ (/\ {|NEVER|PRACTICE}) - xx: row by column by stack. { 1 2-> i 3-> i*j-i+1 4-> i*j 5-> i*j*k-i*j+1 6-> i*j*k-i*j+i 7-> i*j*k-i+1 8-> i*j*k Center -> i%2 => 0: None 1: ((i+1)/2)^3 Max_Width -> i units Max_Height -> j units Max_Depth -> k units Start -> x=y=z=0 Next -> n%i => 0: x= 0 units; y+= 1 unit if (y == j) {y = 0 units; z+= 1 unit;} default: x+= 1 unit Same row? -> (m-1) / i == (n-1) / i Same column? -> ((m-1) % i == (n-1) % i) && ((m-1) / (i*j) == (n-1) / (i*j)) Same stack? -> (m-1) % (i*j) == (n-1) % (i*j) FOUND A BUG? Send bugs reports and fixes to the author. For bugs, please include as much information as to their location as possible, since I may not have the resources to duplicate the them. David Albert Bagley, bagleyd@source.asset.com HISTORY [Oct 01, 95] V5.0: Xt/Motif, your choice. [May 16, 95] V4.10: Warnings removed from Sun's cc and lint and now include a random number generator. [Mar 13, 95] V4.4: Removed lint warnings and added a VMS make.com . [Nov 11, 94] V4.3: Conservative guess for random number generator. [Oct 25, 94] V4.2: Now allows undos, saves, and recalls. [Jun 28, 94] V4.1: Can accommodate a auto-solver. [Jun 07, 94] V4.0: Xt version. I got some good ideas from oclock. [Apr 01, 93] V3.0: Motif version. I got some good ideas from Douglas A. Young's book: "The X Window System Programming and Applications with Xt OSF/Motif Edition", particularly his dial widget. I got some good ideas on presentation from Q. Zhao's tetris. [Dec 19, 91] V2.0: XView version. [Aug 01, 91] V1.0: SunView version.