# Battleships

CP/M port of the Unix game.

Copyright:
 * bs.c - original author: Bruce Holloway
 *              salvo option by: Chuck A DeGaul
 * with improved user interface, autoconfiguration and code cleanup
 *              by Eric S. Raymond <esr@snark.thyrsus.com>
 * v1.2 with color support and minor portability fixes, November 1990
 * v2.0 featuring strict ANSI/POSIX conformance, November 1993.
 * v2.1 for Linux, October 1994.
 * Slipstreamed in fixes to make it gcc -Wall clean, May '95.
 * fairly seriously hacked for Hitech C and CP/M, rjm 95/8/14
 
I found it as part of the ZCN repository: https://github.com/jamesots/zcn

The C source has been modified for VT100 compatibility and some minor
changes have been made by me (Anna Christina Naß <acn@acn.wtf>.

bs.com is the compiled binary.

## Modes

* -b selects a "blitz" variant
* -s selects a "salvo" variant
* -c permits ships to be placed adjacently

The "blitz" variant allows a side to shoot for as long as
it continues to score hits.

The "salvo" game allows a player one  shot  per  turn  for
each  of his/her ships still afloat.  This puts a premium
scoring hits early and knocking out some ships   and  also
makes  much harder the situation where you face a superior
force with only your PT-boat.

## Keys

To position your ships: move the cursor to a spot, then type the first
letter of a ship (using CAPITAL letters) type to select it, then type a
direction ([hjkl] or [4862]),
indicating how the ship should be pointed.
You may also type a ship letter followed by r to position it randomly,
or type `R' to place all remaining ships randomly.

Navigation and aiming keys:

    yz k u    7 8 9
      \|/      \|/
     h-+-l    4-+-6
      /|\      /|\
     b j n    1 2 3

| Key   | Action                   | Key       | Action                   |
| ----- | ------------------------ | --------- | ------------------------ | 
| h / 4 | move left                | y / z / 7 | move up+left             |
| l / 6 | move right               | b / 1     | move down+left           |
| j / 2 | move down                | u / 9     | move up+right            |
| k / 8 | move up                  | n / 3     | move down+right          |
| r     | place this ship randomly | R         | place all ships randomly |
| ^L    | screen redraw            | Q         | quit game                |

## Compiling

HiTech C has been used to compile it, but it needs a lot of free memory (TPA).

For compiling, I used the command c bs.c in CP/M.

