Xcode update
Xcode のバージョンが 10.0 に上がった!
Swift のバージョンが 4.2 に上がった!
$ xcodebuild -version Xcode 10.0 Build version 10A255 $ swift --version Apple Swift version 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1) Target: x86_64-apple-darwin17.7.0
A*
ここのところA*をSwiftで実装していた。
案の定なかなか動かないのだけど、いちど動いてしまえばああそうか、みたいな簡単なものである。 なかなかうまくいかないのは日本語の解釈の問題なので、 それはつまり読み取り側の能力が足りないからだけど、 アルゴリズムは自然言語じゃなく架空でいいのでプログラミング言語っぽい言語で書いて欲しいものである。
ノード配列から最小値を持つノードを見つける、なんてのはSwiftっぽい書き方ができてちょっとうれしい。
while let n = openList.min(by: { (a, b) -> Bool in a.value < b.value }) {〜}
ただ「取り出す」などと書いてあるとそれはリストからremoveすることも意味していたりするので 削除するとなるとindexが必要で…などとなってちょっとAh...という気持ちになる
別件で UIGraphicsImageRenderer
も調べていたので問題と解を画像化してみたりしてみた。
迷路
迷路生成アルゴリズムを実装した。 (壁伸ばし法)
1が壁で0が通路
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1
Flood-fillアルゴリズムで通路(0)を2で塗りつぶす。
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 1 2 1 1 1 1 2 1 1 1 2 1 1 2 2 2 1 2 2 2 1 1 1 1 2 1 2 1 2 1 1 2 2 2 2 2 1 2 1 1 1 1 1 1 1 1 1 1
通路(0)がなくなっていれば、通路は連結している(壁に塞がれた通路は無い)と診断できる。
同様に壁(1)を3で塗りつぶす。
3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 3 2 3 3 3 3 2 3 3 3 2 3 3 2 2 2 3 2 2 2 3 3 3 3 2 3 2 3 2 3 3 2 2 2 2 2 3 2 3 3 3 3 3 3 3 3 3 3
壁(1)がなくなっていれば、壁は連結している(通路に回廊は無い)と診断できる
Rogue Likeななにか
ダンジョンの自動生成を作っているけどなかなかぐっとくる感じにならない
------------------------- ------- |.......................| |.....| |.......................+#######|.....| |.......................| #+.....| |.......................| |.....| |.......................| |.....| ---+-+------------------- --+---- # # # ####### ############################## # ## ---+----- --------++----- |.......| #####+.............| |.......| # |.............| |.......| # |.............| |.......| # |.............| |.......| # |.............| |.......| # ------------+-- |.......| # # |.......| # # |.......| # ######### |.......| # # ------------- |.......| # # |...........| |.......| # # ###+...........| |.......| # # # |...........| |.......+#### # # |...........| |.......| # # |...........| --------- -------+----- # -+----------- |...........+#### # |...........| # |...........| ## |...........| ----+---- |...........| |.......| ------------- |.......| |.......| |.......| |.......| ---------
Swift LANGUAGE GUIDE を読んで書いたブログエントリの一覧
- The Basics - 錯綜
- Basic Operators - 錯綜
- Strings and Characters - 錯綜
- Collection Types - 錯綜
- Control Flow - 錯綜
- Functions - 錯綜
- Closures - 錯綜
- Enumerations - 錯綜
- Classes and Structures - 錯綜
- Properties - 錯綜
- Methods - 錯綜
- Subscripts - 錯綜
- Inheritance - 錯綜
- Initialization - 錯綜
- Deinitialization - 錯綜
- Optional Chaining - 錯綜
- Error Handling - 錯綜
- Type Casting - 錯綜
- Nested Types - 錯綜
- Extensions - 錯綜
- Protocols - 錯綜
- Generics - 錯綜
- Automatic Reference Counting - 錯綜
- Memory Safety - 錯綜
- Access Control - 錯綜
- Advanced Operators - 錯綜