## Gridlock

v1.10 Copyright (c) 2002-2005 by Brian Nenninger

Gridlock is free, but your support is welcome.
Gridlock source code is available at http://www.dozingcatsoftware.com.

### Overview

Gridlock is a collection of over 30 grid-based strategy games, including Ataxx, Reversi, Checkers, Gomoku, Connect Four, and more. They are individually described in the "Games" section.

After launching the application, the game window will appear. Select the game you want to play from the "Game" popup menu in the upper right. Some games have different variations (board size, layout, etc); when one of those games are selected a "Variations" popup menu will appear from which you can select a variation.

The bottom right displays the color and status of the two players. Each player's color is shown by a circle; the player whose turn it is has a filled circle. For games in which players have a score, the scores are shown next to the player labels. Popup windows underneath each player's label allow you to specify whether each player is human or computer-controlled, and the difficulty of computer players. (Note that "Hard" and "Very Hard" computer opponents may take several seconds to make each move).

The rest of the window contains the game board. To make a move, click on the cell where you wish to place a piece. Some games require that you move from one cell to another; to do this first click on the cell you wish to move from, then click on the cell you wish to move to. (In some games such as Checkers you may be able to make a move containing several jumps; to do this click on each cell you wish to jump to in sequence). For all games, cells that are legal moves will become highlighted when you move the mouse over them. A black dot indicates the position of the last move. If you are unable to make a move, you can pass by clicking the "Pass" button on the right. The "Restart" button will restart the game, requiring confirmation if a game is in progress.

The "Preferences..." menu item in the main Gridlock menu opens the Preferences window, which allows you to change the appearance of the game pieces, and to enable or disable the animation when they are captured. Game pieces can either be bitmap images chosen from the popup menus, or solid colors chosen from the color wells.

Games can be saved and restored using the "Save" and "Open" commands in the Game menu. Games are saved with their full move history, so you can save a game after it is finished, open it later, and undo moves back to the beginning.

The Edit menu contains Undo and Redo commands. Selecting Undo will back the game up to the last time it was a human player's turn. There is no limit to how many moves can be undone. Selecting Redo will redo a move that was previously undone, but only if no new moves were made after the undo.

The Window menu contains commands to toggle the display of network and statistics drawers. The network drawer is described below and is primarily used to chat with your opponent during a network game. The statistics drawer shows a table listing all the moves that have been made in the current game, and information on the analysis performed during the last move made by a computer player.

### Games

Additional information for many of these games is available at The World of Abstract Games.

Ataxx: The object of this game is to capture your opponent's pieces by moving your pieces next to them. There are two types of moves you can make. A normal move consists of starting from a piece that you own and creating another piece one cell away from it (horizontally, vertically, or diagonally). The starting piece remains, and you capture any of your opponent's pieces that your new piece borders. A jump move consists of moving a piece you own two cells in any direction. As with a normal move, any opponent's pieces that border the ending position are captured. To make either kind of move, first click on a piece that you own, then click on the empty cell you want to move to. The game is over when all the cells are filled, and the player owning the most pieces is the winner.

There are several variations with different starting configurations and board sizes, most of which place barriers in some of the cells. There are also 3 random variations for the 7x7 and 8x8 boards. The "V Sym" random variations will place the barriers in a pattern with vertical symmetry, and the "Both Sym" variations will place the barriers with both horizontal and vertical symmetry.

Quad Wrangle: This game is similar to Ataxx. There are three types of moves. The first type consists of starting from a piece that you own and creating another piece one cell away from it. The starting piece remains, and you capture any of your opponent's pieces that your new piece borders. (This is the same as non-jump move in Ataxx). The second type consists of sliding a piece you own any number of squares horizontally, vertically, or diagonally. Any opponent's pieces that border the ending position are captured. The third type is a drop of a piece to any empty cell. Unlike the other move types, no pieces are captured with this move type. To make a normal or slide move, first click on a piece that you own, then click on the empty cell you want to move to. To make a drop, click on an empty cell. The game is over when all the cells are filled, and the player owning the most pieces is the winner.

Reversi: (also known as Othello). The object is to capture the other player's pieces by enclosing them between two of your pieces. You make a move by placing a piece in an empty cell. You capture any of your opponent's pieces that are in a horizontal, vertical, or diagonal line between the new piece and another of your pieces. Every move must result in the capture of at least one piece; you must pass if you cannot capture any pieces. The game is over when the board is full or neither player can move; the player owning the most pieces is the winner.

Checkers: The object is to remove your opponent's pieces or prevent them from moving. Pieces move forward and diagonally, and can jump and remove opposing pieces by landing in the empty space directly behind them. When a piece reaches the last row, it is promoted to a king (represented by two stacked game pieces). Kings can move backwards and well as forwards. Whenever you can make a jump, you must do so. See http://www.triplejump.net/usrules.shtml for more detailed rules.

Gomoku: This is an expanded form of tic-tac-toe. Players move by placing a piece at any empty cell. A player wins by forming a straight line of 5 pieces horizontally, vertically, or diagonally.

Connect Four: Similar to Gomoku, a player wins by forming a straight line of 4 pieces horizontally, vertically, or diagonally. However, you may only place a piece at the lowest empty cell in each column.

Gravity: A player wins by forming a straight line of 4 pieces horizontally, vertically, or diagonally. The board has a "gravity field", which pulls pieces toward the edges or corners. If a cell is on a main diagonal (indicated by a gray background), a piece may be placed there only if there are no empty cells between that cell and the nearest corner. If a cell is not on a diagonal, a piece may be placed there only if there are no empty cells between that cell and the nearest edge.

Hexapawn: The object of this game is to move one of your pieces (pawns) to the other side of the board. In the normal game, pawns move as standard chess pawns; moving forward one square to an empty position, or capturing diagonally forward. Berolina and Berolina Plus pawns can be used in variations of this game. Berolina pawns move diagonally forward and capture directly forward. Berolina Plus pawns are the same as Berolina pawns, except they can also capture sideways. For all variations, a player wins when one of his pawns reaches the final row, or when his opponent is unable to move.

Breakthrough: The object of this game is to move one of your pieces to the other side of the board. Player 1's pieces start in the bottom two rows and move up; player 2's pieces start in the top two rows and move down. Pieces move one cell forward or diagonally forward. Pieces may capture opposing pieces when making a diagonal move, but not when making a direct forward move. A player wins when one of his pieces reaches the final row. Breakthrough was designed by Dan Troyka, the winner of the 2001 8x8 Game Design Competition; thanks to Dan for permission to include it.

Zonesh: The object of this game is to move one of your pieces to the opposite corner. The set of cells where a player's pieces start the game is that player's home zone; these cells are indicated with a tinted background. Pieces in their home zone move and capture one square horizontally or vertically. Pieces outside their home zone may additionally move and capture one square diagonally. A player wins by moving one of his pieces to the corner cell in his opponent's home zone. Zonesh was also created by Dan Troyka.

Glass Bead: The object of this game is to control the most cells. You control a cell if either you have placed a piece on the cell, or if the cell borders more of your pieces than your opponent's pieces. Players alternate placing pieces on cells that are not controlled by either player. Cells which do not contain pieces but which are controlled by a player are tinted with that player's color. The game ends when all cells are controlled by one of the players, and the player controlling the most cells wins. See here for more detailed information.

Cats & Dogs: Players take turns placing pieces ("cats" and "dogs") on empty cells. A piece cannot be placed in a cell that is horizontally or vertically adjacent to an opposing piece. When a player places a piece on a cell, the adjacent cells will be tinted with his color to indicate that his opponent can no longer play there. If an empty cell becomes adjacent to pieces of both players, it will turn gray to indicate that neither player can play there. A player wins when his opponent is unable to move.

Moray Eels: The object of this game is to capture the opposing pieces. Player 1's pieces are "Octopussies". They move one cell forward or diagonally forward. Player 2's pieces are "Eels". Like Octopussies, they can move one cell forward or diagonally forward. They can also move one or two cells sideways, or one or two cells sideways and one cell back. All moves must be to empty cells, and Eels can jump over friendly or opposing pieces. After a player moves, he gains control of all his opponent's pieces that are adjacent (horizontally, vertically, or diagonally) to his moved piece.

Life: This game is based on the Game of Life cellular automaton. Both players take turns placing a piece on an empty cell. After a player places a piece, an iteration of the Life algorithm is executed. A piece survives if it has exactly 2 or 3 neighbors (pieces adjacent to it horizontally, vertically, or diagaonally). A piece is removed if it has less than 2 or more than 3 neighbors. A new piece will be created in an empty cell if it has exactly 3 neighbors; the new piece will be owned by the player who owns the majority of the neighbors. A player wins by owning at least three times as many pieces as the other player after a Life iteration.

Atomic: Each player alternates dropping a piece in one of the cells. You may drop a piece in an empty cell or a cell in which you already have pieces. Each cell has a maximum number of pieces that it can hold. Corner cells can hold 1 piece, other edge cells can hold 2 pieces, and cells not on an edge can hold 3. When you drop a piece on a cell which exceeds the cell's limit, the cell will "explode". This causes the pieces in that cell to move to adjacent cells. Any enemy pieces in the adjacent cells are captured and change to the color of the exploding piece. Chain reactions of multiple explosions can occur when the result of the first explosion causes more cells to exceed their piece limit. A player wins by capturing all his opponent's pieces.

Five Field Kono: The object of this game is to move all of your pieces into the cells that your opponent occupies at the start of the game. Pieces move one cell diagonally forward or backward. There is no capturing. Surprisingly, stalemates are not possible; one player can always force a wiin.

Fission: The object of this game is to destroy all your opponent's pieces. Each piece slides horizontally, vertically, or diagonally until it hits either an edge of the board or another piece. If it hits an edge, nothing happens, but if it hits another piece it explodes, destroying itself and all adjacent pieces of both colors. There are 4 variations of this game; you can choose to use the standard starting positions, or have them randomized. In the "suicide" variations you win by destroying all of your pieces instead of your opponent's. If each player is reduced to a single piece, the game is a tie.

Orthokon: Each piece slides horizontally or vertically as far as possible before hitting an edge of the board or another piece. After a piece is moved, any enemy pieces horizontally or vertically adjacent to its new location are captured. A player wins when he captures all his opponent's pieces, or when his opponent cannot move.

Bombardment: The object is to destroy all your opponent's pieces, or to move one of your pieces to the other side of the board. Pieces move one cell forward or diagonally forward. A piece can also "detonate", destroying itself and all adjacent pieces of either color. To detonate a piece, click on it twice. (Be careful, this is easy to do accidentally).

Reactor: The object of the game is to destroy your opponent's pieces. The pieces begin in random cells and never move. The only objects which do move are "neutrons", indicated by small red circles. During each player's turn, he must move one of the neutrons. They move by sliding horizontally, vertically, or diagaonally until they reach an edge of the board, or another piece or neutron. After the move, any pieces adjacent to the neutron's new location are destroyed. Neutrons themselves are never destroyed, and you can't move the same neutron that your opponent moved in his last turn.

Tourney: The object is to either capture all your opponent's pieces, or "promote" one of your pieces by reaching the opposite side, and returning the promoted piece to your side. Pieces move like chess knights; two cells vertically and one horizontally, or two cells horizontally and one vertically. However, unlike chess knights, they cannot jump over pieces in the way. When moving two cells vertically and one horizontally, the adjacent cell in the vertical direction must be empty; likewise for horizontal moves. Additionally, non-promoted pieces cannot move backwards. For example, the first move of a game must be to take a piece in the second row and move it two vertically and one horizontally. The pieces in the back row can't move at all because the pieces in the second row are in the way, and the pieces in the second row can't move two horizontally because they block each other. Enemy pieces are captured and removed from the game by landing on them. Captures are mandatory, and as in checkers the capturing piece may make multiple captures in the same turn. When a piece reaches the opposite side, it is promoted and gains the ability to move backwards. A player wins by returning a promoted piece to his first row, or by capturing all his opponent's pieces.

Daggers: This is a game with unequal forces. Player 1 has more pieces, but player 2's pieces are more powerful, at least at first. Each player has two "crowns", represented by two stacked pieces, and several "daggers", represented by single pieces. A player wins by either capturing one of his opponent's crowns, or by moving one of his crowns to the opposite side of the board. Crowns move and capture one cell in any direction, like chess kings. Daggers can slide any number of squares down (towards the bottom of the board), either straight down or diagonally down. They may also move one cell up or diagonally up. This makes daggers at high positions more valuable since they can move further. A dagger can capture an enemy dagger or crown when moving diagonally, and can capture crowns (but not daggers) when moving vertically.

Fianco: The object is to move one of your pieces to the last row. A piece moves one cell either forward or sideways. A piece may capture an enemy piece by jumping diagonally forward over it, landing in the next cell (which must be empty). Captures are mandatory, and there are no multiple captures.

Diagonals: The object of the game is to achieve the highest score by completing diagonal lines. Each turn, each player drops a piece on an empty cell. If that piece forms a diagonal line of pieces from one edge of the board to another, the player scores points equal to the number of his own pieces in that line. Note that a single piece can complete two diagonal lines at once. The game ends when all cells are filled, and the player with the highest score wins.

Photonic Attack: Each turn, a player "fires" a piece from one of the board edges, which travels until it hits the other edge or another piece. To make a move, click on the cell where the fired piece would end. After a piece is placed, all enemy pieces in a horizontal or vertical line starting from the new piece are captured and converted to the new piece's color. The game is over when no more moves are possible (you can't fire a piece from an edge if the edge cell is occupied), and the player who owns the most pieces is the winner.

Dominion: This game is a combination of Ataxx and Reversi. Moves are the same as Ataxx; you can create a new piece in an empty cell adjacent to one of your existing pieces, or jump one of your pieces two cells to an empty cell. Also as in Ataxx, any opposing pieces adjacent to the destination cell are captured. Like Reversi, all opposing pieces that are in a line between the moved piece and another of your pieces are also captured. The game is over when the board is full and the winner is the player with the most pieces.

Tonga: The object of this game is to score points by arranging your pieces in large groups. Each move consists of simultaneously placing one of your pieces and one of your opponent's pieces on adjacent empty cells. To make a move, first click on the cell you want your piece to go, then on a neighboring cell where you want your opponent's piece to go. Each player's score is determined by their three largest groups of connected pieces. Only horizontal and vertical connections count; diagonals don't. A player's score is the sum of the squares of the sizes of her three largest connected groups. For example, if you have groups of 8, 6, 5, and 3, your score would be (8*8)+(6*6)+(5*5)=125. The game is over when no more moves are possible, and the highest score wins.

Think Ahead: The board is randomly filled with positive and negative numbers, and a single black ball. Player 1 moves the ball horizontally, and player 2 moves the ball vertically. Each turn, each player moves the ball to a cell with a number in it. That number is removed from the board and added to the player's score. The game is over when a player cannot move (because all the cells in the ball's row or column have been used), and the highest score wins.

Sabotage: The object of this game is to capture the "ball" in the middle of the board and deliver it to the goal. Each turn, a player moves one of her pieces. Pieces move in a straight line horizontally, vertically, or diagonally, and move a number of cells equal to the total number of all pieces (friendly and opposing) in the starting column. Pieces may capture and remove opposing pieces by landing on them, and may pick up the ball by landing on it. Pieces may not jump over friendly or opposing pieces when moving. If a piece captures an opposing piece which was carrying the ball, the capturing piece takes the ball. A player wins by moving her piece carrying the ball into her goal, which is designated by being shaded in her piece's colors.

Ambivalence: The object of the game is to "capture" opposing pieces and turn them into walls. Each turn, a player drops a piece into any empty cell. If the new piece traps an opposing piece between it and another friendly piece, the opposing piece is captured and turns into a wall. Also, if the new piece is placed between two opposing pieces, *both* opposing pieces become walls. The game is over when the board is full, and the player with the most pieces wins.

Fusion: Each player starts owning two pieces called "atoms". Several "protons" (small red circles) are placed randomly on the board. Protons are the only pieces that move. Each turn, a player moves a proton any number of empty cells horizontally, vertically, or diagonally. The ending cell must be adjacent to at least one atom (owned by either player). The proton changes itself and any adjacent protons and atoms into atoms owned by the current player. When all protons are gone, the player with the most atoms wins.

### Network Play

To host a network game, select "Host Network Game" from the Gridlock menu. A window will appear allowing you to select the game and variation (if applicable) that you wish to play. If you want to restrict who can join your game, you may enter a password in the "Password" text field. Anyone attempting to join your game must provide this password or they will be unable to connect. (Obviously, do not use any of your real passwords). The "Port" field should usually be left at the default value of 27500; change it only if you get an error when attempting to host. The "Username" field is the name you will be identified as to your opponent. The default is your user account name, but you can change it to anything. To begin hosting, click the "Host" button. The game will automatically begin when someone connects to your computer. Close the window or click the Stop button to stop waiting for connections.

To join a network game, select "Join Network Game" from the Gridlock menu. Enter the hostname or IP address of the computer you wish to connect to in the "Address" field, and change the port number if the computer is not using the default of 27500. If your machine supports Rendezvous and one or more Rendezvous-enabled machines are hosting games on your local network, you will see a popup menu listing all of them. To connect to one of them, select the "Rendezvous" radio button and choose the game you want to join from the popup menu. If the game you are joining requires a password, enter it in the "Password" field. The "Username" field has the same purpose as when hosting, to identify you to your opponent. Once you have manually entered an address or selected a Rendezvous host, click the "Connect" button to connect to the selected machine. If the connection is successfully established, the game will begin immediately.

When a network game begins, a drawer will open from the game window allowing you to chat with your opponent. To send a message, type into the text field at the top of the drawer and press the Return key. Game moves are made in the same way as when playing against a computer opponent. Either player may restart the game or start a different game and/or variation. The player who initially hosted the game is always player 1, and the player who connected is player 2. When playing against a network opponents, the popup menu next to their player labels will have "Network" selected. Changing either player's type will end the network game and disconnect. You can also disconnect from a network game using the "Disconnect" button in the network drawer.

### Tip Jar

Gridlock is completely free, but if you find it useful you can support its development by:

- Donating via PayPal
- Signing up for a pokerroom.com account using this link. Pokerroom.com is an excellent Mac-friendly poker site, where you can play Texas Hold'em and other games for real or play money.

  ### Version History

  1.10, Nov 26 2005

  - Added 6 new games.
  - Built as universal binary for PowerPC and Intel processors. (Intel version is completely untested; if you have access to OS X for x86 let me know how it runs).
  - Fixed display bugs when user interface scaling is active in Tiger.

  1.9, Aug 14 2004

  - Added 11 new games.
  - Added random starting positions and other variations for several games.
  - The application UI no longer hangs when the computer opponent is considering a move.
  - Improved performance and use of multiple processors.

  1.8, Sep 28 2003

  - Added Hexapawn, Quad Wrangle, Cats & Dogs, and Moray Eels games.
  - Implemented alpha-beta search algorithm for computer opponents, greatly improving performance.
  - Added harder computer opponents for several games.
  - New icon.
  - Miscellaneous interface improvements.

  1.7, Aug 10 2003

  - Added Gravity and Zonesh games.
  - Computer opponents are faster and use multiple processors more effectively.
  - Checkers no longer ends in a tie after 100 moves without capture; Connect Four is now the correct 6x7 size.

  1.6.1, Jul 1 2003

  - Computer opponents are much faster and take advantage of multiple processors. (Thanks to the Apple engineers at WWDC for their assistance).
  - Minor bug fixes

  1.6, Jun 15 2003

  - Added Life game
  - Improved speed of computer opponents
  - Many bug fixes
  - GNUstep version synced

  1.5, Apr 27 2003

  - Added network support
  - Added saving and loading of games
  - Added statistics drawer
  - Added indicator for previous move

  1.3, Nov 16 2002

  - Added Checkers game
  - Added undo and redo of moves
  - Minor bug fixes

  1.2, Aug 25 2002

  - Game pieces can be bitmap images
  - More configurations added
  - Game window is resizeable and remembers its position
  - Pass button is enabled and disabled as appropriate
  - Drawing methods optimized
  - Application builds and runs under GNUstep

  1.1, Jul 20 2002

  - Added Breakthrough and Glass Bead games
  - Added multiple starting configurations for several games
  - Improved speed and skill of computer opponents
  - Redesigned UI to use a single window
  - Added cell highlighting when mouse moves over a legal position

  1.0, Apr 2 2002: initial release

  ### Feedback

  Contact me with any bug reports, comments, or suggestions at brian@dozingcatsoftware.com.

  ### License

  > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

  > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

  > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

  Gridlock contains code from the EDCommon framework, which is Copyright (c) 1997-2001 by Erik Doernenburg. The following applies to such code:

  > Permission to use, copy, modify and distribute this software and its documentation is hereby granted, provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works or modified versions, and any portions thereof, and that both notices appear in supporting documentation, and that credit is given to Erik Doernenburg in all documents and publicity pertaining to direct or indirect use of this code or its derivatives.

  > THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE OR OF ANY DERIVATIVE WORK.