====== OTHELLO ====== {{:otros:Othello_en_p1.jpg?690|}} ===== Ficha ===== ^ Autor | Richard Hopkins | ^ Computadora | Amstrad PCW 8256 / 8512 / 9512 | ^ Año | 1990 | ^ Género | Tablero | ^ Controles | Teclado | ^ Lenguajes | Inglés | ^ Estado | [[preservado|Preservado]] | ===== Screenshotss ===== {{:otros:Othello_en_screenshot01.png?220}} {{:otros:Othello_en_screenshot02.png?220}} {{:otros:Othello_en_screenshot03.png?220}} {{:otros:Othello_en_screenshot04.png?220}} ===== Descripción ===== Se trata de un antiquísimo juego de lógica y estrategia conocido por los nombres de Othello o de Reversi. Este es un juego bastante fuerte. Las reglas: La zona de juego del tablero consiste en una cuadrícula de ocho por ocho en la que se colocan las fichas. Estas son de color negro por un lado y blanco por el otro. La idea consiste en eliminar las fichas del contrario, en cuyo caso el juego termina en ese momento o continuar jugando hasta que el tablero esté lleno y entonces decidir quién ha ganado por el simple método de contar cuántas fichas tiene cada uno. Para ganar fichas a tu adversario debes encerrarlas entre las tuyas. Una vez hecho ésto, las fichas encerradas se dan la vuelta, de forma que muestran tu color. ===== Listado ===== * **__Listado - OTHELLOE.BAS__** 10 e$=CHR$(27):rv$=e$+"p":nv$=e$+"q" 20 cl$=e$+"E"+e$+"H":on$=e$+"e":of$=e$+"f":PRINT of$ 30 DEF FNat$(x,y)=CHR$(27)+"Y"+CHR$(31+x)+CHR$(31+y) 40 DIM a(7,7):RESTORE 720:GOSUB 720 50 INPUT "Enter level 1-25 (1=hard) ";lev 60 IF lev>25 OR lev<1 THEN 50 70 GOSUB 90:GOSUB 430 80 t=1:GOSUB 190:t=-1:GOSUB 390:GOTO 80 90 a(3,3)=50:a(3,4)=-50:a(4,3)=-50:a(4,4)=50 100 FOR n=2 TO 5:a(0,n)=5:a(n,0)=5:a(7,n)=5:a(n,7)=5:NEXT 110 FOR n=6 TO 7 120 a(n-6,7-n)=-5:a(n-6,n)=-5:a(n,n-6)=-5:a(n,ABS(n-13))=-5:NEXT 130 RESTORE 160 140 FOR n=1 TO 3 150 READ x,y,z:a(x,y)=z:a(y,x)=z:a(x,x)=z:a(y,y)=z:NEXT 160 DATA 0,7,20,1,6,-10,2,5,10 170 FOR n=3 TO 4 180 a(n,2)=5:a(2,n)=5:a(5,n)=5:a(n,5)=5:NEXT:RETURN 190 di=0:su=1 200 PRINT FNat$(28,5);CHR$(7); 210 INPUT "Enter your move "; i:i=i-11 220 IF i>77 OR i<0 THEN GOTO 200 230 x=INT(i/10):y=i-(x*10) 240 IF ABS(a(x,y))=50 THEN GOTO 200 250 FOR f=-1 TO 1: FOR n=-1 TO 1 260 IF x+f>7 OR x+f<0 OR y+n>7 OR y+n<0 THEN GOTO 280 270 IF a(x+f,y+n)=50*t THEN GOSUB 320 280 NEXT: NEXT 290 IF su=1 AND di=0 THEN GOTO 200 300 IF su=2 AND di=1 AND sc>hsc THEN xsc=x:ysc=y:hsc=sc 310 RETURN 320 x1=x:y1=y:x1=x1+(f*2):y1=y1+(n*2) 330 IF x1>7 OR x1<0 OR y1>7 OR y1<0 THEN RETURN 340 IF ABS(a(x1,y1))<>50 THEN RETURN 350 IF a(x1,y1)<>50*-t THEN x1=x1+f:y1=y1+n:IF su=2 THEN sc=sc+lev:GOTO 330 ELSE 330 360 IF su=1 THEN a(x1,y1)=-50:GOSUB 680:di=1:IF x1=x AND y1=y THEN RETURN ELSE x1=x1-f:y1=y1-n:GOTO 360 370 IF su=2 THEN di=1:RETURN 380 IF su=3 THEN a(x1,y1)=50:GOSUB 640:IF x1=x AND y1=y THEN RETURN ELSE x1=x1-f:y1=y1-n:GOTO 380 390 xsc=0:ysc=0:hsc=-100 400 FOR x=0 TO 7: FOR y=0 TO 7:di=0:sc=a(x,y) 410 IF ABS(a(x,y))<>50 THEN su=2:GOSUB 250 420 NEXT:NEXT:x=xsc:y=ysc:su=3:GOTO 250 430 OUT 248,8:PRINT cl$ 440 PRINT FNat$(1,0);CHR$(134);STRING$(39,138);CHR$(140) 450 PRINT FNat$(25,0);CHR$(131);STRING$(39,138);CHR$(137) 460 FOR f=6 TO 38 STEP 5 470 PRINT FNat$(1,f);CHR$(132) 480 PRINT FNat$(25,f);CHR$(129) 490 NEXT 500 FOR n=2 TO 24 510 PRINT FNat$(n,0);CHR$(133) 520 PRINT FNat$(n,41);CHR$(133) 530 FOR f=6 TO 38 STEP 5: PRINT FNat$(n,f);CHR$(149):NEXT 540 NEXT 550 FOR n=4 TO 22 STEP 3 560 PRINT FNat$(n,0);CHR$(130);STRING$(39,154);CHR$(136) 570 FOR f=6 TO 38 STEP 5:PRINT FNat$(n,f);CHR$(159):NEXT 580 NEXT 590 FOR n=1 TO 8 600 PRINT FNat$(n*3-1,42);n:PRINT FNat$(26,n*5-3);n 610 NEXT:OUT 248,7 620 x1=3:y1=3:GOSUB 640:y1=4:GOSUB 680:x1=4 630 GOSUB 640:y1=3:GOSUB 680:RETURN 640 PRINT FNat$(2+(x1*3),2+(y1*5)); 650 PRINT CHR$(166);rv$;" ";nv$;CHR$(167) 660 PRINT FNat$(3+(x1*3),2+(y1*5)); 670 PRINT CHR$(169);rv$;" ";nv$;CHR$(168):RETURN 680 PRINT FNat$(2+(x1*3),2+(y1*5));CHR$(160); 690 PRINT CHR$(162);CHR$(162);CHR$(161) 700 PRINT FNat$(3+(x1*3),2+(y1*5));CHR$(165); 710 PRINT CHR$(163);CHR$(163);CHR$(164):RETURN 720 MEMORY &HBFFE 730 FOR hex=&HC070 TO &HC098: READ pk: POKE hex,pk: NEXT hex 740 DATA 243,62,129,211,241,62,130,211 750 DATA 242,175,95,103,22,184,58,153,192,111,41,41 760 DATA 41,25,17,154,192,235,1,8,0,237,176,62,133 770 DATA 211,241,62,134,211,242,251,201 780 FOR char=160 TO 169: POKE &HC099,char 790 FOR row=1 TO 8 800 READ binary(row):POKE &HC099+row, (binary(row)):NEXT row 810 cl=&HC070: CALL cl: NEXT char:RETURN 820 DATA 0,7,24,32,64,128,128,128,0,224,24,4,2,1,1,1 830 DATA 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255 840 DATA 1,1,1,2,4,24,224,0,128,128,128,64,32,24,7,0 850 DATA 0,7,31,63,127,255,255,255 860 DATA 0,224,248,252,254,255,255,255 870 DATA 255,255,255,254,252,248,224,0 880 DATA 255,255,255,127,63,31,7,0 ===== Controles ===== Con el teclado del PCW ===== 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 Othello 4.- Teclear run "OTHELLOE" y pulsar la tecla "ENTER" ===== Extras ===== * Listado del programa en una revista de gran tirada de la época {{:otros:Othello_en_programa_01.jpg?170}} {{:otros:Othello_en_programa_02.jpg?170}} {{:otros:Othello_en_programa_03.jpg?170}} ===== Descarga ===== * {{:otros:Othello_en.zip|Othello}}(juego en formato dsk, comprimido con zip)