The Snake Temple game in 10 lines of BASIC

andsoitis1 pts0 comments

The Snake Temple (Oric) by RAX by BASIC 10LinerView all by BASIC 10LinerCreator<br>Follow BASIC 10LinerFollowFollowing BASIC 10LinerFollowing<br>Add To CollectionCollection<br>Comments<br>Related gamesRelated<br>The Snake Temple (Oric) by RAX

A downloadable game<br>Download

10 Line BASIC

Category : PUR-80

TITLE : The Snake Temple

PLATFORM : Oric Atmos

LANGUAGE : BASIC 1.1b

AUTHOR : RAX

Code:

---------1---------2---------3---------4---------5---------6---------7--------<br>0D$="$$$b$$$b$$$b,bGb#%###3###+7+7Ea?#1>aS1$a#Ab#Vbb##/#AP/5V":A=#B507:INK6'''<br>1FORI=1TOLEN(D$):K=ASC(MID$(D$,I,1))-35:POKEA+I,K:NEXT:DEFFNR(X)=INT(RND(1)*X)<br>2DIMD(999):O=37:B=161:FORI=0TO36:D(I)=B:D(I+888)=B+1:T=INT(I*.65)*O:D(T)=B''''<br>3D(T+36)=B:NEXT:PAPER0:H=8:FORY=2TO23STEP2:FORX=2TO34STEP2:D(X+Y*O)=B:R=FNR(5)<br>4D=(R=0)-(R=1)+O*(R=2)-O*(R=3):D(X+Y*O+D)=B:NEXTX,Y:FORI=0TO924:T=D(I):?".";''<br>5IFT=BANDD(I+O)=0THENT=162ELSEIFT=0THENT=FNR(3)+35ELSE:D(I)=T:NEXT:Y=FNR(22)+2<br>6D(O+1+FNR(35)+FNR(20)*O)=38:X=FNR(35)+2:CLS:REPEAT:GETK$:Q=X:W=Y:K=ASC(K$)'''<br>7Y=Y+(K=11)-(K=10):X=X+(K=8)-(K=9):IFD(X+Y*O)>99THENX=Q:Y=WELSE:B=X+Y*O:Z=D(B)<br>8H=H-2*(Z=36)+(FNR(3)+2)*(Z=O):FORG=-1TO1:FORL=-1TO1:PLOT2+X+L,Y+G,D(B+L+G*O)'<br>9NEXTL,G:D(B)=35:PLOTX+2,Y,39:?@2,25;"HP:"H:UNTILZ=38ORH0THEN?"WIN"<br>RUN

STORY:

You are a young hero named Bocco who has set out in search of treasure in the Temple of the Snakes.

Among the labyrinth of tunnels is a treasure chest that you must find. The temple is full of snakes

so be careful!. A snake inflicts damage on 1 to 4 health points. Each flask you find restores 2 health points.

Use the arrow keys to control Bocco. Have fun :)

CODE EXPLANATION:

0D$="$$$b$$$b$$$b,bGb#%###3###+7+7Ea?#1>aS1$a#Ab#Vbb##/#AP/5V":A=#B507:INK6'''

D$="$$$b$$$b$$$b,bGb#%###3###+7+7Ea?#1>aS1$a#Ab#Vbb##/#AP/5V" - characters data

A=#B507 - the start address of characters to be modified

INK6 - set chars color cyan

1FORI=1TOLEN(D$):K=ASC(MID$(D$,I,1))-35:POKEA+I,K:NEXT:DEFFNR(X)=INT(RND(1)*X)

FORI=1TOLEN(D$) - change characters

K=ASC(MID$(D$,I,1))-35 - gat data from D$

POKEA+I,K - change line of character

NEXT

DEFFNR(X)=INT(RND(1)*X) - define custon function R to generate random number

2DIMD(999):O=37:B=161:FORI=0TO36:D(I)=B:D(I+888)=B+1:T=INT(I*.65)*O:D(T)=B''''

DIMD(999) - maze array

O=37 - maze width

B=161 - brick character (33) with set bit 7 for invers colors

FORI=0TO36 - create maze borders

D(I)=B - set top border

D(I+888)=B+1 - set bottom border

T=INT(I*.65)*O - calc left vertical border

D(T)=B - set left border

3D(T+36)=B:NEXT:PAPER0:H=8:FORY=2TO23STEP2:FORX=2TO34STEP2:D(X+Y*O)=B:R=FNR(5)

D(T+36)=B - set right border

NEXT

PAPER0 - set background color to black

H=8

FORY=2TO23STEP2 - generate maze

FORX=2TO34STEP2

D(X+Y*O)=B - set brick

R=FNR(5) - get random number bettwen 0-4

4D=(R=0)-(R=1)+O*(R=2)-O*(R=3):D(X+Y*O+D)=B:NEXTX,Y:FORI=0TO924:T=D(I):?".";''

D=(R=0)-(R=1)+O*(R=2)-O*(R=3) - get direction to set next random brick

D(X+Y*O+D)=B - set random brick

NEXTX,Y

FORI=0TO924 - replaces the standard brick in the maze with another one for a more fancy look :), and set flask and snakes

T=D(I) - get currnet char in position

?"." - print "." into the screen to see some processing is performed

5IFT=BANDD(I+O)=0THENT=162ELSEIFT=0THENT=FNR(3)+35ELSE:D(I)=T:NEXT:Y=FNR(22)+2

IF T=B AND D(I+O)=0 THEN - if there is a brick in the current position and there is an empty space under it, then

T=162 - set new brick in T

ELSE

IF T=0 THEN - if is only empty block then

T=FNR(3)+35 - set in T random char bettwen (35-37) (ground, flask, snake)

ELSE

: - nothing

D(I)=T - set the modified value in the maze

NEXT

Y=FNR(22)+2 - get random Y position for player

6D(O+1+FNR(35)+FNR(20)*O)=38:X=FNR(35)+2:CLS:REPEAT:GETK$:Q=X:W=Y:K=ASC(K$)'''

D(O+1+FNR(35)+FNR(20)*O)=38 - set chest into a maze (char 38)

X=FNR(35)+2 - get random X position for player

CLS - clear screen

REPEAT - game loop

GET K$ - get key into k$

Q=X - old X position

W=Y - old Y position

K=ASC(K$) - get ascii number for pressed key

7Y=Y+(K=11)-(K=10):X=X+(K=8)-(K=9):IFD(X+Y*O)>99THENX=Q:Y=WELSE:B=X+Y*O:Z=D(B)

Y=Y+(K=11)-(K=10) - calc new Y position

X=X+(K=8)-(K=9) - calc new X position

IFD(X+Y*O)>99 THEN - if there is a brick in the new position then

X=Q - return the old position into X

Y=W - return the old position into Y

ELSE

: - nothing

B=X+Y*O - calc new player position into maze array

Z=D(B) - takes the chars that is in the current player position

8H=H-2*(Z=36)+(FNR(4)+1)*(Z=O):FORG=-1TO1:FORL=-1TO1:PLOT2+X+L,Y+G,D(B+L+G*O)'

H=H-2*(Z=36)+(FNR(4)+1)*(Z=O) - calc player health whit char in playr position

( if it is a flack then add 2 or if a snake then reduced health by 1 to 4 )

FORG=-1TO1 - print player area loop 3х3

FORL=-1TO1

PLOT2+X+L,Y+G,D(B+L+G*O) - print current maze char

9NEXTL,G:D(B)=35:PLOTX+2,Y,39:?@2,25;"HP:"H:UNTILZ=38ORH0THEN?"WIN"

NEXTL,G

D(B)=35 - set ground charate into maze (removes snakes and flasks when the player passes them...

position next maze brick snake basic

Related Articles