Jump to content
IGNORED

New Old Game - Cliff Climber


Tursi

Recommended Posts

Bill Gaskill managed to find this old, old title of mine in his archives, rescued from some BBS archive, soon to be released as part of his Altman disk series. I thought this was a nice short one to paste here.

 

According to the comments, I originally wrote this in 1987, and I definately remember writing it, although I thought it was TI BASIC (it's actually Extended BASIC). In 1987 I was just 15, so that means I wrote this in the haunted house I lived in in Summerland BC before I even had my driver's license.

 

The comments also say it was updated six years later by Jeff Brown and Lucie Dorais, who are no doubt responsible for the rather professional presentation. I must have uploaded it to the Ottawa BBS.

 

I'm not convinced it's bug-free, it seems to redraw the screen inexplicably sometimes, but it's a somewhat fun, if simple puzzler - the goal is to scale the cliff. Every move must land your climber on a handhold and not a blank piece of cliff. You can 'jump' over a blank square by holding the fire button.

 

Have a looksee. :) Recommend NOT playing in Overdrive.

 

post-12959-0-77489000-1327813000_thumb.jpg

 

100 ! ***** CLIFF CLIMBER **** M. Ward 1987 / rev. J. Brown/L. Dorais Feb. 1993 / Ottawa UG
110 DIM SC(2),L(2),M(2),SCR$(23),DIFF$(3):: CALL COLOR(13,2,15)
120 GOTO 150 :: A$,AL,C,CDIF,DIFF,DIFL,G,HS,J,K,NP,P,Q,R,RC,RM,RR,S,X,Y,Z :: CALL CLEAR :: CALL SCREEN :: CALL KEY :: CALL JOYST
130 CALL CHAR :: CALL HCHAR :: CALL GCHAR :: CALL COLOR :: CALL SPRITE
140 CALL LOCATE :: CALL POSITION :: CALL COINC :: CALL PATTERN :: CALL MOTION :: CALL DELSPRITE :: CALL SOUND :: [email="!@P"]!@P[/email]-
150 DIFF$(0)="EASY" :: DIFF$(1)="INTERMEDIATE" :: DIFF$(2)="PROFESSIONAL" :: DIFF$(3)="IMPOSSIBLE!"
160 CALL CHAR(128,"0008142242420100",129,"",140,"FFFFFFFFFFFF8080",141,"8080808080808080",142,"F0F0FEFEFEFE8E8E")!mountain, winner flag
170 CALL CHAR(64,"005A5A3C18182442",130,"0058583C1A7A4402",131,"001A1A3C585E2240",132,"003C7E7E7E7E3C")! man, rock
180 CALL CLEAR :: CALL SCREEN(15):: DISPLAY AT(1,7):"CLIFF CLIMBER" :: IF AL THEN 200 ELSE AL=1
190 DISPLAY AT(5,1):"Use Joystick #1": :"JUMP ROW with FIRE button": :"RELEASE ALPHA-LOCK..." :: ACCEPT AT(9,24):A$
200 DISPLAY AT(5,1):"HIGH SCORE:";HS: :"LAST SCORE PLAYER 1:";SC(1): :"LAST SCORE PLAYER 2:";SC(2)
210 DISPLAY AT(15,1):"Press <SPACE> to change":"DIFFICULTY level": : :"Press <1> or <2> for number":"	  of PLAYERS": :"Press <Q> to QUIT"
220 DISPLAY AT(13,1):"DIFFICULTY: "&DIFF$(DIFL):: CDIF=DIFF
230 CALL KEY(0,K,S):: IF S=0 THEN 230 :: IF K=81 OR K=113 THEN END
240 IF K<>32 THEN 250 ELSE DIFL=DIFL+1 :: IF DIFL>3 THEN DIFL=0 :: GOTO 220 ELSE 220
250 IF K<49 OR K>50 THEN 230 ELSE DIFF=20+DIFL*20 :: IF DIFF=CDIF THEN 300
260 DISPLAY AT(24,1)ERASE ALL:DIFF$(DIFL)&" mountain data" :: RANDOMIZE
270 FOR R=1 TO 23 :: SCR$(R)="" :: FOR C=1 TO 28 :: G=129+(INT(RND*100)>DIFF)
280 SCR$(R)=SCR$(R)&CHR$(G):: NEXT C :: DISPLAY AT(24-R,1):SCR$(R):: NEXT R
290 ! ===== start =====
300 L(1),L(2)=1 :: NP=K-48 :: SC(1),SC(2)=0 :: M(1),M(2)=5 :: Q=-1
310 FOR P=1 TO NP :: IF M(P)=0 THEN 600
320 CALL CLEAR :: CALL SCREEN(3):: CALL HCHAR(1,3,64,M(P)-1)
330 DISPLAY AT(1,9):"LEVEL";L(P):: IF NP=2 THEN DISPLAY AT(1,21):"PLAYER";P
340 FOR X=220 TO 880 STEP 110 :: CALL SOUND(50,X,0):: NEXT X :: FOR X=880 TO 220 STEP -110 :: CALL SOUND(-100,X,0):: NEXT X
350 RANDOMIZE :: FOR R=24 TO 2 STEP -1 :: C=INT(RND*23)+1 :: DISPLAY AT(R,1):SCR$(C):: NEXT R ! mountain
360 C=INT(RND*27)+3 :: CALL GCHAR(24,C,G):: IF G=129 THEN 350 ELSE CALL SPRITE(#1,130,2,185,C*8-7):: R=24 ! man at bottom
370 RC=INT(RND*216)+17 :: RM=INT(RND*10)+5*L(P):: CALL SPRITE(#2,132,2,9,RC,RM,0)! rock
380 ! ===== climb =====
390 CALL JOYST(1,X,Y):: IF X=0 AND Y=0 THEN 480
400 J=1 :: CALL KEY(1,K,S):: IF K=18 THEN J=2 ! jump one row with fire
410 CALL COINC(ALL,Z):: IF Z THEN 550
420 R=R-SGN(Y)*J :: IF R>=25 THEN R=24
430 SC(P)=SC(P)+Y :: IF R<=1 THEN 520
440 C=C+SGN(X)*J :: IF C>2 OR C<31 THEN 460 ELSE C=C-SGN(X)*J
450 CALL COINC(ALL,Z):: IF Z THEN 550
460 CALL GCHAR(R,C,G):: CALL SOUND(-10,-6,0):: CALL PATTERN(#1,130+(Q=-1)*-1):: Q=-Q
470 CALL LOCATE(#1,R*8-7,C*8-7):: IF G<>128 THEN 550 ! climb
480 CALL COINC(ALL,Z):: IF Z THEN 550 ELSE CALL POSITION(#2,RR,RC):: IF RR<193 THEN 500 ELSE CALL DELSPRITE(#2)! check rock row
490 RC=INT(RND*216)+17 :: RM=INT(RND*10)+5*L(P):: CALL SPRITE(#2,132,2,9,RC,RM,0)! change rock column/speed
500 CALL COINC(ALL,Z):: IF Z THEN 550 ELSE 390
510 ! ===== wins level =====
520 CALL DELSPRITE(ALL)
530 FOR X=330 TO 770 STEP 110 :: CALL SOUND(-500,X,0):: NEXT X :: L(P)=L(P)+1 :: IF L(P)>15 THEN 620 ELSE 320
540 ! ===== man falls (hit by rock or reaches hole) =====
550 CALL MOTION(#1,20,0)
560 CALL POSITION(#1,R,C):: IF R<193 THEN CALL SOUND(-100,320-R,0):: GOTO 560 ELSE CALL DELSPRITE(ALL)! man falls
570 M(P)=M(P)-1 :: IF M(P)<>0 THEN 600 :: CALL HCHAR(8,10,32,12):: CALL HCHAR(9,10,32,12):: CALL HCHAR(10,10,32,12)
580 DISPLAY AT(9,9)SIZE(-10):"GAME OVER!" :: IF NP=2 THEN DISPLAY AT(12,9)SIZE(-10):"  PLAYER "&STR$(P)&"  "
590 FOR X=1 TO 20 :: CALL SOUND(-100,RND*200+110,0):: NEXT X :: IF HS>SC(P)THEN 600 ELSE HS=SC(P)
600 NEXT P :: IF M(1)=0 AND M(2)=0 THEN 180 ELSE IF M(1)=0 AND NP=1 THEN 180 ELSE 310
610 ! ===== total win =====
620 FOR R=1 TO 6 :: DISPLAY AT(R,1):RPT$(CHR$(128),R):: NEXT R :: DISPLAY AT(3,:"CONGRATULATIONS!"
630 CALL HCHAR(6,10,64):: CALL HCHAR(5,11,140):: CALL HCAR(6,11,141)
640 IF NP=1 THEN A$="   YOU WIN!" ELSE A$="PLAYER "&STR$(P)&" WINS"
650 Q=-1 :: DISPLAY AT(5,11)SIZE(-13):A$ :: DISPLAY AT(24,1):" Press FIRE or ANY KEY..."
660 Q=-Q :: CALL SOUND(-100,RND*800+110,0):: CALL HCHAR(5,11,140+Q=-1)*-2)
670 CALL KEY(0,K,S):: CALL KEY(1,X,Y):: IF S=0 AND Y=0 THEN 660
680 IF HS>SC(1)THEN 690 ELSE HS=SC(1)
690 IF HS>SC(2)THEN 180 ELSE HS=SC(2):: GOTO 180

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...