====== POST HASTE ====== {{:otros:Post_Haste_p1.jpg?690|}} ===== Ficha ===== ^ Autor | John and Ruth Filsak | ^ Computadora | Amstrad PCW 8256 / 8512 / 9512 | ^ Año | 1988 | ^ Género | Arcade | ^ Controles | Teclado | ^ Lenguajes | Inglés | ^ Estado | [[preservado|Preservado]] | ===== Capturas ===== {{:otros:Post_Haste_screenshot01.png?220}} {{:otros:Post_Haste_screenshot02.png?220}} {{:otros:Post_Haste_screenshot03.png?220}} {{:otros:Post_Haste_screenshot04.png?220}} ===== Descripción ===== El trabajo de PERCY es recolectar de cada uno de los cinco buzones, que contienen dos cartas cada uno, y entregar una carta en la puerta principal de cada casa. Hay una puerta de entrada en cada casa. Sin embargo, hay uno o dos problemas: los perros feroces merodean continuamente y las casas están situadas en lugares locos y peligrosos. Algunas partes del suelo son letales y caminar sobre ellas resultará peligroso para la salud de Percy, por lo que debes vigilar tus pasos. Los postes de telégrafo brindan acceso a partes más altas o más bajas de la pantalla, pero también pueden conducir a situaciones difíciles. La capacidad de saltar por encima de los huecos y otros puntos difíciles está a favor de Percy, al igual que su velocidad para correr más rápido que los perros. También puede saltar sobre ellos, pero eso requiere un poco de práctica. En el juego encontramos dos casillas especiales. Aterrizar en una le da a Percy una vida extra, y la otra nos mueve de nivel ó entregando todas las cartas. Para moverte por la pantalla, usa las teclas Z y X para izquierda y derecha, y U y D (arriba y abajo) para subir a los postes. Alternativamente, puede utilizar las teclas del cursor. Para hacer que Percy salte, presione la barra espaciadora y y podrá lograr una distancia adicional presionando la tecla de dirección al mismo tiempo. El sindicato de carteros de Percy tiene un acuerdo de productividad, ésto significa que tiene un límite de tiempo. Podemos finalizar el juego en cualquier momento pulsando la tecla "Q". Al igual que el Pony Express, el correo tiene que pasar. ===== Listado ===== * **__Listado - POSTE.BAS__** 10 REM Post Haste 20 REM by John and Ruth Filsak 30 REM (c) Computing with the Amstrad 40 REM -------------PCW-------------- 50 GOSUB 1110:play=-1:WHILE play:GOSUB 70:WEND 60 PRINT cls$;esc$"e";esc$"1":STOP 70 PRINT cls$:lives=3:score=0:letters=0:play1=-1 80 RESTORE 1730:FOR y=0 TO 31:READ g$:FOR x=0 TO 45:g=VAL(MID$(g$,x+1,1)) 90 g(x,y)=g:xx=x*2:IF g=0 THEN 190 100 IF g=1 THEN CALL print1(xx,y,b1$):GOTO 190 110 IF g=2 THEN CALL print1(xx,y,b2$):GOTO 190 120 IF g=3 THEN POKE pen,85:CALL print1(xx,y,h1$):POKE pen,255:GOTO 190 130 IF g=4 THEN POKE pen,85:CALL print1(xx,y,h2$):POKE pen,255:GOTO 190 140 IF g=5 THEN POKE pen,85:CALL print1(xx,y,h3$):POKE pen,255:GOTO 190 150 IF g=6 THEN POKE pen,85:CALL print1(xx,y,h4$):POKE pen,255:h(xx/2,y)=0:GOTO 190 160 IF g=7 THEN CALL print1(xx,y,pole$):GOTO 190 170 IF g=8 THEN CALL print1(xx,y,pbox$):GOTO 190 180 POKE pen,85:CALL print1(xx,y,b2$):POKE pen,255 190 NEXT:NEXT:POKE paper,85 200 x=2:y=1:a$=STRING$(43,32):CALL print1(x,y,a$) 210 x=4:a$="Score:"+STR$(score):CALL print1(x,y,a$) 220 x=32:a$="Letters: "+STR$(letters):CALL print1(x,y,a$) 230 x=70:a$="Lives:"+STR$(lives):CALL print1(x,y,a$):POKE paper,0 240 p$=pmnr$:px=4:py=30:CALL print1(px,py,p$) 250 REM main movement loop 260 WHILE play1:a$=LOWER$(INKEY$) 270 IF a$="z"OR a$=CHR$(1)THEN GOSUB 470:GOTO 350 280 IF(a$="u"OR a$=CHR$(31))AND g(px/2,py)=7 THEN GOSUB 910:GOTO 350 290 g=g(px/2,py+1):IF(a$="d"OR a$=CHR$(30))AND(g=7 OR g=0)THEN GOSUB 930:GOTO 350 300 IF a$=" "THEN GOSUB 680: GOTO 320 310 IF a$="x"OR a$=CHR$(6)THEN GOSUB 530: GOTO 350 320 IF g(px/2,py)=7 THEN pbak$=pole$ ELSE pbak$=sp$ 330 IF p$=pmnl$ THEN j=-j 340 g=g((px+j)/2,py+1):IF(g=0 OR g=8)AND g((px+j)/2,py)<>7 THEN CALL print1(px,py,pbak$):py=py+1:px=px+j:CALL print1(px,py,p$) 350 j=0:IF g(px/2,py)=7 THEN pbak$=pole$ ELSE pbak$=sp$ 360 IF g(px/2,py)=8 THEN GOSUB 800 370 IF g(px/2,py+1)=9 THEN GOSUB 960 380 IF g(px/2-1,py)=6 AND h(px/2-1,py)=0 AND p$=pmnl$AND letters>0 THEN GOSUB 830 390 d=d+1:IF d=3 THEN d=1 400 dx=dx(d):dy=dy(d):IF px=dx AND py=dy THEN GOSUB 960 410 IF d(d)=1 THEN d$=dogl$:GOSUB 590 420 IF d(d)=2 THEN d$=dogr$:GOSUB 640 430 dx(d)=dx:dy(d)=dy:IF g(dx(d)/2,dy(d))=7 THEN dbak$(d)=pole$ELSE dbak$(d)=sp$ 440 IF px=dx AND py=dy THEN GOSUB 960 450 WEND:RETURN 460 REM move left 470 IF p$=pmnr$THEN CALL print1(px,py,pmnl$):p$=pmnl$:RETURN 480 g=g(px/2-1,py):IF g=1 OR g=2 OR g=3 OR g=4 OR g=5 OR g=6 THEN RETURN 490 IF g=0 OR g=7 OR g=8 THEN CALL print1(px,py,pbak$):px=px-2 500 g=g(px/2,py+1):IF(g=0 OR g=8)AND g(px/2,py)<>7 THEN CALL print1(px,py,sp$):py=py+1 510 CALL print1(px,py,p$):RETURN 520 REM move right 530 IF p$=pmnl$THEN CALL print1(px,py,pmnr$):p$=pmnr$:RETURN 540 g=g(px/2+1,py):IF g=1 OR g=2 OR g=3 OR g=4 OR g=5 OR g=6 THEN RETURN 550 IF g=0 OR g=7 OR g=8 THEN CALL print1(px,py,pbak$):px=px+2 560 g=g(px/2,py+1):IF(g=0 OR g=8)AND g(px/2,py)<>7 THEN CALL print1(px,py,sp$):py=py+1 570 CALL print1(px,py,p$):RETURN 580 REM move dogs 590 bak$=dbak$(d):g=g(dx(d)/2,dy(d)+1):IF g=0 OR g=7 THEN CALL print1(dx,dy,bak$):dy=dy+1:CALL print1(dx,dy,d$):RETURN 600 g=g(dx(d)/2+1,dy(d)):IF g=0 OR g=7 THEN CALL print1(dx,dy,bak$):dx=dx+2:CALL print1(dx,dy,d$):RETURN 610 d(d)=2:IF d=2 AND dx=86 AND dy=30 THEN CALL print1(dx,dy,sp$):dy=30:CALL print1(dx,dy,d$) 620 IF d=1 AND dx=86 AND dy=30 THEN CALL print1(dx,dy,sp$):dx=4:dy=3:CALL print1(dx,dy,d$) 630 RETURN 640 bak$=dbak$(d):g=g(dx(d)/2,dy(d)+1):IF g=0 OR g=7 THEN CALL print1(dx,dy,bak$):dy=dy+1:CALL print1(dx,dy,d$):RETURN 650 g=g(dx(d)/2-1,dy(d)):IF g=0 OR g=7 THEN CALL print1(dx,dy,bak$):dx=dx-2:CALL print1(dx,dy,d$):RETURN 660 d(d)=1:RETURN 670 REM jump 680 g=g(px/2,py+1):IF g=0 OR g=8 THEN RETURN 690 j=2:g=g(px/2,py-1):IF g=1 OR g=2 OR g=3 OR g=4 OR g=5 OR g=6 OR g=9 THEN RETURN 700 CALL print1(px,py,pbak$):IF p$=pmnl$ THEN j1=-2 ELSE j1=2 710 py=py-1:CALL print1(px,py,p$) 720 IF g(px/2,py)=8 THEN GOSUB 800 730 IF g(px/2,py)=7 THEN pbak$=pole$ELSE pbak$=sp$ 740 j=2:g=g((px+j1)/2,py-1):IF g=1 OR g=2 OR g=3 OR g=4 OR g=5 OR g=6 OR g=9 THEN RETURN 750 CALL print1(px,py,pbak$):px=px+j1:py=py-1:CALL print1(px,py,p$) 760 IF g(px/2,py)=8 THEN GOSUB 800 770 IF g(px/2,py)=7 THEN pbak$=pole$ELSE pbak$=sp$ 780 RETURN 790 REM collect/deliver letters 800 letters=letters+2:x=48:y=1:IF letters<10 THEN x=50 810 a$=STR$(letters):POKE paper,85:CALL print1(x,y,a$) 820 POKE paper,0:g(px/2,py)=0:PRINT CHR$(7):RETURN 830 letters=letters-1:score=score+100:h(px/2-1,py)=1 840 PRINT CHR$(7):x=px-4:y=py-1:CALL print1(x,y,h5$):CALL print1(x,py,h6$) 850 POKE paper,85:a$=STR$(score):x=16:y=1:CALL print1(x,y,a$) 860 x=48:a$=STR$(letters):IF letters<10 THEN x=50 870 CALL print1(x,y,a$):POKE paper,0 880 IF score=1000 THEN GOSUB 1000 890 RETURN 900 REM up or down poles 910 CALL print1(px,py,pole$):py=py-1:CALL print1(px,py,pmnp$):IF g(px/2,py)=0 THEN CALL print1(px,py,p$) 920 RETURN 930 CALL print1(px,py,pbak$):py=py+1:CALL print1(px,py,pmnp$):IF g(px/2,py)=0 THEN CALL print1(px,py,p$) 940 RETURN 950 REM count lives/end game 960 lives=lives-1:PRINT CHR$(7):CALL print1(px,py,pbak$):px=4:py=30:CALL print1(px,py,p$) 970 x=82:y=1:a$=STR$(lives):POKE paper,85:CALL print1(x,y,a$):POKE paper,0 980 IF lives=0 THEN GOSUB 1000 990 RETURN 1000 FOR a=0 TO 4500:NEXT:PRINT cls$:CALL screen 1010 POKE double,1:x=20:y=6:a$="Game over.":CALL print1(x,y,a$) 1020 y=9:IF lives=0 THEN a$="YOU HAVE DIED!":CALL print1(x,y,a$)ELSE a$="THE MAIL HAS GOT THROUGH!":CALL print1(x,y,a$) 1030 y=12:a$="Score:"+STR$(score)+".":CALL print1(x,y,a$) 1040 IF lives>0 THEN a$="You have lost"+STR$(3-lives)+" lives.":y=15:CALL print1(x,y,a$) 1050 POKE double,0:y=22:a$="Play again? (Y/N)":CALL print1(x,y,a$) 1060 k$=LOWER$(INKEY$):IF k$=""THEN 1060 1070 IF k$<>"n"AND k$<>"y"THEN 1060 1080 IF k$="n"THEN play=0 1090 play1=0:RETURN 1100 REM initialize 1110 DEFINT a-z:esc$=CHR$(27):cls$=esc$+"E"+esc$+"H"+esc$+"0":PRINT cls$esc$"f 1120 PRINT esc$"POST HASTE"esc$"u":PRINT :PRINT"Loading machine code....Please wait." 1130 MEMORY &HCFFF:address=&HE000:RESTORE 1410 1140 FOR a=1 TO 31:sum=0:READ code$,check$:FOR b=1 TO 21 STEP 2 1150 byte=VAL("&H"+MID$(code$,b,2)):POKE address,byte 1160 sum=sum+byte:address=address+1:NEXT 1170 IF sum<>VAL("&H"+check$)THEN PRINT"Error":STOP 1180 NEXT:screen=&HE000:print1=&HE003:udgs=&HD100:pen=&HD001:paper=&HD000:double=&HD006 1190 POKE paper,0:POKE double,0:POKE pen,255 1200 REM user defined graphics 1210 RESTORE 1270:FOR a=0 TO 103:READ b:POKE udgs+a,b:NEXT:CALL screen 1220 pmnl$=CHR$(0):pmnr$=CHR$(1):pmnp$=CHR$(2):pole$=CHR$(3):h1$=CHR$(4):h2$=CHR$(5):h3$=CHR$(6):h4$=CHR$(7) 1230 b1$=CHR$(8):dogl$=CHR$(9):dogr$=CHR$(10):pbox$=CHR$(11):b2$=CHR$(12):h5$=h1$+h2$:h6$=h3$+h4$ 1240 DIM g(45,41),h(45,31),dx(2),dy(2),d(2),dbak$(2) 1250 sp$=" ":dbak$(1)=sp$:dbak$(2)=sp$:pbak$=sp$ 1260 dx(1)=2:dx(2)=82:dy(1)=3:dy(2)=3:d(1)=1:d(2)=2:RETURN 1270 DATA 24,24,8,28,58,24,20,52 1280 DATA 24,24,16,56,92,24,40,44 1290 DATA 24,28,124,60,24,60,62,24 1300 DATA 24,28,24,24,24,56,24,24 1310 DATA 3,3,15,21,42,85,170,255 1320 DATA 0,0,240,88,172,86,171,255 1330 DATA 132,132,132,132,255,174,213,255 1340 DATA 33,33,33,45,225,161,97,255 1350 DATA 126,195,129,153,153,129,195,126 1360 DATA 0,0,0,2,255,126,68,136 1370 DATA 0,0,0,64,255,126,34,17 1380 DATA 0,126,36,60,60,60,60,60 1390 DATA 255,0,221,85,85,119,0,255 1400 REM machine code 1410 DATA C306E0C35BE0CD29E01198,626 1420 DATA 2C2100B60168013E20F5D5,395 1430 DATA 3E0873237223133D20F8D1,3AA 1440 DATA EB09EBF13D20ECC9C1CD5A,6CA 1450 DATA FCE900C9661A6F2202D00A,49B 1460 DATA 3210D0030A6F030A67ED4B,33A 1470 DATA 10D006001113D0EDB02A02,3A3 1480 DATA D0CDFCE02204D02113D022,595 1490 DATA 11D0C9CD30E0CD29E0F32A,67A 1500 DATA 11D07E232211D0CDEAE011,52D 1510 DATA 4FE1010800EDB0DD2A04D0,4B1 1520 DATA 0E08FD214FE12A00D07D06,3E1 1530 DATA 08FDCB0006380D07DDCB08,3D2 1540 DATA 16DDCB001607C3A4E0CB04,4F1 1550 DATA DDCB0816DDCB0016CB04DD,530 1560 DATA CB0816DDCB001610D7FD23,4AE 1570 DATA 3A06D0A7CAD1E0DD7E08DD,672 1580 DATA 7709DD7E00DD7701DD2379,4A9 1590 DATA FE05C2D1E001C802DD094F,576 1600 DATA DD230DC282E02A04D00110,440 1610 DATA 00092204D02110D035C262,359 1620 DATA E0FBC91100B8FE20300311,4CF 1630 DATA 00D16F260029292919C95C,31F 1640 DATA 260054CB25010FE1094E23,2D5 1650 DATA 46EB29292909C93059005C,363 1660 DATA D05EA06170644067106AE0,504 1670 DATA 6CB06F807250752078F07A,544 1680 DATA C07D9080608330860089D0,53F 1690 DATA 8BA08E709140941097E099,5AE 1700 DATA B09C809F50A220A5F0A7C0,679 1710 DATA AA90AD60B0000000000000,2F7 1720 REM screen data 1730 DATA 111111111111111111111111111111111111111111111 1740 DATA 100000000000000000000000000000000000000000001 1750 DATA 111111111111111111111111111111111111111111111 1760 DATA 100000000000000000000000000000340000008000001 1770 DATA 108000000000700000000000000000560000011111111 1780 DATA 100000000000700000000000000001212000111113401 1790 DATA 111110101010700000000000000000000000000005601 1800 DATA 111100000000792222222222222222222292022222201 1810 DATA 111000000000700008000000000034000000000000071 1820 DATA 112220222229722222900000000056000000000000071 1830 DATA 100000000000000000000000000000000000000000001 1840 DATA 102222222222222222222222222299222222299222201 1850 DATA 100000000000000000000800000000000000000000001 1860 DATA 122222700000000000000000000000000000000000001 1870 DATA 100340700000000000111111003400000002222222221 1880 DATA 100560700000000000000000005600000000000000001 1890 DATA 111111122222222229992200022200002220000011011 1900 DATA 111111000000000000000000000000000000000018011 1910 DATA 111111000000222222222222222222222200111111111 1920 DATA 134000000000000000000000000000000001111111111 1930 DATA 156000799999000000000134000000000011111111111 1940 DATA 111000700000000000034056000000000700000000001 1950 DATA 111100700000000000056000100000000700000000001 1960 DATA 111110700000000000111100000000000700000000001 1970 DATA 100000700000000000000000000000000700000000001 1980 DATA 100340702220922222222222229922222222000010001 1990 DATA 100560700000000000000000000000000000000110001 2000 DATA 102222000000000000000000000000000000001113401 2010 DATA 100000000000000000000000000000000000011115601 2020 DATA 122222222299222272222002222229222222222222221 2030 DATA 100000000000000070000000000000000000000000001 2040 DATA 111111111111111111111111111111111111111111111 ===== Controles ===== ↑ o K = ARRIBA ↓ o M = ABAJO → o X = DERECHA ← o Z = IZQUIERDA SPACE = SALTAR Q = ABANDONAR ===== 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 Post Haste 4.- Teclear run "Poste" y pulsar la tecla "ENTER" ===== Extras ===== * Listado del programa en revista de gran tirada de la época {{:otros:Post_haste_01.jpg?170}} {{:otros:Post_haste_02.jpg?170}} {{:otros:Post_haste_03.jpg?170}} ===== Descarga ===== * {{:otros:Post Haste v1 (Basic).zip|Post Haste v1.00 }}(juego en formato dsk, comprimido con zip) * {{:otros:Post Haste v2 (Basic).zip|Post Haste v2.00 }}(juego en formato dsk, comprimido con zip) ===== Video ===== {{ youtube>P21zriwVoz4?large }}