CoRサンプル集: テトリスのような落ちものパズルゲームのサンプル
テトリスのような落ちものパズルゲームのサンプル。
音楽・画像などの素材は一切使用していないので、コピペだけで移植出来ます。
操作方法
横移動:←→
ソフトドロップ:↓
ハードドロップ:↑
左回転:Z
右回転:X
ホールド:C
音楽・画像などの素材は一切使用していないので、コピペだけで移植出来ます。
操作方法
横移動:←→
ソフトドロップ:↓
ハードドロップ:↑
左回転:Z
右回転:X
ホールド:C
プレー:3
(人数:2)
クリア:2
評価: 10 (1回)
タグが設定されていません
# ------------------------------
# ゲーム設定(設定はすべてここで管理)
# ------------------------------
CONFIG = {
:grid_width => 10, # 横マス数
:grid_height => 20, # 縦マス数
:cell_size => 28, # セル1個のサイズ(ピクセル)
:next_piece_count => 6, # 次のピースの表示数
:enable_hold => true, # ホールド機能を有効にするかどうか
:enable_bags => true, # バッグシステムを有効にするかどうか
:window_width => rmake_game.screen_width, # 画面幅(ピクセル)
:window_height => rmake_game.screen_height, # 画面高さ(ピクセル)
:grid_offset_x => 0, # グリッド配置位置オフセット量
:grid_offset_y => 10,
:max_score => 9999999999, # 最大スコア
:score_format => "%010d", # スコア表示のフォーマット
:drop_interval => 30, # 自然落下間隔(フレーム数)
:input_delay => 300, # キー長押し時の初回待ち時間(ms)
:input_interval => 30, # キー長押し時のリピート間隔(ms)
:controls => { # 操作キー
:left => 'LEFT',
:right => 'RIGHT',
:soft_drop => 'DOWN',
:hard_drop => 'UP',
:right_rotate => 'X',
:left_rotate => 'Z',
:hold => 'C'
}
}
# ------------------------------
# ネクストピース設定
# ------------------------------
NEXT_PIECE_CONFIG = {
:x => 600, # 表示X座標
:y => 50, # 表示開始Y座標
:title_y => 30, # タイトル表示Y座標
:title_size => 16, # タイトルテキストサイズ
:block_size => 20, # ピース表示用のブロックサイズ
:vertical_spacing => 30, # ピース同士の間隔(縦方向)
}
# ------------------------------
# ホールド機能設定
# ------------------------------
HOLD_CONFIG = {
:x => 125, # 表示X座標
:y => 90, # 表示Y座標
:title_y => 30, # タイトル表示Y座標
:title_size => 16, # タイトルテキストサイズ
:block_size => 20, # ピース表示用のブロックサイズ
}
# ------------------------------
# ピースを構成するブロック配置の定義
# 0: 空白, 1: ブロック
# 縦横のサイズを合わせること
# ------------------------------
PIECE_BLOCKS = {
:I => [
[0, 0, 0, 0],
[1, 1, 1, 1],
[0, 0, 0, 0],
[0, 0, 0, 0]
],
:O => [
[1, 1],
[1, 1]
],
:T => [
[0, 1, 0],
[1, 1, 1],
[0, 0, 0]
],
:L => [
[0, 0, 1],
[1, 1, 1],
[0, 0, 0]
],
:J => [
[1, 0, 0],
[1, 1, 1],
[0, 0, 0]
],
:S => [
[0, 1, 1],
[1, 1, 0],
[0, 0, 0]
],
:Z => [
[1, 1, 0],
[0, 1, 1],
[0, 0, 0]
],
:LL => [
[1, 0, 0],
[1, 0, 0],
[1, 1, 1]
],
}
# ------------------------------
# ブロックの種類を定義
# ID: RGBカラー
# ------------------------------
BLOCK_PATTERNS = {
:I => '#00FFFF',
:O => '#FFFF00',
:T => '#A000FF',
:L => '#FFA500',
:J => '#0000FF',
:S => '#00FF00',
:Z => '#FF0000',
:LL => '#BF9B79',
}
# 空きマス色
FREE_CELL_COLOR = '#1E1E1E'
# エラーブロック色
ERROR_BLOCK_COLOR = '#FFFFFF'
# 非表示ピース用スプライトのポジション
INVISIBLE_PIECE_SPRITE_POSITION = [-100, -100]
プレー内容を公開する