diff --git a/test/snake.nas b/test/snake.nas new file mode 100644 index 0000000..3254c30 --- /dev/null +++ b/test/snake.nas @@ -0,0 +1,214 @@ +import("lib.nas"); +import("./module/libkey.nas"); +var list=func(){ + var (begin,end,len)=(nil,nil,0); + return{ + push_back:func(elem){ + var tmp={ + elem:elem, + prev:nil, + next:nil + }; + if(end!=nil){ + end.next=tmp; + tmp.prev=end; + end=tmp; + }else{ + begin=end=tmp; + } + len+=1; + }, + push_front:func(elem){ + var tmp={ + elem:elem, + prev:nil, + next:nil + }; + if(begin!=nil){ + begin.prev=tmp; + tmp.next=begin; + begin=tmp; + }else{ + begin=end=tmp; + } + len+=1; + }, + pop_back:func(){ + if(end!=nil) + end=end.prev; + if(end==nil) + begin=nil; + else + end.next=nil; + if(len) + len-=1; + }, + pop_front:func(){ + if(begin!=nil) + begin=begin.next; + if(begin==nil) + end=nil; + else + begin.prev=nil; + if(len) + len-=1; + }, + front:func(){ + if(begin!=nil) + return begin.elem; + }, + back:func(){ + if(end!=nil) + return end.elem; + }, + length:func(){ + return len; + } + }; +} + +var game=func(x,y){ + rand(time(0)); + var texture=[" ","██","\e[91m██\e[0m"]; + var edge0="╔"; + var edge1="╚"; + for(var i=0;i=0){ + snake.push_front([fx,fy-1]); + if(vec[fx][fy-1]==1) + gameover=1; + else if(vec[fx][fy-1]==2) + eat=1; + vec[fx][fy-1]=1; + }else if(move=='a' and fx-1>=0){ + snake.push_front([fx-1,fy]); + if(vec[fx-1][fy]==1) + gameover=1; + else if(vec[fx-1][fy]==2) + eat=1; + vec[fx-1][fy]=1; + }else if(move=='s' and fy+1