Herramientas de usuario

Herramientas del sitio


es:crazy_plumbing

CRAZY PLUMBING

Ficha

Autor Peregrine Haphton
Computadora Amstrad PCW 8256 / 8512 / 9512
Año 1987
Género Arcade
Controles Teclado
Lenguajes Inglés
Estado Preservado

Capturas

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

crazy_plumbing_01.jpg crazy_plumbing_02.jpg

Descarga

Vídeos

es/crazy_plumbing.txt · Última modificación: 2022/06/29 01:19 por jevicac