====== SAFECRACKER ====== {{ :otros:Safecrack_p1.jpg?600 |}} ===== Ficha ===== ^ Autor | Philips T Lawson | ^ Computadora | Amstrad PCW 8256 / 8512 / 9512 | ^ Año | 1987 | ^ Género | Puzle | ^ Controles | Teclado | ^ Lenguajes | Inglés | ^ Estado | [[preservado|Preservado]] | ===== Capturas ===== {{:otros:Safecrack_screenshot01.png?220}} {{:otros:Safecrack_screenshot02.png?220}} {{:otros:Safecrack_screenshot03.png?220}} {{:otros:Safecrack_screenshot04.png?220}} ===== Descripción ===== SAFECRACKER es una variación del clásico juego Mastermind en el que intentabas encontrar un patrón oculto de colores. Aquí, su objetivo es descubrir la combinación de la bóveda de Natlands que, como la mayoría de las cajas fuertes, normalmente solo le daría tres intentos para obtener el código correcto. Afortunadamente, un empleado del banco (a quien usted está chantajeando) logró alterar la programación de la cerradura computarizada, por lo que ahora obtiene 20 intentos con un informe de progreso después de cada uno. Como ayuda adicional, su hombre interior también logró descubrir el formato del código, que brevemente es el siguiente: El código tiene cinco segmentos, cada uno de los cuales consta de dos símbolos. El primer símbolo debe ser L o R y el segundo un número en el rango de 0 a 9. Por ejemplo, L1R3L6L2RO. Se proporciona un informe de progreso en términos simples: blanco significa que un segmento se ha identificado correctamente; negro significa que un segmento contiene los símbolos que pertenecen a otro. Sin embargo, tenga cuidado, esto puede ser bastante engañoso en los niveles superiores, ya que el código puede contener varios segmentos con símbolos idénticos. Hay tres niveles de dificultad que van desde el nivel 1 (el más fácil), sin símbolos duplicados en 20 movimientos, hasta el nivel 3, posibles símbolos duplicados también dentro de los 20 movimientos y un límite de tiempo de cinco minutos. Cuando ejecute el programa, se le pedirá que ingrese un nivel. Luego, la pantalla mostrará la caja fuerte junto con un panel de combinación que refleja su entrada al mecanismo del tambor electrónico. Use el teclado para todas las entradas y para activar y desactivar el sonido, presione S. Si comete un error, use C para cancelarlo. Cuando haya decidido qué código ingresar y lo muestre en el panel, presione Enter o Return. Solo queda desearle suerte y estar atento al guardia de seguridad. ===== Listado ===== * **__Listado - SAFECRAC.BAS__** 10 REM Safecracker 20 REM By Philip T Lawson 30 REM (c) Computing With The Amstrad 40 REM ------------ PCW ------------- 50 DEF FNat$(x,y,a$)=CHR$(27)+"Y"+CHR$(32+y)+CHR$(32+x)+a$ 60 DEFINT a-z:cl$=CHR$(27)+"E"+CHR$(27)+"H" 70 WHILE lev<1 OR lev>3:PRINT cl$ 80 PRINT"Enter level. 1 - Easy" 90 PRINT,"2 - Difficult" 100 PRINT,"3 - Time limit"; 110 INPUT lev 120 RANDOMIZE PEEK(64504!) 130 WEND:PRINT cl$;CHR$(27)+"f" 140 DIM x(12),y(12),a$(12),at$(20),w(20),b(20) 150 RESTORE 170:FOR a=0 TO 12:READ x(a),y(a),a$(a):NEXT 160 FOR a=0 TO 12:GOSUB 710:NEXT:GOSUB 740 170 DATA 75,20,0,71,17,1,75,17,2,79 180 DATA 17,3,71,14,4,75,14,5,79,14 190 DATA 6,71,11,7,75,11,8,79,11,9 200 DATA 71,20,L,79,20,R,79,23,C 210 PRINT CHR$(27)+"p" 220 PRINT FNat$(40,5,CHR$(134)+STRING$(20,CHR$(138))+CHR$(140)) 230 PRINT FNat$(40,20,CHR$(131)+STRING$(20,CHR$(138))+CHR$(137)) 240 FOR a=6 TO 19:PRINT FNat$(40,a,CHR$(133)):PRINT FNat$(61,a,CHR$(133)):NEXT 250 FOR a=6 TO 19:PRINT FNat$(41,a,STRING$(20," ")):NEXT 260 PRINT FNat$(48,10,"T H E"):PRINT FNat$(47,13,"S A F E") 270 c$="":FOR a=1 TO 5:t=INT(RND*100):IF t<50 THEN c$=c$+"R" ELSE c$=c$+"L" 280 c$=c$+RIGHT$(STR$(INT(RND*10)),1):IF a=1 OR lev>1 THEN 310 290 temp=0:FOR b=1 TO a-1:IF MID$(c$,(b*2)-1,2)=RIGHT$(c$,2) THEN temp=1 300 NEXT:IF temp=1 THEN a=a-1:c$=MID$(c$,1,a*2) 310 NEXT:PRINT CHR$(27)+"q" 320 PRINT FNat$(1,1,"Try Code White Black") 330 try=1:POKE 64504!,0:POKE 64503!,0 340 REM ******************************************************** 350 win=0:lose=0:WHILE win=0 AND lose=0 360 i$="":WHILE i$="" AND i$<>CHR$(13):i$=INKEY$:WEND:i$=UPPER$(i$) 370 IF i$="S" THEN IF sou=1 THEN sou=0 ELSE sou=1 380 IF i$=CHR$(13) THEN GOSUB 840:GOTO 480 390 IF i$=" " OR ASC(i$)=7 OR i$<"0" THEN 360 400 IF i$>"9" AND i$<>"L" AND i$<>"R" AND i$<>"C" THEN 360 410 IF lev=3 AND PEEK(64503!)>4 THEN lose=1 420 a=VAL(i$):IF i$="L" THEN a=10 ELSE IF i$="R" THEN a=11 ELSE IF i$="C" THEN a=12 430 IF a<>12 AND LEN(yc$)=10 THEN 480 440 PRINT CHR$(27)+"p":GOSUB 710 450 IF sou=0 THEN PRINT CHR$(7) 460 PRINT CHR$(27)+"q":GOSUB 710 470 IF i$="C" THEN GOSUB 680 ELSE GOSUB 660 480 WEND 490 IF lose THEN 560 500 GOSUB 630 510 PRINT FNat$(42,7,"The safe contains") 520 PRINT FNat$(43,10,"piles of lovely") 530 PRINT FNat$(47,13,"M O N E Y") 540 PRINT FNat$(20,24,"Press spacebar to play again") 550 WHILE INKEY$<>"":WEND:RUN 560 GOSUB 630 570 IF lose=2 THEN 600 580 PRINT FNat$(47,12,"T I M E") 590 PRINT FNat$(49,14,"U P"):GOTO 540 600 PRINT FNat$(47,7,"H A R D") 610 PRINT FNat$(47,10,"L U C K") 620 GOTO 540 630 FOR a=14 TO 1 STEP-1:FOR b=1 TO 100:NEXT 640 PRINT FNat$(41,a+5,STRING$(20," ")):NEXT 650 RETURN 660 IF LEN(yc$)=10 THEN RETURN 670 yc$=yc$+i$:PRINT FNat$(82-LEN(yc$),8,yc$):RETURN 680 IF yc$="" THEN RETURN 690 PRINT FNat$(82-LEN(yc$),8," ");:yc$=LEFT$(yc$,LEN(yc$)-1) 700 PRINT FNat$(82-LEN(yc$),8,yc$):RETURN 710 PRINT FNat$(x(a),y(a),CHR$(134)+CHR$(138)+CHR$(140)) 720 PRINT FNat$(x(a),y(a)+1,CHR$(133)+a$(a)+CHR$(133)) 730 PRINT FNat$(x(a),y(a)+2,CHR$(131)+CHR$(138)+CHR$(137)):RETURN 740 PRINT FNat$(71,23,CHR$(134)+STRING$(5,CHR$(138))+CHR$(140)) 750 PRINT FNat$(71,24,CHR$(133)+"ENTER"+CHR$(133)) 760 PRINT FNat$(71,25,CHR$(131)+STRING$(5,CHR$(138))+CHR$(137)) 770 PRINT FNat$(70,7,CHR$(134)+STRING$(11,CHR$(138))+CHR$(140)) 780 PRINT FNat$(70,8,CHR$(133)+" "+CHR$(133)) 790 PRINT FNat$(70,9,CHR$(131)+STRING$(11,CHR$(138))+CHR$(137)) 800 PRINT FNat$(68,5,CHR$(150)+STRING$(15,CHR$(154))+CHR$(156)) 810 PRINT FNat$(68,27,CHR$(147)+STRING$(15,CHR$(154))+CHR$(153)) 820 FOR a=6 TO 26:PRINT FNat$(68,a,CHR$(149)):PRINT FNat$(84,a,CHR$(149)):NEXT 830 RETURN 840 IF LEN(yc$)=10 THEN 870 850 PRINT FNat$(72,8," ERROR "):yc$="" 860 FOR i=1 TO 300:NEXT:PRINT FNat$(74,8," "):RETURN 870 temp=0:FOR a=1 TO 5:t$=MID$(yc$,a*2-1,2) 880 IF LEFT$(t$,1)<>"L" AND LEFT$(t$,1)<>"R" THEN temp=1 890 IF RIGHT$(t$,1)>"9" THEN temp=1 900 NEXT:IF temp=1 THEN 850 910 IF yc$=c$ THEN win=1 920 at$(try)=yc$ 930 wh=0:FOR a=1 TO 5 940 IF MID$(c$,a*2-1,2)=MID$(yc$,a*2-1,2) THEN wh=wh+1:MID$(yc$,a*2-1,2)=" " 950 NEXT:bl=0:FOR a=1 TO 5:FOR b=1 TO 5 960 IF MID$(c$,a*2-1,2)=MID$(yc$,b*2-1,2) THEN bl=bl+1 970 NEXT:NEXT:w(try)=wh:b(try)=bl 980 PRINT FNat$(0,try+2,STR$(try)+") "+at$(try)+" "); 990 PRINT wh;" ";bl 1000 try=try+1:IF try>20 THEN lose=2 1010 yc$="":PRINT FNat$(72,8," "):RETURN 1020 END 1030 FOR a=128 TO 160:PRINT CHR$(a),a:NEXT 1040 a$="":WHILE a$="":a$=INKEY$:WEND:PRINT ASC(a$):GOTO 1040 ===== Controles ===== L = IZQUIERDA R = DERECHA C = BORRAR S = SONIDO ON/OFF ENTER/RETURN = ACEPTAR ===== 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 Safecracker 4.- Teclear run "SAFECRAC" y pulsar la tecla "ENTER" ===== Extras ===== * Listado del programa en revista de gran tirada de la época {{:otros:Safecrack_01.jpg?170}} {{:otros:Safecrack_02.jpg?170}} ===== Descarga ===== * {{:otros:Safecrack.zip|Safecracker}}(juego en formato dsk, comprimido con zip)