- =begin 
- 'ブラウザ版small basicで動くコード 
- 'Win版で動かす場合は 計算行に -200とある数式から-200を消す必要があるかもしれません。 
- 'ゲームの取説はゲーム画面に書いてあります。 
-   
-   
- head=0 
- tail=1 
- hMax=250 
- wMax=200 
- cellSize=50 
- leftX=100 
- topY=150 
- oldX=-1 
- oldY=-1 
- snakes_count=4 
- x=-1 
- y=-1 
- grab_snake=-1 
- grab_snake_head_or_tail=-1 
-   
- snakes_colors[1]=GraphicsWindow.GetColorFromRGB(255, 0, 0) 
- snakes_colors[2]=GraphicsWindow.GetColorFromRGB(32, 128, 196) 
- snakes_colors[3]=GraphicsWindow.GetColorFromRGB(128, 196, 32) 
- snakes_colors[4]=GraphicsWindow.GetColorFromRGB(128, 128, 128) 
-   
- GraphicsWindow.Show() 
- For i = 0 To hMax Step cellSize 
-     GraphicsWindow.DrawLine(leftX,i+topY, wMax+leftX,i+topY) 
- EndFor 
- For i = 0 To wMax step cellSize 
-     GraphicsWindow.DrawLine(leftX+i, 0+topY, leftX+i, hMax+topY) 
- EndFor 
-   
- For i = 0 To hMax Step cellSize 
-     GraphicsWindow.DrawLine(cellSize*10,topY+i, wMax+cellSize*10,topY+i) 
- EndFor 
- For i = 0 To wMax step cellSize 
-     GraphicsWindow.DrawLine(cellSize*10+i, topY, cellSize*10+i, hMax+topY) 
- EndFor 
- Mouse.ShowCursor() 
- eventMode=0 
-   
-   
- snakes[0][0][0]=0 
- snakes[0][0][1]=0 
- snakes_body[0][0]=Shapes.AddEllipse(25, 25) 
- snakes_body_type[0][0]=Shapes.AddText("蛇の寝床はままならぬ horie shinniti") 
- Shapes.HideShape(snakes_body[0][0]) 
- Shapes.HideShape(snakes_body_type[0][0]) 
-   
-   
-   
- set_snakes() 
- GraphicsWindow.MouseDown=mousedown 
- GraphicsWindow.MouseMove=mousemove 
- GraphicsWindow.MouseUp=mouseup 
-   
-   
- Sub set_snakes 
- snakes[0][0][0]=0 
- snakes[0][0][1]=0 
- snakes[0][1][0]=0 
- snakes[0][1][1]=0 
- snakes[0][2][0]=0 
- snakes[0][2][1]=0 
- snakes[0][3][0]=0 
- snakes[0][3][1]=0 
- snakes[0][4][0]=0 
- snakes[0][4][1]=0 
-   
- snakes[1][0][0]=2 
- snakes[1][0][1]=2 
- snakes[1][1][0]=3 
- snakes[1][1][1]=2 
- snakes[1][2][0]=3 
- snakes[1][2][1]=3 
- snakes[1][3][0]=3 
- snakes[1][3][1]=4 
-   
- snakes[2][0][0]=0 
- snakes[2][0][1]=0 
- snakes[2][1][0]=0 
- snakes[2][1][1]=1 
- snakes[2][2][0]=1 
- snakes[2][2][1]=1 
- snakes[2][3][0]=2 
- snakes[2][3][1]=1 
-   
- snakes[3][0][0]=1 
- snakes[3][0][1]=0 
- snakes[3][1][0]=2 
- snakes[3][1][1]=0 
- snakes[3][2][0]=3 
- snakes[3][2][1]=0 
- snakes[3][3][0]=3 
- snakes[3][3][1]=1 
-   
- snakes[4][0][0]=0 
- snakes[4][0][1]=3 
- snakes[4][1][0]=0 
- snakes[4][1][1]=4 
- snakes[4][2][0]=1 
- snakes[4][2][1]=4 
- snakes[4][3][0]=2 
- snakes[4][3][1]=4 
-   
- GraphicsWindow.FontSize=16 
-   
- For i = 1 To snakes_count 
-     GraphicsWindow.BrushColor=snakes_colors[i] 
-     For j = 0 To 3 
-         snakes_body[i][j]=Shapes.AddEllipse(cellSize-10, cellSize-10) 
-     EndFor 
- GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 255, 255) 
-     snakes_body_type[i][0]=Shapes.AddText("頭部") 
-     snakes_body_type[i][1]=Shapes.AddText("胴1") 
-     snakes_body_type[i][2]=Shapes.AddText("胴2") 
-     snakes_body_type[i][3]=Shapes.AddText("尻尾") 
- EndFor 
-   
- For i = 1 To snakes_count 
-     GraphicsWindow.BrushColor=snakes_colors[i] 
-     For j = 0 To 3 
-         GraphicsWindow.FillEllipse(cellSize*(10+i-1), cellSize*(j)+topY, cellSize-5, cellSize-5) 
-     EndFor 
- EndFor 
-     GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 255, 255) 
- For i = 0 To 3 
-     GraphicsWindow.DrawText(cellSize*(10+i), cellSize*0+topY+5, "頭部")   
-     GraphicsWindow.DrawText(cellSize*(10+i), cellSize*1+topY+5, "胴1") 
-     GraphicsWindow.DrawText(cellSize*(10+i), cellSize*2+topY+5, "胴2")   
-     GraphicsWindow.DrawText(cellSize*(10+i), cellSize*3+topY+5, "尻尾") 
- EndFor 
-     GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 255, 255) 
- For i = 1 To snakes_count 
-     For j = 0 To 3 
-          
-         px=cellSize*snakes[i][j][0]+leftX+5 
-         py=cellSize*snakes[i][j][1]+topY+5 
-          
-         Shapes.Move(snakes_body[i][j], px,py) 
-         Shapes.Move(snakes_body_type[i][j], px+5, py+5) 
-     EndFor 
- EndFor 
- GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 0, 0) 
- GraphicsWindow.DrawText(10, 3, "ルール") 
- GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(0, 0, 0) 
- GraphicsWindow.DrawText(10, 30, "色付きの蛇が左の盤面にいます") 
- GraphicsWindow.DrawText(10, 60, "色付き蛇の尻尾か頭部の上で右クリックを押したままマウスを動かせば、蛇を引っ張れるのでたくさん引っ張り") 
- GraphicsWindow.DrawText(10, 90, "右の配置と同じにしてください、頭部と尻尾が逆にならない様に注意") 
- GraphicsWindow.DrawText(10, 120,"クリア判定は目視でお願いします、スライドパズルでスライドする度にスライドしたピースが変形するパズルが成立するかの試作品です") 
- GraphicsWindow.DrawText(10, 600, "マウスの判定がすこし不安定なので、蛇が動かない時は引っ張る操作を何度か試してください,胴をひっぱても動きません") 
- EndSub 
-   
-   
-   
- Sub mouseup 
-     oldX=-1 
-     eventMode=0 
- EndSub 
-   
- Sub move_snake 
-     If grab_snake_head_or_tail=head Then 
-         For i = 2 To 0 step -1 
-             snakes[grab_snake][i+1][0]=snakes[grab_snake][i][0] 
-             snakes[grab_snake][i+1][1]=snakes[grab_snake][i][1] 
-         EndFor 
-         snakes[grab_snake][0][0]=x 
-         snakes[grab_snake][0][1]=y 
-         For i = 0 To 3 
-             px=snakes[grab_snake][i][0]*cellSize+leftX+5 
-             py=snakes[grab_snake][i][1]*cellSize+topY+5 
-             Shapes.Move(snakes_body[grab_snake][i], px, py) 
-             Shapes.Move(snakes_body_type[grab_snake][i], px, py) 
-         EndFor 
-   
-     ElseIf grab_snake_head_or_tail=tail Then 
-         For i = 0 To 2 Step 1 
-             snakes[grab_snake][i][0]=snakes[grab_snake][i+1][0] 
-             snakes[grab_snake][i][1]=snakes[grab_snake][i+1][1] 
-         EndFor 
-         snakes[grab_snake][3][0]=x 
-         snakes[grab_snake][3][1]=y 
-         For i = 3 To 0 step -1 
-             px=snakes[grab_snake][i][0]*cellSize+leftX+5 
-             py=snakes[grab_snake][i][1]*cellSize+topY+5 
-             Shapes.Move(snakes_body[grab_snake][i], px, py) 
-             Shapes.Move(snakes_body_type[grab_snake][i], px+5, py+5) 
-         EndFor 
-     EndIf 
-   
- EndSub 
-   
- Sub mousemove 
-     if eventMode=0 and Mouse.IsRightButtonDown and oldX<>-1 Then 
-         x=Math.floor((Mouse.MouseX-leftX)/cellSize) 
-         y=Math.Floor((Mouse.MouseY-topY-200)/cellSize) 
-         len=Math.abs(oldX-x)+Math.Abs(oldY-y) 
-   
-         For i = 1 To snakes_count 
-             For j = 0 To 3 
-                 x1=snakes[i][j][0] 
-                 y1=snakes[i][j][1] 
-                 if x1=x and y1=y then 
-                     x=-1 
-                 EndIf 
-             EndFor 
-         EndFor 
-          
-         if eventMode=0 and len=1 and 0<=x and x<=3 and 0<=y and y<=4 then 
-             eventMode=1 
-             move_snake() 
-             oldX=x 
-             oldY=y 
-             eventMode=0 
-         endif 
-     EndIf 
- EndSub 
-   
- Sub mousedown 
-     If Mouse.IsRightButtonDown Then 
-         oldX=Math.floor((mouse.MouseX-leftX)/cellSize) 
-         oldY=math.floor((Mouse.MouseY-topY-200)/cellSize) 
-         If oldX<0 or 3<oldX or oldY<0 or 4<oldY Then 
-             oldX=-1 
-         EndIf 
-         grab_snake=-1 
-         For i = 1 To snakes_count 
-             If snakes[i][0][0]=oldX and snakes[i][0][1]=oldY Then 
-                 grab_snake=i 
-                 grab_snake_head_or_tail=head                 
-             EndIf 
-             If snakes[i][3][0]=oldX and snakes[i][3][1]=oldY Then 
-                 grab_snake=i 
-                 grab_snake_head_or_tail=tail 
-             EndIf 
-         EndFor 
-         If grab_snake=-1 Then 
-             oldX=-1 
-         EndIf 
-     EndIf 
- EndSub 
-   
- =end 
- puts "small basic language slide puzzle web browser"