/追記、コード編集/
みなさんの説明はわかりやすく、理解できたところはあります。
メソッドの定義など「こんな感じなのかな」とすこし変更してみました。
ですがやはりまだ動きはしないです…。
また ループ内 衝突判定の条件分岐をループ外に出しメソッド化というのがやはり思いつきません。
どこをどう変えるか、改善点 修正点など、いろいろとまた教えていただけると幸いです。
Ruby
1require "dxruby" 2 3#マップの定義 4#ブロックの定義 5 6 7#初期値設定 8x = 32 9y = preview = 32 10f = 1 11item = 0 12jump = false 13 14 15#対応した配列を返す 16def collition(x, y, array) 17 return array[y/32][x/32] 18end 19#すり抜け防止 20def slip 21 if y_move > 31 22 y_move = 31 23 end 24end 25#落下時 26def drop 27 if y >= 480 28 x = 32 29 y = preview = 0 30 item = 0 31 map[3][6] = 5 32 map[2][6] = 0 33 end 34end 35#移動スピード 36def speed 37 if item == 1 38 x += Input.x * 5 39 else 40 x += Input.x * 2 41 end 42end 43#SPACEキーでジャンプ 44def jump 45 if Input.key_push?(K_SPACE) and jump 46 f = -15 47 end 48end 49#マップの表示 50def draw_map(map, block) 51 Window.draw_tile(0, 0, map, block, 0, 0, 18, 15) 52end 53#キャラクターの表示 54def draw_char(x, y, character) 55 Window.draw(x, y, character) 56end 57 58 59#ゲームループ開始 60Window.loop do 61 62 63 y_move = (y - preview) + f 64 preview = y 65 y += y_move 66 f = 1 67 68 69 slip 70 drop 71 speed 72 73 74 #天井衝突判定 75 if collision(x , y, map) == 1 or 76 collision(x+31, y, map) == 1 then 77 y = y/32*32 + 32 78 end 79 #床衝突判定 80 if collision(x , y+31, map) == 1 or 81 collision(x+31, y+31, map) == 1 then 82 y = y/32*32 83 jump = true#地面に接地時ジャンプ許可 84 else 85 jump = false #不許可 86 end 87 #壁衝突判定(左側) 88 if collision(x , y , map) == 1 or 89 collision(x , y+31, map) == 1 then 90 x = x/32*32 + 32 91 end 92 #壁衝突判定(右側) 93 if collision(x+31, y , map) == 1 or 94 collision(x+31, y+31, map) == 1 then 95 x = x/32*32 96 end 97 #アイテム衝突判定 98 if collision(x , y , map) == 4 or 99 collision(x , y+31, map) == 4 then 100 x = x/32*32 + 32 101 map[2][6] = 0 102 item = 1 103 end 104 #ブロック衝突判定 105 if collision(x , y , map) == 5 or 106 collision(x+31, y , map) == 5 then 107 y = y/32*32 + 32 108 map[2][6] = 4 109 map[3][6] = 1 110 end 111 if collision(x , y+31, map) == 5 or 112 collision(x+31, y+31, map) == 5 then 113 y = y/32*32 114 jump = true 115 end 116 117 118 jump 119 draw_map 120 draw 121 122 123end
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/29 01:07