プログラミング言語Sunaba(すなば)
パターンを前もって作っておく() メモリ[55001] → 1 #手加減オフ 壁と底を描く() 縦 → 1 横 → 5 回転 → 0 種類 → 0 前左 → メモリ[50006] 前右 → メモリ[50007] 前上 → メモリ[50004] 落下カウント → 0 1 なかぎり #無限 今左 → メモリ[50006] 今右 → メモリ[50007] 今上 → メモリ[50004] #移動量 横移動量 → 0 縦移動量 → 0 回転量 → 0 (今左 = 1) × (前左 = 0) なら 横移動量 → -1 (今右 = 1) × (前右 = 0) なら 横移動量 → 1 (今上 = 1) × (前上 = 0) なら 回転量 → 1 #キー状態を使い終わったので、古いのを新しいので上書き 前左 → 今左 前右 → 今右 前上 → 今上 #落ちる 落下カウント → 落下カウント + 1 落下カウント = 10 なら 縦移動量 → 1 落下カウント → 0 #移動を反映 縦 → 縦 + 縦移動量 横 → 横 + 横移動量 回転 → 回転 + 回転量 重なってる?(縦、横、回転、種類) なら #戻す 縦 → 縦 - 縦移動量 横 → 横 - 横移動量 回転 → 回転 - 回転量 (縦移動量 > 0) × (横移動量 = 0) なら 積もらせて列を消す(縦、横、回転、種類) 縦 → 1 横 → 5 回転 → 0 種類 → 種類 + 1 種類 > 6 なら 種類 → 0 四角を動かす(縦、横、回転、種類) パターンを前もって作っておく() とは メモリに6つ覚えさせる(500、0、-1、0、1、0、2) #形0 メモリに6つ覚えさせる(506、-1、-1、0、-1、0、1) #形1 メモリに6つ覚えさせる(512、0、-1、-1、0、0、1) #形2 メモリに6つ覚えさせる(518、0、-1、-1、1、0、1) #形3 メモリに6つ覚えさせる(524、0、-1、1、0、1、1) #形4 メモリに6つ覚えさせる(530、0、1、1、0、1、1) #形5 メモリに6つ覚えさせる(536、0、1、1、-1、1、0) #形6 メモリに6つ覚えさせる(開始番号、数0、数1、数2、数3、数4、数5) とは メモリ[開始番号 + 0] → 数0 メモリ[開始番号 + 1] → 数1 メモリ[開始番号 + 2] → 数2 メモリ[開始番号 + 3] → 数3 メモリ[開始番号 + 4] → 数4 メモリ[開始番号 + 5] → 数5 マス目位置を計算する(縦、横、回転、種類) とは メモリ[0] → 縦 メモリ[1] → 横 開始番号 → 500 + (種類 × 6) 回数 → 0 回数 < 3 なかぎり 相対縦 → メモリ[開始番号 + (回数 × 2) + 0] 相対横 → メモリ[開始番号 + (回数 × 2) + 1] 回転回数 → 0 回転回数 < 回転 なかぎり #入れ替え 入れ替え用 → 相対縦 相対縦 → 相対横 相対横 → 入れ替え用 #プラスマイナスひっくり返す 相対横 → -相対横 回転回数 → 回転回数 + 1 メモリ[2 + (回数 × 2)] → 縦 + 相対縦 メモリ[3 + (回数 × 2)] → 横 + 相対横 回数 → 回数 + 1 重なってる?(縦、横、回転、種類) とは マス目位置を計算する(縦、横、回転、種類) 出力 → (メモリ[100 + (メモリ[0] × 12) + メモリ[1]] = 1) + (メモリ[100 + (メモリ[2] × 12) + メモリ[3]] = 1) + (メモリ[100 + (メモリ[4] × 12) + メモリ[5]] = 1) + (メモリ[100 + (メモリ[6] × 12) + メモリ[7]] = 1) 積もらせて列を消す(縦、横、回転、種類) とは マス目位置を計算する(縦、横、回転、種類) 積もる(メモリ[0]、メモリ[1]) 積もる(メモリ[2]、メモリ[3]) 積もる(メモリ[4]、メモリ[5]) 積もる(メモリ[6]、メモリ[7]) 列を消す() 四角を動かす(縦、横、回転、種類) とは マス目位置を計算する(縦、横、回転、種類) 四角(メモリ[0]、メモリ[1]、990000) #赤 四角(メモリ[2]、メモリ[3]、990000) #赤 四角(メモリ[4]、メモリ[5]、990000) #赤 四角(メモリ[6]、メモリ[7]、990000) #赤 メモリ[55000] → 1 #お手紙 四角(メモリ[0]、メモリ[1]、0) #消す 四角(メモリ[2]、メモリ[3]、0) #消す 四角(メモリ[4]、メモリ[5]、0) #消す 四角(メモリ[6]、メモリ[7]、0) #消す 積もる(縦、横) とは メモリ[100 + (縦 × 12) + 横] → 1 四角(縦、横、999999) 壁と底を描く() とは 壁を描く() 底を描く() 壁を描く() とは 回数 → 0 回数 < 20 なかぎり 積もる(回数、0) #左 積もる(回数、11) #右 回数 → 回数 + 1 底を描く() とは 回数 → 0 回数 < 10 なかぎり 積もる(19、1 + 回数) 回数 → 回数 + 1 四角(縦、横、色) とは 縦回数 → 0 縦回数 < 4 なかぎり 横回数 → 0 横回数 < 4 なかぎり メモリ[60000 + (縦 × 500) + (横 × 5) + 横回数 + (縦回数 × 100)] → 色 横回数 → 横回数 + 1 縦回数 → 縦回数 + 1 列を消す() とは 縦 → 0 縦 < 19 なかぎり 消える? → 1 横 → 1 横 ≦ 10 なかぎり 消える? → 消える? × (メモリ[100 + (縦 × 12) + 横] = 1) 横 → 横 + 1 消える? なら #積もったと覚えているメモリを0にする 横 → 1 横 ≦ 10 なかぎり メモリ[100 + (縦 × 12) + 横] → 0 #メモリを0に 四角(縦、横、0) #黒で塗りつぶす 横 → 横 + 1 ずらす(縦) 縦 → 縦 + 1 ずらす(消える列の縦) とは 縦 → 消える列の縦 - 1 縦 ≧ 0 なかぎり 横 → 1 横 ≦ 10 なかぎり メモリ[100 + (縦 × 12) + 横] = 1 なら メモリ[100 + (縦 × 12) + 横] → 0 #消す 四角(縦、横、0) #黒く塗る 積もる(縦 + 1、横) 横 → 横 + 1 縦 → 縦 - 1
メッセージ