CoRサンプル集: テトリスのような落ちものパズルゲームのサンプル

テトリスのような落ちものパズルゲームのサンプル。
音楽・画像などの素材は一切使用していないので、コピペだけで移植出来ます。

操作方法
横移動:←→
ソフトドロップ:↓
ハードドロップ:↑
左回転:Z
右回転:X
ホールド:C
プレー:3 (人数:2) クリア:2 評価: 10 (1回)
タグが設定されていません
#============================================================================== # 入力状態を管理するクラス #============================================================================== class InputManager # リピート開始までの遅延フレーム数と連続実行間隔(フレーム数) INITIAL_DELAY = CONFIG[:input_delay] # キーを押してから初回リピートまでの待ち時間 REPEAT_INTERVAL = CONFIG[:input_interval] # リピート実行の間隔 def initialize @key_states = {} # キーごとの押下状態を保持 end # 指定キーの入力状態を取得する # 初回は即時、長押し中は一定間隔ごとにtrueを返す # # @param keyboard [Object] keyboardオブジェクト(クラス内で使えないため、オブジェクトを渡す使用) # @param key [String] チェック対象のキー(例: 'LEFT', 'RIGHT') # @param current_time [Array<Integer>] 現在時刻の配列 [年, 月, 日, 時, 分, 秒, ミリ秒] # @return [Boolean] 実行すべきタイミングであればtrue def key_pressed?(keyboard, key, current_time) state = (@key_states[key] ||= { pressed: false, last_pressed_time: nil, first_pressed_time: nil }) if keyboard.down?(key) unless state[:pressed] # 初回押下 state[:pressed] = true state[:first_pressed_time] = current_time state[:last_pressed_time] = current_time return true else # 長押し時 elapsed = DateTimeArray.diff_ms(current_time, state[:first_pressed_time]) if elapsed >= INITIAL_DELAY && DateTimeArray.diff_ms(current_time, state[:last_pressed_time]) >= REPEAT_INTERVAL state[:last_pressed_time] = current_time return true end end else # 離された state[:pressed] = false state[:first_pressed_time] = nil state[:last_pressed_time] = nil end return false end end
投稿者:Material 185033 3 mini 光楼(114) 対象Lv1 公開日:2025年07月19日 20:48:05
プレー内容を公開する

違反を通報する

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Rmakeic1 mini muga(投稿日:2025/07/19 23:10, 履歴)
すばらしいです!普通に遊べるところがすごいです!
プレー履歴
  • Rmakeic1 mini muga: スコア:1350
    (07/19 23:09)

全てのプレー履歴を見る

新着レビュー

レビューはまだ投稿されていません。 作品の感想を作者に伝えるためにレビューを投稿してみませんか?

全てのレビュー

フォロー/シェア

ブログ/Wiki/掲示板で共有する

Rmake内(ブログ/Wiki/掲示板)に貼り付ける場合は以下のタグを利用してください。

リンク

プレイヤー

外部ホームページに貼り付ける

外部ホームページに貼り付ける場合は以下のタグを利用してください。