@echo off echo 4DOS SnakeNibble Game v0.92 echo Copyright (c) 1998 Anders Sandvig. echos `Loading... ` set x=1 do 48 set line%x=10000000000000000000000000000000000000000000000000000000000000000000000000000001 set x=%@inc[%x] enddo set line0=11111111111111111111111111111111111111111111111111111111111111111111111111111111 set line49=%line0 set xSpeed=1 set ySpeed=0 set tail= set tOff=81 set sLen=5 set tX=1 set tY=1 set ixs=0 set iys=-1 set kxs=0 set kys=1 set jxs=-1 set jys=0 set lxs=1 set lys=0 echos done. mode con cols=80 lines=50 set x=0 do 80 scrput 0 %x 1 0 Û scrput 49 %x 1 0 Û set x=%@inc[%x] enddo set y=1 do 49 scrput %y 0 1 0 Û scrput %y 79 1 0 Û set y=%@inc[%y] enddo set x=39 set y=24 goto newFood :mainLoop set tail=%@substr[000%@eval[%y * 80 + %x],3,-4]%tail set tLen=%@len[%tail] iff %@eval[%tLen / 4] ge %sLen then set tOff=%@substr[%tail,3,-4] set tail=%@substr[%tail,0,%@eval[%tLen - 4]] endiff set tX=%@eval[%tOff %% 80] set tY=%@int[%@eval[%tOff / 80]] scrput %tY %tX 0 0 Û scrput %y %x 3 0 Û set line%y=%@instr[0,%x,%[line%y]]1%@instr[%@inc[%x],80,%[line%y]] set line%tY=%@instr[0,%tX,%[line%tY]]0%@instr[%@inc[%tX],80,%[line%tY]] set x=%@eval[%x + %xSpeed] set y=%@eval[%y + %ySpeed] set len=%@inc[%len] if %@instr[%x,1,%[line%y]] == 1 goto end set key= inkey /x /w0 %%key > nul iff %key+ != + then set xSpeed=%[%[key]xs] set ySpeed=%[%[key]ys] endiff iff %x == %fX .and. %y == %fY then set sLen=%@eval[%sLen + 5] goto newFood endiff goto mainLoop :newFood set fX=%@random[1,78] set fY=%@random[1,24] scrput %fY %fX 9 0 þ goto mainLoop :end mode con cols=80 lines=25 echos `Unloading... ` set x=0 do 50 set line%x= set x=%@inc[%x] enddo set x= set y= set xSpeed= set ySpeed= set key= set ixs= set iys= set kxs= set kys= set jxs= set jys= set lxs= set lys= set tail= set nTail= set tX= set tY= set tOff= set tLen= set fX= set fY= set len= echos done. cls echos Score: %sLen set sLen=