2015-07-01から1ヶ月間の記事一覧
CodeIQを見てたら、次のような問題があった。 https://codeiq.jp/q/1602 問題自体はまぁいいとして、このゲームは割と有名だし、そして必勝法も簡単だ。 ゲームの内容を書いておくと、以下のとおり。 二人で交互に手番を行い、数字を1から順番に1個〜3個ずつ…
変種オセロのUI作りは中休み。 今日は、SwiftでSetの型パラメータにプロトコルを指定する方法について説明したいと思う。 事の起こり 事の起こりは、変種オセロのUIでボタンが押された事を通知する仕組みを作ろうとしていたこと。 もちろん、これにはいくつ…
昨日はタッチ処理の実装を行った。 今日はタッチ処理の実装をちょっと修正する。 タッチ処理の修正 作ったタッチ処理を実際に触ってみた分かったのは、選択を確定させるのに2回タッチするのは面倒ということ。 なので、1回のタッチで選択を確定させるように…
昨日はタッチ処理の実装を途中まで行った。 今日はその続き。 タッチ処理の実装 さて、肝心のタッチ処理の実装は、次のような感じ。 public class BoardNode: SKSpriteNode { // 省略 private var touch: UITouch! private var previousSelectedSquare: Squa…
BoardNodeの実装の続き。 今日はタッチ処理を実装していく。 タッチの仕様 まず、タッチの仕様を考えてみる。 基本的な仕様は、以下。 選択可能なマスが、ハイライトで表示される。 選択可能なマスを1回タッチすると、マスが選択状態になる。 選択状態になっ…
昨日の続き。 今日はボードの描画を実装していく。 ボードの描画 ボードの描画は、SKSpriteNodeを継承したBoardNodeを作って実装する。 //============================== // YWF //------------------------------ // BoardNode.swift //==================…
昨日は駒の描画を実装した。 今日からはボードの描画を実装していく。 ボードの構成について まずは、ボードの構成について。 ボードを単に一つのスプライトにしてもいいのだけど、その場合、タッチされた場所を都度計算したり、駒の場所を管理したりと、ち…
素材作りは昨日でとりあえず完了。 今日からはコーディングをしていく。 駒の描画 まずは、駒を描画するところから。 ということで、SKSpriteNodeを継承して、PieceNodeを作る。 駒の状態 まず、駒の状態を表す列挙型を定義。 //===========================…
昨日は駒を作った。 今日は残りの部品を作っていく。 ボードの作成 変種オセロのUIを作ってみた。(その2) - いものやま。で作ったマットと木材を使って、ボードを作っていく。 まず、ボードのマット部分を用意。 柔らかみを出すために枠を角丸にしようと思…
昨日は素材の作成で、マットと木材を作った。 今日は駒を作っていく。 駒のデザイン ボードゲームで駒といったら、やっぱりミープル。 ということで、ネットの画像などを参考に、パスをいじって作成したのがこちら。 ただ、これだと立体感が出ないので、影を…
昨日は画面設計を行った。 今日は必要な素材を作っていく。 素材の話 ボードゲームをテーマにしたアプリを見てみると、素材にあまりこだわりのないアプリと、素材をちゃんと作り込んであるアプリがあるように思う。 例えば、自分がインストールしたバックギ…
変種オセロをiOSで遊べるようにするために、変種オセロのUIを作ってみた。 変種オセロ「良い子悪い子普通の子」については、以下を参照。 画面設計 まずは、画面設計から。 とりあえず、出来上がりがどんなふうになれば良さそうかを書いたラフが、以下。 汚…
変種オセロをiOSで遊べるようにしているのだけど、その中で、iPhone 6 / 6 Plusの画面サイズに関して問題があったので、その説明と解決策について。 iPhone 6 / 6 Plusの画面サイズについて iOSの画面サイズについては、以前、以下のような記事を書いた。 再…
最近、iOSでよく遊んでるゲームが、トランプゲームのシュナプセン。 https://itunes.apple.com/jp/app/schnapsen/id389078930?mt=8&uo=4&at=10l8JW&ct=hatenablog 今日はシュナプセンをちょっと紹介してみたいと思う。 シュナプセンについて シュナプセンは…
昨日は数式への落とし込みをやった。 今日はそれを実際にGLPKで解いてみる。 GLPKのダウンロードとインストール まずはGLPKのダウンロードとインストールから。 これは簡単で、GLPKのサイトからtarボールをダウンロードしてきて、makeするだけ。 詳細は省略…
昨日の続き。 今日は、昨日の自己言及パズルを数式に落とし込んでみる。 自己言及パズル(再掲) ということで、とりあえずは昨日の問題の再掲から。 次の枠内に 数字がいくつずつあるかを 括弧内に数字で記入しなさい。 +--------------------+ | 2015/07/1…
CodeIQ MAGAZINEで、「プログラマのための数学勉強会」という勉強会のレポートが連載されているのだけど、その第5回で、最適化問題の話が取り上げられていた。 https://codeiq.jp/magazine/2015/07/25428/ 自分も大学のときに最適化問題をやっていたので、こ…
昨日はタッチ処理について。 今日はAdventureSceneの更新について。 AdventureSceneの更新処理 SKSceneは、一定の間隔で更新が行われる。 その中で、キャラを動かしたりすることが出来る。 SKSceneの更新処理は、次の順番で行われる。 メソッド 説明 SKScene…
昨日はAdventureSceneの生成を追ってみた。 今日はタッチ処理について。 タイトル画面でのタッチ タイトル画面のボタンをタッチすると、接続されたアクションであるViewController#chooseArcher(_: AnyObject)、ViewController#chooseWarrior(_: AnyObject)…
昨日は、ファイル構成、ビューの構成、そして、ビューコントローラの内容を見ていった。 今日は主にAdventureSceneの生成について。 AdventureSceneのロード さっそく、ViewControllerから呼ばれていた、AdventureSceneをロードするコードを見てみる。 impor…
昨日の続き。 ファイル構成 コードを読んでいくときに、まずやっておきたいのが、ファイル構成の把握。 Adventureのファイル構成を見ると、次のようになっている。 (ナビゲータ準拠。一部省略) Adventure Shared/ 共通部 AdventureHUD.sks ステータス表示…
変種オセロをiOSで遊べるようにするために、SpriteKitのサンプルコードを読んでみた。 SpriteKitについて SpriteKitは2Dゲームを開発するためのフレームワーク。 アーキテクチャ SpriteKitのアーキテクチャを大雑把に説明すると、以下のような感じ。 ビュー…
相変わらず、SpriteKitのサンプルコードを読んでる。 その中で、いろんな画面サイズに対応させるためのコードがあったので、ちょっとまとめてみた。 ポイントとピクセル まず、基本的なこととして、画面サイズには論理的なサイズ(単位はポイント)と物理的…
これまでの各記事は、以下から。 Swiftでの並列プログラミングについて調べてみた。(その1) - いものやま。 Swiftでの並列プログラミングについて調べてみた。(その2) - いものやま。 Swiftでの並列プログラミングについて調べてみた。(その3) - いも…
もうちょっとだけ続くんじゃ。 ディスパッチキュー 並列処理を書くもう一つの方法が、ディスパッチキューを使う方法。 といっても、内容はオペレーションキューを使うのとほぼ一緒。 基本的にはディスパッチキューにブロック(Swiftの場合、クロージャ)を追…
昨日の記事は以下から。 今日は補足的な話。 オペレーションオブジェクトの依存関係 オペレーションオブジェクトには、依存関係を設定することが出来る。 処理Aを行ってから処理Bを行わなければならない場合、処理Bは処理Aに依存していることになる。 その場…
昨日の記事は以下。 今日は、メインキューと実行ループの話。 メインキュー CocoaやUIKitでUIにさわる場合、メインスレッドでさわるというのがお約束になっている。 なので、標準出力への出力も、本来ならメインスレッドで行うべき。 メインスレッドに関連付…
昨日の続き。 隠れた問題 昨日のコードはうまく動いていたように見えるのだけど、実は隠れた問題が。 それを明らかにするために、次のように出力する回数を増やしてみる。 /* concurrent_test.swift */ import Foundation let operationQueue = NSOperationQ…
変種オセロをiOSで遊べるようにするために、SpriteKitのサンプルコードを読んでいたのだけど、そこで並列処理が出てきていたので、Swiftでの並列プログラミング(Concurrency Programming)について調べてみた*1。 並列プログラミングの手法 Swiftで並列プロ…
これまでの各記事は、以下から。 変種オセロをSwiftに移植してみた。(その1) - いものやま。 変種オセロをSwiftに移植してみた。(その2) - いものやま。 変種オセロをSwiftに移植してみた。(その3) - いものやま。 変種オセロをSwiftに移植してみた。…