8.7.6

wrubik
======

A Rubik's Cube Widget

Web: https://www.sillycycle.com/puzzles.html

Download: Primary site: https://www.sillycycle.com/puzzles
          Secondary site: http://ibiblio.org/pub/Linux/games/strategy

Maintainer: David A. Bagley <bagleyd AT verizon.net>

  To build you need at minimum both of these, X11 and Xt (unless you are
  looking to build win32).
    sudo apt-get install libx11-dev
    sudo apt-get install libxt-dev
  You may need to install one of these to build Motif version:
    sudo apt-get install libmotif-dev (strongly recommended)
    sudo apt-get install lesstif2-dev (defunct)
  As an alternative to Motif you can use Athena:
    sudo apt-get install xaw7-dev
    (Also could use XAW3D xaw3d-1.6.3-3-x86_64.pkg.tar.zst)
  You need to install XPM if you want color icons:
    sudo apt-get install libxpm-dev (strongly recommended)
  To install XMU if you want editres:
    sudo apt-get install libxmu-dev (probably not useful)
  To install sound libraries (defunct):
    sudo apt-get install librplay3-dev
    sudo apt-get install libesd0-dev
    sudo apt-get install libaudiofile-dev
    sudo apt-get install nas-dev
    sudo apt-get install pulse-dev
      In place of these it is just configured by default with
      --enable-def-play=play.sh
  You need to install gl and glu if you want 3D graphics of OpenGL:
    sudo apt-get install libgl1-mesa-dev
    sudo apt-get install libglu-dev
  Then should be a simple
    configure; make

  Try resizing the puzzle. Notice the puzzle resizes to take advantage of
  the "room" available.

  Note: if using Athena and want the popups to be able to be closed when
    using a close window button in top bar, uncomment translations stuff
    in app-defaults file (.ad file) prior to "make install".  This may
    lead to warnings if for example the Motif version also exists.

  Try editing the file Rubik.ad to get a certain feature and then copying
  to $(HOME)/Rubik (where Rubik is the file name) and running xrubik
  again.  Here you can change from the current cube (this is the kind
  I grew up on) to the original cube (the one that Erno Rubik prefers).
  Both types were made by the original manufacturer.  There is also a
  Windows port (wrubik), though not all features are included.

  The auto-solver here only works for 2x2x2, 3x3x3, and 4x4x4 (for both
  non-oriented and oriented centers).  One of the problems in
  auto-solvers the generally do not work for different number of cuts.
  If you know of one let me know.

  Also a tesseract (4D cube) would be nice. (I heard a 3^N cube has been
  built in software and solved!)

  Personally, I have solved 1-4 using this program, 2-5 using the
  physical cubes.

  Refer to the man page for detailed command line options.

  If you want further information on puzzles, I'll be glad :-) to send
  it to you.

SOLVING THE CENTER CUBES (3x3x3, oriented mode)
  1.  The top and front centers are upside down
      (Middle move up, top turned 180,
      Middle move down, top turned 180) x 3
  2.  The top is down, front is correct
      (Top 90, Front 180) x 30
  3.  Top 3 oclock, Front 9 oclock
      (Front ccw, top 90 cw) x 63
  4.  Top 3 oclock, Front 3 oclock
      (Front cw, top 90 cw) x 105
  This is my own method, there are probably better ones out there but
  this is pretty mindless, but can be very long.

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
  be able to duplicate them.

other stuff to do
  1. auto-solve only works when size (ie. the number of cubes) on the sides
    are all the same and the size is either 2, 3, or 4.
  2. GL: mono/gray scale not handled right, should also have letters on cube
  3. Change speed in GL with Animation speed.

Updates:
  [Jan 18, 2024]  V8.7.6:
    Changing quick character from f to j to increment z coordinate in
      number of cubes, to avoid conflict for find feature.
  [Aug 09, 2023]  V8.7.1:
    Fixing configure to not use -std=c89 as it may not always work with
    Fixing configure to not use -std=c89 as it may not always work with
     installed includes.
  [Mar 15, 2023]  V8.6.5:
    Added compile option for searching for particular moves.
  [Jan 17, 2023]  V8.6.3:
    Fix for when glx not available.
  [Dec 16, 2022]  V8.6.2:
    Athena: Simplified menu code and fixed check.
  [Dec 14, 2022]  V8.6.1:
    Updating Athena libs as seen in xterm build and adding XawPlus.
    Fixing up and down bitmaps.
  [Dec 09, 2022]  V8.6.0:
    Redesign gui parts as getting too unwieldy.  Ripping out xgui.h
      xgui.c from main file.
    Athena: Adding new spinner, updating old slider and toggle.
    Fix for vanilla X since V8.5.3.
  [Oct 31, 2022]  V8.5.6:
    Updating for Xaw3dxft and neXtaw.
  [Oct 04, 2022]  V8.5.4:
    Motif/Athena: Updated menus and popup titles.
    Motif/Athena: Added sound toggle in menu.
  [Sep 01, 2022]  V8.5.3:
    Updated to use XtAppInitialize from XtInitialize.  This helped fix
      Athena issue when killing dialog by window exit and bringing
      down application (WM_PROTOCOLS nonsense).
    Athena: popup window title bar close handled better.
    Athena: added scroll bar dialog box for features.
    Athena: initialize to synchronize with handle command line options.
  [Jul 30, 2022]  V8.5.2:
    Athena scrolling fix and menus added.
  [Jul 11, 2022]  V8.5.1:
    Cleanup and configuration updates.
  [Jul 07, 2022]  V8.5.0:
    Athena version, because I got complaints about Motif being old.
  [Jan 20, 2021]  V8.4.0:
    Updated scores to recover some corruption, say from from an empty
      file.
  [Jan 19, 2021]  V8.3.2:
    Rubik's Revenge auto-solve for 4x4x4 orient mode.
  [Dec 07, 2020]  V8.3.1:
    Handle corrupted buffer better.
  [Nov 19, 2020]  V8.3.0:
    Rubik's Revenge (i.e. 4x4x4) solver added.
    Updated to camel case for sizex to sizeX to be consistent with Java
      version.
    'r' is now for redo and 'g' for get record (formerly read record).
  [Apr 11, 2020]  V8.2.7:
    Fixing a few buffer overflows from latest gcc.
  [Apr 04, 2020]  V8.2.6:
    Lots of spelling errors fixed due to codespell
      https://manpages.debian.org/testing/codespell/codespell.1.en.html
    Updated references to website to https.  https://www.sillycycle.com
  [Feb 15, 2019]  V8.2.1:
    Fixed spinner to not wrap and be unlimited where appropriate.
  [Oct 02, 2018]  V8.2.0:
    Removing strcpy and strcat calls by migrating to strncpy and strncat.
      Added HAVE_SNPRINTF compile-time option.
  [Jul 21, 2018]  V8.1.8:
    Fixing sound installation.
  [Apr 03, 2018]  V8.1.7:
    Updated to use spinner (using latest Motif  ;) ).
  [Oct 15, 2017]  V8.1.4:
    Removed gcc 7 warnings.
  [Oct 01, 2017]  V8.1.3:
    Updates for 64 bit compilation in Windows.
  [Aug 01, 2017]  V8.1.1:
    Valgrind helped find some definite memory leaks.
  [Jul 17, 2017]  V8.1.0:
    Updated sound configuration for X version.  Uses a simple included
      script play.sh, that is now used by default.
  [Sep 13, 2016]  V8.0.5:
    Old website http://www.tux.org/~bagleyd died, shifted code base to
      new website http://www.sillycycle.com
  [Feb 24, 2015]  V8.0.0:
    Sound and install fixes.
  [May 13, 2014]  V7.7.4:
    Synchronized save and restore with Java version.
    Fixed synchronizing if resized while reading from saved log.
  [Jan 20, 2014]  V7.7.3:
    Reorganized pixmap directory.
  [Jan 10, 2013]  V7.7.1:
    Cleaned up some duplication in Motif menu.
    Added scroll to feature help dialog.
    New bold fontlist in resource file, so things are easier to read.
  [Oct 22, 2010]  V7.6.4:
    Changed key mappings g->r for read file, r->e for redo.
  [Jun 29, 2010]  V7.6.3:
    Added extra keys F12 for CW and F11 for CCW.
  [Jan 21, 2010]  V7.6:
    Version handling changed to a single version.h (and man page).
    Sound fixed for esound.
  [Jan 07, 2010]  V7.5.5:
    Fixed undo and redo for GL when at fastest speed.
  [Dec 21, 2009]  V7.5.4:
    Map arrow keys for GL.
  [Dec 11, 2009]  V7.5.3:
    Added more delay for GL.
  [Nov 10, 2009]  V7.5.1:
    Windows version: added accelerator for references.
    GLU used for GL mouse mapping.
      Gutted old 3d representation (except when no OpenGL available).
    Windows fix: changed GL code until no drawing errors, some Windows
      machines needed this.
  [Jun 05, 2009]  V7.5:
    Fixed view for Windows not to reset puzzle.
    Cleaned up menu look.
    Fixed again for NAS sound.
  [Dec 14, 2008]  V7.4.3:
    Fixed for NAS sound.
  [Jul 21, 2008]  V7.4.1:
    Strange character at end of help title removed.
  [Jul 11, 2008]  V7.4:
    Leading function names in lowercase.
    Extra callback was causing 2d to go out of sync.
    Mouse release sometimes was using wrong face.
  [Feb 29, 2008]  V7.3.4:
    Changed pointer from crosshair to hand2.
  [Dec 24, 2007]  V7.3.3:
    Constants changed.
    Windows error fix when changing size.
    Bug found when changing size while GL puzzle rotating.
    Randomizes to a maximum of 100 moves.
  [Nov 06, 2007]  V7.3.2:
    Updated action codes and synchronized Java and C code.
    Various small changes.
  [Apr 10, 2007]  V7.3.1:
    Sound added.
  [Feb 23, 2007]  V7.3:
    Html no longer corrupted.
    reverseVideo update.
  [Dec 12, 2006]  V7.2.6:
    Changed default so that practice is true.
    Now use http://netpbm.sourceforge.net to generate images from xpm.
  [Nov 09, 2006]  V7.2.5:
    Windows OpenGL stuff now ported.
    Windows version interruptible on auto-solve.
  [Oct 11, 2006]  V7.2.4:
    Drag and drop between adjacent faces.
    Added view option for OpenGL, "v".
    Fixed menu to assure the ok part of queries is handled correctly.
      (Bug fixed from redo change).
  [Jul 21, 2006]  V7.2.2:
    Fixed assorted memory leaks and uninitialized memory access reads.
    r is now for redo.  z is now the character for randomize.
      v is used for changing depth.
  [Jun 10, 2006]  V7.2.1:
    Get fix for Windows.
    Undo needed debouncing on own window.
    Now recognizes solved when doing undo.
  [Apr 01, 2006]  V7.2:
    Made usage string compatible with versions of Motif and screen.
    More defensive code in case getlogin fails.
  [Oct 05, 2005]  V7.1.5:
    scoreFile and userName fixes
    -version added
    -score added
    Common option help for X and X-Motif
  [May 31, 2005]  V7.1.4:
    Separated out compatible components.
  [Feb 8, 2005]  V7.1.3:
    Mouse wheel for Windows now works.
  [Nov 21, 2004]  V7.1.2:
    Small changes synchronizing with Java code.
    Thanks to Debian maintainer Florian Ernst <florian AT uni-hd.de> for
      non-motif fix.
  [Aug 23, 2004]  V7.1:
    Thanks to Debian maintainer Florian Ernst <florian AT uni-hd.de> for
      fixing a compilation problem with X and without Motif.
    Added font option.
  [Dec 15, 2003]  V7.0.1:
    The Hide functionality of the Escape key now iconifies or drops in
      task bar.
    Integrated winpuz6.5 (Windows 3.1/95) into X source tree.
    Todo windows version:
      Interrupt on auto-solve not ported.
  [Oct 26, 2003]  V5.7.4:
    Mouse wheel scrolling added.
    Key press can now interrupt auto-solve too.
  [Sep 28, 2003]  V5.7.3:
    Moving whole cube fixed.
    Delay fix and fast if random or retrieving a move... undo a little
      faster than normal.
    Added way of orienting the faces.
    Now can see twisting for GL.
    Control movement fix for rectangular arrangements.
    lxmxn and GL working where l, m, n could be = 1.
    Colors for GL now set from resources.
  [Aug 27, 2003]  V5.7.2:
    Beginings of a GL interface.  Code taken from xlock is by
      Marcelo F. Vianna <mfvianna AT centroin.com.br>.
    png for Gnome and KDE menus and xpm for CDE menus.
    install-games configure option and added other installation options.
    Added xpm for icon.
    Help kicked over.
  [Aug 03, 2003]  V5.7.1:
    Auto-solve for 3x3x3 orient mode
  [Jul 07, 2003]  V5.7:
    Thanks to my daughter for banging on the keys:
      Resetting key sliders and toggles should reset display message.
    Scramble had a good chance of not being scrambled.
    Interrupt on auto-solve stolen out of X puzzle by Don Bennett, HP Labs
    Test for cheating from get and auto-solve.
    Popup for auto-solve if outside solve parameters
    Clear now checks if you really want to randomize the puzzle using
      left mouse button, 'r' will not query
    'Esc' will hide the puzzle (actually osfCancel did the trick)
    Help & About expanded and pop-ups added
    Took out bitmaps since it takes too much room
  [Mar 21, 2003]  V5.6.2:
    Installation fixes for Motif and X versions.
  [Nov 06, 2002]  V5.6.1:
    VMS Motif fix and minor changes
  [Sep 06, 2002]  V5.6:
    configure if around 2nd AC_CHECK_FUNC
    removed Sun CC (char *) warnings
    removed hard coding of program name
    Cygwin changes ./, -lSM -lICE
    record store fix
    x and xm files combined using HAVE_MOTIF
    port back from Java (on the Java side I got some help from
        Sarat Chandran <saratcmahadevan AT yahoo.com>)
      use -1 for NEVER instead of 32767
      handle nobody = (null)
      .data->.dat for consistency
      background/foreground set by default
      frame color change on enter/leave
      allow more arrow keys (osf)
      menu
      divide by zero faceSize
      handleSolved cases
  [Sep 01, 2001]  V5.5.4: g++ 3.0 warnings removed.
  [Mar 27, 2001]  V5.5.3: Infinite loop fix for ARM thanks to Matej Vela
    <mvela AT public.srce.hr>.
  [Nov 14, 1999]  Not released: LxMxN code resynced with Windows version.
  [Aug 11, 1999]  V5.5.2: Fixed runtime library problems when using configure.
  [Jun 20, 1999]  V5.5: Added -rv, fixed flashing on mono, and added LxMxN
    stuff.
  [Jan 01, 1997]  V5.4: Username, concurrency check, configure, man page
    updates.
  [Aug 08, 1996]  V5.3.2: Fixed drag and drop bug.
  [Apr 11, 1996]  V5.3.1: Even sized cubes had errors since 5.2.
  [Apr 08, 1996]  V5.3: Minor changes.
  [Jan 31, 1996]  V5.2: Puzzle can now moved by a more intuitive drag and
    drop approach.  Pieces will invert, when selected.
    Now using dynamic allocation, so there is no maximum size.
  [Dec 15, 1995]  V5.1: Minor updates, RNG for 32/64 bit, border color
    to make faces look more realistic.
  [Oct 06, 1995]  V5.0: Xt/Motif, your choice.
  [May 16, 1995]  V4.10: Warnings removed from Sun's cc and lint and now
    include a random number generator.
  [Mar 13, 1995]  V4.9: Removed lint warnings and added a VMS make.com .
  [Nov 11, 1994]  V4.8: Conservative guess for random number generator.
  [Oct 11, 1994]  V4.7: Bug fix for save with undos.
  [Sep 28, 1994]  V4.6: Now allows undos, saves, and recalls.
  [Aug 08, 1994]  V4.5: Auto-solves from practice mode.
  [Jun 23, 1994]  V4.4: Auto-solves up to 3x3x3 courtesy of
    Michael B. Martin <martinm AT sps1.phys.vt.edu>.
  [Jun 15, 1994]  V4.3: Mistakenly used a Boolean variable in an array.
  [Jun 02, 1994]  V4.2: Minor changes, R6.
  [May 31, 1994]  V4.1: Minor changes, record sometimes displayed "32767"
    instead of "NONE".
  [May 10, 1994]  V4.0: Xt version.
    I got some good ideas from oclock.
  [May 20, 1993]  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.
  [Jan 16, 1992]  V2.0: XView version.
  [Jan 16, 1991]  V1.0: SunView version.
