dxruby64 1.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +14 -0
  3. data/README-ja.md +125 -0
  4. data/README.md +120 -0
  5. data/lib/31/dxruby.so +0 -0
  6. data/lib/32/dxruby.so +0 -0
  7. data/lib/33/dxruby.so +0 -0
  8. data/lib/34/dxruby.so +0 -0
  9. data/lib/dxruby.rb +2 -0
  10. data/sample/classic_sample/8_puzzle.rb +55 -0
  11. data/sample/classic_sample/block_destroy.rb +161 -0
  12. data/sample/classic_sample/block_fall.rb +194 -0
  13. data/sample/classic_sample/data.png +0 -0
  14. data/sample/classic_sample/dot.rb +80 -0
  15. data/sample/classic_sample/drawtile.rb +173 -0
  16. data/sample/classic_sample/flight.rb +75 -0
  17. data/sample/classic_sample/hitrangeview.rb +66 -0
  18. data/sample/classic_sample/mapedit.rb +270 -0
  19. data/sample/classic_sample/meiro.rb +106 -0
  20. data/sample/classic_sample/minsample.rb +14 -0
  21. data/sample/classic_sample/race.rb +119 -0
  22. data/sample/classic_sample/readme_sample.txt +42 -0
  23. data/sample/classic_sample/sample.rb +110 -0
  24. data/sample/classic_sample/soundeffect.rb +46 -0
  25. data/sample/new_sample/biyo.rb +25 -0
  26. data/sample/new_sample/image/enemy1.png +0 -0
  27. data/sample/new_sample/image/enemy1bomb.png +0 -0
  28. data/sample/new_sample/image/enemy2.png +0 -0
  29. data/sample/new_sample/image/enemy2bomb.png +0 -0
  30. data/sample/new_sample/image/enemyshot1.png +0 -0
  31. data/sample/new_sample/image/enemyshot2.png +0 -0
  32. data/sample/new_sample/image/maptile.png +0 -0
  33. data/sample/new_sample/image/myship.png +0 -0
  34. data/sample/new_sample/image/myshot.png +0 -0
  35. data/sample/new_sample/iraira.rb +49 -0
  36. data/sample/new_sample/laser2.rb +292 -0
  37. data/sample/new_sample/raycast.rb +249 -0
  38. data/sample/new_sample/readme_sample.txt +27 -0
  39. data/sample/new_sample/rubima.rb +597 -0
  40. data/sample/new_sample/ruby.png +0 -0
  41. data/sample/new_sample/slg.rb +82 -0
  42. data/sample/new_sample/sprite_animation.rb +133 -0
  43. data/sample/new_sample/sprite_collision1.rb +216 -0
  44. data/sample/new_sample/sprite_collision2.rb +93 -0
  45. data/sample/new_sample/sprite_simple.rb +65 -0
  46. data/sample/new_sample2/ImageFont.dat +0 -0
  47. data/sample/new_sample2/ImageFont.dat.png +0 -0
  48. data/sample/new_sample2/autocall.rb +24 -0
  49. data/sample/new_sample2/effecttest.rb +136 -0
  50. data/sample/new_sample2/fibersprite.rb +89 -0
  51. data/sample/new_sample2/hitrange.rb +133 -0
  52. data/sample/new_sample2/hlstest.rb +27 -0
  53. data/sample/new_sample2/mapedit_perlin.rb +291 -0
  54. data/sample/new_sample2/noise.rb +33 -0
  55. data/sample/new_sample2/particle.rb +220 -0
  56. data/sample/new_sample2/readme_sample.txt +29 -0
  57. data/sample/new_sample2/scenetest.rb +200 -0
  58. data/sample/new_sample2/scenetest2.rb +120 -0
  59. data/sample/scroll_sample/map.dat +32 -0
  60. data/sample/scroll_sample/map.rb +77 -0
  61. data/sample/scroll_sample/map_sub.dat +32 -0
  62. data/sample/scroll_sample/mapedit.rb +102 -0
  63. data/sample/scroll_sample/readme_sample.txt +24 -0
  64. data/sample/scroll_sample/scroll1.rb +108 -0
  65. data/sample/scroll_sample/scroll2.rb +149 -0
  66. data/sample/scroll_sample/scroll3.rb +148 -0
  67. data/sample/scroll_sample/simple.rb +13 -0
  68. data/sample/shader_sample/Shader/Flash.rb +93 -0
  69. data/sample/shader_sample/Shader/RasterScroll.rb +71 -0
  70. data/sample/shader_sample/Shader/RgssSprite.rb +143 -0
  71. data/sample/shader_sample/Shader/Transition.rb +108 -0
  72. data/sample/shader_sample/bgimage/BG00a1_80.jpg +0 -0
  73. data/sample/shader_sample/bgimage/BG10a_80.jpg +0 -0
  74. data/sample/shader_sample/bgimage/BG13a_80.jpg +0 -0
  75. data/sample/shader_sample/bgimage/BG32a.jpg +0 -0
  76. data/sample/shader_sample/bgimage/BG42a.jpg +0 -0
  77. data/sample/shader_sample/bgimage/course.png +0 -0
  78. data/sample/shader_sample/bgimage/image1.png +0 -0
  79. data/sample/shader_sample/bgimage/world_map2.png +0 -0
  80. data/sample/shader_sample/fan.rb +53 -0
  81. data/sample/shader_sample/image/enemy1.png +0 -0
  82. data/sample/shader_sample/image/enemy2.png +0 -0
  83. data/sample/shader_sample/image/maptile.png +0 -0
  84. data/sample/shader_sample/readme_sample.txt +43 -0
  85. data/sample/shader_sample/rule//343/203/201/343/202/247/343/203/203/343/202/253/343/203/274.png +0 -0
  86. data/sample/shader_sample/rule//345/217/263/346/270/246/345/267/273/343/201/215.png +0 -0
  87. data/sample/shader_sample/rule//346/250/252/343/203/226/343/203/251/343/202/244/343/203/263/343/203/211.png +0 -0
  88. data/sample/shader_sample/sample_blur.rb +112 -0
  89. data/sample/shader_sample/sample_divide.rb +91 -0
  90. data/sample/shader_sample/sample_flash.rb +54 -0
  91. data/sample/shader_sample/sample_lens.rb +65 -0
  92. data/sample/shader_sample/sample_mapping.rb +50 -0
  93. data/sample/shader_sample/sample_rasterscroll.rb +48 -0
  94. data/sample/shader_sample/sample_rgsssprite.rb +41 -0
  95. data/sample/shader_sample/sample_spehari.rb +50 -0
  96. data/sample/shader_sample/sample_sphere.rb +66 -0
  97. data/sample/shader_sample/sample_transition.rb +62 -0
  98. data/sample/shader_sample/sample_vertexshader.rb +223 -0
  99. data/sample/shader_sample/sample_wingman.rb +47 -0
  100. data/sample/shader_sample/turn_transition.rb +74 -0
  101. metadata +141 -0
@@ -0,0 +1,80 @@
1
+ #!ruby -Ks
2
+ # DXRuby �T���v�� ��
3
+ # �}�E�X���N���b�N�ŕ`���āA�E�N���b�N�ŏ����܂��B
4
+ require 'dxruby'
5
+
6
+ # �E�B���h�E�ݒ�
7
+ Window.scale = 2
8
+ Window.width = 160
9
+ Window.height = 120
10
+
11
+ # ��ʂ̉摜�f�[�^
12
+ $screen = Image.new(160, 120)
13
+
14
+ BLACK = [0, 0, 0]
15
+ WHITE = [255, 255, 255]
16
+
17
+ class Dot
18
+ def initialize(x, y)
19
+ @x = x
20
+ @y = y
21
+ end
22
+
23
+ # �������̂��߂ɓ_���ړ�����Ƃ��̂ݕ`�悷��悤�ɂ����炿����Ƃ����Ⴒ����
24
+ def move
25
+ if $screen.compare(@x, @y + 1, BLACK) then # �^��
26
+ $screen[@x, @y] = BLACK
27
+ @y = @y + 1
28
+ return true if @y > 119
29
+ $screen[@x, @y] = WHITE
30
+ elsif rand(2) == 0 then
31
+ if $screen.compare(@x-1, @y + 1, BLACK) then # ����
32
+ $screen[@x, @y] = BLACK
33
+ @y = @y + 1
34
+ @x = @x - 1
35
+ return true if @y > 119
36
+ $screen[@x, @y] = WHITE
37
+ end
38
+ else
39
+ if $screen.compare(@x+1, @y + 1, BLACK) then # �E��
40
+ $screen[@x, @y] = BLACK
41
+ @y = @y + 1
42
+ @x = @x + 1
43
+ return true if @y > 119
44
+ $screen[@x, @y] = WHITE
45
+ end
46
+ end
47
+ return false
48
+ end
49
+ end
50
+
51
+ dot = []
52
+
53
+ Window.loop do
54
+ # �h�b�g����
55
+ dot.push(Dot.new(rand(10)+75, 0))
56
+
57
+ # �}�E�X�̍��W�擾
58
+ mx = Input.mousePosX / 2
59
+ my = Input.mousePosY / 2
60
+
61
+ # ���N���b�N�ŕ`��
62
+ if Input.mouseDown?(M_LBUTTON) then
63
+ $screen.boxFill(mx - 1, my - 1, mx + 1, my + 1, [0, 255, 0])
64
+ end
65
+
66
+ # �E�N���b�N�ŏ���
67
+ if Input.mouseDown?(M_RBUTTON) then
68
+ $screen.boxFill(mx - 1, my - 1, mx + 1, my + 1, [0, 0, 0])
69
+ end
70
+
71
+ # �h�b�g�ړ�
72
+ dot.delete_if do |d|
73
+ d.move
74
+ end
75
+
76
+ # ��ʕ`��
77
+ Window.draw(0, 0, $screen)
78
+
79
+ break if Input.keyPush?(K_ESCAPE)
80
+ end
@@ -0,0 +1,173 @@
1
+ # �}�b�v�f�[�^����w�i�`��T���v��
2
+ # RenderTarget�N���X�̎g�����̃T���v���ɂȂ��Ă��܂��B
3
+ require 'dxruby'
4
+
5
+ # �}�b�v�f�[�^
6
+ map1 = [
7
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
8
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1],
9
+ [1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1],
10
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1],
11
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1],
12
+ [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1],
13
+ [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1],
14
+ [1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1],
15
+ [1, 1, 1, 2, 0, 0, 0, 3, 3, 3, 3, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1],
16
+ [1, 1, 1, 2, 0, 0, 0, 0, 3, 3, 3, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1],
17
+ [1, 1, 2, 2, 0, 0, 0, 0, 0, 1, 1, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1],
18
+ [1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1],
19
+ [1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1],
20
+ [1, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1],
21
+ [1, 1, 1, 1, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1],
22
+ [1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1],
23
+ [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1],
24
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1],
25
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1],
26
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 3, 0, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1],
27
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1],
28
+ [1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 0, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1],
29
+ [1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 0, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 1],
30
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2],
31
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
32
+ [1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
33
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1],
34
+ [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1],
35
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1],
36
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
37
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
38
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
39
+ ]
40
+
41
+ # ��O�ɕ`�悷��p�̏�w�}�b�v�f�[�^�i4�͖؂̂����܁Bnil�ɂ���ƕ`�悵�Ȃ��j
42
+ map2 = [
43
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil],
44
+ [nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil],
45
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil],
46
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
47
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
48
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
49
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil],
50
+ [nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
51
+ [nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
52
+ [nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
53
+ [nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
54
+ [nil, nil, 4, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
55
+ [nil, nil, nil, nil, 4, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
56
+ [nil, nil, nil, nil, nil, 4, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
57
+ [nil, nil, 4, nil, nil, nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
58
+ [nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
59
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
60
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
61
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
62
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
63
+ [nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
64
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil],
65
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4],
66
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4, 4, 4],
67
+ [nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4, 4, 4, 4],
68
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4, 4, 4, nil],
69
+ [nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, 4, 4, nil, nil],
70
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil],
71
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
72
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
73
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil],
74
+ [nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
75
+ ]
76
+
77
+
78
+ # �G�̃f�[�^�����
79
+ mapimage = []
80
+ mapimage.push(Image.new(32, 32, [100, 100, 200])) # �C
81
+ mapimage.push(Image.new(32, 32, [50, 200, 50])) # ���n
82
+ mapimage.push(Image.new(32, 32, [50, 200, 50])) # �؂̍���
83
+ mapimage[2].boxFill(13, 0, 18, 28, [200, 50, 50])
84
+ mapimage.push(Image.new(32, 32, [50, 200, 50])) # �R
85
+ for i in 1..30 do
86
+ mapimage[3].line(15 - i/2, i, 16 + i/2, i, [200, 100, 100])
87
+ end
88
+ mapimage.push(Image.new(32, 32)) # �؂̂����܁B�w�i�͓����F�ɂ��Ă����B
89
+ mapimage[4].boxFill(13, 16, 18, 31, [200, 50, 50])
90
+ mapimage[4].circleFill(16, 10, 8, [0, 255, 0])
91
+
92
+ image = Image.new(32, 48). # ��l��
93
+ circle(15, 5, 5, [255, 255, 255]).
94
+ line(5, 18, 26, 18, [255, 255, 255]).
95
+ line(15, 10, 15, 31, [255, 255, 255]).
96
+ line(15, 31, 5, 47, [255, 255, 255]).
97
+ line(15, 31, 25, 47, [255, 255, 255])
98
+
99
+ # ���W�����ʒu
100
+ x = 0
101
+ y = 0
102
+ dx = 0
103
+ dy = 0
104
+ font = Font.new(32)
105
+
106
+ # 0:���͑҂����A1:�ړ���
107
+ state = 0
108
+
109
+ # �ړ��J�E���g
110
+ count = 0
111
+
112
+ # RenderTarget�쐬
113
+ rt_main = RenderTarget.new(640-64, 480-64)
114
+ rt_sub = RenderTarget.new(640-64, 480-64)
115
+
116
+ Window.loop do
117
+
118
+ # �ړ����̓J�E���g�A�b�v���邾��
119
+ if state == 1 then
120
+ count = count + 4 # �J�E���g�A�b�v
121
+ if count >= 32 then # �J�E���g�����Ȃ���͑҂��ɑJ��
122
+ state = 0
123
+ count = 0
124
+ x = x + dx # x���W�ړ�
125
+ y = y + dy # y���W�ړ�
126
+ # ���W���[�v����
127
+ x = 0 if x > 31
128
+ x = 31 if x < 0
129
+ y = 0 if y > 31
130
+ y = 31 if y < 0
131
+ end
132
+ end
133
+
134
+ # ���͑҂���
135
+ if state == 0 then
136
+ ix = Input.x
137
+ iy = Input.y
138
+ # �����ꂽ�`�F�b�N
139
+ if ix + iy != 0 and (ix == 0 or iy == 0) then # �i�i���͋p��
140
+ tempx = x + ix
141
+ tempy = y + iy
142
+ tempx = tempx - 32 if tempx > 31
143
+ tempy = tempy - 32 if tempy > 31
144
+ if map1[tempy][tempx] == 1 then
145
+ state = 1 # �X�N���[�����ɑJ��
146
+ dx = ix
147
+ dy = iy
148
+ end
149
+ end
150
+ end
151
+
152
+ # �x�[�X�}�b�v��rt_main�ɕ`��
153
+ rt_main.drawTile(0, 0, map1, mapimage, (x - 8.5) * 32 + count * dx, (y - 6) * 32 + count * dy, 18, 13)
154
+ rt_main.update
155
+
156
+ # ��w�}�b�v��rt_sub�ɕ`��
157
+ rt_sub.drawTile(0, 0, map2, mapimage, (x - 8.5) * 32 + count * dx, (y - 6) * 32 + count * dy, 18, 13)
158
+ rt_sub.update
159
+
160
+ # �x�[�X�}�b�v����ʂɕ`��
161
+ Window.draw(32, 32, rt_main)
162
+
163
+ # �l�`��
164
+ Window.draw(9.5 * 32, 7 * 32 - 16, image)
165
+
166
+ # ��w�}�b�v����ʂɕ`��
167
+ Window.draw(32, 32, rt_sub)
168
+
169
+ # �G�X�P�[�v�L�[�ŏI��
170
+ break if Input.keyPush?(K_ESCAPE)
171
+ Window.drawFont(32,32,Window.fps.to_s + " fps", font)
172
+ Window.drawFont(32,64,Window.getLoad.to_i.to_s + " %", font)
173
+ end
@@ -0,0 +1,75 @@
1
+ #ruby -Ks
2
+ # DXRuby �T���v�� ���ł�悤�Ȃ���
3
+ require 'dxruby'
4
+
5
+ image = Image.new(32,32)
6
+ image.boxFill(13, 16, 18, 26, [255, 200, 50, 50]) # ��
7
+ image.line(13, 16, 13, 26, [255, 0, 0, 0])
8
+ image.line(18, 16, 18, 26, [255, 0, 0, 0])
9
+ image.circleFill(16, 8, 8, [255, 0, 255, 0])
10
+ image.circle(16, 8, 8, [255, 0, 0, 0])
11
+
12
+ class Bg
13
+ @@ground = Image.new(1000,600, [255, 0, 0, 255])
14
+ attr_accessor :y, :angle
15
+
16
+ def initialize
17
+ @y = 290
18
+ @angle = 0
19
+ end
20
+
21
+ def update
22
+ @angle -= Input.x*1.8
23
+ if @angle < -75 then
24
+ @angle = -75
25
+ end
26
+ if @angle > 75 then
27
+ @angle = 75
28
+ end
29
+ @y -= Input.y*5
30
+ @y = 400 if @y > 400
31
+ @y = 100 if @y < 100
32
+ Window.drawRot(-180, @y, @@ground, angle, 500, 240-@y, 0)
33
+ end
34
+ end
35
+
36
+ bg = Bg.new
37
+ Window.bgcolor = [200,250,255]
38
+ x = 320
39
+ y = 240
40
+ z = []
41
+ Obj = Struct.new(:x, :y, :z)
42
+ font = Font.new(32)
43
+ angle = 0
44
+ objx = 0
45
+
46
+ Window.loop do
47
+
48
+ z.push(Obj.new(rand(2000) - 680, 500, 5.0))
49
+ z.push(Obj.new(rand(2000) - 680, 500, 5.0))
50
+
51
+ bg.update
52
+
53
+ rad = Math::PI/180.0*bg.angle
54
+ sina = Math.sin(rad)
55
+ cosa = Math.cos(rad)
56
+ bgy1 = (530 - bg.y) / 290.0
57
+ bgy2 = bg.y - 240
58
+ z.delete_if do |obj|
59
+ drawx = ((obj.x - 320) / obj.z * cosa - (((obj.y - 240) / obj.z - 50) * bgy1 + bgy2) * sina) + 320
60
+ drawy = ((obj.x - 320) / obj.z * sina + (((obj.y - 240) / obj.z - 50) * bgy1 + bgy2) * cosa) + 240
61
+
62
+ Window.drawEx(drawx - image.width / 2, drawy - image.height / 2, image, :scalex=>5.0 / obj.z, :scaley=>5.0 / obj.z, :z=>5 - obj.z, :angle=>bg.angle)
63
+
64
+ obj.x += bg.angle / 3.0
65
+ obj.z -= 0.15
66
+ if obj.z < 0.5 then
67
+ true
68
+ else
69
+ false
70
+ end
71
+ end
72
+
73
+ break if Input.keyPush?(K_ESCAPE)
74
+ Window.drawFont(0, 448, Window.getLoad.to_i.to_s + " %", font)
75
+ end
@@ -0,0 +1,66 @@
1
+ module HitRange
2
+ PointImage = Image.new(1, 1, [200, 255, 255, 0])
3
+ BoxImage = {}
4
+ CircleImage = {}
5
+ TriangleImage = {}
6
+
7
+ def HitRange.view(ary)
8
+ ary.each do |d|
9
+ range = d.getHitRange
10
+ case range.size
11
+ when 2 # point
12
+ Window.draw(range[0], range[1], PointImage, 10000)
13
+ when 3 # circle
14
+ x = range[0]
15
+ y = range[1]
16
+ r = range[2]
17
+ if CircleImage.has_key?(r) == false then
18
+ image = Image.new(r*2+1, r*2+1).circle(r, r, r, [200, 255, 255, 0])
19
+ CircleImage[r] = image
20
+ end
21
+ Window.draw(x - r, y - r, CircleImage[r], 10000)
22
+ when 4 # box
23
+ x1 = range[0]
24
+ y1 = range[1]
25
+ x2 = range[2]
26
+ y2 = range[3]
27
+ key = (x2 - x1).to_s + "," + (y2 - y1).to_s
28
+ if BoxImage.has_key?(key) == false then
29
+ image = Image.new(x2-x1+1, y2-y1+1)
30
+ image.line(0, 0, x2-x1, 0, [200, 255, 255, 0])
31
+ image.line(x2-x1, 0, x2-x1, y2-y1, [200, 255, 255, 0])
32
+ image.line(x2-x1, y2-y1, 0, y2-y1, [200, 255, 255, 0])
33
+ image.line(0, y2-y1, 0, 0, [200, 255, 255, 0])
34
+ BoxImage[key] = image
35
+ end
36
+ Window.draw(x1, y1, BoxImage[key], 10000)
37
+ when 6 # triangle
38
+ x1 = range[0]
39
+ y1 = range[1]
40
+ x2 = range[2]
41
+ y2 = range[3]
42
+ x3 = range[4]
43
+ y3 = range[5]
44
+ key = (x2 - x1).to_s + "," + (y2 - y1).to_s + "," + (x3 - x1).to_s + "," + (y3 - y1).to_s
45
+ temp = (x1 < x2 ? x1 : x2)
46
+ minx = (temp < x3 ? temp : x3)
47
+ temp = (x1 > x2 ? x1 : x2)
48
+ maxx = (temp > x3 ? temp : x3)
49
+ temp = (y1 < y2 ? y1 : y2)
50
+ miny = (temp < y3 ? temp : y3)
51
+ temp = (y1 > y2 ? y1 : y2)
52
+ maxy = (temp > y3 ? temp : y3)
53
+
54
+ if TriangleImage.has_key?(key) == false then
55
+ image = Image.new(maxx-minx+1, maxy-miny+1)
56
+ image.line(x1-minx, y1-miny, x2-minx, y2-miny, [200, 255, 255, 0])
57
+ image.line(x2-minx, y2-miny, x3-minx, y3-miny, [200, 255, 255, 0])
58
+ image.line(x3-minx, y3-miny, x1-minx, y1-miny, [200, 255, 255, 0])
59
+ TriangleImage[key] = image
60
+ end
61
+ Window.draw(minx, miny, TriangleImage[key], 10000)
62
+ end
63
+ end
64
+ end
65
+ end
66
+
@@ -0,0 +1,270 @@
1
+ #!ruby -Ks
2
+ # DXRuby �ȈՃ}�b�v�G�f�B�^
3
+ require 'dxruby'
4
+
5
+ # �}�b�v�f�[�^
6
+ map=[
7
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
8
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
9
+ [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
10
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
11
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1],
12
+ [0, 0, 0, 0, 1, 4, 4, 4, 4, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1],
13
+ [2, 2, 2, 2, 1, 1, 4, 4, 4, 4, 0, 0, 0, 0, 0, 4, 4, 1, 1, 1, 1, 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, 1],
14
+ [2, 2, 2, 1, 2, 1, 1, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 1, 1, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1],
15
+ [2, 2, 2, 1, 1, 1, 1, 1, 4, 4, 4, 0, 0, 0, 0, 0, 4, 4, 1, 1, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 1, 1],
16
+ [2, 2, 2, 2, 2, 2, 1, 1, 4, 4, 4, 0, 0, 0, 0, 0, 4, 4, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 1],
17
+ [1, 2, 2, 2, 2, 2, 2, 1, 4, 4, 4, 0, 0, 0, 0, 0, 4, 4, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1],
18
+ [1, 1, 1, 2, 2, 1, 2, 1, 4, 4, 4, 0, 0, 0, 0, 0, 4, 4, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3],
19
+ [1, 1, 2, 1, 2, 2, 1, 4, 4, 4, 0, 0, 0, 0, 0, 0, 4, 4, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3],
20
+ [1, 1, 1, 2, 2, 1, 4, 4, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3],
21
+ [1, 1, 1, 2, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3],
22
+ [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3],
23
+ [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1],
24
+ [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 4, 4, 1, 4, 1, 4, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
25
+ [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
26
+ [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 4, 4, 4, 4, 4, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
27
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 4, 4, 4, 4, 4, 4, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1],
28
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 4, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
29
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 4, 1, 4, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1],
30
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 4, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1],
31
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0],
32
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 0, 0],
33
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 0, 0, 0],
34
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0],
35
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0],
36
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
37
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
38
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1]
39
+ ]
40
+ takasa=[
41
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
42
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
43
+ [3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
44
+ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
45
+ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3],
46
+ [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 3, 3, 3, 3, 3],
47
+ [4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 6, 6, 6, 3, 3, 3, 3],
48
+ [4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 7, 7, 8, 7, 3, 3, 3],
49
+ [4, 3, 5, 5, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 5, 6, 7, 8, 8, 6, 3, 3],
50
+ [3, 6, 5, 5, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6, 6, 8, 9, 6, 5, 3],
51
+ [4, 5, 3, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 5, 6, 6, 8, 7, 6, 6, 3],
52
+ [3, 3, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 6, 6, 5],
53
+ [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6, 6, 6, 5],
54
+ [3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 5, 5, 5],
55
+ [3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5],
56
+ [3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5],
57
+ [3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4],
58
+ [3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 4],
59
+ [3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 4],
60
+ [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 3],
61
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3],
62
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3],
63
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3],
64
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3],
65
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2],
66
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2],
67
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2],
68
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2],
69
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
70
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
71
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
72
+ [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3]
73
+ ]
74
+ # �G�̃f�[�^�����
75
+ mapimage = Array.new(5) {Image.new(32, 32)}
76
+ for i in 0..7 do # �Ђ��`�ɒn�ʂ�`��
77
+ mapimage[0].line(15 - i * 2, i + 16, 16 + i * 2, i + 16, [100, 100, 200]) # ��
78
+ mapimage[0].line(15 - i * 2, 31 - i, 16 + i * 2, 31 - i, [100, 100, 200])
79
+ mapimage[0][15 - i * 2, i + 16] = [0, 0, 0]
80
+ mapimage[0][16 + i * 2, i + 16] = [0, 0, 0]
81
+ for j in 1..3 do
82
+ mapimage[j].line(15 - i * 2, i + 16, 16 + i * 2, i + 16, [50, 200, 50]) # ���n
83
+ mapimage[j].line(15 - i * 2, 31 - i, 16 + i * 2, 31 - i, [50, 200, 50])
84
+ mapimage[j][15 - i * 2, i + 16] = [0, 0, 0]
85
+ mapimage[j][16 + i * 2, i + 16] = [0, 0, 0]
86
+ end
87
+ mapimage[4].line(15 - i * 2, i + 16, 16 + i * 2, i + 16, [200, 200, 150]) # ���n
88
+ mapimage[4].line(15 - i * 2, 31 - i, 16 + i * 2, 31 - i, [200, 200, 150])
89
+ mapimage[4][15 - i * 2, i + 16] = [0, 0, 0]
90
+ mapimage[4][16 + i * 2, i + 16] = [0, 0, 0]
91
+ end
92
+ mapimage[2].boxFill(13, 16, 18, 26, [200, 50, 50]) # ��
93
+ mapimage[2].line(13, 16, 13, 26, [0, 0, 0])
94
+ mapimage[2].line(18, 16, 18, 26, [0, 0, 0])
95
+ mapimage[2].circleFill(16, 8, 8, [0, 255, 0])
96
+ mapimage[2].circle(16, 8, 8, [0, 0, 0])
97
+ for i in 1..24 do # �R
98
+ mapimage[3].line(15 - i*2/4, i, 16 + i*2/4, i, [200, 100, 100])
99
+ mapimage[3][15 - i*2/4, i] = [0, 0, 0]
100
+ mapimage[3][16 + i*2/4, i] = [0, 0, 0]
101
+ end
102
+ # �n�ʂ̃T�C�h�摜�����
103
+ sideimage = Array.new(5) {Image.new(32, 16)}
104
+ for i in 0..15 do
105
+ sideimage[0].line(i, i / 2, i, i / 2 + 8, [60, 60, 180]) # ��
106
+ sideimage[0].line(31 - i, i / 2, 31 - i, i / 2 + 8, [130, 130, 200])
107
+ for j in 1..3 do
108
+ sideimage[j].line(i, i / 2, i, i / 2 + 8, [40, 150, 40]) # ���ȊO
109
+ sideimage[j].line(31 - i, i / 2, 31 - i, i / 2 + 8, [100, 220, 100])
110
+ end
111
+ sideimage[4].line(i, i / 2, i, i / 2 + 8, [150, 150, 120]) # ���n
112
+ sideimage[4].line(31 - i, i / 2, 31 - i, i / 2 + 8, [220, 220, 170])
113
+ end
114
+ wakuimage = Image.new(36, 36, [255, 255, 255]). # �I��g
115
+ boxFill(2, 2, 33, 33, [0, 0, 0])
116
+ blackimage = Image.new(128, 480, [0, 0, 0]) # �E���w�i
117
+
118
+ select = 0
119
+
120
+ # �N���b�N�ʒu����֐�
121
+ def check(x, y, map, takasa)
122
+ # ��O���猟�����邽�߂ɋt��
123
+ 31.downto(0) do |i|
124
+ 31.downto(0) do |j|
125
+ # �Ђ��`�̒��ɂ��邩�𒲂ׂ�
126
+ if ((j * 16 - i * 16 + 176 - x)/2).abs + (j * 8 + i * 8 - takasa[i][j]*8 + 24 - y).abs < 9 then
127
+ return [i, j]
128
+ end
129
+ end
130
+ end
131
+ return nil
132
+ end
133
+
134
+ # ���C�����[�v
135
+ Window.loop do
136
+
137
+ # �}�E�X�N���b�N
138
+ if Input.mouseDown?(M_LBUTTON) or Input.mouseDown?(M_RBUTTON) then
139
+ x, y = Input.mousePosX, Input.mousePosY
140
+ if x >= 512 then # �E�̂ق��Ȃ�
141
+ for i in 0..mapimage.size-1
142
+ if x >= 560 and x < 592 and y >= i * 64 + 64 and y < i * 64 + 96 then
143
+ select = i
144
+ break
145
+ end
146
+ end
147
+ else # ���̂ق��Ȃ�
148
+ if x > 0 and y > 0 and y < 480 then
149
+ if Input.keyDown?(K_LSHIFT) then
150
+ if Input.mousePush?(M_LBUTTON) then # �V�t�g���N���b�N�Œn�ʂ��グ��
151
+ temp = check(x, y, map, takasa)
152
+ if temp != nil then
153
+ takasa[temp[0]][temp[1]] += 1 if takasa[temp[0]][temp[1]] < 10
154
+ end
155
+ end
156
+ if Input.mousePush?(M_RBUTTON) then # �V�t�g�E�N���b�N�Œn�ʂ�������
157
+ temp = check(x, y, map, takasa)
158
+ if temp != nil then
159
+ takasa[temp[0]][temp[1]] -= 1 if takasa[temp[0]][temp[1]] > 0
160
+ end
161
+ end
162
+ else
163
+ if Input.mouseDown?(M_LBUTTON) then # ���N���b�N�̓}�b�v�`�b�v�Z�b�g
164
+ temp = check(x, y, map, takasa)
165
+ if temp != nil then
166
+ map[temp[0]][temp[1]] = select
167
+ end
168
+ end
169
+ if Input.mouseDown?(M_RBUTTON) then # �E�N���b�N�ŃX�|�C�g�@�\
170
+ temp = check(x, y, map, takasa)
171
+ if temp != nil then
172
+ select = map[temp[0]][temp[1]]
173
+ end
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end
179
+
180
+ # �J�[�\���L�[�̍��E
181
+ if Input.keyPush?(K_RIGHT) then # �E��]
182
+ map = map.transpose
183
+ takasa = takasa.transpose
184
+ map.each do |d|
185
+ d.reverse!
186
+ end
187
+ takasa.each do |d|
188
+ d.reverse!
189
+ end
190
+ end
191
+ if Input.keyPush?(K_LEFT) then # ����]
192
+ 3.times do
193
+ map = map.transpose
194
+ takasa = takasa.transpose
195
+ map.each do |d|
196
+ d.reverse!
197
+ end
198
+ takasa.each do |d|
199
+ d.reverse!
200
+ end
201
+ end
202
+ end
203
+
204
+ # �}�b�v�S�̕`��
205
+ for i in 0..30 do
206
+ for j in 0..30 do
207
+ z = 0
208
+ tmp = takasa[i][j]
209
+ if takasa[i][j+1] < tmp or takasa[i+1][j] < tmp then
210
+ tmp2 = takasa[i][j+1] > takasa[i+1][j] ? takasa[i+1][j] : takasa[i][j+1]
211
+ z = tmp2 * 8
212
+ (tmp - tmp2).times do # �������A�T�C�h�摜��`�悷�郋�[�v
213
+ Window.draw(j * 16 - i * 16 + 160, j * 8 + i * 8 - z + 16, sideimage[map[i][j]])
214
+ z = z + 8
215
+ end
216
+ else
217
+ z = takasa[i][j] * 8
218
+ end
219
+ Window.draw(j * 16 - i * 16 + 160, j * 8 + i * 8 - z, mapimage[map[i][j]])
220
+ end
221
+ end
222
+ for i in 0..31 do
223
+ z = 0
224
+ takasa[i][31].times do # �������A�T�C�h�摜��`�悷�郋�[�v
225
+ Window.draw(31 * 16 - i * 16 + 160, 31 * 8 + i * 8 - z + 16, sideimage[map[i][31]])
226
+ z = z + 8
227
+ end
228
+ Window.draw(31 * 16 - i * 16 + 160, 31 * 8 + i * 8 - z, mapimage[map[i][31]])
229
+ end
230
+ for j in 0..31 do
231
+ z = 0
232
+ takasa[31][j].times do # �������A�T�C�h�摜��`�悷�郋�[�v
233
+ Window.draw(j * 16 - 31 * 16 + 160, j * 8 + 31 * 8 - z + 16, sideimage[map[31][j]])
234
+ z = z + 8
235
+ end
236
+ Window.draw(j * 16 - 31 * 16 + 160, j * 8 + 31 * 8 - z, mapimage[map[31][j]])
237
+ end
238
+
239
+ # �E���w�i�`��
240
+ Window.draw(512, 0, blackimage)
241
+
242
+ # �I��g�`��
243
+ Window.draw(558, select * 64 + 62, wakuimage)
244
+
245
+ # �}�b�v�`�b�v�`��
246
+ mapimage.each_with_index do |m, i|
247
+ Window.draw(560, i * 64 + 64, m)
248
+ end
249
+
250
+ # ��ʃf�[�^�N���A
251
+ if Input.keyPush?(K_C) then
252
+ map = Array.new(32) { [1] * 32 }
253
+ takasa = Array.new(32) { [3] * 32 }
254
+ end
255
+
256
+ # �}�b�v�f�[�^�o��
257
+ if Input.keyPush?(K_ESCAPE) then
258
+ s1 = "map=[\n"
259
+ s2 = "takasa=[\n"
260
+ for i in 0..30 do
261
+ s1 = s1 + map[i].inspect + ",\n"
262
+ s2 = s2 + takasa[i].inspect + ",\n"
263
+ end
264
+ s1 = s1 + map[31].inspect + "\n]\n"
265
+ s2 = s2 + takasa[31].inspect + "\n]\n"
266
+ print s1
267
+ print s2
268
+ break
269
+ end
270
+ end