====== CRAZY PLUMBING ====== {{:otros:Plumber_p1.jpg?690|}} ===== Ficha ===== ^ Autor | Peregrine Haphton | ^ Computadora | Amstrad PCW 8256 / 8512 / 9512 | ^ Año | 1987 | ^ Género | Arcade | ^ Controles | Teclado | ^ Lenguajes | Inglés | ^ Estado | [[preservado|Preservado]] | ===== Capturas ===== {{:otros:Plumber_screenshot01.png?220}} {{:otros:Plumber_screenshot02.png?220}} {{:otros:Plumber_screenshot03.png?220}} {{:otros:Plumber_screenshot04.png?220}} ===== Descripción ===== Debido a un pequeño problema de papeleo en Spewing Oil Inc, dos firmas de refinería rivales recibieron el mismo contrato para construir un oleoducto entre dos de las principales refinerías. "Nos preocupamos por el medio ambiente...", dijo el funcionario de relaciones públicas mientras hablaba con el director gerente de una de las empresas de refinería, por lo que hemos marcado en este mapa un área cuadriculada por donde puede pasar la tubería. "Si no sale, caeremos sobre usted como una tonelada de ladrillos y el trabajo irá a otra persona. Le proporcionaremos todos los materiales que necesita". Fred y Harry, los capataces de construcción de las dos empresas de refinería, decidieron que la única forma de resolver el problema era cooperar. Acordaron turnarse para colocar piezas de la tubería y dividir el efectivo al final. Sin embargo, a Harry le faltaba dinero en efectivo, por lo que comenzó a jugar sucio, haciendo todo lo posible para obligar a Fred a salir del área cuadriculada. Fred se defendió, haciendo todo lo posible para empujar a Harry fuera del área. Lo que pasó después lo puedes descubrir jugando a Crazy Plumbing tú mismo. Puedes ser Fred, Harry o cualquier otra persona de las dos empresas, y no siempre tiene que ser Harry el que juega sucio. Crazy Plumbing es un juego clásico para uno o dos jugadores. El objetivo del juego es llegar a la esquina derecha del primer campo, aunque también podemos ganar empujando a nuestro oponente fuera de la cuadrícula. En el juego existen tres tipo de tuberías para seleccionar (1 a 3) cualquier selección colocará en el extremo el tubo que hayamos seleccionado. En la primera fase no podremos seleccionar el tipo 1. El juego hace un uso extensivo de la rutina de letra grande publicada en la edición de abril de 1987 de Computing with the Amstrad. Si no tiene este programa ya instalado, deberá escribir el listado completo que se muestra aquí. Sin embargo, si tiene la rutina de letra grande guardada en disco, puede ahorrar mucho tiempo escribiendo y siguiendo las siguientes instrucciones: Primero cargue su versión de la rutina de letra grande, elimine las líneas 10 a 30 y 50 a 310 y agregue la siguiente línea: 495 POKE pen,255:POKE paper,0:POKE double,0:CALL screen:RETURN luego ingrese: RENUM 760 Ahora escriba el resto del programa hasta la línea 760, como se muestra en la lista. ===== Listado ===== * **__Listado - PLUMBER.BAS__** 10 REM -------- CRAZY PLUMBING ---------- 20 REM by Peregrine Haphton 30 REM (c) Computing with the Amstrad PCW 40 REM ---------------------------------- 50 DIM grid(11,11),n(36),p$(2):DEFINT x,y:GOSUB 530 60 GOSUB 380:p$(0)="Fred":p$(1)="Harry" 70 FOR f=1 TO 40:PRINT:NEXT:PRINT CHR$(27)"E"CHR$(27)"H":CALL screen 80 FOR f=1 TO 2:PRINT CHR$(27);"Y";CHR$(32);CHR$(35+f*20)"Player";f;" is ";p$(f-1):NEXT 90 PRINT:PRINT "To change the name of the player input and press RETURN." 100 FOR f=1 TO 2:PRINT"Player ";f:INPUT">",n$ 110 IF LEN(n$)>25 THEN n$=LEFT$(n$,25) 120 IF n$<>"" THEN p$(f-1)=n$ 130 PRINT:NEXT:PRINT CHR$(27)"E":POKE pen,255:POKE paper,0:FOR f=0 TO 2 140 a$=STR$(f+1)+"="+CHR$(f*4)+CHR$(f*4+1):x=f*10:y=0:CALL print1(x,y,a$) 150 a$=CHR$(f*4+2)+CHR$(f*4+3):x=f*10+6:y=1:CALL print1(x,y,a$):NEXT 160 POKE pen,85:FOR f=1 TO 10:FOR g=1 TO 10:grid(f,g)=0:IF f=10 AND g=f THEN 190 170 x=10+f*4:y=g*2+5:a$=CHR$(12)+CHR$(12):CALL print1(x,y,a$) 180 x=10+f*4:y=g*2+6:a$=CHR$(12)+CHR$(12):CALL print1(x,y,a$) 190 NEXT:NEXT:grid(1,1)=3:p=3:x=14:y=7 200 GOSUB 630:go=1:pl=0:win=0:xx=1:yy=1 210 d=4:ongrid=-1:GOSUB 650:WHILE ongrid 220 PRINT CHR$(27);"Y";CHR$(60);CHR$(32);p$(pl);", your turn, what type do you choose?" 230 x=62:y=16:POKE double,0:a$="Turn: "+STR$(go):CALL print1(x,y,a$) 240 k$="":WHILE k$="":k$=INKEY$:WEND:IF k$="q" THEN win=3:ongrid=0:GOTO 310 250 IF k$<"1" OR k$>"3" THEN 240 260 IF go=1 AND k$="1" THEN 240 270 grid(xx,yy)=VAL(k$):x=10+xx*4:y=5+yy*2:p=grid(xx,yy):GOSUB 630 280 GOSUB 650:IF ongrid=0 THEN 310 290 pl=pl+1:pl=2*(pl/2-pl\2):go=go+1 300 PRINT CHR$(27)"Y"CHR$(60)CHR$(32)CHR$(27)"l" 310 WEND:ON win GOSUB 710,730,740 320 POKE double,0:b$=p$(pl)+" has won.":l=(45-LEN(b$))/2 330 a$=STRING$(l," ")+b$+STRING$(l," "):x=0:y=28:CALL print1(x,y,a$) 340 a$="Press SPACEBAR to start game or Q to quit.":x=0:y=30:CALL print1(x,y,a$) 350 k$="":WHILE k$="":k$=INKEY$:WEND 360 IF k$="q" THEN PRINT CHR$(27)"e"CHR$(27)"1":CLEAR:END 370 IF k$=" " THEN 70 ELSE GOTO 350 380 PRINT CHR$(27)"f"CHR$(27)"0" 390 x=0:y=0:POKE paper,85:POKE double,1:a$=STRING$(16," ")+"Crazy Plumbing"+STRING$(15," "):CALL print1(x,y,a$) 400 x=0:y=3:POKE paper,0:POKE double,0:a$=STRING$(15," ")+"for two players"+STRING$(13," "):CALL print1(x,y,a$) 410 x=26:y=5:POKE paper,0:POKE double,0:a$="@ Peregrine Haphton" 420 CALL print1(x,y,a$):PRINT CHR$(27)"Y"CHR$(38)CHR$(32) 430 PRINT " The object of the game is to get to the right corner of the field first: you can also win by pushing your oponent from the grid." 440 PRINT " In order to stop press Q":PRINT 450 PRINT " There are three types of tube:" 460 FOR f=0 TO 2:a$=CHR$(f*4)+CHR$(f*4+1):x=10:y=12+f*3:CALL print1(x,y,a$) 470 a$=CHR$(f*4+2)+CHR$(f*4+3)+" Type"+STR$(f+1):x=10:y=13+f*3 480 CALL print1(x,y,a$):NEXT:PRINT CHR$(27)"Y"CHR$(52)CHR$(32) 490 PRINT " To select a type of tube simply press the number of that tube: the tube will be placed on the end." 500 PRINT:PRINT " You cannot use type 1 in the first turn!" 510 x=0:y=27:POKE paper,85:a$=STRING$(1," ")+"Press SPACE to start."+STRING$(9," "):CALL print1(x,y,a$) 520 WHILE INKEY$<>" ":WEND:RETURN 530 GOSUB 760:PRINT CHR$(27)"E"CHR$(27)"H":RESTORE 550 540 FOR h=1 TO 36:READ n(h):NEXT 550 DATA -1,0,2,0,1,1,1,0,4,0,-1,3 560 DATA 1,0,4,0,-1,3,-1,0,2,0,1,1 570 DATA 0,1,1,-1,0,2,0,-1,3,1,0,4 580 RESTORE 600:FOR f=0 TO 12:FOR g=0 TO 7:READ n:POKE (udgs+f*8+g),n 590 NEXT:NEXT:RETURN 600 DATA 3,1,1,1,3,7,142,252,192,128,128,128,0,0,1,15,240,128,0,0,1,1,1,3,63,113,224,192,128,128,128,192,3,1,1,1,0,0,128,240,192,128,128,128,192,224,113,63,252,142,7,3,1,1,1,3,15,1,0,0,128,128,128,192 610 DATA 3,1,1,1,1,1,128,255,192,128,128,128,128,128,1,255,255,128,1,1,1,1,1,3,255,1,128,128,128,128,128,192 620 DATA 24,24,24,255,255,24,24,24 630 POKE pen,255:POKE paper,0:a$=CHR$(p*4-4)+CHR$(p*4-3):CALL print1(x,y,a$) 640 y=y+1:a$=CHR$(p*4-2)+CHR$(p*4-1):CALL print1(x,y,a$):RETURN 650 win=0:x1=xx:y1=yy:d1=d:fl=-1 660 WHILE fl:o=(grid(x1,y1)-1)*12+(d1-1)*3+1:x1=x1+n(o):y1=y1+n(o+1):d1=n(o+2) 670 IF grid(x1,y1)=0 THEN fl=0 680 WEND:IF x1=10 AND y1=10 THEN ongrid=0:win=2 690 IF x1<1 OR x1>10 OR y1<1 OR y1>10 THEN ongrid=0:win=1:fl=0 700 xx=x1:yy=y1:d=d1:RETURN 710 a$=p$(pl)+" has been pushed of the grid.":x=0:y=0:POKE double,1 720 CALL print1(x,y,a$):pl=pl+1:pl=2*(pl/2-pl\2):RETURN 730 a$=p$(pl)+" has reached the lower right corner.":x=0:y=0:POKE double,1:CALL print1(x,y,a$):RETURN 740 a$=p$(pl)+" has quit.":x=0:y=0:POKE double,1:CALL print1(x,y,a$) 750 pl=pl+1:pl=2*(pl/2-pl\2):RETURN 760 MEMORY &HCFFF 770 RESTORE 850:address=&HE000 780 FOR i=1 TO 31:sum=0:READ code$,check$:FOR j=1 TO 21 STEP 2 790 byte=VAL("&H"+MID$(code$,j,2)):POKE address,byte:sum=sum+byte 800 address=address+1:NEXT 810 IF sum<>VAL("&H"+check$) THEN PRINT"Error in data line";i*10+1830:STOP 820 NEXT:screen=&HE000:print1=&HE003:udgs=&HD100 830 pen=&HD001:paper=&HD000:double=&HD006 840 POKE pen,255:POKE paper,0:POKE double,0:CALL screen:RETURN 850 DATA C306E0C35BE0CD29E01198,626 860 DATA 2C2100B60168013E20F5D5,395 870 DATA 3E0873237223133D20F8D1,3AA 880 DATA EB09EBF13D20ECC9C1CD5A,6CA 890 DATA FCE900C9661A6F2202D00A,49B 900 DATA 3210D0030A6F030A67ED4B,33A 910 DATA 10D006001113D0EDB02A02,3A3 920 DATA D0CDFCE02204D02113D022,595 930 DATA 11D0C9CD30E0CD29E0F32A,67A 940 DATA 11D07E232211D0CDEAE011,52D 950 DATA 4FE1010800EDB0DD2A04D0,4B1 960 DATA 0E08FD214FE12A00D07D06,3E1 970 DATA 08FDCB0006380D07DDCB08,3D2 980 DATA 16DDCB001607C3A4E0CB04,4F1 990 DATA DDCB0816DDCB0016CB04DD,530 1000 DATA CB0816DDCB001610D7FD23,4AE 1010 DATA 3A06D0A7CAD1E0DD7E08DD,672 1020 DATA 7709DD7E00DD7701DD2379,4A9 1030 DATA FE05C2D1E001C802DD094F,576 1040 DATA DD230DC282E02A04D00110,440 1050 DATA 00092204D02110D035C262,359 1060 DATA E0FBC91100B8FE20300311,4CF 1070 DATA 00D16F260029292919C95C,31F 1080 DATA 260054CB25010FE1094E23,2D5 1090 DATA 46EB29292909C93059005C,363 1100 DATA D05EA06170644067106AE0,504 1110 DATA 6CB06F807250752078F07A,544 1120 DATA C07D9080608330860089D0,53F 1130 DATA 8BA08E709140941097E099,5AE 1140 DATA B09C809F50A220A5F0A7C0,679 1150 DATA AA90AD60B0000000000000,2F7 ===== Controles ===== 1 = COLOCAR TUBERÍA TIPO 1 2 = COLOCAR TUBERÍA TIPO 2 3 = COLOCAR TUBERÍA TIPO 3 SPACE = COMENZAR PARTIDA Q = ABANDONAR PARTIDA ===== 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 Crazy Plumbing 4.- Teclear run "Plumber" y pulsar la tecla "ENTER" ===== Extras ===== * Listado del programa en una revista de gran tirada de la época {{:otros:Crazy_plumbing_01.jpg?170}} {{:otros:Crazy_plumbing_02.jpg?170}} ===== Descarga ===== * {{:otros:Plumber (Basic).zip|Crazy Plumbing }}(juego en formato dsk, comprimido con zip) ===== Vídeos ===== {{ youtube>vy6sV4B2iPg?large }}