User Tools

Site Tools


en:othello_espanol
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


en:othello_espanol [2022/06/30 14:15] (current) – created jevicac
Line 1: Line 1:
 +====== OTHELLO ======
  
 +{{:otros:Othello_sp_p1.jpg?690|}}
 +
 +===== Info =====
 +^ Author | Angel Zarazaga |
 +^ Computer | Amstrad PCW 8256 / 8512 / 9512 |
 +^ Year | 1987 |
 +^ Gender | Table |
 +^ Controls | Keyboard |
 +^ Languages | Spanish |
 +^ State | [[preserved|Preserved]] |
 +
 +===== Screenshots =====
 +
 +{{:otros:Othello_sp_screenshot01.png?220}} {{:otros:Othello_sp_screenshot02.png?220}} {{:otros:Othello_sp_screenshot03.png?220}} {{:otros:Othello_sp_screenshot04.png?220}}
 +
 +===== Description =====
 +
 +It is an ancient game of logic and strategy known by the names of Othello or Reversi. This is a pretty strong game.
 +
 +The rules: The playing area of the board consists of an eight by eight grid on which the pieces are placed. These are black on one side and white on the other.
 +
 +The idea is to either remove the opponent's checkers, in which case the game ends at that point, or continue playing until the board is full and then decide who has won by simply counting how many checkers each has.
 +
 +To win chips from your opponent you must enclose them among yours. Once this is done, the encased tiles are turned over, so that they show your color.
 +
 +===== Listing =====
 +
 +   * **__Listing - OTHELLOS.BAS__**
 +
 +<file>
 +
 +10 ' *=================================*
 +20 ' * EL JUEGO DE 'OTHELLO', TAMBIEN  *
 +30 ' *    CONOCIDO COMO 'REVERSI'    *
 +40 ' *---------------------------------*
 +50 ' *     (C) Angel Zarazaga y        *
 +60 ' *          AMSTRAD USER           *
 +70 ' *            - 1987 -             *
 +80 ' *=================================*
 +90 '
 +100 ' ==================
 +110 ' PROGRAMA PRINCIPAL
 +120 ' ==================
 +130 GOSUB 210:' Inicializa el tablero
 +140 GOSUB 980:' Eleccion del jugador
 +150 GOSUB 1660:' Eleccion del ordenador
 +160 GOTO 140:' Bucle hasta el final del juego
 +170 '----------------------------------
 +180 '      INICIALIZA FUNCIONES Y
 +190 '            VARIABLES
 +200 '----------------------------------
 +210 DIM b$(8,8),n$(8),u$(7)
 +220 esc$=CHR$(27)
 +230 home$=esc$+"H"
 +240 cls$=esc$+"E"+home$
 +250 curon$=esc$+"e"
 +260 curoff$=esc$+"f"
 +270 beep$=CHR$(7)
 +280 fin$="FIN DEL JUEGO, GANA JESUS, ES UN MAQUINA, UN CAMPEON"
 +290 u$(1)="A1A8H1H8":u$(2)="A3C1F1H3H6F8C8A6"
 +300 u$(3)="D1E1H4H5E8D8A5A4":u$(4)="C3F3F6C6"
 +310 u$(5)="D3E3F4F5E6D6C5C4":u$(6)="C2D2E2F2G3G4G5G6F7E7D7C7B6B5B4B3"
 +320 u$(7)="A2B2B1G1G2H2H7G7G8B8B7A7"
 +330 DEF FNtab$(col%,fil%,texto$)=esc$+"Y"+CHR$(32+fil%)+CHR$(32+col%)+texto$
 +340 DEF FNbox$(k1%,k2%,k3%,k4%,k5%,k6%)=esc$+"Y"+CHR$(32+k2%)+CHR$(32+k1%)+CHR$(k3%)+STRING$(k4%,CHR$(k5%))+CHR$(k6%)
 +350 '----------------------------------
 +360 '       DIBUJA EL TABLERO
 +370 '----------------------------------
 +380 PRINT cls$;curoff$:FOR i%=1 TO 4
 +390 READ k%:q$(i%)=q$(i%)+CHR$(k%)
 +400 READ k%,a1%:p$=CHR$(k%)+CHR$(k%)+CHR$(k%)+CHR$(a1%)
 +410 FOR j%=1 TO 8:q$(i%)=q$(i%)+p$:NEXT j%
 +420 READ k%,k1%:p$=CHR$(k%)+CHR$(k%)+CHR$(k%)+CHR$(k1%)
 +430 q$(i%)=q$(i%)+p$:NEXT i%
 +440 PRINT FNtab$(26,6,q$(1))
 +450 FOR i%=7 TO 21 STEP 2:PRINT FNtab$(26,i%,q$(2))
 +460 PRINT FNtab$(26,i%+1,q$(3)):NEXT i%
 +470 PRINT FNtab$(26,23,q$(2)):PRINT FNtab$(26,24,q$(4))
 +480 DATA 150,154,158,154,156 
 +490 DATA 149,32,149,32,149
 +500 DATA 151,154,159,154,157
 +510 DATA 147,154,155,154,153
 +520 '-----------------------------------
 +530 '   NUMERA LOS EJES DEL TABLERO
 +540 '-----------------------------------
 +550 r$="ABCDEFGH-":c$="12345678 "
 +560 FOR i%=1 TO 9:PRINT FNtab$(24+(i%*4),7,MID$(r$,i%,1))
 +570 PRINT FNtab$(60,7+(i%*2),MID$(c$,i%,1)):NEXT i%
 +580 ' ---------------------------------
 +590 '      DIBUJA LOS MARCADORES
 +600 ' ---------------------------------
 +610 FOR i%=1 TO 23:READ k1%,k2%,k3%,k4%,k5%,k6%
 +620 PRINT FNbox$(k1%,k2%,k3%,k4%,k5%,k6%):NEXT i%
 +630 FOR i%=1 TO 7:READ col%,fil%,texto$
 +640 PRINT FNtab$(col%,fil%,texto$):NEXT i%
 +650 DATA 26,0,150,35,154,156,26,1,149,35,32,149,26,2,151,35,154,157
 +660 DATA 26,3,149,35,32,149,26,4,149,35,32,149,26,5,147,35,154,153
 +670 DATA 0,0,150,22,154,156,0,1,149,22,32,149,0,2,147,22,154,153
 +680 DATA 0,3,150,22,154,156,0,4,149,22,32,149,0,5,147,22,154,153
 +690 DATA 65,0,150,22,154,156,65,1,149,22,32,149,65,2,147,22,154,153
 +700 DATA 65,3,150,22,154,156,65,4,149,22,32,149,65,5,147,22,154,153
 +710 DATA 12,25,150,64,154,156,12,26,149,64,32,149,12,27,151,64,154,157
 +720 DATA 12,28,149,64,32,149,12,29,147,64,154,153
 +730 DATA 28,1,"* * * *   O T H E L L O   * * * *"
 +740 DATA 28,3,"programado para AMSTRAD USER por"
 +750 DATA 28,4,"         Angel Zarazaga           "
 +760 DATA 2,1,"Puntos jugador:",67,1,"Puntos ordenador:"
 +770 DATA 2,4,"¼ ¼ ¼ ¼      ¼ ¼ ¼ ¼",67,4,"» » » »      » » » »"
 +780 '----------------------------------
 +790 '      ]NIVEL DE DIFICULTAD?
 +800 '----------------------------------
 +810 PRINT FNtab$(14,26,STRING$(60," "))
 +820 PRINT FNtab$(14,26,curon$+beep$+"Nivel del juego (1:novato - 2:avanzado - 3:maestro)...");
 +830 LINE INPUT nivel$:nivel=VAL(nivel$):PRINT curoff$;
 +840 IF nivel<1 OR nivel>3 THEN 810
 +850 FOR i%=1 TO 8:FOR j%=1 TO 8:b$(i%,j%)=" ":NEXT j%:NEXT i%
 +860 IF nivel=1 THEN b$(1,1)="¼":b$(8,1)="¼":b$(1,8)="¼":b$(8,8)="¼"
 +870 IF nivel=3 THEN b$(1,1)="»":b$(8,1)="»":b$(1,8)="»":b$(8,8)="»"
 +880 b$(4,4)="¼":b$(5,4)="»":b$(4,5)="»":b$(5,5)="¼":GOSUB 1190
 +890 '-----------------------------------
 +900 ' DIBUJA LAS FICHAS EN EL TABLERO
 +910 '-----------------------------------
 +920 FOR i%=1 TO 8:FOR j%=1 TO 8
 +930 PRINT FNtab$((j%*4)+24,(i%*2)+7,b$(j%,i%));
 +940 NEXT j%:NEXT i%:RETURN
 +950 '-----------------------------------
 +960 '   MOVIMIENTO DEL JUGADOR HUMANO
 +970 '-----------------------------------
 +980 PRINT FNtab$(14,26,STRING$(60," "))
 +990 PRINT FNtab$(14,26,beep$+curon$+"Tu mueves (p.e. e3, f4, c5, etc.)...");:LINE INPUT mov$:PRINT curoff$
 +1000 PRINT FNtab$(14,28,STRING$(60," "))
 +1010 PRINT FNtab$(14,28,"Un momento...comprovando el movimiento...")
 +1020 l$=UPPER$(LEFT$(mov$,1)):r$=RIGHT$(mov$,1):mov$=l$+r$
 +1030 x%=INSTR("ABCDEFGH",l$):y%=INSTR("12345678",r$)
 +1040 IF x%=0 OR y%=0 THEN GOSUB 1130:GOTO 980
 +1050 t$=b$(x%,y%):IF t$<>" " THEN GOSUB 1130:GOTO 980
 +1060 b$(x%,y%)="x":flag%=0:x$="¼":y$="»":GOSUB 920:GOSUB 1320
 +1070 IF s%=0 THEN b$(x%,y%)=" ":GOSUB 1130:GOTO 980
 +1080 IF s%>0 THEN b$(x%,y%)=x$:GOSUB 920:GOSUB 1190
 +1090 RETURN
 +1100 '----------------------------------
 +1110 '       MOVIMIENTO ILEGAL
 +1120 '----------------------------------
 +1130 PRINT FNtab$(14,28,STRING$(60," "))
 +1140 FOR n=1 TO 3:PRINT beep$;:NEXT:PRINT FNtab$(14,28,"[Movimiento ilegal! - Prueba otra vez..."):RETURN
 +1150 '----------------------------------
 +1160 ' CALCULO E IMPRESION DE PUNTOS.
 +1170 ' COMPRUEBA EL FINAL DEL JUEGO.
 +1180 '----------------------------------
 +1190 sc1%=0:sc2%=0:FOR i%=1 TO 8:FOR j%=1 TO 8
 +1200 IF b$(j%,i%)="¼" THEN sc1%=sc1%+1
 +1210 IF b$(j%,i%)="»" THEN sc2%=sc2%+1
 +1220 NEXT j%:NEXT i%
 +1230 PRINT FNtab$(19,1,STR$(sc1%)+" ")
 +1240 PRINT FNtab$(84,1,STR$(sc2%)+" ")
 +1250 IF x$="¼" THEN PRINT FNtab$(11,4,mov$)
 +1260 IF x$="»" THEN PRINT FNtab$(76,4,mov$)
 +1270 IF sc1%+sc2%=64 THEN FOR n=1 TO 7:PRINT beep$;:NEXT n:PRINT FNtab$(14,28,STRING$(60," ")):PRINT FNtab$(14,28,fin$+curon$):RUN "MENU"
 +1280 RETURN
 +1290 '---------------------------------
 +1300 ' VERIFICACION DE LOS MOVIMIENTOS
 +1310 '---------------------------------
 +1320 FOR i%=1 TO 8:n$(i%)="":NEXT i%
 +1330 IF y%>=3 THEN FOR i%=y% TO 1 STEP -1:n$(1)=n$(1)+b$(x%,i%):NEXT i%
 +1340 IF x%<=6 AND y%>=3 AND y%>9-x% THEN FOR i%=0 TO 8-x%:n$(2)=n$(2)+b$(x%+i%,y%-i%):NEXT i%:ELSE IF y%<=9-x% THEN FOR i%=0 TO y%-1:n$(2)=n$(2)+b$(x%+i%,y%-i%):NEXT i%
 +1350 IF x%<=6 THEN FOR i%=x% TO 8:n$(3)=n$(3)+b$(i%,y%):NEXT i%
 +1360 IF x%<=6 AND y%<=6 AND x%<y% THEN FOR i%=0 TO 8-y%:n$(4)=n$(4)+b$(x%+i%,y%+i%):NEXT i%:ELSE IF x%>=y% THEN FOR i%=0 TO 8-x%:n$(4)=n$(4)+b$(x%+i%,y%+i%):NEXT i%
 +1370 IF y%<=6 THEN FOR i%=y% TO 8:n$(5)=n$(5)+b$(x%,i%):NEXT i%
 +1380 IF x%>=3 AND y%<=6 AND x%>9-y% THEN FOR i%=0 TO 8-y%:n$(6)=n$(6)+b$(x%-i%,y%+i%):NEXT i%:ELSE IF x%<=9-y% THEN FOR i%=0 TO x%-1:n$(6)=n$(6)+b$(x%-i%,y%+i%):NEXT i%
 +1390 IF x%>=3 THEN FOR i%=x% TO 1 STEP -1:n$(7)=n$(7)+b$(i%,y%):NEXT i%
 +1400 IF x%>=3 AND y%>=3 AND x%<y% THEN FOR i%=0 TO x%-1:n$(8)=n$(8)+b$(x%-i%,y%-i%):NEXT i%:ELSE IF x%>=y% THEN FOR i%=0 TO y%-1:n$(8)=n$(8)+b$(x%-i%,y%-i%):NEXT i%
 +1410 '
 +1420 s%=0:t%=0:FOR j%=1 TO 8
 +1430 a%=INSTR(n$(j%),x$):b%=INSTR(n$(j%),y$):c%=INSTR(n$(j%)," ")
 +1440 IF c%=0 THEN c%=9
 +1450 IF a%=0 OR b%=0 OR a%<b% OR c%<a% OR c%<b% THEN 1600
 +1460 IF j%>=1 AND j%<=4 THEN k%=j%+4
 +1470 IF j%>=5 AND j%<=8 THEN k%=j%-4
 +1480 IF MID$(n$(j%),a%+1,1)=" " AND MID$(n$(k%),2,1)=y$ THEN t%=t%+a%
 +1490 IF MID$(n$(j%),a%+1,1)=y$ AND MID$(n$(k%),2,1)=" " THEN t%=t%+a%
 +1500 FOR k%=2 TO a%-1:s%=s%+1:MID$(n$(j%),k%,1)=x$:NEXT k%
 +1510 IF flag%=1 THEN 1600
 +1520 IF j%=1 THEN d%=0:FOR i%=y% TO 1 STEP-1:d%=d%+1:b$(x%,i%)=MID$(n$(1),d%,1):NEXT i%
 +1530 IF j%=2 AND y%>9-x% THEN FOR i%=0 TO 8-x%:b$(x%+i%,y%-i%)=MID$(n$(2),i%+1,1):NEXT i%:ELSE IF y%<=9-x% THEN FOR i%=0 TO y%-1:b$(x%+i%,y%-i%)=MID$(n$(2),i%+1,1):NEXT i%
 +1540 IF j%=3 THEN d%=0:FOR i%=x% TO 8:d%=d%+1:b$(i%,y%)=MID$(n$(3),d%,1):NEXT i%
 +1550 IF j%=4 AND x%<y% THEN FOR i%=0 TO 8-y%:b$(x%+i%,y%+i%)=MID$(n$(4),i%+1,1):NEXT i%:ELSE IF x%>=y% THEN FOR i%=0 TO 8-x%:b$(x%+i%,y%+i%)=MID$(n$(4),i%+1,1):NEXT i%
 +1560 IF j%=5 THEN d%=0:FOR i%=y% TO 8:d%=d%+1:b$(x%,i%)=MID$(n$(5),d%,1):NEXT i%
 +1570 IF j%=6 AND x%>9-y% THEN FOR i%=0 TO 8-y%:b$(x%-i%,y%+i%)=MID$(n$(6),i%+1,1):NEXT i%:ELSE IF x%<=9-y% THEN FOR i%=0 TO x%-1:b$(x%-i%,y%+i%)=MID$(n$(6),i%+1,1):NEXT i%
 +1580 IF j%=7 THEN d%=0:FOR i%=x% TO 1 STEP -1:d%=d%+1:b$(i%,y%)=MID$(n$(7),d%,1):NEXT i%
 +1590 IF j%=8 AND x%<y% THEN FOR i%=0 TO x%-1:b$(x%-i%,y%-i%)=MID$(n$(8),i%+1,1):NEXT i%:ELSE IF x%>=y% THEN FOR i%=0 TO y%-1:b$(x%-i%,y%-i%)=MID$(n$(8),i%+1,1):NEXT i%
 +1600 NEXT j%:RETURN
 +1610 '
 +1620 '---------------------------------
 +1630 '    CALCULA EL MOVIMIENTO DEL
 +1640 '            ORDENADOR
 +1650 '---------------------------------
 +1660 PRINT FNtab$(14,26,STRING$(60," ")):PRINT FNtab$(14,28,STRING$(60," "))
 +1670 PRINT FNtab$(14,26,beep$+"Me toca a mi...no te impacientes...")
 +1680 d%=0:g%=0:h%=-60:FOR r%=1 TO 7:FOR w%=1 TO LEN(u$(r%)) STEP 2
 +1690 d%=d%+1:PRINT FNtab$(13+d%,28,"*"):mov$=MID$(u$(r%),w%,2)
 +1700 l$=LEFT$(mov$,1):r$=RIGHT$(mov$,1)
 +1710 x%=INSTR("ABCDEFGH",l$):y%=INSTR("12345678",r$)
 +1720 t$=b$(x%,y%):IF t$<>" " THEN 1760
 +1730 b$(x%,y%)="o":flag%=1:x$="»":y$="¼":GOSUB 1320
 +1740 IF s%-t%>h% THEN h%=s%-t%:g%=w%
 +1750 b$(x%,y%)=" "
 +1760 NEXT w%
 +1770 IF h%>0 THEN GOSUB 1800:r%=7
 +1780 NEXT r%:RETURN
 +1790 '
 +1800 mov$=MID$(u$(r%),g%,2):l$=LEFT$(mov$,1):r$=RIGHT$(mov$,1)
 +1810 x%=INSTR("ABCDEFGH",l$):y%=INSTR("12345678",r$)
 +1820 b$(x%,y%)="o":GOSUB 920:flag%=0:x$="»":y$="¼":GOSUB 1320
 +1830 b$(x%,y%)="»":GOSUB 920:GOSUB 1190:RETURN
 +
 +</file>
 +
 +===== Controls =====
 +
 +         With PCW keyboard
 +
 +===== Loading the program =====
 +
 +   1.- Insert the CP/M disc on side 2
 +   2.- Write BASIC and wait for it to load
 +   3.- Remove the CP/M disk and insert the disk containing the Othello game
 +   4.- Type run "OTHELLOS" and press the "ENTER" key
 +
 +===== Extras =====
 +
 +   * Listing of the program in a magazine of great circulation of the time
 +
 +{{:otros:Othello_sp_programa_02.jpg?170}} {{:otros:Othello_sp_programa_01.jpg?170}} {{:otros:Othello_sp_programa_03.jpg?170}} {{:otros:Othello_sp_programa_04.jpg?170}}
 +
 +
 +===== Descarga =====
 +
 +  * {{:otros:Othello_sp.zip|Othello}}(game in dsk format, compressed with zip)
en/othello_espanol.txt · Last modified: 2022/06/30 14:15 by jevicac