import.module.libkey; 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; elsif(vec[fx][fy-1]==2) eat=1; vec[fx][fy-1]=1; }elsif(move=='a' and fx-1>=0){ snake.push_front([fx-1,fy]); if(vec[fx-1][fy]==1) gameover=1; elsif(vec[fx-1][fy]==2) eat=1; vec[fx-1][fy]=1; }elsif(move=='s' and fy+1