Herramientas de usuario

Herramientas del sitio


es:office_battleships

OFFICE BATTLESHIPS

Ficha

Autor John Filsak
Computadora Amstrad PCW 8256 / 8512 / 9512
Año 1988
Género Tablero
Controles Teclado
Lenguajes Inglés
Estado Preservado

Capturas

Descripción

Son las cuatro y media de la tarde de un viernes en el corazón de un ajetreado centro de la ciudad. Usted, el jefe de una gran empresa comercial, tiende a aburrirse bastante simplemente sentado allí contando los clips de papel, por lo que su alegría es abrumadora cuando llega un mensaje a través de su máquina de télex.

El mensaje dice:

Estimado,

¿Estarías interesado en un pequeño juego conmigo para pasar el rato? ¿horas? Si es así, encienda su computadora e inicie sesión en el mainframe de su empresa: área de usuario 1K97.

Atentamente, A. Rival.

Después de haber seguido estas instrucciones, ahora está sentado frente a la terminal de su computadora e inició sesión. La pantalla muestra dos cuadrículas y se le indica que ingrese las ubicaciones de varios muebles de su oficina. Solo ahora te das cuenta de que estás jugando a una versión del juego Battleships, y tu oponente comienza el juego dándote una referencia de cuadrícula y preguntándote si anotó un acierto o un error.

Si es un acierto, se le pedirá que ingrese un valor correspondiente al acierto del mueble. Una vez hecho esto, o si su oponente falló, se le pide que ingrese una referencia de cuadrícula para intentar golpear el equipo de su adversario. La computadora central, que realiza un seguimiento del juego, le informará si se anotó un golpe.

El juego continúa hasta que una de las oficinas está completamente vacía y se anuncia el ganador. Sin embargo, tenga cuidado, el mainframe detendrá el juego si hace trampa.

Listado

  • Listado - OFFICEBA.BAS
10 REM        Office Battleships
20 REM          by John Filsak
30 REM (c) Computing with the Amstrad 
40 REM ------------ PCW -------------
50 RANDOMIZE PEEK(64504!):e$=CHR$(27):cls$=e$+"E"+e$+"H":ron$=e$+"p":rof$=e$+"q"
60 uon$=e$+"r":DEFINT a-z:uof$=e$+"u" 
70 cof$=e$+"f":con$=e$+"e"
80 DEF FNat$(x,y)=e$+"Y"+CHR$(x+32)+CHR$(y+32)
90 DIM h(6),h1(6),a$(6),p0$(9,9),p1$(9,9),p2$(9,9),p3$(9,9),na$(6)
100 GOSUB 1740:PRINT cof$:k=1:WHILE k=1 
110 PRINT cls$;ron$;" OFFICE-BATTLESHIPS "rof$;" Please wait while I arrange my furniture."
120 GOSUB 1790:GOSUB 180:GOSUB 630 
130 GOSUB 350:GOSUB 840:GOSUB 1860 
140 PRINT FNat$(30,0);"Play again? Y/N"
150 ans$="YN":GOSUB 1840
160 WEND:PRINT cls$;con$:END
170 REM Opponent's furniture
180 FOR a=6 TO 0 STEP-1:z=(RND*2)+1 
190 ON z GOSUB 210,280:NEXT:RETURN 
200 REM Vertical
210 x=(RND*10)-a:IF x<0 THEN 210 
220 y=(RND*9):b=0
230 IF x+b>9 THEN 210
240 IF p0$(x+b,y)="L" OR p0$(x+b,y)="P" OR p0$(x+b,y)="D" OR p0$(x+b,y)="T" OR p0$(x+b,y)="F" OR p0$(x+b,y)="C" THEN 210
250 b=b+1:IF b<=a THEN 230
260 FOR c=0 TO a:p0$(x+c,y)=a$(a):NEXT:RETURN
270 REM Horizontal
280 y=(RND*10)-a:IF y<0 THEN 280 
290 x=(RND*9):b=0
300 IF y+b>9 THEN 280
310 IF p0$(x,y+b)="L" OR p0$(x,y+b)="P" OR p0$(x,y+b)="D" OR p0$(x,y+b)="T" OR p0$(x,y+b)="F" OR p0$(x,y+b)="C" THEN 280 
320 b=b+1:IF b<=a THEN 300
330 FOR c=0 TO a:p0$(x,y+c)=a$(a):NEXT:RETURN
340 REM Players furniture
350 PRINT FNat$(17,0);"My furniture is in position."
360 PRINT:PRINT"Now you position yours." 
370 PRINT:PRINT"Press a key to continue.":WHILE INKEY$="":WEND
380 FOR a=6 TO 0 STEP-1:GOSUB 1820
390 PRINT FNat$(17,0);"Where would you like to position your ";na$(a);" (";
400 FOR z=0 TO a:PRINT a$(a);:NEXT:PRINT")?":PRINT "X co-ordinate (0 to 9) ?";
410 GOSUB 1830:x=k-1:PRINT x
420 PRINT"Y co-ordinate (0 to 9) ?"; 
430 GOSUB 1830:y=k-1:PRINT y
440 IF a>0 THEN PRINT"Horizontal or Vertical ?";:ans$="HV":GOSUB 1840:PRINT MID$(ans$,k,1)
450 IF k=1 THEN 520
460 REM Vertical
470 b=0:IF x+a>9 THEN GOSUB 600:GOTO 390 
480 IF p1$(x+b,y)="L" OR p1$(x+b,y)="S" OR p1$(x+b,y)="D" OR p1$(x+b,y)="T" OR p1$(x+b,y)="F" OR p1$(x+b,y)="C" THEN GOSUB 600:GOTO 390
490 b=b+1:IF b<=a THEN 480
500 FOR c=0 TO a:p1$(x+c,y)=a$(a):NEXT:GOTO 560
510 REM Horizontal
520 b=0:IF y+a>9 THEN GOSUB 600:GOTO 390 
530 IF p1$(x,y+b)="L" OR p1$(x,y+b)="S" OR p1$(x,y+b)="D" OR p1$(x,y+b)="T" OR p1$(x,y+b)="F" OR p1$(x,y+b)="C" THEN GOSUB 600:GOTO 390
540 b=b+1:IF b<=a THEN 530
550 FOR c=0 TO a:p1$(x,y+c)=a$(a):NEXT 
560 FOR p=0 TO 9:FOR q=0 TO 9
570 IF p1$(p,q)<>"" THEN PRINT FNat$(13-p,4+q*2);p1$(p,q)
580 NEXT:NEXT:NEXT:GOSUB 1820
590 d$="Your":x=2:y=27:GOSUB 810:RETURN 
600 GOSUB 1820:PRINT FNat$(17,0);CHR$(7);"It won't fit there."
610 GOSUB 1860:RETURN
620 REM Draw grids
630 PRINT FNat$(0,0);ron$;SPC(89);rof$ 
640 title$="* * * O F F I C E - B A T T L E S H I P S * * *"
650 PRINT FNat$(0,(89-LEN(title$))/2);ron$;title$;rof$
660 PRINT FNat$(2,7);ron$;" YOUR OFFICE "rof$;
670 PRINT FNat$(8,0);"X";FNat$(15,13);"Y" 
680 FOR a=0 TO 9:PRINT FNat$(13-a,1);a 
690 PRINT FNat$(13-a,46);a
700 PRINT FNat$(14,3+a*2);a
710 PRINT FNat$(14,48+a*2);a
720 FOR b=0 TO 9
730 PRINT FNat$(13-a,4+b*2);":"
740 PRINT FNat$(13-a,49+b*2);":":NEXT:NEXT
750 PRINT FNat$(2,53);ron$;" MY OFFICE ";rof$
760 PRINT FNat$(8,45);"X";FNat$(15,58);"Y"
770 d$="My":x=2:y=72:GOSUB 810:RETURN
780 FOR a=0 TO 9:FOR b=0 TO 9
790 IF p0$(a,b)="" THEN PRINT FNat$(13-a,49+b*2);":" ELSE PRINT FNat$(13-a,49+b*2);p0$(a,b)
800 NEXT:NEXT:RETURN
810 PRINT FNat$(x,y);uon$;d$;" objects";uof$;FN at$(x+1,y);uon$;"not destroyed:";uof$
820 FOR g=0 TO 6:n$=na$(g):n$=UPPER$(LEFT$(n$,1))+RIGHT$(n$,LEN(n$)-1)
830 PRINT FNat$(x+g+4,y);n$:NEXT:RETURN 
840 REM Your go or opponent's go?
850 PRINT FNat$(16,0);
860 PRINT"Press a key":WHILE INKEY$="":WEND
870 go=0:empty=0:empty1=0:WHILE empty=0 AND empty1=0
880 go=go+1:IF go/2<>INT(go/2) THEN GOSUB 1190 ELSE GOSUB 950
890 WEND
900 IF empty=1 THEN PRINT FNat$(17,0);CHR$(7);"You have destroyed all my furniture. I surrender"
910 IF empty1=1 THEN PRINT FNat$(17,0);CHR$(7);"I have destroyed all your furniture. You have lost.":GOSUB 1860
920 PRINT:PRINT"Would you like to see where all furniture was ? (Y/N)":ans$="YN":GOSUB 1840:IF k=1 THEN GOSUB 780
930 RETURN
940 REM Your go
950 PRINT:PRINT"Type the co-ordinates of the spot you want to blast."
960 PRINT"X co-ordinate (0-9) ?";:GOSUB 1830:x=k-1:PRINT x
970 PRINT"Y co-ordinate (0-9) ?";:GOSUB 1830:y=k-1:PRINT y
980 GOSUB 1820:empty$="":hit$=""
990 IF p2$(x,y)<>"" THEN PRINT FNat$(17,0);CHR$(7);"You have already tried that postion. Pick another.":GOTO 950
1000 p2$(x,y)=p0$(x,y)
1010 IF p2$(x,y)="" THEN p2$(x,y)="*":PRINT FNat$(17,0);"Missed!"
1020 FOR z=6 TO 0 STEP-1
1030 IF p2$(x,y)=a$(z) THEN hit$=na$(z):h(z)=h(z)-1
1040 NEXT
1050 IF hit$<>"" THEN PRINT FNat$(17,0);"You hit my ";hit$;".":GOSUB 1850
1060 FOR z=6 TO 0 STEP-1
1070 IF hit$=na$(z) AND h(z)=0 THEN PRINT CHR$(7):PRINT"You have destroyed my ";hit$".":empty$=UPPER$(LEFT$(hit$,1)):GOSUB 1850
1080 NEXT
1090 FOR i=0 TO 9:FOR j=0 TO 9
1100 IF empty$<>"" THEN IF p0$(i,j)=empty$ THEN p2$(i,j)="$"
1110 NEXT:NEXT
1120 IF empty$<>"" THEN PRINT FNat$(6+INSTR(initial$,empty$)-1,72);SPACE$(16) 
1130 FOR i=0 TO 9:FOR j=0 TO 9
1140 IF p2$(i,j)<>"" THEN PRINT FNat$(13-i,49+j*2);p2$(i,j)
1150 NEXT:NEXT
1160 IF h(6)=0 AND h(5)=0 AND h(4)=0 AND h(3)=0 AND h(2)=0 AND h(1)=0 AND h(0)=0 THEN GOSUB 1820:empty=1:RETURN
1170 GOSUB 1820:PRINT FNat$(17,0);"Now is my turn.":RETURN
1180 REM Opponent's go
1190 check=0:GOSUB 1580
1200 IF check=1 THEN GOSUB 1620:GOTO 1220
1210 xx=INT(RND*10):yy=INT(RND*10):IF p3$(xx,yy)<>"" THEN 1210
1220 PRINT:PRINT"I am aiming a shot at your grid position X";xx;", Y;yy
1230 PRINT:PRINT"Is it a hit or a miss? (H/M)"
1240 k=0:k$="":WHILE k=0 OR k$=""
1250 IF p1$(xx,yy)="" THEN PRINT FNat$(13-xx,4+yy*2);":":GOSUB 1850 ELSE PRINT FNat$(13-xx,4+yy*2);p1$(xx,yy):GOSUB 1850 
1260 IF p1$(xx,yy)="" THEN PRINT FNat$(13-xx,4+yy*2);ron$;":";rof$:GOSUB 1850 ELSE PRINT FNat$(13-xx,4+yy*2);ron$;p1$(xx,yy);rof$:GOSUB 1850
1270 k$=UPPER$(INKEY$):k=INSTR("HM",k$):WEND:GOSUB 1820
1280 IF k=2 THEN c$="":PRINT"Please confirm: I have missed. (Y/N)":ans$="YN":GOSUB 1840:IF k=2 THEN GOSUB 1820:GOTO 1230 ELSE 1350
1290 IF k=1 THEN GOSUB 1380
1300 IF k=11 AND k1=7 THEN c$="":GOTO 1350
1310 IF k=11 THEN h1(k1)=h1(k1)-1
1320 IF k=12 THEN PRINT:PRINT"Have I hit or missed?  (H/M)":GOTO 1240
1330 IF c$="hit" THEN p3$(xx,yy)="#" :GOSUB 1480
1340 IF h1(k1)=0 THEN GOSUB 1510
1350 IF c$="" THEN p3$(xx,yy)="*":GOSUB 1480
1360 GOSUB 1820:IF empty1=0 THEN PRINT FNat$(17,0);"Now its your turn."
1370 RETURN
1380 c$="hit":PRINT"What have I hit?"
1390 FOR g=0 TO 7:IF g=7 THEN n$="nothing" ELSE n$=na$(g)
1400 n$=UPPER$(LEFT$(n$,1))+RIGHT$(n$,LEN(n$)-1)
1410 PRINT TAB(4)g+1;") ";n$:NEXT
1420 PRINT "Type the number corresponding to the vessel I have hit. ";
1430 ans$="12345678":GOSUB 1840:k1=k-1:GOSUB 1820
1440 IF k=8 THEN PRINT FNat$(17,0);"Please confirm: I have missed.  (Y/N)"
1450 IF k<8 THEN IF h1(k1)=0 THEN PRINT CHRS(7)"Don't be daft. Your ";na$(k1);" is at the bottom of the sea!":GOSUB 1860:GOSUB 1820:GOTO 1380
1460 IF k<8 THEN PRINT FNat$(17,0);"Please confirm: I have hit your ";na$(k1)". (Y/N)"
1470 ans$="YN":GOSUB 1840:k=k+10:RETURN 
1480 FOR p=0 TO 9:FOR q=0 TO 9
1490 IF p3$(p,q)<>"" THEN PRINT FNat$(13-p,4+q*2);p3$(p,q)
1500 NEXT:NEXT:RETURN
1510 PRINT FNat$(20,0);CHR$(7);"I have destroyed your ";na$(k1)
1520 down=0:FOR i=0 TO 9:FOR j=0 TO 9 
1530 IF p1$(i,j)=a$(k1) THEN p3$(i,j)="$"
1540 NEXT:NEXT
1550 PRINT FNat$(6+k1,27);SPACE$(16):GOSUB 1480
1560 IF h1(0)=0 AND h1(1)=0 AND h1(2)=0 AND h1(3)=0 AND h1(4)=0 AND h1(5)=0 AND h1(6)=0 THEN GOSUB 1820:empty1=1
1570 RETURN
1580 FOR i=0 TO 9:FOR j=0 TO 9
1590 IF p3$(i,j)="#" THEN check=1:RETURN 
1600 NEXT:NEXT:RETURN
1610 REM Calculate move after hit scored 
1620 IF down=1 THEN 1700
1630 IF j+1<10 THEN xx=i:yy=j+1:IF p3$(xx,yy)="" THEN RETURN
1640 FOR t=2 TO 9:IF p3$(xx,yy)="#" AND xx=i THEN IF j+t<10 THEN yy=j+t:IF p3$(xx,yy)="" THEN RETURN
1650 NEXT
1660 IF j-1>=0 AND xx=i THEN yy=j-1:IF p3$(xx,yy)="" THEN RETURN
1670 IF i+1<10 THEN yy=j:xx=i+1:IF p3$(xx,yy)=""THEN RETURN
1680 FOR t=2 TO 9:IF p3$(xx,yy)="#" AND yy=j THEN IF i+t<10 THEN xx=i+t:IF p3$(xx,yy)="" THEN RETURN
1690 NEXT
1700 IF i-1>=0 THEN yy=j:xx=i-1:IF p3$(xx,yy)="" THEN down=1:RETURN
1710 PRINT FNat$(9,0);CHR$(7);ron$;"I can't find your furniture."
1720 PRINT " You must have made a mistake. Please start again.";rof$;con$:END 
1730 REM Assorted subroutines
1740 FOR a=0 TO 6:READ na$(a):NEXT
1750 initial$="HCFTDPL":FOR a=0 TO 6:a$(a)=MID$(initial$,a+1,1):NEXT:RETURN
1760 DATA hat stand,chair,filing cabinet 
1770 DATA telex machine,drinks cabinet 
1780 DATA photocopier,large oak desk 
1790 FOR a=0 TO 6:h(a)=a+1:h1(a)=a+1 
1800 NEXT:FOR a=0 TO 9:FOR b=0 TO 9
1810 p0$(a,b)="":p1$(a,b)="":p2$(a,b)="":p3$(a,b)="":down=0:NEXT:NEXT:RETURN 
1820 PRINT FNat$(17,0);e$+"J":RETURN
1830 ans$="0123456789"
1840 k=0:k$="":WHILE k=0 OR k$="":k$=UPPER$(INKEY$):k=INSTR(ans$,k$):WEND:RETURN 
1850 FOR temp=1 TO 800:NEXT:RETURN
1860 FOR temp=0 TO 2500:NEXT:RETURN

Controles

      A través de la información en pantalla.

Carga del programa

1.- Introducir el disco CP/M por la cara 2
2.- Escribir BASIC y esperar a que cargue
3.- Retirar el disco CP/M e introducir el disco que contiene el juego Office Battleships
4.- Teclear run "OFFICEBA" y pulsar la tecla "ENTER"

Extras

  • Listado del programa en revista de gran tirada de la época

office_battleships_01.jpg office_battleships_02.jpg office_battleships_03.jpg

Descarga

es/office_battleships.txt · Última modificación: 2022/06/30 00:23 por jevicac