さめがめ (SAME GAME)

作品プログラム
動作環境
プロデル 1.6.968
投稿者
ゆうと
更新日
2019-08-16 17:15:41
ダウンロード数
377

作品のプログラム

//さめがめ//
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  バブル一覧={}
  色一覧は、{赤、青、緑、オレンジ}
  タイル幅=6
  タイル高さ=9
  スコア=0
  ハイスコア=0

  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
    タイル高さ回1からYにカウントして繰り返す
      タイル幅回1からXにカウントして繰り返す
        キャンバス1へ円を描いてバブル一覧(Y,X)とする
          その位置と大きさは、{20+(X-1)*40,20+(Y-1)*40,40,40}
          そのタグは、{X,Y}
          そのクリックされた時の手順は、バブルクリック
        【タイプ】は、1から4までの乱数
        バブル一覧(Y,X)の背景色は、色一覧(タイプ)
      繰り返し終わり
    繰り返し終わり
    キャンバス1へ「SAME☆GAME」という文字を描く
      その位置は、{270,20}
      そのフォントを「メイリオ」に変える
      その文字色を緑色に変える
      その文字サイズを18に変える
    キャンバス1へ「Score:0」という文字を描いて得点ラベルとする
      その位置は、{280,80}
      そのフォントを「メイリオ」に変える
      その文字色を緑色に変える
      その文字サイズを18に変える
    キャンバス1へ「HiScore:0」という文字を描いて最高得点ラベルとする
      その位置は、{280,120}
      そのフォントを「メイリオ」に変える
      その文字色を緑色に変える
      その文字サイズを18に変える
    キャンバス1へ「FINISH!」という文字を描いてフィニッシュラベルとする
      その位置は、{60,150}
      その文字色を緑色に変える
      その文字サイズを30に変える
      その表示を×に変える
    キャンバス1へ「RETRY」という文字を描いてリトライラベルとする
      その位置は、{60,220}
      その文字色を青に変える
      その文字サイズを30に変える
      その背景色を白に変える
      その線色を青に変える
      その表示を×に変える
      その大きさ調整を○に変える
      そのクリックされた時の手順は、リトライする
  終わり
  初期化する手順
  ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  この実質大きさを{659,611}に変える
  この内容を「さめがめ」に変える
  初期化開始する
  キャンバス1というキャンバスを作る
    その位置と大きさを{0,0,659,611}に変える
    その実質大きさを{659,611}に変える
    その自動更新を×に変える
    そのドッキング方向を「全体」に変える
  初期化終了する
  メイン画面の設計スケール比率を{144,144}に変える
終わり
  リトライする手順
    タイル高さ回1からYにカウントして繰り返す
      タイル幅回1からXにカウントして繰り返す
        バブル一覧(Y,X)の表示を○に変える
        【タイプ】は、1から4までの乱数
        バブル一覧(Y,X)の背景色は、色一覧(タイプ)
      繰り返し終わり
    繰り返し終わり
    フィニッシュラベルの表示を×に変える
    リトライラベルの表示を×に変える
    スコア=0
    得点ラベルの内容を「Score: [スコア]」に変える
    最高得点ラベルの内容を「HiScore: [ハイスコア]」に変える
    キャンバス1を更新する
  終わり
  【バブル図形】と、【タイプ】が、同じタイプかどうかを求める手順
    もしバブル図形の表示でないなら×を返す
    (バブル図形の背景色がタイプ)を返す
  終わり
  バブルクリックの手順
    場所は、発生元のタグ
    X=場所(1)。Y=場所(2)
    【タイプ】は、バブル一覧(Y,X)の背景色
    もしXが2以上かつ、バブル一覧(Y,X-1)とタイプが同じタイプなら
    他でもしXがタイル幅未満かつ、バブル一覧(Y,X+1)とタイプが同じタイプなら
    他でもしYが2以上かつ、バブル一覧(Y-1,X)とタイプが同じタイプなら
    他でもしYがタイル高さ未満かつ、バブル一覧(Y+1,X)とタイプが同じタイプなら
    そうでなければ
      返す
    もし終わり

    探索済一覧={}
    探索済一覧で{X,Y}からタイプと同色を辿って削除数とする
    バブルを詰める
    スコアを(削除数-1)^2だけ増やす
    得点ラベルの内容を「Score: [スコア]」に変える
    もしスコアがハイスコアより大きいならハイスコアは、スコア
    もしすべて消えたなら
      フィニッシュラベルの表示を○に変える
      リトライラベルの表示を○に変える
    もし終わり
    キャンバス1を更新する
  終わり
  【探索済一覧】で【座標】から【タイプ】と、同色を辿る手順
    【X】=座標(1)
    【Y】=座標(2)
    もし探索済一覧の個数がY未満なら
    他でもし探索済一覧(Y)が無または探索済一覧(Y)の個数がX未満なら
    他でもし探索済一覧(Y,X)が○またはバブル一覧(Y,X)の表示が×なら
      0を返す
    もし終わり
    探索済一覧(Y,X)は、○
    もしバブル一覧(Y,X)とタイプが同じタイプでないなら
      0を返す
    もし終わり
    【個数】は、1
    もしXが2以上なら
      探索済一覧で{X-1,Y}からタイプと同色を辿ったものだけ個数を増やす
    もし終わり
    もしXがタイル幅未満なら
      探索済一覧で{X+1,Y}からタイプと同色を辿ったものだけ個数を増やす
    もし終わり
    もしYが2以上なら
      探索済一覧で{X,Y-1}からタイプと同色を辿ったものだけ個数を増やす
    もし終わり
    もしYがタイル高さ未満なら
      探索済一覧で{X,Y+1}からタイプと同色を辿ったものだけ個数を増やす
    もし終わり
    バブル一覧(Y,X)の表示を×に変える
    個数を返す
  終わり
  バブルを詰める手順
    //消えた部分のバブルを詰める
    タイル幅回1からXにカウントして繰り返す
      Yをタイル高さから1ずつ減らしながら1まで繰り返す
        もしバブル一覧(Y,X)の表示なら繰り返しを続ける
        選択タイルは、無
        Y2をYから1ずつ減らしながら1まで繰り返す
          もしバブル一覧(Y2,X)の表示なら
            選択タイルは、バブル一覧(Y2,X)
            繰り返しから抜ける
          もし終わり
        繰り返し終わり
        もし選択タイルが無なら、繰り返しから抜ける
        選択タイルの表示を×に変える
        バブル一覧(Y,X)の表示を○に変える
        バブル一覧(Y,X)の背景色は、選択タイルの背景色
      繰り返し終わり
    繰り返し終わり
    //左側へバブルを詰める
    (タイル幅-1)回1からXにカウントして繰り返す
      もしバブル一覧(タイル高さ,X)の表示なら繰り返しを続ける
      X2をXから1ずつ増やしながらタイル幅-1まで繰り返す
        もしバブル一覧(タイル高さ,X2)の表示なら繰り返しを抜ける
      繰り返し終わり
      Yをタイル高さから1ずつ減らしながら1まで繰り返す
        バブル一覧(Y,X)の表示をバブル一覧(Y,X2)の表示に変える
        バブル一覧(Y,X)の背景色をバブル一覧(Y,X2)の背景色に変える
        バブル一覧(Y,X2)の表示を×に変える
      繰り返し終わり
    繰り返し終わり
  終わり

  すべて消えたかどうかを求める手順
    タイル高さ回1からYにカウントして繰り返す
      タイル幅回1からXにカウントして繰り返す
        もしバブル一覧(Y,X)の表示でないなら繰り返しを続ける
        【タイプ】=バブル一覧(Y,X)の背景色
        もしXが2以上かつ、バブル一覧(Y,X-1)とタイプが同じタイプなら
        他でもしXがタイル幅未満かつ、バブル一覧(Y,X+1)とタイプが同じタイプなら
        他でもしYが2以上かつ、バブル一覧(Y-1,X)とタイプが同じタイプなら
        他でもしYがタイル高さ未満かつ、バブル一覧(Y+1,X)とタイプが同じタイプなら
        そうでなければ
          繰り返しを続ける
        もし終わり
        ×を返す
      繰り返し終わり
    繰り返し終わり
    ○を返す
  終わり
終わり
	

▲ページの先頭へ