2009-01-01から1年間の記事一覧

補足

一点書き落としましたので、補足しておきます。<Cube>クラスのdrawCubeの説明などで触れたeclipseが、ループを作ってしまうことがあるという問題についてです。eclipseを作る<RubicCube>のmakeEclipseInfoメソッドのロジックからは、a→b→aのような直接的…

ルービックキューブ I - 6

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } ルービックキューブ Iもやっと最終回、今回は<MyWorld>クラスです。<MyWorld>クラスは、<UIView>のサブクラ…

ルービックキューブ I - 5

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } だいぶ核心に近づいてきました。今回は<RubicCube>クラスです。<RubicCube>は<Cube>によって作る27個の立方…

ルービックキューブ I - 4

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } さて<Cube>クラスです。<Cube>はルービックキューブの27個の立方体を表しています。まず、を見てみましょう。 …

ルービックキューブ I - 3

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } 今回は<Cube>クラスを解説する予定でしたが、その前に、座標変換とそれに関係する<Ctm3d>クラスの話をしておき…

ルービックキューブ I - 2

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } 今回は<Point3d>と<Quad3d>の2つのクラスを紹介します。<Point3d>は、三次元の点[x, y, z]を表すクラスです…

ルービックキューブ I - 1

ずいぶん間が空いてしまいました。既存のコードを作り直す過程で、書き換える予定のなかった部分に潜在的なバグが見つかったり、また15パズルを含めて以前は無視していたメモリ管理を多少はまともにしようと考えてはまり込んだり、ずるずると遅れてしまいま…

3D - ルービックキューブへの道

さて、次はルービックキューブに挑戦します。 15パズルの次に手を付けたのがこのルービックキューブです。 3Dを扱うのもはじめてなのでだいぶ苦労しましたが、上の図のところまではできています。画面をドラッグすると、キューブ全体がぐりぐりと回転します…

15パズル - 別案

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } 前々回、次のように書きました。 「leftEcl、rightEcl、upperEcl、downEclを使うここまでのロジックは、汎用性はあ…

UIViewについて

pre { white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word; } 前回の予告の通り、いま15パズルの改良(?)版をテスト中ですが、なかなかバグが取れずに難渋しています。この過程…

15パズル - 5

GameBoadクラスの内、前回残った<getXAvail><getYAvail><moveX><moveY>の解説を続けます。ピースの移動の際には、あらかじめPieceから通知された移動量が移動可能か調べ、それから実際に移動可能な分だけ移動を行うと前回書きました。 <getXAvail>…

15パズル - 4

さて、15パズルもGameBoadを残すのみになりました。GameBoadは少々コード量が多いので、今回、次回と二回に分けて解説したいと思います。GameBoadは、Pieceからタッチ情報を受取り、前回説明したPieceMngを使ってPiece間の交差情報を作り直し、実際にPieceを…

15パズル - 3

15パズル三回目は、PieceMngを解説します。 PieceMngは、Pieceのインスタンス変数leftEcl、rightEcl、upperEcl、downEclの中身を生成するクラスです。leftEcl、rightEcl、upperEcl、downEclは、ピースを上下左右に移動する時に、ぶつかることになる他のピー…

15パズル - 2

15パズルの二回目。 前回、<GameBoad><Piece><PieceMng>の3つのサブクラスのファイルをプロジェクトに追加しました。 今回は、そのうちPieceの中身を説明します。まず、Pieceサブクラスのヘッダファイル<Piece.h>です。(クラスファイル作成時に自動…

15パズル - 1

さて、最初に紹介するのは15パズルです。4x4のマス目に収まった15個のコマを、ひとつだけ空いたマスを利用して並べ替え順番を揃えるゲーム。 図を見てもらえばすぐにわかるでしょう。 コマはドラッグでまとめて動かせるようにします。 つまり、図でいえば、…

はじめに

これから、ここで、趣味で開発したiPhone向けのXCode/Objective-Cのコードを公開していこうと思います。はじめに、お断りがあります。ぼくは経験が長いだけが取り柄の、ごく平凡なプログラマです。良いコードは書けません。しかもObjective-Cはふた月前に始…