どうも!LSSです!!
昨日の記事、「超巨大迷宮の夢!」に、コメント・ブクマコメントくださった皆様、ありがとうございました!^^
今日は、もう少し具体的に説明できるかな?と思い、とりあえず「Try Kotlin」でサンプルを作ってみました。
コードはこんな感じ
fun maze(i:Int,j:Int):Int{
return (i*i*1.41421356+i*j*5.4321+j*j*0.3+i+j+(i/10).toInt()).toInt()%256
}
fun main(args: Array<String>) {
val h="0000000011111111000000001111111100000000111111110000000011111111" +
"0000000011111111000000001111111100000000112311110000000011111111" +
"0000000011111111000000001111111100000000111101110000000011111111" +
"0000000011111111000000001111111100000000111111110000000011111111"
var k=listOf("□","■","↓","↑")
for (y in 0..10){
for (x in 0..20){
// print(maze(x,y).toString()+" ")
print(k[h.substring(maze(x,y),maze(x,y)+1).toInt()])
}
print("\n")
}
}
結果画面に表示された迷路は見づらいかな?と思い…
↓コピペした上で、CSSをいじって見やすくしてみました。
□□□■■■■■□■■□■■□■■■■□■
□■□□□□■□■■□□■□□□□■□■■
□□□□■□■■■□■□■■■□■□□□■
□■■□□■□□■□□□□□■■□□■■□
■□■■■■□■■□■■□□■■■□■■□
■■■■□■■□■■□■■↓□□■□□□□
□□■□■■■□■□■■□□■□□□■■■
□■■□■■□■■□■■□□■■□□■■■
■■■■□■■□■■□□■■■□■■□□■
□□■□■■■□■□□□□■□■■■■□■
■□■■■■□□■■■□■□□□■■□□□
元々考えていたのは、こんな感じですね。
コメントでいただいたアイディアもあわせて、これから考えてみたいです^^
コード中、コメントアウトしている部分
// print(maze(x,y).toString()+" ")
print(k[h.substring(maze(x,y),maze(x,y)+1).toInt()])
2つのprint文、片方の頭に//をつけてコメントアウト(無効化)していますが、これを1つめを有効・2つめを向こうにすると、算出された数値が表示されます。
(256文字のうち何文字目を拾っているかという部分)
それを元に
var h="000…
の内容を編集すると、壁と通路をある程度選択できる、って感じです。