Title: 2 Player Battleships
Version: 1.0
Author: Maverick - 106053.2370@compuserve.com
Size: 2500 bytes (approx)
Model: Fx7700 or better.
Description: Play Battleships on two calculators so
each player cannot see the others ships.
No leads required!!
__________________________________________________________________
Uses NUMBERS.TXT by Kim Hedin (slightly re-written).
INSTRUCTIONS
Put a copy of Battleships onto both calculators you will use.
Run the two Prog 1 files, and each player enters their ships.
Then each player will be given an encoded set of numbers.
- I.E.: TELL - 120061353
These should be typed into to the other calculator, at the
RESPONSE? request. You can now play, by calling your numbers
to each other as you fire. The rest is done by the calculators on
their own - no more silly codes or leads are needed.
COMMAND TRANSLATION
_ 'display' (SHIFT, 7, F5)
<> 'not equal to' (SHIFT, 7, F2, F2)
<= 'less than or equal to'(SHIFT, 7, F2, F6)
>= 'more than or equal to'(SHIFT, 7, F2, F5)
-> 'put in to'
=> 'then' (SHIFT, 7, F1, F1)
Ran# gives a random number. (SHIFT, 5, F2, F4)
/ divide
r Small r variable (ALPHA,Graph)
@ Theta variable (ALPHA,Range)
Lines beginning with # should be ignored.
I have used lower case text inside " and ' signs.
You must put them in in capitals on your calculator.
___________________________________________________________________
PROGRAM
Prog 1
'BattleShips
Defm 50:Fix 0:Mcl
" ~BATTLESHIPS~"
" "
"The Board is Numbered Like This:"_
Prog B:Prog C
" "_
"Place Your Ships"
"Ship 1"?->A[1]
"Ship 2"?->A[2]
"Ship 3"?->A[3]
"Ship 4"?->A[4]
"Ship 5"?->A[5]
Int (9Ran#+1)->X~Y
(A[1]*10*Y)+X->X
(A[2]*10000*Y)+X->X
(A[3]*10000000*Y)+X->X
"TELL:":X_
"RESPONSE"?->X
10(Frac (X/10))->Y
(X-Y)/10->X
1000(Frac (X/1000))->@
@/Y->F[1]
(X-@)/1000->X
1000(Frac (X/1000))->@
@/Y->F[2]
(X-@)/1000->X
X/Y->F[3]
Int (9Ran#+1)->X~Y
(A[4]*10*Y)+X->X
(A[5]*10000*Y)+X->X
"TELL:":X_
"RESPONSE"?->X
10(Frac (X/10))->Y
(X-Y)/10->X
1000(Frac (X/1000))->@
@/Y->F[4]
(X-@)/1000->X
X/Y->F[5]
Prog A
Prog A
'BS Turns
0->Z[1]~Z[45]
5->P~Q
"Are You Going"
"(1)st or (2)nd"?->L
L=2=>Goto 2
Lbl 1
Prog D
P=0=>Prog F
Lbl 2
Prog E
Q=0=>Prog G
Goto 1
Prog B
'BS Board
Range 0,72,99,0,40,99
Cls
Plot 72,0
Plot 72,40
Line
Plot 0,40
Line
Plot 8,0
Plot 8,40
Line
Plot 16,0
Plot 16,40
Line
Plot 24,0
Plot 24,40
Line
Plot 32,0
Plot 32,40
Line
Plot 40,0
Plot 40,40
Line
Plot 48,0
Plot 48,40
Line
Plot 56,0
Plot 56,40
Line
Plot 64,0
Plot 64,40
Line
Plot 0,8
Plot 72,8
Line
Plot 0,16
Plot 72,16
Line
Plot 0,24
Plot 72,24
Line
Plot 0,32
Plot 72,32
Line
Prog C
'BS Numbers
1->N:1->V:34->W
Lbl 1
Prog N
Isz N
V+8->V
N<=9=>Goto 1
10->N:1->V:26->W
Lbl 2
Prog N
N+9->N:W-8->W
V-4->V
W>=0=>Goto 2
45->N
2->W:65->V
Prog N
Prog D
'BS Shoot
" "
"Your Shot......."
Prog B
1->T
Lbl 1
T->X
Z[T]=1=>Prog I
Z[T]=1=>Prog J
Isz T
T<=45=>Goto 1
" "_
"Ships To Find:":Q_
" Fire At:"
"0-To See Numbers"?->X:X->R:X->@
X=0=>Prog B
X=0=>Prog C
X=0=>" "_
X=0=>Goto 0
1->Z[R]
Prog I
Plot V,W
Plot V+8,W+8
Line:1->S
Lbl 5
R=F[S]=>Goto 9
Lbl 4
Isz S
S<6=>Goto 5
Plot V+8,W
Plot V,W+8
Line_
" "
"MISS"
" "
Goto 7
Lbl 9
Prog H
0->F[S]
Q-1->Q
" "
"HIT!!"
" "
Lbl 7
Prog E
'BS Enemy
" "
"Return Fire"
Prog B:" "
1->S
Lbl 3
A[S]=0=>Goto 4
A[S]->X
Prog I
Prog H
Lbl 4
Isz S
S<6=>Goto 3
" Where Does The"
" Enemy Fire"?->X:X->R:1->S
Prog I
Plot V,W
Plot V+8,W+8
Line
Lbl 1
R=A[S]=>Goto 2
Lbl 6
Isz S
S<6=>Goto 1
Plot V+8,W
Plot V,W+8
Line_
" "
"MISS"
" "
Goto 8
Lbl 2
" "_
"HIT!!"
" "
P-1->P
0->A[S]
Lbl 8
Prog F
'BS Lose
" "
"No Ships Left..."
" "
" YOU"
" HAVE LOST"
Defm 0
Norm
Lbl 1:Goto 1
Prog G
'BS Win
" "
" YOU"
" HAVE WON!"
" "
"Good Shooting..."
Defm 0
Norm
Lbl 1:Goto 1
@@ Prog H ( )
'BS Ship
Plot V+2,W+3
Plot V+6,W+3
Line
Plot V+1,W+3.5
Plot V+7,W+3.5
Line
Plot V+3,W+4
Plot V+5,W+4
Line
Plot V+3,W+4.5
Plot V+5,W+4.5
Line
Prog I
'BS Locate
32->W:X->V
Lbl 5
V>9=>W-8->W
V>9=>V-9->V
V>9=>Goto 5
8V-8->V
Prog J
'BS Cross
Plot V,W
Plot V+8,W+8
Line
Plot V+8,W
Plot V,W+8
Line
Prog N
'Numbers
1->U
N->r
N>.1=>Int log N+1->U
Lbl 0
# (10^) is the small 10 sign (SHIFT-log)
Int (10Frac (r/(10^)U))->N
Prog O
U=1=>Goto 1
Dsz U
V+4->V
Goto 0
Lbl 1
r->N
Prog O
'NDraw
N=1=>Goto 1
N=2=>Goto 2
N=3=>Goto 3
N=4=>Goto 4
N=5=>Goto 5
N=6=>Goto 6
N=7=>Goto 7
N=8=>Goto 8
N=9=>Goto 9
Plot V,W
Plot V+2,W:Line
Plot V+2,W+4:Line
Plot V,W+4:Line
Plot V,W:Line
Goto 0
Lbl 1
Plot V+1,W
Plot V+1,W+4:Line
Goto 0
Lbl 2
Plot V+2,W
Plot V,W:Line
Plot V,W+2:Line
Plot V+2,W+2:Line
Plot V+2,W+4:Line
Plot V,W+4:Line
Goto 0
Lbl 3
Plot V,W
Plot V+2,W:Line
Plot V+2,W+4:Line
Plot V,W+4:Line
Plot V,W+2
Plot V+2,W+2:Line
Goto 0
Lbl 4
Plot V+2,W
Plot V+2,W+4:Line
Plot V+2,W+1:Line
Plot V,W+1:Line
Plot V,W+4:Line
Goto 0
Lbl 5
Plot V,W
Plot V+2,W:Line
Plot V+2,W+2:Line
Plot V,W+2:Line
Plot V,W+4:Line
Plot V+2,W+4:Line
Goto 0
Lbl 6
Plot V+2,W+4
Plot V,W+4:Line
Plot V,W:Line
Plot V+2,W:Line
Plot V+2,W+2:Line
Plot V,W+2:Line
Goto 0
Lbl 7
Plot V,W
Plot V+2,W+4:Line
Plot V,W+4:Line
Goto 0
Lbl 8
Plot V,W
Plot V+2,W:Line
Plot V+2,W+4:Line
Plot V,W+4:Line
Plot V,W:Line
Plot V,W+2:Line
Plot V+2,W+2:Line
Goto 0
Lbl 9
Plot V,W
Plot V+2,W:Line
Plot V+2,W+4:Line
Plot V,W+4:Line
Plot V,W+2:Line
Plot V+2,W+2:Line
Lbl 0
___________________________________________________________________
FURTHER NOTES
Anyone who wants to be clever could make this a one-player game
by disabling some of the code like the enemy Prog, and setting
up a counter to count the no. of shots it takes you to hit all
the other ships.
To win every time, tell your opponent 0460460461 and 0460461
to type in at the start, and he will never find your ships.
Any problems with the program, send me an email at:
Maverick - 106053.2370@compuserve.com
___________________________________________________________________