読者です 読者をやめる 読者になる 読者になる

いものやま。

雑多な知識の寄せ集め

変種オセロ「YWF」がリリースされました。

このブログでずっと開発の様子を伝えていた変種オセロ「YWF」がリリースされました。 YWFYasufumi Yamazakiゲーム¥240 これまでの開発の様子 これまでの開発の様子は、以下の各まとめから。 考案〜Rubyによる実装(CUI) AIの作成 Swiftへの移植(CUI) ゲー…

変種オセロの仕上げをしてみた。(まとめ)

これまでの各記事は以下から。 アイコンの作成 変種オセロの仕上げをしてみた。(その1) - いものやま。 勝敗の表示 変種オセロの仕上げをしてみた。(その2) - いものやま。 LabelButtonNodeの反応性の向上 変種オセロの仕上げをしてみた。(その3) - い…

変種オセロの仕上げをしてみた。(その7)

前回までで、改善が必要だった部分についての改善を行った。 あとは、ストアに提出するだけ。 提出前の準備 まず、当然だけどAppleのDeveloper Programに登録していないとダメ。 さらに、契約やらなんやらもいろいろ済ましておく・・・(正直、プログラマに…

変種オセロの仕上げをしてみた。(その6)

昨日はHistoryクラスを実装し、棋譜の保存が出来るようにした。 今日は、ライフサイクルのイベントに合わせて、棋譜の保存を実行できるようにしていく。 UIApplicationDelegateプロトコル iOSでは、アプリの状態が切り替わるタイミングに呼ばれるメソッドがU…

変種オセロの仕上げをしてみた。(その5)

LabelButtonNodeの反応性の向上は出来た。 次は中断されたゲームの再開。 Historyクラス まずは、ゲームを再開できるようにするために、棋譜を保存してやる必要がある。 けど、モデル(Boardクラス)で扱っているのは一つの盤面の情報だけで、棋譜全体の情報…

変種オセロの仕上げをしてみた。(その4)

昨日はLabelButtonNodeの反応が悪い原因を調査した。 今日は実際にLabelButtonNodeの修正を行っていく。 原因と解決策 まず、おさらいということで、反応性が悪かった原因と、その解決策について。 原因は、文字列をタップしているつもりで、そのちょっと下…

変種オセロの仕上げをしてみた。(その3)

昨日は勝敗の表示を実装した。 今日はLabelButtonNodeの反応性の向上を行っていく。 原因の調査 まずは原因の調査から。 変種オセロのルール画面を作ってみた。(まとめ) - いものやま。では、文字でなく背景をタッチしたときに反応が返ってきてないんじゃ…

変種オセロの仕上げをしてみた。(その2)

昨日はアイコンの作成を行った。 今日は勝敗の表示を行っていく。 勝敗表示の方法 なお、勝敗を表示するには、いくつかの方法が考えられる。 一番単純なのは、ダイアログ(アラート)を表示するという方法。 もうちょい手の込んだことをするなら、結果を表示…

変種オセロの仕上げをしてみた。(その1)

前回までで、変種オセロをゲームとして遊べるところまで作った。 あとは仕上げということで、残ったタスクをこなしていく。 アイコンの作成 まずはアイコンから。 App Storeに提出するときには、さらに大きいサイズのアイコンが必要なようだけど、とりあえず…

変種オセロのルール画面を作ってみた。(まとめ)

これまでの各記事は以下から。 変種オセロのルール画面を作ってみた。(その1) - いものやま。 変種オセロのルール画面を作ってみた。(その2) - いものやま。 変種オセロのルール画面を作ってみた。(その3) - いものやま。 変種オセロのルール画面を作…

変種オセロのルール画面を作ってみた。(その5)

昨日はルール画面を作った。 今日はスタート画面とルール画面の遷移を実装していく。 スタート画面の修正 まずはスタート画面→ルール画面の遷移から。 //============================== // YWF //------------------------------ // StartScene.swift //===…

変種オセロのルール画面を作ってみた。(その4)

昨日はルールの変更に合わせてボードの修正をした。 今日は実際にルールを表示する画面を作る。 ルール画面 さっそくコードを。 //============================== // YWF //------------------------------ // RuleScene.swift //=========================…

変種オセロのルール画面を作ってみた。(その3)

昨日は英語のルールを書いた。 今日は、ルールの変更に合わせて、ボードのコードを修正。 ボードの修正 といっても、修正内容は簡単。 結果として、前より簡単なコードになった感じ。 とりあえず、何を修正したのかが分かるように、diffの出力。 diff --git …

変種オセロのルール画面を作ってみた。(その2)

昨日は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…

変種オセロのルール画面を作ってみた。(その1)

前回までは、スタート画面を作っていた。 残すは、ルール画面のみ。 ルール書き まずは、ルールを書くところから。 概要 YWF(良い子悪い子普通の子)は、2人用の戦略ボードゲームです。 一人が「良い子」、もう一人が「悪い子」となり、ボード上で多数派に…

変種オセロのスタート画面を作ってみた。(まとめ)

これまでの各記事は以下から。 変種オセロのスタート画面を作ってみた。(その1) - いものやま。 変種オセロのスタート画面を作ってみた。(その2) - いものやま。 変種オセロのスタート画面を作ってみた。(その3) - いものやま。 変種オセロのスタート…

変種オセロのスタート画面を作ってみた。(その7)

昨日はゲーム画面からスタート画面への遷移を作った。 変種オセロのスタート画面を作ってみた。(その6) - いものやま。 今日は遷移するときに確認のダイアログを出すようにしていく。 UIAlertController 確認のダイアログを出すときに使えるのが、UIAlertC…

変種オセロのスタート画面を作ってみた。(その6)

昨日はスタート画面からゲーム画面への遷移を作った。 変種オセロのスタート画面を作ってみた。(その5) - いものやま。 今日は逆に、ゲーム画面からスタート画面への遷移を作成していく。 スタート画面への遷移 昨日と同様に、GameSceneに画面遷移を実装す…

変種オセロのスタート画面を作ってみた。(その5)

昨日は設定関係を完成させた。 変種オセロのスタート画面を作ってみた。(その4) - いものやま。 今日はスタート画面からゲーム画面へ遷移できるようにしていく。 ゲーム画面への遷移 ゲーム画面へ遷移できるようにするために、スタート画面をPlayButtonNod…

変種オセロのスタート画面を作ってみた。(その4)

昨日は設定の描画を作った。 変種オセロのスタート画面を作ってみた。(その3) - いものやま。 今日は設定のモデルオブジェクトの実装と、設定の描画のリファクタリングを行う。 設定の保存について iOSでは、データを保存するための手段がいくつか提供され…

変種オセロのスタート画面を作ってみた。(その3)

昨日はボタン類の実装をした。 変種オセロのスタート画面を作ってみた。(その2) - いものやま。 今日は設定の描画を実装していく。 設定の描画 ということで、さっそくコードを。 //============================== // YWF //----------------------------…

変種オセロのスタート画面を作ってみた。(その2)

昨日はスタート画面のレイアウトだけ作成した。 変種オセロのスタート画面を作ってみた。(その1) - いものやま。 今日はボタン類を作っていく。 プレイボタン まずはゲームを開始するためのプレイボタンから。 //============================== // YWF //…

変種オセロのスタート画面を作ってみた。(その1)

強化学習の方はちょっとお休み。 今日からは、変種オセロ「良い子悪い子普通の子」のスタート画面を作っていく。 変種オセロ「良い子悪い子普通の子」については、以下を参照。 変種オセロを考えてみた。(まとめ) - いものやま。 変種オセロの思考ルーチン…

変種オセロのUIを作ってみた。(まとめ)

これまでの各記事は以下から。 イントロ、画面設計 変種オセロのUIを作ってみた。(その1) - いものやま。 素材作成 変種オセロのUIを作ってみた。(その2) - いものやま。 変種オセロのUIを作ってみた。(その3) - いものやま。 変種オセロのUIを作って…

変種オセロのUIを作ってみた。(その20)

ユーザ情報の表示も出来た。 変種オセロのUIを作ってみた。(その19) - いものやま。 あとはゲームの結果を表示したりも必要だけど、かなり長くなったので、とりあえずまとめていく。 ターンコントローラの修正 とりあえず、終了判定の実装だけは入れておく…

変種オセロのUIを作ってみた。(その19)

Undoボタンの対応も出来た。 変種オセロのUIを作ってみた。(その17) - いものやま。 あとは、ユーザ情報の表示。 レイアウトマネージャの修正 ユーザ情報の表示を行うとき、そのエリアのサイズが必要となったので、レイアウトマネージャの修正を行った。 …

変種オセロのUIを作ってみた。(その18)

昨日の続き。 変種オセロのUIを作ってみた。(その17) - いものやま。 Playerプロトコルの修正 Undoに対応するためにPlayerプロトコルに少し修正を加える。 //============================== // YWF //------------------------------ // Player.swift //=…

変種オセロのUIを作ってみた。(その17)

昨日はPassボタンの対応を行った。 変種オセロのUIを作ってみた。(その16) - いものやま。 今日はUndoボタンの対応を行っていく。 BoardNodeの修正 まずは、Undo自体が出来るようにするために、BoardNodeを修正していく。 オペレーションキューの追加 今ま…

変種オセロのUIを作ってみた。(その16)

前回はターンコントローラを実装して、AI相手にもプレイが出来るようにした。 変種オセロのUIを作ってみた。(その15) - いものやま。 次は各ボタンの機能を対応していく。 まずはPassボタンの対応から。 人間プレイヤーの修正 Passボタンを使うのは人なの…

変種オセロのUIを作ってみた。(その15)

昨日はボタンとボードにオブザーバパターンを実現した。 変種オセロのUIを作ってみた。(その14) - いものやま。 今日はそれを使ってゲームのプレイが出来るようにする。 ターンコントローラの実装 ゲームをプレイできるようにするためには、まず手番を管理…

変種オセロのUIを作ってみた。(その14)

さて、レイアウトの修正は出来た。 変種オセロのUIを作ってみた。(その13) - いものやま。 次はボタンのタッチ処理を出来るようにする。 また、ボードのタッチ処理についても、修正を行う。 オブザーバパターンの実現 SwiftでSetの型パラメータにプロトコ…

変種オセロのUIを作ってみた。(その13)

昨日はレイアウトのリデザインを行った。 変種オセロのUIを作ってみた。(その12) - いものやま。 今日はこのレイアウトを実現するための仕組みを実装する。 レイアウトマネージャ SpriteKitでレイアウトを決めるときに必要になるのが、プロパティのpositio…

変種オセロのUIを作ってみた。(その12)

昨日はボタンの描画を実装した。 変種オセロのUIを作ってみた。(その11) - いものやま。 しかし、レイアウトに問題があることが発覚したので、今日はその解決を。 レイアウトのリデザイン とりあえず、今まではどの画面サイズについても、縦方向の構成はど…

変種オセロのUIを作ってみた。(その11)

ちょっと間が空いたけど、続き。 変種オセロのUIを作ってみた。(その10) - いものやま。 今日はUndoなどを行うためのボタンを作っていく。 ボタンの描画 ということで、まずはボタンの描画から。 SKSpriteNodeを継承して、ButtonNodeを作る。 //==========…

変種オセロのUIを作ってみた。(その10)

昨日はタッチ処理の実装を行った。 変種オセロのUIを作ってみた。(その9) - いものやま。 今日はタッチ処理の実装をちょっと修正する。 タッチ処理の修正 作ったタッチ処理を実際に触ってみた分かったのは、選択を確定させるのに2回タッチするのは面倒とい…

変種オセロのUIを作ってみた。(その9)

昨日はタッチ処理の実装を途中まで行った。 変種オセロのUIを作ってみた。(その8) - いものやま。 今日はその続き。 タッチ処理の実装 さて、肝心のタッチ処理の実装は、次のような感じ。 public class BoardNode: SKSpriteNode { // 省略 private var tou…

変種オセロのUIを作ってみた。(その8)

BoardNodeの実装の続き。 変種オセロのUIを作ってみた。(その7) - いものやま。 今日はタッチ処理を実装していく。 タッチの仕様 まず、タッチの仕様を考えてみる。 基本的な仕様は、以下。 選択可能なマスが、ハイライトで表示される。 選択可能なマスを1…

変種オセロのUIを作ってみた。(その7)

昨日の続き。 変種オセロのUIを作ってみた。(その6) - いものやま。 今日はボードの描画を実装していく。 ボードの描画 ボードの描画は、SKSpriteNodeを継承したBoardNodeを作って実装する。 //============================== // YWF //-----------------…

変種オセロのUIを作ってみた。(その6)

昨日は駒の描画を実装した。 変種オセロのUIを作ってみた。(その5) - いものやま。 今日からはボードの描画を実装していく。 ボードの構成について まずは、ボードの構成について。 ボードを単に一つのスプライトにしてもいいのだけど、その場合、タッチさ…

変種オセロのUIを作ってみた。(その5)

素材作りは昨日でとりあえず完了。 変種オセロのUIを作ってみた。(その4) - いものやま。 今日からはコーディングをしていく。 駒の描画 まずは、駒を描画するところから。 ということで、SKSpriteNodeを継承して、PieceNodeを作る。 駒の状態 まず、駒の…

変種オセロのUIを作ってみた。(その4)

昨日は駒を作った。 変種オセロのUIを作ってみた。(その3) - いものやま。 今日は残りの部品を作っていく。 ボードの作成 変種オセロのUIを作ってみた。(その2) - いものやま。で作ったマットと木材を使って、ボードを作っていく。 まず、ボードのマット…

変種オセロのUIを作ってみた。(その3)

昨日は素材の作成で、マットと木材を作った。 変種オセロのUIを作ってみた。(その2) - いものやま。 今日は駒を作っていく。 駒のデザイン ボードゲームで駒といったら、やっぱりミープル。 ということで、ネットの画像などを参考に、パスをいじって作成し…

変種オセロのUIを作ってみた。(その2)

昨日は画面設計を行った。 変種オセロのUIを作ってみた。(その1) - いものやま。 今日は必要な素材を作っていく。 素材の話 ボードゲームをテーマにしたアプリを見てみると、素材にあまりこだわりのないアプリと、素材をちゃんと作り込んであるアプリがあ…

変種オセロのUIを作ってみた。(その1)

変種オセロをiOSで遊べるようにするために、変種オセロのUIを作ってみた。 変種オセロ「良い子悪い子普通の子」については、以下を参照。 変種オセロを考えてみた。(まとめ) - いものやま。 変種オセロの思考ルーチンを作ってみた。(まとめ) - いものや…

変種オセロをSwiftに移植してみた。(まとめ)

これまでの各記事は、以下から。 変種オセロをSwiftに移植してみた。(その1) - いものやま。 変種オセロをSwiftに移植してみた。(その2) - いものやま。 変種オセロをSwiftに移植してみた。(その3) - いものやま。 変種オセロをSwiftに移植してみた。…

変種オセロをSwiftに移植してみた。(その11)

昨日はランダムAIを実装した。 変種オセロをSwiftに移植してみた。(その10) - いものやま。 今日はアルファベータAIの実装。 アルファベータAI さっそくコードを。 public class AlphaBetaCom: Player { private var color: Board.Color private lazy var …

変種オセロをSwiftに移植してみた。(その10)

昨日はプレイヤーの実装。 変種オセロをSwiftに移植してみた。(その9) - いものやま。 今日はランダムAIを実装していく。 乱数の取得 さて、ランダムAIを実装するのだけど、やはりRubyのArray#sampleのような気の利いたメソッドはないわけで。 ということ…

変種オセロをSwiftに移植してみた。(その9)

昨日の記事は以下。 変種オセロをSwiftに移植してみた。(その8) - いものやま。 残すは実際のプレイヤーの実装。 プレイヤーの実装をするためのTips 標準入力、標準出力の扱い さて、プレイヤーを実装しようとするとまず必要となるのが、標準入力から文字…

変種オセロをSwiftに移植してみた。(その8)

ボードの表示まで出来るようになった。 変種オセロをSwiftに移植してみた。(その7) - いものやま。 次は、人同士が対戦できるようにする。 Playerプロトコル Rubyの場合、ダック・タイピングが出来るので、プレイヤーに共通のインタフェースをコード上に定…

変種オセロをSwiftに移植してみた。(その7)

ボードの実装が終わったので、次はボードの表示の実装。 変種オセロをSwiftに移植してみた。(その6) - いものやま。 ボードの表示 さっそくコードを。 /* BoardViewer.swift */ import Foundation public struct BoardViewer { private static let COL_IND…