質問編集履歴

2

内容の変更

2015/08/28 16:33

投稿

Oramun
Oramun

スコア76

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,18 @@
1
+ /****追記、コード編集****/
2
+
3
+
4
+
5
+ みなさんの説明はわかりやすく、理解できたところはあります。
6
+
7
+ メソッドの定義など「こんな感じなのかな」とすこし変更してみました。
8
+
9
+ ですがやはりまだ動きはしないです…。
10
+
1
- [前回質問し記事](https://teratail.com/questions/15219)記載たコーから、動きはしなし文法おかしいかもしれないし、エラーたくさんあますが、自分なりにクラスとうものを書いてみした
11
+ ループ内 衝突判定の条件分岐をループ外メソッ化とうのはりつきせん
2
-
12
+
3
- 修正、改善点など、「ここはこう書いたらいいよ」など教えていただけると幸いです。
13
+ どこをどう変えるか、改善点 修正点など、いろいろとまた教えていただけると幸いです。
14
+
15
+
4
16
 
5
17
 
6
18
 
@@ -10,197 +22,145 @@
10
22
 
11
23
 
12
24
 
13
- #マップデータ [1Block=32*32] Width17, height15
14
-
15
- map = [[1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
16
-
17
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 7, 1],
18
-
19
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 6, 1],
20
-
21
- [1, 0, 0, 0, 1, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
22
-
23
- [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
24
-
25
- [1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1],
26
-
27
- [1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 0, 1],
28
-
29
- [1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
30
-
31
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
32
-
33
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
34
-
35
- [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1],
36
-
37
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
38
-
39
- [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
40
-
41
- [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
42
-
43
- [1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1],
44
-
45
- [1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1]]
46
-
47
-
48
-
49
- block = []
50
-
51
- block[0] = Image.new(32, 32, [50, 200, 255]) #空 背景
52
-
53
- block[1] = Image.new(32, 32, [100, 50, 0]) #茶 ブロック
54
-
55
- block[2] = Image.new(32, 32, [255, 255, 255]) #白 雲
56
-
57
- block[3] = Image.new(32, 32, [0, 0, 0]) #黒 ゴール
58
-
59
- block[4] = Image.load("kinoko.png") #アイテム画像
60
-
61
- block[5] = Image.load("block.png") #ブロック画像
62
-
63
- block[6] = Image.load("goal2.png") #ゴール画像
64
-
65
- block[7] = Image.load("goal.png") #ゴール画像
66
-
67
- block[8] = Image.load("dokan.png") #ドカン画像
68
-
69
-
70
-
71
- class Character
72
-
73
- attr_accessor :x, :y, :f, :item, :jump, :preview
74
-
75
- @@image = Image.load("c_mario.png")
76
-
77
-
78
-
79
- def initialize(*)
80
-
81
- @x = 0
82
-
83
- @x = 32
84
-
85
- @y = @preview = 32
86
-
87
- @f = 1
88
-
89
- @item = 0
90
-
91
- @jump = false
92
-
93
- @image = @@image
94
-
95
- end
96
-
97
-
98
-
99
- def collision(x, y, array)
100
-
101
- return array[y/32][x/32]
102
-
103
- end
104
-
105
-
106
-
107
- def drop_down
108
-
109
- if @y >= 480
110
-
111
- @x = 32
112
-
113
- @y = @preview = 0
114
-
115
- @item = 0
116
-
117
- map[3][6] = 5 #ブロック再表示
118
-
119
- map[2][6] = 0 #アイテムを消去
120
-
121
- end
122
-
123
- end
124
-
125
-
126
-
127
- def jump
128
-
129
- if Input.key_push?(K_SPACE) and @jump
130
-
131
- @f = -15
132
-
133
- end
134
-
135
- end
136
-
137
-
138
-
139
- def speed
140
-
141
- if @item == 1
142
-
143
- @x += Input.x * 5
144
-
145
- else
146
-
147
- @x += Input.x * 2
148
-
149
- end
150
-
151
- end
152
-
153
-
154
-
155
- def move
156
-
157
- @y_move = (@y - @preview) + @f
158
-
159
- if @y_move > 31
160
-
161
- @_move = 31
162
-
163
- end
164
-
165
- end
166
-
167
- end
168
-
169
-
170
-
171
-
172
-
173
- char_img = Image.load("c_mario.png")
174
-
175
- char = Character.new(@x, @y, char_img)
176
-
177
-
178
-
179
-
180
-
181
- #ループ開始
182
-
183
- Window.loop do
184
-
185
-
186
-
187
- char.move
188
-
189
- char.drop_down
190
-
191
- char.speed
192
-
193
- char.jump
194
-
195
- char.draw
196
-
197
-
198
-
199
- @preview = @y
200
-
201
- @y += @y_move
202
-
203
- @f = 1 #重力設定
25
+ #マップの定義
26
+
27
+ #ブロックの定義
28
+
29
+
30
+
31
+
32
+
33
+ #初期値設定
34
+
35
+ x = 32
36
+
37
+ y = preview = 32
38
+
39
+ f = 1
40
+
41
+ item = 0
42
+
43
+ jump = false
44
+
45
+
46
+
47
+
48
+
49
+ #対応した配列を返す
50
+
51
+ def collition(x, y, array)
52
+
53
+ return array[y/32][x/32]
54
+
55
+ end
56
+
57
+ #すり抜け防止
58
+
59
+ def slip
60
+
61
+ if y_move > 31
62
+
63
+ y_move = 31
64
+
65
+ end
66
+
67
+ end
68
+
69
+ #落下時
70
+
71
+ def drop
72
+
73
+ if y >= 480
74
+
75
+ x = 32
76
+
77
+ y = preview = 0
78
+
79
+ item = 0
80
+
81
+ map[3][6] = 5
82
+
83
+ map[2][6] = 0
84
+
85
+ end
86
+
87
+ end
88
+
89
+ #移動スピード
90
+
91
+ def speed
92
+
93
+ if item == 1
94
+
95
+ x += Input.x * 5
96
+
97
+ else
98
+
99
+ x += Input.x * 2
100
+
101
+ end
102
+
103
+ end
104
+
105
+ #SPACEキーでジャンプ
106
+
107
+ def jump
108
+
109
+ if Input.key_push?(K_SPACE) and jump
110
+
111
+ f = -15
112
+
113
+ end
114
+
115
+ end
116
+
117
+ #マップの表示
118
+
119
+ def draw_map(map, block)
120
+
121
+ Window.draw_tile(0, 0, map, block, 0, 0, 18, 15)
122
+
123
+ end
124
+
125
+ #キャラクターの表示
126
+
127
+ def draw_char(x, y, character)
128
+
129
+ Window.draw(x, y, character)
130
+
131
+ end
132
+
133
+
134
+
135
+
136
+
137
+ #ゲームループ開始
138
+
139
+ Window.loop do
140
+
141
+
142
+
143
+
144
+
145
+ y_move = (y - preview) + f
146
+
147
+ preview = y
148
+
149
+ y += y_move
150
+
151
+ f = 1
152
+
153
+
154
+
155
+
156
+
157
+ slip
158
+
159
+ drop
160
+
161
+ speed
162
+
163
+
204
164
 
205
165
 
206
166
 
@@ -222,7 +182,7 @@
222
182
 
223
183
  y = y/32*32
224
184
 
225
- jump = true #地面に接地時ジャンプ許可
185
+ jump = true#地面に接地時ジャンプ許可
226
186
 
227
187
  else
228
188
 
@@ -266,9 +226,9 @@
266
226
 
267
227
  #ブロック衝突判定
268
228
 
269
- if collision(x , y, map) == 5 or
229
+ if collision(x , y , map) == 5 or
270
-
230
+
271
- collision(x+31, y, map) == 5 then
231
+ collision(x+31, y , map) == 5 then
272
232
 
273
233
  y = y/32*32 + 32
274
234
 
@@ -288,13 +248,19 @@
288
248
 
289
249
  end
290
250
 
251
+
252
+
253
+
254
+
291
-
255
+ jump
292
-
256
+
293
- #マップの表示
257
+ draw_map
294
-
258
+
295
- Window.draw_tile(0,0,map,block,0,0, 18, 15)
259
+ draw
296
-
297
-
260
+
261
+
262
+
263
+
298
264
 
299
265
  end
300
266
 

1

タイトルの変更

2015/08/28 16:33

投稿

Oramun
Oramun

スコア76

test CHANGED
@@ -1 +1 @@
1
- Ruby クラスの定義
1
+ 【大至急】Ruby クラスの定義
test CHANGED
File without changes