もし、ひまわりバージョンが、1.78以下ならば、( 「ひまわりのバージョンが{ひまわりバージョン}です。 1.79以降で起動してください」と、言う。 終わり。) 『user32.dll』の、『WORD GetKeyState(int)』を、『?の』の、『キー状態取得』として、DLLを利用。 『ブロックの形』を、『?の、?の』で、関数定義。//0〜6、4〜7 ※※※※※※※※※※※※ 音のファイルの存在確認 使い捨ては、「{ランタイムのパス}tools\\n.wav {ランタイムのパス}tools\\pi.wav」 ブロック落ちた音は、使い捨て#0 選択音は、使い捨て#1 使い捨てを、反復( それが、存在するか。 もし、それでなければ、抜ける。 )//全部存在すればそれ=はい、どれかがなければいいえ。 もし、それならば、「演奏」を、「?を、鳴らす」に、名義変更。 違えば、「SHR」を、「?、?を、鳴らす」に、名義変更。 '存在しなければ関数「SHR」は使えなくなりますが、 'ファイルが無くて演奏できずにエラー落ち、ということはなくなります。 'プログラム中では「SHR」のかわりに「右シフト」を使います。 使い捨てを、反復(それを、鳴らす)//サウンドの読み込み ※※※※※※※※※※※※ 母艦の、タイトルは、「てきすとテトリス@20G ver1.00」 //定数 左キーは 37。{←} 上キーは 38。{↑} 右キーは 39。{→} 下キーは 40。{↓} zキーは 90。{Z} xキーは 88。{X} 一フレームは、1/50{秒} 最初だけの準備を、呼ぶ。//ラベルの作成 ブロックの形定義を、呼ぶ。//ブロックの形を呼び出す準備 初期化を、呼ぶ。//ゲーム中に使う数値の初期化。 ゲームループ1へ、飛ぶ。//メニュー画面へ。 ※※※※※※※※※※※ゲーム設定※※※※※※※※※※※ //落下速度〜1フレームで落ちる距離。100で1ブロック。2000だと20マス。 *通常設定 //通常、このラベルには飛んできません。 //普通に上からミノが降ってくるほうがいいって人はこの設定をハード設定にもってってください。 落下速度=2 停止中=20 固定時間=10 共通設定を、呼ぶ 戻る *ハード設定 落下速度=2000 停止中=20 固定時間=50 共通設定を、呼ぶ ゲーム難易度=「ハード」 戻る *イージー設定 落下速度=2000 停止中=20 固定時間=180 共通設定を、呼ぶ。 ゲーム難易度=「イージー」 戻る *共通設定 クリアライン数=100//100Linesモードのクリアライン数。かえるとそのライン数でクリアになります。 制限時間=120/一フレーム//サバイバルモードの制限時間。120秒=120/(1/50)=6000フレーム 消去ライン描画 ブロック出現フラグは、はい。 終了フラグは、オフ 戻る。 ※※※※※※※※※※※※※※※※※※※※※※※ ※※※※※※※※※※ 1回だけの準備(ラベル等の作成、設定) ※※※※※※※※※※ *最初だけの準備 $333333で、画面クリア 母艦の、幅は、400 母艦の、高さは、420 (0,0)へ、積んであるブロックラベルを、ラベルとして、作成。その、フォントサイズは、14。 (0,0)へ、ネクストブロックラベルを、ラベルとして、作成。その、フォントサイズは、14。その、フォント色は、水色 (0,0)へ、降ってくるブロックラベルを、ラベルとして、作成。その、フォントサイズは、14。その、フォント色は、青色 (0,0)へ、外枠ラベルを、ラベルとして、作成。その、フォントサイズは、14。その、フォント色は、$666666 「 ■          ■\n」を、20度、リフレイン。 それ=それ&「 ■■■■■■■■■■■■」 その、テキストは、それ。 (0,0)へ、チュートリアル表示ラベルを、ラベルとして、作成。その、フォントサイズは、10。その、フォント色は、$9999ff その、テキストは、「」。 積んであるブロックラベルの、フォント色は、白色 積んであるブロックラベルの、テキストは、「             」 (0,0)へ、消去情報ラベルを、ラベルとして、作成。その、フォントサイズは、26。その、フォント色は、水色。 消去情報ラベルの、テキストは、「」 (60,130)へ、四ライン演出ラベルを、ラベルとして、作成。その、フォント色は、$0000ff。その、フォント書体は、「MS 明朝|太字|120」 その、テキストは、「」。 (積んであるブロックラベルの、右側)へ、操作法ラベルを、ラベルとして、作成。 その、透過処理は、オフ その、背景色は、$ffffcc その、テキストは、「\n <操作方法> \n ←→ …移動\n  ↓  …固定\n Z、X …回転\n」 (その、下側)へ、得点ラベルを、ラベルとして、作成。 その、フォント色は、白色 その、透過処理は、オフ その、背景色は、$666666 得点描画を、呼ぶ。 (その、下側)へ、消したラインラベルを、ラベルとして、作成。 その、フォント色は、白色 その、透過処理は、オフ その、背景色は、$666666 その、テキストは、「\n」 (その、下側)へ、残り時間お知らせラベルを、ラベルとして、作成。 その、フォント色は、白色 その、透過処理は、オフ その、背景色は、$666666 その、フォントサイズは、10 その、テキストは、「残り時間」 (その、下側)へ、経過時間ラベルを、ラベルとして、作成。 その、フォント色は、白色 その、フォントサイズは、28 その、テキストは、「」 (その、下側)へ、説明書きラベルを、ラベルとして、作成。 その、フォント色は、白色 その、透過処理は、オフ その、背景色は、$666666 その、テキストは、「\n」 センタリング (0,150)へ、タイトル表示ラベル1を、ラベルとして、作成。 タイトル表示ラベル2を、ラベルとして、作成。 タイトル表示ラベル3を、ラベルとして、作成。 タイトル表示ラベル4を、ラベルとして、作成。 タイトル表示ラベル5を、ラベルとして、作成。 タイトル表示ラベル6を、ラベルとして、作成。 センタリング解除 (55,150)へ、準備ラベルを、ラベルとして、作成。 タイトル表示ラベル1の、透過処理は、オフ タイトル表示ラベル2の、透過処理は、オフ タイトル表示ラベル3の、透過処理は、オフ タイトル表示ラベル4の、透過処理は、オフ タイトル表示ラベル5の、透過処理は、オフ タイトル表示ラベル6の、透過処理は、オフ タイトル表示ラベル1の、背景色は、$ccffcc タイトル表示ラベル1の、テキストは、「  ☆ゲームモード選択☆  」 準備ラベルの、透過処理は、オフ 準備ラベルの、背景色は、青色 母艦浮上。 ((母艦の、幅)-60,(母艦の、高さ)-20)へ、FPS表示ラベルを、ラベルとして、作成。 その、フォント色は、赤色。 その、テキストは、「FPS」 チュートリアル選択メニュー=「   基本事項    回転先行入力       回転入れ    渡り    シンクロ入れ    戻る」 ※メニュー関連 メニュー辞書の、選択番号は、2 メニュー辞書の、場面は、「ゲームモード選択」//ゲームモード選択/チュートリアルメニュー メニュー辞書の、チュートリアル選択番号は、0 -1で、乱数初期化。 戻る。 ※※※※※※※※※※ 汎用 ※※※※※※※※※※ *キーチェック 左キーの、キー状態取得して、もし、AND($8000)>0なら、左カウンタ=左カウンタ+1。 違えば、左カウンタ=0. 右キーの、キー状態取得して、もし、AND($8000)>0なら、右カウンタ=右カウンタ+1。 違えば、右カウンタ=0。 下キーの、キー状態取得して、もし、AND($8000)>0なら、下カウンタ=下カウンタ+1。 違えば、下カウンタ=0。 上キーの、キー状態取得して、もし、AND($8000)>0なら、上カウンタ=上カウンタ+1。 違えば、上カウンタ=0。 zキーの、キー状態取得して、もし、AND($8000)>0なら、Zカウンタ=Zカウンタ+1。 違えば、Zカウンタ=0。 xキーの、キー状態取得して、もし、AND($8000)>0なら、Xカウンタ=Xカウンタ+1。 違えば、Xカウンタ=0。 戻る。 ※※※※※※※※※※※ゲーム開始前の数値の初期化※※※※※※※ *初期化 母艦の、キー押した時は、「」 じかん1は、システム時間 脱出フラグ=いいえ 左カウンタ=0//キー状態のリセット 右カウンタ=0 下カウンタ=0 上カウンタ=0 Zカウンタ=0 Xカウンタ=0 地面にいる時間=0 固定時間=60//地面についてから固定されるまでのフレーム数 落下距離=0 リピート=8//入れっぱなし状態になるフレーム数 得点=0 消去ライン数=0 四ライン消し回数=0 三ライン消し回数=0 二ライン消し回数=0 一ライン消し回数=0 四ライン消し得点=0 三ライン消し得点=0 二ライン消し得点=0 一ライン消し得点=0 経過時間=0 説明書きラベルの、テキストは、「  へ○   /V 彡/>」 共通設定。 残り時間表示。 ゲームモード選択メニュー更新。 動いた=はい//もし、動いたならば、描画する時にブロックを描画する 停止理由=「ゲーム開始」 ライン確認は、いいえ それは、「」 積んであるブロックラベルの、テキストは、それ 降ってくるブロックラベルの、テキストは、それ ネクストブロックラベルの、テキストは、それ 四ライン演出ラベルの、テキストは、「」 消去情報ラベルの、テキストは、「」 //辞書を使うと配列よりはやい。 //式は2進数でビットの立ってる部分が壁。ANDを使って比較する。 20回(積んであるブロック辞書の、回数は、「 ■          ■」 積んであるブロック式辞書の、回数は、4098) 積んであるブロック辞書の、21は、「 ■■■■■■■■■■■■」 積んであるブロック式辞書の、21は、8190 背景描画を、呼ぶ。 ※ブロック関連 降ってくるブロック式は、「」// 降ってくるブロックXは、5//左からいくつめか 降ってくるブロックYは、0//上からの距離 降ってくるブロックは、「」 ※ツモ調整 調整は、「0\n0\n1\n1\n2\n2\n3\n3\n4\n4\n5\n5\n6\n6」 ブロック列は、「0\n1\n2\n3\n4\n5\n6」 ブロック列を、配列シャッフル。 ブロック列は、それ。 調整を、配列シャッフル。 調整は、それ。 4の、乱数 ネクストブロック種類は、それ ※ステージ関連 準備ラベルの、可視は、オフ 積んであるブロックラベルの、フォント色は、白色 得点描画を、呼ぶ。 戻る ※※※※※※※※※※※ゲーム開始前の状態※※※※※※※ *ゲームループ1 FPS表示ラベルの、テキストは、1000/(システム時間-じかん1) じかん1は、システム時間。 //一フレームで処理する内容ここから キーチェック。 (メニュー辞書の、場面)で、条件分岐 「ゲームモード選択」の時、( メニュー動作1。 もし、脱出フラグならば、ゲームループ1脱出へ、飛ぶ。) 「チュートリアルメニュー」の時、( メニュー動作2 もし、脱出フラグならば、チュートリアルメニュー決定へ、飛ぶ。) //一フレームで処理する内容ここまで じかん2は、システム時間。 それ=一フレーム-(じかん2-じかん1)/1000 もし、それ≦0.001ならば、ゲームループ1へ、飛ぶ それ秒後に、ゲームループ1へ飛ぶ、タイマー設定。 待機。 { *キー動作1 もし、Xカウンタが、1ならば、(脱出フラグは、オン) もし、Zカウンタが、1ならば、(脱出フラグは、オン) 戻る。} ※※※※※※※※※※※※※※※メニュー描画 //タイトル画面 *メニュー動作1 もし、下カウンタが、1ならば、( もし、(メニュー辞書の、選択番号)が、6でなければ、メニュー辞書の、選択番号は、(メニュー辞書の、選択番号)+1 選択音を、鳴らす ゲームモード選択メニュー更新。 ) もし、上カウンタが、1ならば、( もし、(メニュー辞書の、選択番号)が、2でなければ、メニュー辞書の、選択番号は、(メニュー辞書の、選択番号)-1 選択音を、鳴らす ゲームモード選択メニュー更新。 ) もし、Xカウンタが、1ならば、(脱出フラグは、オン) もし、Zカウンタが、1ならば、(脱出フラグは、オン) 戻る。 //チュートリアルメニュー *メニュー動作2 もし、下カウンタが、1ならば、( もし、(メニュー辞書の、チュートリアル選択番号)が、5でなければ、メニュー辞書の、チュートリアル選択番号は、(メニュー辞書の、チュートリアル選択番号)+1 選択音を、鳴らす チュートリアルメニュー更新 ) もし、上カウンタが、1ならば、( もし、(メニュー辞書の、チュートリアル選択番号)が、0でなければ、メニュー辞書の、チュートリアル選択番号は、(メニュー辞書の、チュートリアル選択番号)-1 選択音を、鳴らす チュートリアルメニュー更新 ) もし、Xカウンタが、1ならば、(脱出フラグは、オン) もし、Zカウンタが、1ならば、(脱出フラグは、オン) 戻る。 *ゲームモード選択メニュー更新 タイトル表示ラベル2の、テキストは、「 サバイバル(ハード)  」。その、背景色は、灰色 タイトル表示ラベル3の、テキストは、「 サバイバル(イージー) 」。その、背景色は、灰色 タイトル表示ラベル4の、テキストは、「 100Lines(ハード)   」。その、背景色は、灰色 タイトル表示ラベル5の、テキストは、「 100Lines(イージー)  」。その、背景色は、灰色 タイトル表示ラベル6の、テキストは、「 チュートリアル    」。その、背景色は、灰色 「タイトル表示ラベル{メニュー辞書の、選択番号}」を、その単語に特定。 (その、テキスト)の、「 」を、「 にア 」に、置換。 その、テキストは、それ。その、背景色は、水色。 戻る *チュートリアルメニュー更新 (メニュー辞書の、チュートリアル選択番号)で、条件分岐 0の時、(チュートリアル選択メニューの、「   基本事項」を、「 にア 基本事項」に、置換) 1の時、(チュートリアル選択メニューの、「   回転先行入力」を、「 にア 回転先行入力」に、置換) 2の時、(チュートリアル選択メニューの、「   回転入れ」を、「 にア 回転入れ」に、置換) 3の時、(チュートリアル選択メニューの、「   渡り」を、「 にア 渡り」に、置換) 4の時、(チュートリアル選択メニューの、「   シンクロ入れ」を、「 にア シンクロ入れ」に、置換) 5の時、(チュートリアル選択メニューの、「   戻る」を、「 にア 戻る」に、置換) チュートリアルメニューラベルの、テキストは、それ 戻る。 *タイトル表示隠す 6回( 「タイトル表示ラベル{回数}」を、その単語に特定。 その、可視は、オフ ) 戻る。 *タイトル表示出す 6回( 「タイトル表示ラベル{回数}」を、その単語に特定。 その、可視は、オン ) 戻る。 ※※※※※※※※※※※※※※※ *ゲームモード選択入る メニュー辞書の、場面は、「ゲームモード選択」 タイトル表示ラベル1の、テキストは、「   ☆ゲームモード選択☆   」 ゲームモード選択メニュー更新。 タイトル表示出すを、呼ぶ。 ゲームループ1へ、飛ぶ。 *ゲームモード選択出る タイトル表示隠す 戻る *チュートリアルメニュー入る (タイトル表示ラベル1の、下側)へ、チュートリアルメニューラベルを、ラベルとして、作成。 その、透過処理は、オフ。その、背景色は、$999999 その、フォント色は、赤色 チュートリアルメニュー更新 タイトル表示ラベル1の、テキストは、「☆チュートリアルメニュー☆」 タイトル表示ラベル1の、可視は、オン メニュー辞書の、場面は、「チュートリアルメニュー」 ゲームループ1へ、飛ぶ *チュートリアルメニュー出る チュートリアルメニューラベルの、オブジェクト破壊。 タイトル表示ラベル1の、可視は、オフ 戻る ※※※※※※※※※※※※※※※※ *ゲームループ1脱出 タイマー解除。 脱出フラグは、オフ ゲームモード選択出るを、呼ぶ。 (メニュー辞書の、選択番号)で、条件分岐。 2の時、(ハード設定を、呼ぶ。メニュー辞書の、ゲームモードは、「サバイバル」。ゲームスタートへ、飛ぶ) 3の時、(イージー設定を、呼ぶ。メニュー辞書の、ゲームモードは、「サバイバル」。ゲームスタートへ、飛ぶ) 4の時、(ハード設定を、呼ぶ。メニュー辞書の、ゲームモードは、「100Lines」。ゲームスタートBへ、飛ぶ) 5の時、(イージー設定を、呼ぶ。メニュー辞書の、ゲームモードは、「100Lines」。ゲームスタートBへ、飛ぶ) 6の時、(チュートリアルメニュー入るへ、飛ぶ。) その他の時、(ハード設定を、呼ぶ。ゲームスタートへ、飛ぶ) *チュートリアルメニュー決定 脱出フラグは、オフ。 チュートリアルメニュー出る。 (メニュー辞書の、チュートリアル選択番号)で、条件分岐。 0の時、(チュートリアル基本事項へ、飛ぶ) 1の時、(チュートリアル回転先行入力へ、飛ぶ) 2の時、(チュートリアル回転入れへ、飛ぶ) 3の時、(チュートリアル渡りへ、飛ぶ) 4の時、(チュートリアルシンクロ入れへ、飛ぶ。) その他の時、(ゲームモード選択入るへ、飛ぶ。) *ゲームスタート 残り時間お知らせラベルの、テキストは、「残り時間」 残り時間表示。 (準備ラベルの、下側)に、モード解説ラベルを、ラベルとして、作成。 その、テキストは、「\n長時間生き残り、\n点数を稼げ!」 その、フォント色は、白色 レディーゴー表示 モード解説ラベルの、オブジェクト破壊 ゲームループ2へ、飛ぶ。 *ゲームスタートB 残り時間お知らせラベルの、テキストは、「経過時間」 経過時間表示。 (準備ラベルの、下側)に、モード解説ラベルを、ラベルとして、作成。 その、テキストは、「\nなるべく短時間で、\n{クリアライン数}ライン消せ!」 その、フォント色は、白色 レディーゴー表示 モード解説ラベルの、オブジェクト破壊 ゲームループ2Bへ、飛ぶ。 *レディーゴー表示 準備ラベルの、フォントサイズは、26 準備ラベルの、フォント色は、赤色 準備ラベルの、可視は、オン ネクストブロック描画を、呼ぶ。 5回(「 」を、(5-回数)度、リフレイン。 準備ラベルの、テキストは、それ&「GET READY...」 0.015秒、待つ。 ) 0.35秒、待つ。 準備ラベルの、テキストは、「  GO!  」 0.3秒、待つ。 準備ラベルの、可視は、オフ 準備ラベルの、テキストは、「」 戻る。 ※※※※※※※※※※※ゲーム中※※※※※※※※ //サバイバル *ゲームループ2 FPS表示ラベルの、テキストは、1000/(システム時間-じかん1) じかん1は、システム時間。 //一フレームで処理する内容ここから キーチェック。 経過時間=経過時間+一フレーム 消去情報表示時間=消去情報表示時間-1 もし、消去情報表示時間=0ならば、消去情報ラベルの、テキストは、「」 もし、制限時間>0ならば、制限時間=制限時間-1//サバイバル用 もし、停止中<=0ならば、( もし、ブロック出現フラグならば、(出現処理を、呼ぶ。 ネクストブロック用意を、呼ぶ。) ブロック落下を、呼ぶ。 もし、動いたならば、ブロック描画を、呼ぶ。 落ちたブロック配置を、呼ぶ。 キー動作2を、呼ぶ。 )違えば( 停止中から、1を、引く。 停止理由で、条件分岐。 『ライン消去』の時、(もし、停止中=4ならば、ライン消去処理。//サバイバル用 もし、停止中=0ならば、(四ライン演出ラベルの、テキストは、「」。 停止理由=「」) ) 『ゲーム開始』の時、(経過時間=0。制限時間=制限時間+1)//サバイバル用 その他の時、それは、それ。 ) もし、ライン確認ならば、ラインチェック。 残り時間表示。 もし、終了フラグならば、クリア処理1へ、飛ぶ //一フレームで処理する内容ここまで じかん2は、システム時間。 それ=一フレーム-(じかん2-じかん1)/1000 もし、それ≦0.001ならば、ゲームループ2へ、飛ぶ//サバイバル用 それ秒後に、ゲームループ2へ飛ぶ、タイマー設定。//サバイバル用 待機。 //一フレーム秒後に、ゲームループ2へ飛ぶ、タイマー設定。 //100Lines *ゲームループ2B FPS表示ラベルの、テキストは、1000/(システム時間-じかん1) じかん1は、システム時間。 //一フレームで処理する内容ここから キーチェック。 経過時間=経過時間+1 消去情報表示時間=消去情報表示時間-1 もし、消去情報表示時間=0ならば、消去情報ラベルの、テキストは、「」 //もし、制限時間>0ならば、制限時間=制限時間-1 もし、停止中<=0ならば、( もし、ブロック出現フラグならば、(出現処理を、呼ぶ。 ネクストブロック用意を、呼ぶ。) ブロック落下を、呼ぶ。 もし、動いたならば、ブロック描画を、呼ぶ。 落ちたブロック配置を、呼ぶ。 キー動作2を、呼ぶ。 )違えば( 停止中から、1を、引く。 停止理由で、条件分岐。 『ライン消去』の時、(もし、停止中=4ならば、ライン消去処理B。//100Lines用 もし、停止中=0ならば、(四ライン演出ラベルの、テキストは、「」。 停止理由=「」) ) 『ゲーム開始』の時、(経過時間=0。制限時間=制限時間+1) その他の時、それは、それ。 ) もし、ライン確認ならば、ラインチェック。 経過時間表示。//100Lines用 //もし、終了フラグならば、クリア処理2へ、飛ぶ//100Lines用 //一フレームで処理する内容ここまで じかん2は、システム時間。 それ=一フレーム-(じかん2-じかん1)/1000 もし、それ≦0.001ならば、ゲームループ2Bへ、飛ぶ//100Lines用 それ秒後に、ゲームループ2Bへ飛ぶ、タイマー設定。//100Lines用 待機。 ※※※※※※※※※※描画関連 *ブロック描画 使い捨ては、「」 使い捨て2は、「」 降ってくるブロックを、反復( 使い捨て=それ。 リフレイン(「 」,降ってくるブロックX) 使い捨て2=使い捨て2&それ&使い捨て&「\n」 ) リフレイン(「\n」,降ってくるブロックY) 使い捨て=それ&使い捨て2。 降ってくるブロックラベルの、テキストは、使い捨て。 動いた=いいえ 戻る。 *背景描画 積んであるブロックラベルの、テキストは、(積んであるブロック辞書の、1)&「\n」& (積んであるブロック辞書の、2)&「\n」& (積んであるブロック辞書の、3)&「\n」& (積んであるブロック辞書の、4)&「\n」& (積んであるブロック辞書の、5)&「\n」& (積んであるブロック辞書の、6)&「\n」& (積んであるブロック辞書の、7)&「\n」& (積んであるブロック辞書の、8)&「\n」& (積んであるブロック辞書の、9)&「\n」& (積んであるブロック辞書の、10)&「\n」& (積んであるブロック辞書の、11)&「\n」& (積んであるブロック辞書の、12)&「\n」& (積んであるブロック辞書の、13)&「\n」& (積んであるブロック辞書の、14)&「\n」& (積んであるブロック辞書の、15)&「\n」& (積んであるブロック辞書の、16)&「\n」& (積んであるブロック辞書の、17)&「\n」& (積んであるブロック辞書の、18)&「\n」& (積んであるブロック辞書の、19)&「\n」& (積んであるブロック辞書の、20)&「\n」& (積んであるブロック辞書の、21) 戻る。 *ネクストブロック描画 //0が四角、1がT字、2がL字、3が逆L、4がZ字、5が逆Z、6が棒 ネクストブロック種類で、条件分岐 0の時、(それは、「\n      ■■\n      ■■」 ネクストブロックラベルの、フォント色は、黄色) 1の時、(それは、「\n     ■■■\n      ■」 ネクストブロックラベルの、フォント色は、水色) 2の時、(それは、「\n     ■■■\n     ■」 ネクストブロックラベルの、フォント色は、$00aaff) 3の時、(それは、「\n     ■■■\n       ■」 ネクストブロックラベルの、フォント色は、青色) 4の時、(それは、「\n     ■■\n      ■■」 ネクストブロックラベルの、フォント色は、緑色) 5の時、(それは、「\n      ■■\n     ■■」 ネクストブロックラベルの、フォント色は、紫色) 6の時、(それは、「\n     ■■■■」 ネクストブロックラベルの、フォント色は、赤色) ネクストブロックラベルの、テキストは、それ。 戻る。 *得点描画 得点を、9桁で、右寄せ。 得点ラベルの、テキストは、「{それ} 点  」。 戻る。 *消去ライン描画 消去ライン数を、9桁で、右寄せ。 消したラインラベルの、テキストは、「{それ} ライン」。 戻る。 *残り時間表示 経過時間ラベルの、テキストは、「{整数(制限時間*一フレーム)}.{(制限時間*一フレーム*10)%10}」 戻る。 *経過時間表示 経過時間ラベルの、テキストは、「{整数(経過時間*一フレーム)}.{(経過時間*一フレーム*10)%10}」 戻る。 *四ライン演出 72の、乱数。 それ=それ+1 四ライン演出ラベルの、テキストは、演出辞書の、それ 戻る。 ※※※※※※※※※※※※ライン消去※※※※※※※※※※※ *ライン消去処理 ライン消去処理共通を、呼ぶ。 消したラインで、条件分岐 4の時、(四ライン消し回数=四ライン消し回数+1。使い捨て=375。//増加時間=7.5/一フレーム=375 四ライン演出を、呼ぶ。 それ=600+四ライン消し回数*300。 四ライン消し得点=四ライン消し得点+それ。 説明書きラベルの、テキストは、「4ライン消し\n600+{四ライン消し回数}回x300=\n{右寄(それ,13)}点\nタイム +7.5秒」) 3の時、(三ライン消し回数=三ライン消し回数+1。使い捨て=160。//増加時間=3.2/一フレーム=160 それ=400+三ライン消し回数*100 三ライン消し得点=三ライン消し得点+それ。 説明書きラベルの、テキストは、「3ライン消し\n400+{三ライン消し回数}回x100=\n{右寄(それ,13)}点\nタイム +3.2秒」) 2の時、(二ライン消し回数=二ライン消し回数+1。使い捨て=40。//増加時間=0.8/一フレーム=40 それ=300+二ライン消し回数*25 二ライン消し得点=二ライン消し得点+それ。 説明書きラベルの、テキストは、「2ライン消し\n300+{二ライン消し回数}回x25=\n{右寄(それ,13)}点\nタイム +0.8秒」) 1の時、(一ライン消し回数=一ライン消し回数+1。使い捨て=10。 それ=10+一ライン消し回数*10 一ライン消し得点=一ライン消し得点+それ。 説明書きラベルの、テキストは、「1ライン消し\n10+{一ライン消し回数}回x10=\n{右寄(それ,13)}点\nタイム +0.2秒」) 消去情報ラベルの、テキストは、「\n\n\n\n\n\n\n\n\n{右寄(それ,20)}点\n        +」&(使い捨て*一フレーム)&「秒」 消去情報表示時間=1/一フレーム 得点=得点+それ 制限時間=制限時間+使い捨て 得点描画 消去ライン数=消去ライン数+消したライン 消去ライン描画 //停止理由は、「」 背景描画。 戻る。 //100LINES用 *ライン消去処理B ライン消去処理共通。 消したラインで、条件分岐 4の時、(四ライン消し回数=四ライン消し回数+1。使い捨て=150。//時間=3/一フレーム=150 四ライン演出を、呼ぶ。 それ=600+四ライン消し回数*300。 四ライン消し得点=四ライン消し得点+それ。 説明書きラベルの、テキストは、「4ライン消し\n600+{四ライン消し回数}回x300=\n{右寄(それ,13)}点」) 3の時、(三ライン消し回数=三ライン消し回数+1。使い捨て=50。//時間=/一フレーム=50 それ=400+三ライン消し回数*100 三ライン消し得点=三ライン消し得点+それ。 説明書きラベルの、テキストは、「3ライン消し\n400+{三ライン消し回数}回x100=\n{右寄(それ,13)}点」) 2の時、(二ライン消し回数=二ライン消し回数+1。使い捨て=15。//時間=0.3/一フレーム=15 それ=300+二ライン消し回数*25 二ライン消し得点=二ライン消し得点+それ。 説明書きラベルの、テキストは、「2ライン消し\n300+{二ライン消し回数}回x25=\n{右寄(それ,13)}点」) 1の時、(一ライン消し回数=一ライン消し回数+1。使い捨て=5。 それ=10+一ライン消し回数*10 一ライン消し得点=一ライン消し得点+それ。 説明書きラベルの、テキストは、「1ライン消し\n10+{一ライン消し回数}回x10=\n{右寄(それ,13)}点」) 消去情報ラベルの、テキストは、「\n\n\n\n\n\n\n\n\n{右寄(それ,20)}点」 消去情報表示時間=1/一フレーム 得点=得点+それ 得点描画 消去ライン数=消去ライン数+消したライン 消去ライン描画 背景描画。 もし、消去ライン数が、クリアライン数以上ならば、(クリア処理2へ、飛ぶ) 戻る。 *ライン消去処理共通 消したライン=0 20回( 使い捨て2は、回数 もし、(積んであるブロック式辞書の、回数)が、8190ならば、( (使い捨て2-1)回(使い捨ては、使い捨て2-回数 積んであるブロック式辞書の、(使い捨て+1)は、(積んであるブロック式辞書の、使い捨て) 積んであるブロック辞書の、(使い捨て+1)は、(積んであるブロック辞書の、使い捨て) ) 積んであるブロック式辞書の、1は、4098 積んであるブロック辞書の、1は、「 ■          ■」 消したライン=消したライン+1)//もし )//回 戻る。 ※※※※※※※※※※※※キー操作関連 *キー動作2 もし、Xカウンタが、1ならば、(ブロック右回転を、呼ぶ) もし、Zカウンタが、1ならば、(ブロック左回転を、呼ぶ) もし、左カウンタが、1、または、左カウンタが、リピート以上ならば、(ブロック左移動を、呼ぶ) もし、右カウンタが、1、または、右カウンタが、リピート以上ならば、(ブロック右移動を、呼ぶ) もし、下カウンタが、1以上ならば、(地面にいる時間に、(固定時間-1)を、足す。 落下距離に、100を、足す。 ) もし、上カウンタが、1ならば、( ) 戻る。 ※※※※※※※※※※※※ブロックの移動関連 {<衝突判定の基本>(例は右移動) 降ってくるブロック式を、反復( 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX+1),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、戻る。 ) <意味> ブロック式と、 積んであるブロック式辞書のn列目の、 ANDを用いて衝突判定。 } //「降ってくるブロックX」は、左から何列目にブロックがあるかを示している *ブロック右移動 降ってくるブロック式を、反復( 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX+1),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、戻る。 ) 降ってくるブロックX=降ってくるブロックX+1 動いた=はい 戻る。 *ブロック左移動 降ってくるブロック式を、反復( 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX-1),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、戻る。 ) もし、降ってくるブロックXが、1以上ならば、降ってくるブロックXから、1を、引く。 動いた=はい 戻る。 *ブロック右回転 使い捨ては、いいえ 使い捨て2は、いいえ 降ってくるブロック種類#0の、(降ってくるブロック種類#1+1)の、ブロックの形。 //降ってくるブロック式は、それ それを、反復(//回して、ぶつかるか。ぶつかれば使い捨て2=はい 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、( もし、AND(左シフト(AND(それ,2),降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、戻る。 違えば、使い捨て2は、はい。) )//反復 もし、使い捨て2ならば、(//ぶつかったなら、ずらす もし、(降ってくるブロック種類#0=6)でなければ(//棒は補正しない 動いた=いいえ 降ってくるブロック種類#0の、(降ってくるブロック種類#1+1)の、ブロックの形 降ってくるブロック式は、それ ブロック右移動。 もし、動いたならば、ブロック右回転実行を、呼ぶ、そして、戻る。 ブロック左移動。 もし、動いたならば、ブロック右回転実行を、呼ぶ、そして、戻る。 )//6でなければ //回せなかった 降ってくるブロック種類#0の、降ってくるブロック種類#1の、ブロックの形。 降ってくるブロック式は、それ。 戻る。 ) 動いた=はい *ブロック右回転実行 降ってくるブロック種類#1=(降ってくるブロック種類#1+1)%4+4 降ってくるブロック種類#0の、降ってくるブロック種類#1の、ブロックの形。 降ってくるブロック式は、それ 降ってくるブロックセットを、呼ぶ。 戻る *ブロック左回転 使い捨ては、いいえ 使い捨て2は、いいえ 降ってくるブロック種類#0の、(降ってくるブロック種類#1-1)の、ブロックの形。 //降ってくるブロック式は、それ それを、反復(//回して、ぶつかるか。ぶつかれば使い捨て2=はい 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、( もし、AND(左シフト(AND(それ,2),降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、戻る。 違えば、使い捨て2は、はい。) ) もし、使い捨て2ならば、(//ぶつかったなら、ずらす もし、(降ってくるブロック種類#0=6)でなければ(//棒は補正しない 動いた=いいえ 降ってくるブロック種類#0の、(降ってくるブロック種類#1-1)の、ブロックの形 降ってくるブロック式は、それ ブロック右移動。 もし、動いたならば、(ブロック左回転実行を、呼ぶ、そして、戻る)。 ブロック左移動。 もし、動いたならば、(ブロック左回転実行を、呼ぶ、そして、戻る)。 )//6でなければ //回せなかった 降ってくるブロック種類#0の、降ってくるブロック種類#1の、ブロックの形。 降ってくるブロック式は、それ。 戻る。 ) 動いた=はい *ブロック左回転実行 降ってくるブロック種類#1=(降ってくるブロック種類#1-1)%4+4 降ってくるブロック種類#0の、降ってくるブロック種類#1の、ブロックの形。 降ってくるブロック式は、それ 降ってくるブロックセット 戻る *ブロック落下 使い捨ては、はい//ローカルフラグ 落下距離に、落下速度を、足す。 (落下距離≧100)で、ループ( 落下距離から、100を、引く 降ってくるブロック式を、反復( 使い捨ては、(降ってくるブロックY+回数+1) //ぶつかったならば もし、AND(左シフト(それ、降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、( 落下距離は、0。//もう落ちない 使い捨ては、いいえ//ローカルフラグ 抜ける。//反復から抜ける ) )//反復終了 もし、使い捨てならば、(//地面にぶつかっていないならば 降ってくるブロックY=降ってくるブロックY+1 地面にいる時間=0 動いた=はい 音フラグ=オン )違えば、(//地面に落ちた もし、音フラグならば、(ブロック落ちた音を、鳴らす 音フラグ=オフ) 地面にいる時間=地面にいる時間+1 ) )//ループ 戻る ※※※※※※※※※※ブロック出たりおいたり※※※※※※※※※※ //ブロックが出現する時の処理 *出現処理 降ってくるブロックXは、5 降ってくるブロックYは、0 降ってくるブロックは、「」 降ってくるブロック種類は、「{ネクストブロック種類}\n4」//種類0〜6、回転4〜7 //先行入力 もし、(Xカウンタ=>1)ならば、(降ってくるブロック種類は、「{ネクストブロック種類}\n5」。Xカウンタ=2) もし、(Zカウンタ=>1)ならば、(降ってくるブロック種類は、「{ネクストブロック種類}\n7」。Zカウンタ=2) 降ってくるブロック種類#0の、降ってくるブロック種類#1の、ブロックの形。//式に変換 降ってくるブロック式は、それ。 使い捨ては「」 降ってくるブロックセットを、呼ぶ。 降ってくるブロック種類#0で、条件分岐 0の時、降ってくるブロックラベルの、フォント色は、黄色 1の時、降ってくるブロックラベルの、フォント色は、水色 2の時、降ってくるブロックラベルの、フォント色は、$00aaff 3の時、降ってくるブロックラベルの、フォント色は、青色 4の時、降ってくるブロックラベルの、フォント色は、緑色 5の時、降ってくるブロックラベルの、フォント色は、紫色 6の時、降ってくるブロックラベルの、フォント色は、赤色 降ってくるブロックラベルの、可視は、オン 戻る。 *ネクストブロック用意 //ツモ調整 調整を、配列シャッフル。 調整は、それ。 それは、調整#0 ネクストブロック種類は、それ ブロック列=ブロック列&それ 調整#0=ブロック列#0 ブロック列の、0行目を、行削除。 ブロック列は、それ ネクストブロック描画を、呼ぶ。 動いた=はい。 ブロック出現フラグ=いいえ。 使い捨て=いいえ 使い捨て2=いいえ 降ってくるブロック式を、反復( 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、使い捨て2=はい。 ) もし、使い捨て2ならば、ゲームオーバー処理へ、飛ぶ。 戻る。 //式からブロックの形を出す。 *降ってくるブロックセット 使い捨ては、「」 降ってくるブロック式を、反復( 二進数。 使い捨ては、使い捨て&それ&「\n」 ) 使い捨ての、0を、「 」に、置換 それの、1を、「■」に、置換 降ってくるブロックは、それ 戻る。 *落ちたブロック配置 もし、地面にいる時間が、固定時間以上ならば、( 地面にいる時間は、0 降ってくるブロック式を、反復( 使い捨て=降ってくるブロックY+回数 降ってくるブロックXビット、左シフト OR((積んであるブロック式辞書の、使い捨て),それ)//足す 積んであるブロック式辞書の、使い捨ては、それ 二進数 それの、0を、「 」に、置換 それの、1を、「■」に、置換 積んであるブロック辞書の、使い捨ては、それ ) 降ってくるブロックラベルの、可視は、オフ ブロック出現フラグは、はい。//次のブロックを出現させるフラグ 背景描画を、呼ぶ。 ライン確認は、はい。 下カウンタは、0 停止中=5 停止理由=「次ブロック待ち」 もし、制限時間<=0ならば、終了フラグ=オン ) 戻る。 *ラインチェック 20回(//ビットが、1111111111110ならば、の意味 もし、((積んであるブロック式辞書の、回数)=8190)ならば、( 停止中は、5。停止理由は、『ライン消去』。 ) ) ライン確認は、いいえ。 戻る。 ※※※※※※※※※※※ *ゲームオーバー処理 積んであるブロックラベルの、フォント色は、茶色。 降ってくるブロックラベルの、フォント色は、茶色。 0.5秒、待つ 準備ラベルの、テキストは、「GAME OVER」 準備ラベルの、可視は、オン 準備ラベル揺らす。 (メニュー辞書の、ゲームモード)で、条件分岐。 「サバイバル」の時、(結果発表準備1を、呼ぶ) 「100Lines」の時、(結果発表準備3を、呼ぶ) その他の時、(結果発表準備1を、呼ぶ) 結果発表へ、飛ぶ //サバイバル *クリア処理1 1秒、待つ。 準備ラベルの、テキストは、「そこまで!」 準備ラベルの、可視は、オン 2秒、待つ 結果発表準備1を、呼ぶ。 結果発表へ、飛ぶ。// //100Lines *クリア処理2 経過時間表示 1秒、待つ。 準備ラベルの、テキストは、「クリア!」 準備ラベルの、可視は、オン 2秒、待つ 結果発表準備2を、呼ぶ。 結果発表へ、飛ぶ。 //サバイバル *結果発表準備1 使い捨ては、「   {今日}   ゲームモード:{メニュー辞書の、ゲームモード}({ゲーム難易度})   消去ライン数:{消去ライン数}ライン   得点:{得点}点   生存時間:{経過時間}秒    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   4ライン消し回数:{右寄せ(四ライン消し回数,2)}回 合計{右寄せ(四ライン消し得点,5)}点   3ライン消し回数:{右寄せ(三ライン消し回数,2)}回 合計{右寄せ(三ライン消し得点,5)}点   2ライン消し回数:{右寄せ(二ライン消し回数,2)}回 合計{右寄せ(二ライン消し得点,5)}点   1ライン消し回数:{右寄せ(一ライン消し回数,2)}回 合計{右寄せ(一ライン消し得点,5)}点   \n」 戻る。 //100Lines *結果発表準備2 //ボーナス込み時間=経過時間-四ライン消し回数*3/一フレーム-三ライン消し回数*1/一フレーム-二ライン消し回数*0.3/一フレーム-一ライン消し回数*0.1/一フレーム 使い捨ては、「   {今日}   {クリアライン数}ライン達成!   ゲームモード:{メニュー辞書の、ゲームモード}({ゲーム難易度})   得点:{得点}点   経過時間:{経過時間*一フレーム}秒    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   4ライン消し回数:{右寄せ(四ライン消し回数,2)}回   3ライン消し回数:{右寄せ(三ライン消し回数,2)}回   2ライン消し回数:{右寄せ(二ライン消し回数,2)}回   1ライン消し回数:{右寄せ(一ライン消し回数,2)}回 」 戻る。 *結果発表準備3 //ボーナス込み時間=経過時間-四ライン消し回数*3/一フレーム-三ライン消し回数*1/一フレーム-二ライン消し回数*0.3/一フレーム-一ライン消し回数*0.1/一フレーム 使い捨ては、「   {今日}   ゲームモード:{メニュー辞書の、ゲームモード}({ゲーム難易度})   消去ライン数:{消去ライン数}ライン/{クリアライン数}ライン   得点:{得点}点   かかった時間:{経過時間*一フレーム}秒    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   4ライン消し回数:{右寄せ(四ライン消し回数,2)}回   3ライン消し回数:{右寄せ(三ライン消し回数,2)}回   2ライン消し回数:{右寄せ(二ライン消し回数,2)}回   1ライン消し回数:{右寄せ(一ライン消し回数,2)}回 」 *結果発表 (0,50)へ、結果ラベルを、ラベルとして、作成。 その、フォント色は、白色 その、透過処理は、オフ その、背景色は、$666666 その、テキストは、使い捨て&「   Cを押すとこの内容を   クリップボードにコピーします。   タイトルに戻るには   それ以外のキーを押してください。」 0.5秒、待つ 母艦の、キー押した時は( 押されたキーで、条件分岐。 67{C}の時、(使い捨てを、コピー。選択音を、鳴らす) その他の時、(母艦の、キー押した時は、「」。 結果ラベルの、オブジェクト破壊 初期化を、呼ぶ。 0.5秒、待つ。 ゲームモード選択入るへ、飛ぶ。) ) 待機 *準備ラベル揺らす 2回(準備ラベルの、Xは、((準備ラベルの、X)-6) 準備ラベルの、Yは、((準備ラベルの、Y)-4) 0.1秒、待つ 準備ラベルの、Xは、((準備ラベルの、X)+4) 準備ラベルの、Yは、((準備ラベルの、Y)+8) 0.1秒、待つ 準備ラベルの、Xは、((準備ラベルの、X)+4) 準備ラベルの、Yは、((準備ラベルの、Y)-2) 0.1秒、待つ 準備ラベルの、Xは、((準備ラベルの、X)-2) 準備ラベルの、Yは、((準備ラベルの、Y)-2) 0.1秒、待つ) 戻る //「それ」を10進数から2進数にする。あらかじめ「それ」に10進数をいれておくこと。 //右が上の桁です。6なら011。配列は重いので意図的に使っていません。 *二進数 使い捨て3は、「」 (それ>0)で、ループ( 使い捨て3は、使い捨て3&「{それ%2}」 それは、整数(それ/2) ) それは、使い捨て3 戻る //『ブロックの形』を、『?の、?の』で、関数定義。 *ブロックの形 引数取得。//0〜6\n4〜7 それ#1=それ#1%4+4 それ=それ#0&それ#1 (ブロック辞書の、それ)の、「,」を、「\n」に、置換。 戻る。 //0\n7\n2\n0とかを、それに返す //0が四角、1がT字、2がL字、3が逆L、4がZ字、5が逆Z、6が棒 *ブロックの形定義 使い捨ては、「0,6,6,0\n0,6,6,0\n0,6,6,0\n0,6,6,0 0,7,2,0\n2,3,2,0\n0,2,7,0\n2,6,2,0 0,7,1,0\n3,2,2,0\n0,4,7,0\n2,2,6,0 0,7,4,0\n2,2,3,0\n0,1,7,0\n6,2,2,0 0,3,6,0\n4,6,2,0\n0,3,6,0\n4,6,2,0 0,6,3,0\n1,3,2,0\n0,6,3,0\n1,3,2,0 0,15,0,0\n4,4,4,4\n0,15,0,0\n4,4,4,4」 使い捨て2は、0 使い捨て3は、4 使い捨てを、反復( 使い捨て4=使い捨て2&使い捨て3 ブロック辞書の、使い捨て4は、それ 使い捨て3=(使い捨て3+1)%4+4 もし、使い捨て3が、4ならば、使い捨て2=使い捨て2+1 ) 使い捨ては、「天\n龍\n虎\n鋼\n命\n皇\n聖\n無\n魔\n破\n怒\n爆\n貫\n鷹\n闘\n掌 激\n撃\n牙\n巌\n刃\n閃\n輝\n光\n冥\n超\n翔\n轟\n風\n嵐\n鋭\n戦\n鬼\n獄\n即\n斧 崩\n烈\n麓\n吼\n魂\n狼\n幻\n炎\n誠\n神\n塵\n呟\n鳳\n極\n黛\n袖\n猛\n燕 骸\n飛\n蜂\n影\n闇\n将\n遣\n緋\n號\n紋\n審\n猫\n芋\n萌\n♂\n痔\n愛\nЮ」 四ライン演出ラベルの、可視は、オフ 使い捨てを、反復( 演出辞書の、回数は、それ 四ライン演出ラベルの、テキストは、それ ) 四ライン演出ラベルの、テキストは、「」 四ライン演出ラベルの、可視は、オン 使い捨ては、「」 戻る。 ※※※※※※※※※※※※ チュートリアル関連 ※※※※※※※※※※ *ゲームループ3 FPS表示ラベルの、テキストは、1000/(システム時間-じかん1) じかん1は、システム時間。 //一フレームで処理する内容ここから キー入力取り出し。 消去情報表示時間=消去情報表示時間-1 もし、消去情報表示時間<=0ならば、消去情報ラベルの、テキストは、「」 もし、停止中<=0ならば、( もし、ブロック出現フラグならば、( 出現処理を、呼ぶ。 チュートリアル用ネクストブロック用意を、呼ぶ。) ブロック落下を、呼ぶ。 もし、動いたならば、ブロック描画を、呼ぶ。 落ちたブロック配置を、呼ぶ。 キー動作2を、呼ぶ。 )違えば( 停止中から、1を、引く。 停止理由で、条件分岐。 『ライン消去』の時、(もし、停止中=4ならば、ライン消去処理。 もし、停止中=0ならば、(四ライン演出ラベルの、テキストは、「」。 停止理由=「」) ) 『ゲーム開始』の時、(経過時間=0。制限時間=制限時間+1) その他の時、それは、それ。 ) もし、ライン確認ならば、ラインチェック。じかん2は、システム時間。 それ=一フレーム-(じかん2-じかん1)/1000 もし、それ<=0.001ならば、ゲームループ3へ、飛ぶ それ秒後に、ゲームループ3へ飛ぶ、タイマー設定。 待機。 *キー入力取り出し もし、オート入力配列が、「」でなければ( もし、オートキー時間が、0以下ならば、( オートキー方向は、オート入力配列#0#0 オートキー時間は、オート入力配列#1#0 オート入力配列の、0行目を、行削除。 オート入力配列は、それ。 ) オートキー時間=オートキー時間-1 右カウンタ=0。左カウンタ=0。下カウンタ=0。Zカウンタ=0。Xカウンタ=0。 もし、AND(オートキー方向,1)が、1以上ならば、左カウンタ=1 もし、AND(オートキー方向,2)が、1以上ならば、右カウンタ=1 もし、AND(オートキー方向,4)が、1以上ならば、下カウンタ=1 もし、AND(オートキー方向,16)が、1以上ならば、Zカウンタ=1 もし、AND(オートキー方向,32)が、1以上ならば、Xカウンタ=1 )違えば、キーチェック。 戻る。 *チュートリアル用ネクストブロック用意 それは、チュートリアル用ネクストブロック#0 ネクストブロック種類は、それ チュートリアル用ネクストブロックの、0行目を、行削除。 チュートリアル用ネクストブロックは、それ。 ネクストブロック描画を、呼ぶ。 動いた=はい。 ブロック出現フラグ=いいえ。 使い捨て=いいえ 使い捨て2=いいえ 降ってくるブロック式を、反復( 使い捨ては、(降ってくるブロックY+回数) もし、AND(左シフト(それ、降ってくるブロックX),(積んであるブロック式辞書の、使い捨て))が、1以上ならば、使い捨て2=はい。 ) //もし、使い捨て2ならば、ゲームオーバー処理へ、飛ぶ。 チュートリアル落ちたブロック数=チュートリアル落ちたブロック数+1 もし、チュートリアル落ちたブロック数が、5ならば、(チュートリアル落ちたブロック数=0 文章送る。) 戻る。 *文章送る もし、チュートリアル解説文が、「」ならば、( 初期化を、呼ぶ。 チュートリアル解説文は、「 」。 チュートリアル表示ラベルの、テキストは、「」 チュートリアルメニュー入るへ、飛ぶ。 ) チュートリアル解説文から、1番目の、段落を切り出す。 チュートリアル表示ラベルの、テキストは、「\n\n\n\n\n\n\n」&それ。 チュートリアル解説文の、それを、「」に、置換。 チュートリアル解説文は、それ。 戻る。 ※※※※※※※※※※ *チュートリアル基本事項 チュートリアル解説文は、「 このゲームはいわゆるテトリスです。  しかし、GB版やSFC版とは全然違うので  最初はとまどうかもしれません。  ここではプレイする上での  注意事項を説明します。  まず落下速度についてですが、  これは1フレーム(1/50秒)に  20ブロック分落下するので、 『20G』と呼ばれます。  速度が20Gの場合はブロックが 空中にある時間は全くありません。  20Gではブロックが着地してから 移動させます。  普段は、中央を高く積んでおくのが 基本になります。  真ん中がくぼんでいた場合、 左右移動の妨げになるからです。  GBやSFCとは回転法則が違いますが、  これはこんなもんなんだと  思ってください。」 チュートリアル用ネクストブロックは、「1\n4\n4\n0\n3 1\n2\n5\n1\n2 3\n5\n3\n5\n1 6\n2\n2\n1\n3」 オート入力配列=「0,25\n16,1\n0,10\n16,1\n2,1\n0,10\n2,1\n0,10\n1,1\n0,10\n1,1\n0,10\n4,1\n0,10\n0,15 2,1\n0,15\n2,1\n0,15\n2,1\n0,15\n1,1\n0,30\n4,1\n0,15 2,1\n0,15\n2,3\n0,15\n4,1\n0,15 1,4\n0,15\n4,1\n0,15 0,15\n2,1\n0,15\n2,4\n0,15\n4,1\n0,15 0,15\n1,1\n0,15\n16,1\n0,15\n1,1\n0,15\n4,1\n0,15 2,1\n0,15\n2,3\n0,15\n4,1\n0,15 16,1\n0,5\n2,1\n0,15\n1,1\n0,15\n1,1\n0,15\n4,1\n0,15 2,1\n0,10\n1,1\n0,10\n2,1\n0,10\n32,1\n0,30\n4,1\n0,15 1,1\n0,10\n2,1\n0,10\n1,1\n16,1\n0,10\n32,1\n0,10\n2,1\n0,10\n4,1\n0,15 2,1\n0,10\n2,1\n0,10\n2,1\n0,10\n0,10\n32,1\n0,10\n1,1\n0,10\n1,1\n0,15\n4,1\n0,15 2,1\n0,10\n2,1\n0,10\n32,1\n0,10\n32,1\n0,10\n32,1\n0,15\n1,1\n0,10\n1,4 0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n1,1\n0,30\n4,1\n0,15 16,1\n0,15\n16,1\n0,15\n1,1\n0,15\n4,1\n0,15 2,1\n0,10\n2,1\n2,1\n2,1\n2,1\n18,1\n0,30\n4,1\n0,15 16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n2,1\n4,1\n0,15 2,1\n0,10\n2,2\n18,1\n2,1\n0,10\n4,1\n0,15 16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n16,1\n0,10\n2,1\n0,15\n4,1\n0,15 16,1\n0,10\n16,1\n0,10\n16,1\n0,15\n2,1\n0,10\n2,3\n0,10\n4,1\n0,15 32,1\n0,15\n1,1\n0,10\n1,5\n0,15\n4,1」 チュートリアル共通へ、飛ぶ。 *チュートリアル回転先行入力 チュートリアル解説文は、「 ブロックが現れてから  回転させようとしても  地面にぶつかって回転できない時が  多々あります。  しかし、ブロックが出現する前から  回転ボタンを押しっぱなしにすると  回転した状態でブロックが出現します。  これをIRS(回転先行入力)といいます。  重要なのでぜひ体得してください。  下を押した後すぐZかXを  押しっぱなしするのがコツです。 」 チュートリアル用ネクストブロックは、「6\n1\n4\n5\n2 3\n5\n3\n1\n2 6\n6\n0\n2\n2」 オート入力配列=「0,20\n16,1\n0,10\n16,1\n0,25\n1,1\n0,15\n4,1\n0,6 16,1\n0,15\n2,1\n2,1\n16,1\n0,10\n4,1\n0,6 16,1\n0,10\n1,1\n0,10\n1,5\n0,6\n2,1\n0,6\n4,1\n0,6 2,2\n0,25\n4,1\n0,6 16,1\n0,10\n1,1\n0,10\n4,1\n0,6 32,1\n0,10\n32,1\n0,6\n1,1\n0,6\n1,1\n0,6\n32,1\n0,6\n1,1\n0,6\n1,2\n0,6\n4,1\n0,6 16,1\n0,10\n16,1\n0,15\n4,1\n0,6 32,1\n0,25\n32,1\n1,1\n0,6\n1,4\n0,10\n4,1\n0,6 32,1\n0,6\n16,1\n0,4\n16,1\n0,4\n32,1\n0,25\n4,1\n0,6 32,1\n0,10\n2,1\n0,6\n2,1\n0,10\n2,1\n0,6\n2,1\n0,30\n4,1\n0,6 32,1\n2,1\n0,10\n2,1\n0,10\n2,1\n0,10\n2,1\n0,30\n4,1\n0,6 32,1\n0,10\n2,1\n0,10\n2,6\n0,20\n4,1\n0,6 0,25\n4,1\n0,6 16,1\n0,10\n2,1\n0,10\n2,1\n16,1\n0,25\n4,1\n」 チュートリアル共通へ、飛ぶ。 *チュートリアル回転入れ チュートリアル解説文は、「 回転したときにブロックが  屋根の下に潜り込むようにする事を  回転入れといいます。  回転したときにブロックが  屋根の下に潜り込むようにする事を  回転入れといいます。  うまく活用してスキマを埋めましょう」 チュートリアル用ネクストブロックは、「0\n5\n5\n2\n1\n2\n5\n3\n3\n0\n6\n6\n3\n1\n6\n」 オート入力配列=「0,20\n1,1\n4,1\n0,6 2,1\n2,1\n4,1\n0,6 1,1\n1,1\n4,1\n0,6 1,1\n0,6\n16,1\n16,1\n0,25\n4,1\n0,30 2,1\n0,10\n16,1\n0,10\n32,1\n0,10\n4,1\n0,6 32,1\n0,6\n2,1\n0,10\n2,4\n0,6\n32,1\n0,10\n4,1\n0,6 16,1\n2,30,6\n4,1\n0,6 0,6\n2,1\n0,6\n32,1\n4,1\n0,6 32,1\n1,1\n0,15\n32,1\n0,15\n1,1\n0,10\n32,1\n0,10\n1,1\n0,25\n16,1\n0,20\n4,1\n0,6 0,10\n1,1\n0,10\n1,4\n0,10\n4,1\n0,6 2,1\n0,10\n4,1\n0,6\n0,10 1,1\n0,10\n1,1\n0,10\n32,1\n0,10\n1,1\n0,10\n1,5\n0,6\n4,1\n0,6 0,10\n32,1\n0,10\n1,1\n0,25\n16,1\n0,15\n4,1\n0,6 0,10\n32,1\n0,10\n1,1\n0,10\n1,4\n0,15\n32,1\n0,25\n4,1\n 」 チュートリアル共通へ、飛ぶ。 *チュートリアル渡り チュートリアル解説文は、「ブロックを端に移動させたいのに 溝ができていてそこまでいけない時は、 底面積の広い形に回転してから移動すると 移動できる範囲が広がる場合があります。 」 チュートリアル用ネクストブロックは、「3\n6\n0\n2\n3\n1\n2\n3\n1\n1」 オート入力配列=「0,25\n1,1\n0,10\n1,4\n0,6\n32,1\n0,10\n4,1\n0,6 1,3\n0,10\n4,1\n0,6 0,20\n4,1\n0,6 16,1\n2,6\n16,1\n0,25\n4,1\n0,6 32,1\n0,10\n32,1\n0,10\n1,1\n0,10\n1,1\n0,10\n1,1\n0,10\n1,1\n0,10\n32,1\n0,10\n1,1\n0,15\n4,1\n0,6 16,1\n0,10\n2,1\n0,6\n2,1\n0,15\n4,1\n0,6 16,1\n0,10\n16,1\n0,10\n2,1\n0,10\n4,1\n0,6 16,1\n0,10\n1,1\n0,15\n4,1\n0,6 0,20\n16,1\n0,10\n16,1\n0,10\n2,1\n0,6\n2,1\n0,6\n2,1\n2,1\n0,6\n2,1\n0,25\n16,1\n0,6\n16,1\n0,10\n4,1\n0,6 」 チュートリアル共通へ、飛ぶ。 *チュートリアルシンクロ入れ チュートリアル解説文は、「右か左をしっかりと入れながら ブロックを回転させることで 回転後空中で横移動した状態になります。 右か左をしっかりと入れながら ブロックを回転させることで 回転後空中で横移動した状態になります。 」 チュートリアル用ネクストブロックは、「3\n2\n0\n5\n5\n2\n3\n3\n3\n3」 オート入力配列=「0,20\n16,1\n0,5\n16,1\n0,5\n1,1\n0,10\n1,5\n0,10\n4,1\n0,6 0,10\n32,1\n0,6\n32,1\n0,10\n4,1\n0,6 0,10\n1,1\n0,10\n4,1\n0,6 0,10\n1,1\n0,10\n1,2\n17,1\n0,10\n4,1\n0,6 0,15\n1,1\n0,10\n1,15\n17,1\n0,10\n4,1\n0,6 32,1\n0,10\n2,1\n0,10\n2,1\n0,10\n4,1\n0,6 16,1\n0,10\n1,1\n0,10\n1,3\n0,10\n4,1\n0,6 34,1\n2,5\n0,10\n4,1\n0,6 0,10\n2,1\n0,10\n2,10\n18,1\n0,30\n4,1」 チュートリアル共通へ、飛ぶ。 *チュートリアル共通 説明書きラベルの、テキストは、「自動実行中★」 チュートリアル落ちたブロック数=0 文章送る。 ネクストブロック種類は、チュートリアル用ネクストブロック#0 チュートリアル用ネクストブロックの、0行目を、行削除。 チュートリアル用ネクストブロックは、それ。 ネクストブロック描画を、呼ぶ。 イージー設定を、呼ぶ。 ゲームループ3へ、飛ぶ。