Added BattleShips
This commit is contained in:
parent
9e8f5d6c5e
commit
231c991d98
70
Battleships/README.md
Normal file
70
Battleships/README.md
Normal file
@ -0,0 +1,70 @@
|
||||
# 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.
|
||||
|
||||
See the ``*.txt`` files for more information.
|
||||
|
||||
## 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.
|
||||
|
1251
Battleships/bs.c
Normal file
1251
Battleships/bs.c
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Battleships/bs.com
Normal file
BIN
Battleships/bs.com
Normal file
Binary file not shown.
38
Battleships/esr.txt
Normal file
38
Battleships/esr.txt
Normal file
@ -0,0 +1,38 @@
|
||||
BS 2.0
|
||||
|
||||
Battleships is an intrinsically silly game, but I couldn't resist fixing this
|
||||
sucker. It now has a purely visual interface (you place ships and call for
|
||||
shots by moving the cursor around the board using the standard yuhjklbn keys).
|
||||
|
||||
The default game now disallows placement of ships so that they touch. A new
|
||||
-c option is available to force the older behavior.
|
||||
|
||||
I also removed the `seemiss' option (now always on) and `ask' (which is only
|
||||
useful for cheating). And I ifdefed out the ditsy opening screen; if you want
|
||||
it back, compile with -DPENGUIN. One strike against featureitis...
|
||||
|
||||
The code now lints as clean as the broken SysV curses lint library will let it.
|
||||
|
||||
Some #ifdefs in the code should result in the right things being done for
|
||||
BSD or USG systems. They key off A_UNDERLINE. If you're using the Linux
|
||||
ncurses library, tell the makefile.
|
||||
|
||||
This was probably a waste of a day or so. But what the hack -- rewriting the
|
||||
strategy robot as an FSM was fun, and maybe the interface will set a good
|
||||
example for the next guy.
|
||||
|
||||
<*** FLAME ON ***>
|
||||
|
||||
People who write termcap games that require you to enter #@!!#$! coordinates
|
||||
rather than doing the natural pick-and-place with cursor motions should be
|
||||
stuffed in suits and condemned to write COBOL for the rest of their days...
|
||||
|
||||
<*** FLAME OFF ***>
|
||||
|
||||
O.K., I feel better now that I've got that off my chest...
|
||||
|
||||
November 1993: I've added function key support, and ANSI/POSIXized the code.
|
||||
|
||||
Eric S. Raymond
|
||||
esr@snark.thyrsus.com
|
||||
(WWW: http://www.ccil.org/~esr/home.html)
|
70
Battleships/readme.txt
Normal file
70
Battleships/readme.txt
Normal file
@ -0,0 +1,70 @@
|
||||
This is a version of Battleships played on a 10x10 grid, with you
|
||||
playing against the computer. There's a reasonable amount of onscreen
|
||||
help, so you should be able to figure out how to work it pretty
|
||||
quickly.
|
||||
|
||||
It's a port of a Unix curses version hacked by a few different people.
|
||||
A formatted version of the man page (documentation) is given below,
|
||||
and the 'readme' from the last person to hack it is in 'esr.txt'.
|
||||
|
||||
-Rus.
|
||||
|
||||
|
||||
BATTLESHIPS(6) BATTLESHIPS(6)
|
||||
|
||||
NAME
|
||||
bs - battleships game
|
||||
|
||||
SYNOPSIS
|
||||
bs [ -b | -s ] [ -c ]
|
||||
|
||||
DESCRIPTION
|
||||
This program allows you to play the familiar Battleships
|
||||
game against the computer on a 10x10 board. The interface
|
||||
is visual and largely self-explanatory; you place your
|
||||
ships and pick your shots by moving the cursor around the
|
||||
`sea' with the rogue/hack motion keys hjklyubn. If your
|
||||
UNIX has a modern (non-BSD) curses, your arrow keys will
|
||||
also work.
|
||||
|
||||
Note that when selecting a ship to place, you must type
|
||||
the capital letter (these are, after all, capital ships).
|
||||
During ship placement, the `r' command may be used to
|
||||
ignore the current position and randomly place your cur-
|
||||
rently selected ship. The `R' command will place all
|
||||
remaining ships randomly. The ^L command (form feed, ASCII
|
||||
12) will force a screen redraw).
|
||||
|
||||
The command-line arguments control game 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.
|
||||
|
||||
Normally, ships must be separated by at least one square
|
||||
of open water. The -c option disables this check and
|
||||
allows them to close-pack.
|
||||
|
||||
The algorithm the computer uses once it has found a ship
|
||||
to sink is provably optimal. The dispersion criterion for
|
||||
the random-fire algorithm may not be.
|
||||
|
||||
AUTHORS
|
||||
Originally written by one Bruce Holloway in 1986. Salvo
|
||||
mode added by Chuck A. DeGaul (cbosgd!cad). Visual user
|
||||
interface, `closepack' option, code rewrite and manual
|
||||
page by Eric S. Raymond <esr@snark.thyrsus.com> August
|
||||
1989. Keypad support and ANSI/POSIX conformance, November
|
||||
'93. See http://www.ccil.org/~esr/home.html for updates,
|
||||
also other software and resources by ESR.
|
||||
|
||||
Nov 15 1993 1
|
Loading…
Reference in New Issue
Block a user