YWF
このブログでずっと開発の様子を伝えていた変種オセロ「YWF」がリリースされました。 これまでの開発の様子 これまでの開発の様子は、以下の各まとめから。 考案〜Rubyによる実装(CUI) AIの作成 Swiftへの移植(CUI) ゲーム画面でのUIの作成 スタート画面…
これまでの各記事は以下から。 アイコンの作成 変種オセロの仕上げをしてみた。(その1) - いものやま。 勝敗の表示 変種オセロの仕上げをしてみた。(その2) - いものやま。 LabelButtonNodeの反応性の向上 変種オセロの仕上げをしてみた。(その3) - い…
前回までで、改善が必要だった部分についての改善を行った。 あとは、ストアに提出するだけ。 提出前の準備 まず、当然だけどAppleのDeveloper Programに登録していないとダメ。 さらに、契約やらなんやらもいろいろ済ましておく・・・(正直、プログラマに…
昨日はHistoryクラスを実装し、棋譜の保存が出来るようにした。 今日は、ライフサイクルのイベントに合わせて、棋譜の保存を実行できるようにしていく。 UIApplicationDelegateプロトコル iOSでは、アプリの状態が切り替わるタイミングに呼ばれるメソッドがU…
LabelButtonNodeの反応性の向上は出来た。 次は中断されたゲームの再開。 Historyクラス まずは、ゲームを再開できるようにするために、棋譜を保存してやる必要がある。 けど、モデル(Boardクラス)で扱っているのは一つの盤面の情報だけで、棋譜全体の情報…
昨日はLabelButtonNodeの反応が悪い原因を調査した。 今日は実際にLabelButtonNodeの修正を行っていく。 原因と解決策 まず、おさらいということで、反応性が悪かった原因と、その解決策について。 原因は、文字列をタップしているつもりで、そのちょっと下…
昨日は勝敗の表示を実装した。 今日はLabelButtonNodeの反応性の向上を行っていく。 原因の調査 まずは原因の調査から。 変種オセロのルール画面を作ってみた。(まとめ) - いものやま。では、文字でなく背景をタッチしたときに反応が返ってきてないんじゃ…
昨日はアイコンの作成を行った。 今日は勝敗の表示を行っていく。 勝敗表示の方法 なお、勝敗を表示するには、いくつかの方法が考えられる。 一番単純なのは、ダイアログ(アラート)を表示するという方法。 もうちょい手の込んだことをするなら、結果を表示…
前回までで、変種オセロをゲームとして遊べるところまで作った。 あとは仕上げということで、残ったタスクをこなしていく。 アイコンの作成 まずはアイコンから。 App Storeに提出するときには、さらに大きいサイズのアイコンが必要なようだけど、とりあえず…
これまでの各記事は以下から。 変種オセロのルール画面を作ってみた。(その1) - いものやま。 変種オセロのルール画面を作ってみた。(その2) - いものやま。 変種オセロのルール画面を作ってみた。(その3) - いものやま。 変種オセロのルール画面を作…
昨日はルール画面を作った。 今日はスタート画面とルール画面の遷移を実装していく。 スタート画面の修正 まずはスタート画面→ルール画面の遷移から。 //============================== // YWF //------------------------------ // StartScene.swift //===…
昨日はルールの変更に合わせてボードの修正をした。 今日は実際にルールを表示する画面を作る。 ルール画面 さっそくコードを。 //============================== // YWF //------------------------------ // RuleScene.swift //=========================…
昨日は英語のルールを書いた。 今日は、ルールの変更に合わせて、ボードのコードを修正。 ボードの修正 といっても、修正内容は簡単。 結果として、前より簡単なコードになった感じ。 とりあえず、何を修正したのかが分かるように、diffの出力。 diff --git …
昨日はYWFの日本語ルールを書いた。 今日は英語ルールを書いていく。 ルール書き(英語) ということで、英語のルール。 Overview YWF (Yoi-ko, Warui-ko, Futsu-no-ko) is a strategy board game for two players. One plays as Yoi-ko, which means Good b…
前回までは、スタート画面を作っていた。 残すは、ルール画面のみ。 ルール書き まずは、ルールを書くところから。 概要 YWF(良い子悪い子普通の子)は、2人用の戦略ボードゲームです。 一人が「良い子」、もう一人が「悪い子」となり、ボード上で多数派に…
これまでの各記事は以下から。 変種オセロのスタート画面を作ってみた。(その1) - いものやま。 変種オセロのスタート画面を作ってみた。(その2) - いものやま。 変種オセロのスタート画面を作ってみた。(その3) - いものやま。 変種オセロのスタート…
昨日はゲーム画面からスタート画面への遷移を作った。 今日は遷移するときに確認のダイアログを出すようにしていく。 UIAlertController 確認のダイアログを出すときに使えるのが、UIAlertController。 (なお、以前はUIAlertViewが使われていたけれど、非推…
昨日はスタート画面からゲーム画面への遷移を作った。 今日は逆に、ゲーム画面からスタート画面への遷移を作成していく。 スタート画面への遷移 昨日と同様に、GameSceneに画面遷移を実装する。 //============================== // YWF //----------------…
昨日は設定関係を完成させた。 今日はスタート画面からゲーム画面へ遷移できるようにしていく。 ゲーム画面への遷移 ゲーム画面へ遷移できるようにするために、スタート画面をPlayButtonNodeObserverプロトコルに準拠するようにする。 //===================…
昨日は設定の描画を作った。 今日は設定のモデルオブジェクトの実装と、設定の描画のリファクタリングを行う。 設定の保存について iOSでは、データを保存するための手段がいくつか提供されている。 その中でも特に、設定を保存するためのクラスとして用意さ…
昨日はボタン類の実装をした。 今日は設定の描画を実装していく。 設定の描画 ということで、さっそくコードを。 //============================== // YWF //------------------------------ // ConfigNode.swift //============================== import …
昨日はスタート画面のレイアウトだけ作成した。 今日はボタン類を作っていく。 プレイボタン まずはゲームを開始するためのプレイボタンから。 //============================== // YWF //------------------------------ // PlayButtonNode.swift //======…
強化学習の方はちょっとお休み。 今日からは、変種オセロ「良い子悪い子普通の子」のスタート画面を作っていく。 変種オセロ「良い子悪い子普通の子」については、以下を参照。 デザイン まずは、スタート画面をどんなふうにするのかをデザイン。 必要なもの…
これまでの各記事は以下から。 イントロ、画面設計 変種オセロのUIを作ってみた。(その1) - いものやま。 素材作成 変種オセロのUIを作ってみた。(その2) - いものやま。 変種オセロのUIを作ってみた。(その3) - いものやま。 変種オセロのUIを作って…
ユーザ情報の表示も出来た。 あとはゲームの結果を表示したりも必要だけど、かなり長くなったので、とりあえずまとめていく。 ターンコントローラの修正 とりあえず、終了判定の実装だけは入れておく。 //============================== // YWF //---------…
Undoボタンの対応も出来た。 あとは、ユーザ情報の表示。 レイアウトマネージャの修正 ユーザ情報の表示を行うとき、そのエリアのサイズが必要となったので、レイアウトマネージャの修正を行った。 ついでに、すこしリファクタリングも実施。 //============…
昨日の続き。 Playerプロトコルの修正 Undoに対応するためにPlayerプロトコルに少し修正を加える。 //============================== // YWF //------------------------------ // Player.swift //============================== public protocol Player {…
昨日はPassボタンの対応を行った。 今日はUndoボタンの対応を行っていく。 BoardNodeの修正 まずは、Undo自体が出来るようにするために、BoardNodeを修正していく。 オペレーションキューの追加 今までの実装では手を抜いてたけど、Undoを出来るようにするた…
前回はターンコントローラを実装して、AI相手にもプレイが出来るようにした。 次は各ボタンの機能を対応していく。 まずはPassボタンの対応から。 人間プレイヤーの修正 Passボタンを使うのは人なので、人間プレヤーの修正をしていく。 具体的には、 Humanク…
昨日はボタンとボードにオブザーバパターンを実現した。 今日はそれを使ってゲームのプレイが出来るようにする。 ターンコントローラの実装 ゲームをプレイできるようにするためには、まず手番を管理する必要がある。 ということで、BoardNodeObserverプロト…