検索結果が190件見つかりました。

Swiftで行列を鑑みた多次元配列を宣言、生成する

プログラムに配列は欠かせず、 iPhoneアプリのゲーム開発に於いても其れは変わらず、 併せてゲーム内のデータ保持に行列を用いたいとなれば必須事項ですが、 型に厳格な言語 Swift 上の話でもあれば、 実行しようと思うもなかなかに難儀で、 エラーを頻発させるも諦める訳にも行かず、 何とか形になった経緯を本記事に記しおくものです。

アプリあちこち食堂(仮題)に於ける多次元配列を可視化した開発画面
アプリあちこち食堂(仮題)に於ける多次元配列を可視化した開発画面

求める2次元配列の形

自らの策定した仕様の要請に依れば手始めに 以下の如き2次元の行列を鑑みた Bool型の2次元配列を生成したくあります。

10000000000001
10000000000001
10000000000001
10000000000001
10000000000001
10000000000001
10000000000001
10000000000001
10000000000001
10000000000001
11111111111111

処が先ず以て、 Xcode は此の宣言さえ許してくれません。 下手に宣言すればビルドは通るものの、 走らせると配列forループでお馴染みのエラー Fatal error: Index out of range が吐き出されて止まってしまいます。

どうもネットを繰るとteratailに以下の様な遣り取りが見付かり…

NTTドコモのdポイントとdカード

現在でも総務省から突き上げられている様に 顧客への還元のない姿勢から少し前は随分と酷評していたドコモのサービスですが、 故意に分かり難く設定されたとも思える各プランは其の儘なるも、 どうも金融・決済サービスの一環として、 dポイント と結び付けられた dカード の登場と共に風向きが変わって来た様に感じられます。

ドコモ社のiTunesギフトカード割引販売お知らせメールに添付された画像
ドコモ社のiTunesギフトカード割引販売お知らせメールに添付された画像

ドコモdカードへの転換

先日は連休中、2018年5月2日にNTTドコモ社から届いたお知らせのメールの App Store & iTunesギフトカード初回限定10%OFF!さらに2%dポイントプレゼント はiTunesストアに補充の必要を感じていた折も折、 なかなかお得な内容に感じられれば、 渡りに船よと、 受け取ったメールの内容をiPhoneで確認した其の場、寝そべった其の姿勢で iTunesギフトカード10000円分を購入、 其の儘App Storeに登録して思ったのは、 思い付いた儘、寝た儘、此の様に買い物が出来るのでは 小売が厳しいと言われるのも無理はない、と言う世評が肯んぜられるものでした。

dカードの前身とも考えられる iDカード は明確に失敗だと断じて宜しいかと考えます。 何となればドコモが懸命に売り込んだに関わらず遂には普及には至らなかったからで、 具体的な例としては此の春にリニューアルされたドコモの契約者をランク付ける dポイントクラブステージ の最上位決定の条件からはiDカード契約が外されています。 iDカードは キャッシュを燃やす様な経営との批判を下方修正を余儀なくされた株主総会で受けた 際、 インターネット通販で失敗 し、 コンテンツ・メディア事業でも失敗 し、共に失敗した当時、ドコモが本業以外の事業多角化の一つとした 金融・決済 事業の中核を担うサービスでしたが矢張りドコモの思惑通りには運ばなかった訳です。 本ブログにも遡ること7年、2011年の12月24日の記事にドコモの金融、決済サービスを酷評しています。

Xcode開発に於けるfloat型やdouble型の値の余剰

ゲームの代表的存在でもある任天堂社のスーパーマリオブラザーズを始めとして、 特にレトロな2D横スクロールアクションゲームでは無限スクロールは必須の機能です。 本ブログにも横スクロールの実装について記事を幾つか配信しもしました。

2DゲームフレームワークSpriteKit

ゲームうさ犬が行く開発中画面
ゲームうさ犬が行く開発中画面

XcodeでiPhoneアプリでも2Dゲームを開発するに当たって 有用なのがアップル社謹製フレームワーク SpriteKit です。 このフレームワークには様々なゲーム実装に関する機能が搭載されていますが、 座標もその一つです。 SpriteKitの座標に関してはUIViewと座標系が異なるため、 困惑する場合も多いのですが2D画面を構成するには欠かせません。

問題惹起

手元の開発iPhoneゲームで いつものようにSpriteKitの提供する座標系 SKView を用いている途中、気付いた点がありました。

Spritekitを利用したゲームAIの実装改

ディープラーンングなどは及びもつかないものの、 iPhoneアプリにゲームとしてユーザーをもてなす以上、 規模は小さいながらもユーザーの入力に対する反応を返すアルゴリズムを用意すべし、 とて此れを ゲームAI として手元の開発ゲーム バルーンズ・オキュパイ への実装の取っ掛かりを記した記事が2017年10月6日に本ブログに配信した以下の記事でした。

Spritekitを利用したゲームAIもどきの実装

ゲームAI擬きの改善

本記事には此の前記事に紹介したコードを今一歩進めた考察を記す処です。 其の要件としては前記事に於いては キャラクターの出現ポイント検出の処理と移動の処理を任意単位時間、2秒に1回 としており、 此れを同時に処理していたのでユーザーの待ち時間が多くてゲームとして成り立たないので 此れを解決したい、と言うものです。 従って任意単位時間の取り扱いについて考える必要があります。 本ブログには此れに関して2017年10月24日に以下の記事を配信しています。

iPadで表示の崩れる原因となるviewport出力を他端末と切り分ける

アップル社からiPadがローンチされて以来すっかりタブレットは市民権を得た感があります。 従って今でもiPadはタブレットの代表として世の中に認知される所となっていると言って過言ではないでしょう。 PCよりお手軽に起動出来、ソファに腰掛けて利用可能ながら、 スマートフォンより表示領域が大きいタブレットは、 電子書籍閲覧や、動画サイト閲覧などに威力を発揮しますが、 矢張りWebサイト閲覧は其れ等の中でも最も利用頻度の高いものでしょう。 iPadでは標準装備のWebブラウザ Safari が大いに用いられる処です。

2010年にアップル社から発売された初代iPad

レスポンシブWebデザインとiPad

さて現在Webサイト実装の主流として台頭して来ている手法が レスポンシブWebデザイン です。 昔風に言えばリキッドデザインと言えば通りが良いかも知れません。 リキッドデザインが現代風に進化して一つのHTMLファイルで 様々な表示領域の端末に対応可能としたのがレスポンシブWebデザインで、 一般に「レスポンシブ」と言えば其れを指す程普及した様に思います。

処で此のレスポンシブWebデザインをタブレットの代表格たるiPadで表示すると多くの場合、 表示崩れなど問題が生じる様です。 共に現在の主流たる手法と端末が相性が悪いのは由々しき事態です。 願わくばW3Cなど規格制定組織やアップル社など大企業の対応が進み 何の考えもなく問題なく表示されるのが最も宜しい解決法でしょうが、 現時点ではどうも其の様な方向に進んではいないらしいので、 どうしてもWebサイト制作側で其々対応が必要となります。 折角の表示領域の広いiPadであれば是非情報の一覧性の優れたPC版の表示を求めたく、 本記事ではiPadでレスポンシブWebデザインの表示崩れを防ぎPC版の表示を目論見ます。

投稿日:
カテゴリー: iPad

jQueryによるaタグリンクアドレスへのディレクトリ挿入処理

スマートフォン閲覧用のWebサイト制作にあたって、 「/sp/」などと命名したディレクトリを立て、 ルート「/」のPC版と一対一で対応させた上でスマートフォンからのアクセスの場合には スマートフォン専用ページを表示させるのは以前は一般的な手法でした。 現在ではレスポンシブWebデザインが主流となり余り見られなくなった手法ではありますが、 当該手法を採用したWebサイトのメンテナンスに於いては PC版との整合性を取る必要に迫られる事案もあります。

スマートフォンによるアクセスへの配慮

例えばブログシステムに於いて一般の利用者が記事投稿する際に 内部リンクを記載すればPC版にリンク先を求めるのは当然でしょう。 すると然るべきリダイレクトが施されていない場合には スマートフォンで当該サイトを訪れた閲覧者はPC版リンクを踏みますから 折角用意したスマートフォンページは表示されはせず、 一般的に横幅の広い、従って小さな文字のページの閲覧を強いられる格好になってしまいます。

其処で問題のあるリンクに於いては スマホ版での巡回に支障をきたさない様に配慮し、 PC版のリンクアドレスをリンク時に改変して「/sp/」を先頭に挿入したい要請があります。 本記事では此の実現にjQueryを用いて解決を図りたく思います。

投稿日:
カテゴリー: jQuery

複数の任意時間に於けるコールバックメソッド

ゲーム開発に於いては単位時間の処理が欠かせないものとして iPhoneアプリの製作の際、基本的な統合的開発環境のXcode上での処理について 本ブログに稿をものしたのが以下の2017年3月27日の配信記事でした。

-(void)update:(CFTimeInterval)currentTimeメソッドに於ける任意時間のコールバックメソッド

必須となる複数の単位時間処理

処で斯くも重要な要素たる単位時間処理は 唯に一箇所のみで必要となるに限られるものでもなく 手元の開発ゲーム バルーンズ・オキュパイ でも複数箇所で利用するに如くはない事態が出来しました。 具体的にはキャラクターの移動処理とバルーン陣地の拡大処理が異なる単位時間に処理されるのが其れで 而して一つでは間に合わない様相を呈したのです。

其処で対処として考えたのが…

Spritekitを利用したゲームAIもどきの実装

今流行りのAI、即ち人工知能とタイトルすれば甚だ釣り気味ですが、 ゲーム作成に於いてはコンピュータにプレイヤーの相手をさせる場合、 大にしろ小にしろ孰れ其の為のアルゴリズムを用意しなければなりません。 其れは手元の開発iPhone専用ゲームアプリ バルーンズオキュパイ でも一般です。

略してバルオキュでは プレイヤーが画面上に風船を膨らませて自陣を拡張しているのに対し 此のゲームでは敵キャラクターとなる うさ犬 兄弟の弟、 はなまる が画面上を所狭しとジャンプしまくりプレイヤーが膨張させつつある風船を割って回る、 と言うゲーム内容になっています。 此の際、はなまるはプレイヤー陣地の確定した部分は避けて飛ぶ必要があります。 また膨張中の風船にはなまるが飛び込めば其の風船は割れてプレイヤーの負けが確定しなければなりません。 此の両者の解決を同時に図る上手い方法はないものかと模索して、 どうやら共に衝突判定が使えるだろうと思い付きました。 ゲームAIに衝突事件を組み込んで実装すればはなまるは確定風船を避けつつ時には膨張中の風船を割りに掛かるだろうと言う目論見です。

Hanamaru and uPanda in iPhone Game Balloons Occpy

衝突判定の実装は一般に難しいと言われる処ですが アップル社がXcodeに用意する2Dゲーム開発フレームワークである SpriteKit には最初から其の機能が用意されているので其れを用いることにします。

ゲーム画面を覆うようにforループでNSMutableArrayを生成する

陣取りゲームとして目論む処のゲーム主画面に於いては 陣地の遣り取りの判定のために画面全体を区切る必要があります。 区切った画面各々にプレイヤーの陣地か如何かの判定フラグを持たせ 更には他にも様々に応用して用いる使い勝手の良い 配列 として扱う腹積もりです。 この際ゲーム画面の幅に合わせて区切りを柔軟に保たせるために 可変配列を用いることにします。

可変配列オブジェクト NSMutableArray の概要については iPhoneアプリ開発の虎の巻 のページ NSMutableArray などが参考になるかも知れません。

Scene受け渡し時の画面サイズの初期化

キャラクターが空を飛んでいるのを表現するのに iPhoneの画面を超えて縦横無尽に飛び回る状況を作り出したい為に上方に上限を設けぬ実装を鑑み Spritekitに於ける座標系を考察したのが以下列挙する本ブログの両記事です。

処が此処に問題の内在が発覚しました。 時折デバッグの為に変数を出力して検討するのは誰もが実行する処でしょう。 2017年5月5日記事 SpriteKitに於ける時間軸に基づく背景グラデーションの独自実装 に記したようにゲームに於いてキャラクターが上空に飛翔すればするほど 宇宙空間に近いた表現で空色を濃く染め上げるのに背景色を変化させたのですが 此の時必要なのはキャラクターの縦軸の位置変数であるのは言う迄もありません。 其の変数とした honmaruPosYRatio の算出法は以下コードとなります。