fork download
  1. =begin
  2. 'ブラウザ版small basicで動くコード
  3. 'Win版で動かす場合は 計算行に -200とある数式から-200を消す必要があるかもしれません。
  4. 'ゲームの取説はゲーム画面に書いてあります。
  5.  
  6.  
  7. head=0
  8. tail=1
  9. hMax=250
  10. wMax=200
  11. cellSize=50
  12. leftX=100
  13. topY=150
  14. oldX=-1
  15. oldY=-1
  16. snakes_count=4
  17. x=-1
  18. y=-1
  19. grab_snake=-1
  20. grab_snake_head_or_tail=-1
  21.  
  22. snakes_colors[1]=GraphicsWindow.GetColorFromRGB(255, 0, 0)
  23. snakes_colors[2]=GraphicsWindow.GetColorFromRGB(32, 128, 196)
  24. snakes_colors[3]=GraphicsWindow.GetColorFromRGB(128, 196, 32)
  25. snakes_colors[4]=GraphicsWindow.GetColorFromRGB(128, 128, 128)
  26.  
  27. GraphicsWindow.Show()
  28. For i = 0 To hMax Step cellSize
  29.   GraphicsWindow.DrawLine(leftX,i+topY, wMax+leftX,i+topY)
  30. EndFor
  31. For i = 0 To wMax step cellSize
  32.   GraphicsWindow.DrawLine(leftX+i, 0+topY, leftX+i, hMax+topY)
  33. EndFor
  34.  
  35. For i = 0 To hMax Step cellSize
  36.   GraphicsWindow.DrawLine(cellSize*10,topY+i, wMax+cellSize*10,topY+i)
  37. EndFor
  38. For i = 0 To wMax step cellSize
  39.   GraphicsWindow.DrawLine(cellSize*10+i, topY, cellSize*10+i, hMax+topY)
  40. EndFor
  41. Mouse.ShowCursor()
  42. eventMode=0
  43.  
  44.  
  45. snakes[0][0][0]=0
  46. snakes[0][0][1]=0
  47. snakes_body[0][0]=Shapes.AddEllipse(25, 25)
  48. snakes_body_type[0][0]=Shapes.AddText("蛇の寝床はままならぬ horie shinniti")
  49. Shapes.HideShape(snakes_body[0][0])
  50. Shapes.HideShape(snakes_body_type[0][0])
  51.  
  52.  
  53.  
  54. set_snakes()
  55. GraphicsWindow.MouseDown=mousedown
  56. GraphicsWindow.MouseMove=mousemove
  57. GraphicsWindow.MouseUp=mouseup
  58.  
  59.  
  60. Sub set_snakes
  61. snakes[0][0][0]=0
  62. snakes[0][0][1]=0
  63. snakes[0][1][0]=0
  64. snakes[0][1][1]=0
  65. snakes[0][2][0]=0
  66. snakes[0][2][1]=0
  67. snakes[0][3][0]=0
  68. snakes[0][3][1]=0
  69. snakes[0][4][0]=0
  70. snakes[0][4][1]=0
  71.  
  72. snakes[1][0][0]=2
  73. snakes[1][0][1]=2
  74. snakes[1][1][0]=3
  75. snakes[1][1][1]=2
  76. snakes[1][2][0]=3
  77. snakes[1][2][1]=3
  78. snakes[1][3][0]=3
  79. snakes[1][3][1]=4
  80.  
  81. snakes[2][0][0]=0
  82. snakes[2][0][1]=0
  83. snakes[2][1][0]=0
  84. snakes[2][1][1]=1
  85. snakes[2][2][0]=1
  86. snakes[2][2][1]=1
  87. snakes[2][3][0]=2
  88. snakes[2][3][1]=1
  89.  
  90. snakes[3][0][0]=1
  91. snakes[3][0][1]=0
  92. snakes[3][1][0]=2
  93. snakes[3][1][1]=0
  94. snakes[3][2][0]=3
  95. snakes[3][2][1]=0
  96. snakes[3][3][0]=3
  97. snakes[3][3][1]=1
  98.  
  99. snakes[4][0][0]=0
  100. snakes[4][0][1]=3
  101. snakes[4][1][0]=0
  102. snakes[4][1][1]=4
  103. snakes[4][2][0]=1
  104. snakes[4][2][1]=4
  105. snakes[4][3][0]=2
  106. snakes[4][3][1]=4
  107.  
  108. GraphicsWindow.FontSize=16
  109.  
  110. For i = 1 To snakes_count
  111.   GraphicsWindow.BrushColor=snakes_colors[i]
  112.   For j = 0 To 3
  113.   snakes_body[i][j]=Shapes.AddEllipse(cellSize-10, cellSize-10)
  114.   EndFor
  115. GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 255, 255)
  116.   snakes_body_type[i][0]=Shapes.AddText("頭部")
  117.   snakes_body_type[i][1]=Shapes.AddText("胴1")
  118.   snakes_body_type[i][2]=Shapes.AddText("胴2")
  119.   snakes_body_type[i][3]=Shapes.AddText("尻尾")
  120. EndFor
  121.  
  122. For i = 1 To snakes_count
  123.   GraphicsWindow.BrushColor=snakes_colors[i]
  124.   For j = 0 To 3
  125.   GraphicsWindow.FillEllipse(cellSize*(10+i-1), cellSize*(j)+topY, cellSize-5, cellSize-5)
  126.   EndFor
  127. EndFor
  128.   GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 255, 255)
  129. For i = 0 To 3
  130.   GraphicsWindow.DrawText(cellSize*(10+i), cellSize*0+topY+5, "頭部")
  131.   GraphicsWindow.DrawText(cellSize*(10+i), cellSize*1+topY+5, "胴1")
  132.   GraphicsWindow.DrawText(cellSize*(10+i), cellSize*2+topY+5, "胴2")
  133.   GraphicsWindow.DrawText(cellSize*(10+i), cellSize*3+topY+5, "尻尾")
  134. EndFor
  135.   GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 255, 255)
  136. For i = 1 To snakes_count
  137.   For j = 0 To 3
  138.  
  139.   px=cellSize*snakes[i][j][0]+leftX+5
  140.   py=cellSize*snakes[i][j][1]+topY+5
  141.  
  142.   Shapes.Move(snakes_body[i][j], px,py)
  143.   Shapes.Move(snakes_body_type[i][j], px+5, py+5)
  144.   EndFor
  145. EndFor
  146. GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(255, 0, 0)
  147. GraphicsWindow.DrawText(10, 3, "ルール")
  148. GraphicsWindow.BrushColor=GraphicsWindow.GetColorFromRGB(0, 0, 0)
  149. GraphicsWindow.DrawText(10, 30, "色付きの蛇が左の盤面にいます")
  150. GraphicsWindow.DrawText(10, 60, "色付き蛇の尻尾か頭部の上で右クリックを押したままマウスを動かせば、蛇を引っ張れるのでたくさん引っ張り")
  151. GraphicsWindow.DrawText(10, 90, "右の配置と同じにしてください、頭部と尻尾が逆にならない様に注意")
  152. GraphicsWindow.DrawText(10, 120,"クリア判定は目視でお願いします、スライドパズルでスライドする度にスライドしたピースが変形するパズルが成立するかの試作品です")
  153. GraphicsWindow.DrawText(10, 600, "マウスの判定がすこし不安定なので、蛇が動かない時は引っ張る操作を何度か試してください,胴をひっぱても動きません")
  154. EndSub
  155.  
  156.  
  157.  
  158. Sub mouseup
  159.   oldX=-1
  160.   eventMode=0
  161. EndSub
  162.  
  163. Sub move_snake
  164.   If grab_snake_head_or_tail=head Then
  165.   For i = 2 To 0 step -1
  166.   snakes[grab_snake][i+1][0]=snakes[grab_snake][i][0]
  167.   snakes[grab_snake][i+1][1]=snakes[grab_snake][i][1]
  168.   EndFor
  169.   snakes[grab_snake][0][0]=x
  170.   snakes[grab_snake][0][1]=y
  171.   For i = 0 To 3
  172.   px=snakes[grab_snake][i][0]*cellSize+leftX+5
  173.   py=snakes[grab_snake][i][1]*cellSize+topY+5
  174.   Shapes.Move(snakes_body[grab_snake][i], px, py)
  175.   Shapes.Move(snakes_body_type[grab_snake][i], px, py)
  176.   EndFor
  177.  
  178.   ElseIf grab_snake_head_or_tail=tail Then
  179.   For i = 0 To 2 Step 1
  180.   snakes[grab_snake][i][0]=snakes[grab_snake][i+1][0]
  181.   snakes[grab_snake][i][1]=snakes[grab_snake][i+1][1]
  182.   EndFor
  183.   snakes[grab_snake][3][0]=x
  184.   snakes[grab_snake][3][1]=y
  185.   For i = 3 To 0 step -1
  186.   px=snakes[grab_snake][i][0]*cellSize+leftX+5
  187.   py=snakes[grab_snake][i][1]*cellSize+topY+5
  188.   Shapes.Move(snakes_body[grab_snake][i], px, py)
  189.   Shapes.Move(snakes_body_type[grab_snake][i], px+5, py+5)
  190.   EndFor
  191.   EndIf
  192.  
  193. EndSub
  194.  
  195. Sub mousemove
  196.   if eventMode=0 and Mouse.IsRightButtonDown and oldX<>-1 Then
  197.   x=Math.floor((Mouse.MouseX-leftX)/cellSize)
  198.   y=Math.Floor((Mouse.MouseY-topY-200)/cellSize)
  199.   len=Math.abs(oldX-x)+Math.Abs(oldY-y)
  200.  
  201.   For i = 1 To snakes_count
  202.   For j = 0 To 3
  203.   x1=snakes[i][j][0]
  204.   y1=snakes[i][j][1]
  205.   if x1=x and y1=y then
  206.   x=-1
  207.   EndIf
  208.   EndFor
  209.   EndFor
  210.  
  211.   if eventMode=0 and len=1 and 0<=x and x<=3 and 0<=y and y<=4 then
  212.   eventMode=1
  213.   move_snake()
  214.   oldX=x
  215.   oldY=y
  216.   eventMode=0
  217.   endif
  218.   EndIf
  219. EndSub
  220.  
  221. Sub mousedown
  222.   If Mouse.IsRightButtonDown Then
  223.   oldX=Math.floor((mouse.MouseX-leftX)/cellSize)
  224.   oldY=math.floor((Mouse.MouseY-topY-200)/cellSize)
  225.   If oldX<0 or 3<oldX or oldY<0 or 4<oldY Then
  226.   oldX=-1
  227.   EndIf
  228.   grab_snake=-1
  229.   For i = 1 To snakes_count
  230.   If snakes[i][0][0]=oldX and snakes[i][0][1]=oldY Then
  231.   grab_snake=i
  232.   grab_snake_head_or_tail=head
  233.   EndIf
  234.   If snakes[i][3][0]=oldX and snakes[i][3][1]=oldY Then
  235.   grab_snake=i
  236.   grab_snake_head_or_tail=tail
  237.   EndIf
  238.   EndFor
  239.   If grab_snake=-1 Then
  240.   oldX=-1
  241.   EndIf
  242.   EndIf
  243. EndSub
  244.  
  245. =end
  246. puts "small basic language slide puzzle web browser"
Success #stdin #stdout 0.01s 7940KB
stdin
Standard input is empty
stdout
small basic language slide puzzle web browser