パズルゲーム用ソフトウェアの入力方法
【課題】入力自由度が低いハードウェアを用いても、パズルゲームの入力が可能なパズルソフトウェアの入力方法を提供する。
【解決手段】通常、ペンシルパズルとしてのクロスワードパズル・ナンバープレースでは空白とされるマスに他のマスで用いる文字を初期配置する。パズルソフトウェアが動作する携帯情報端末が有する十字キーや決定キーで所定のマスを二つ選択すると、マスの文字が入れ替わる。これを全てのマスが一致するまで繰り返すことでクロスワードパズル・ナンバープレースの回答を導出する。
【解決手段】通常、ペンシルパズルとしてのクロスワードパズル・ナンバープレースでは空白とされるマスに他のマスで用いる文字を初期配置する。パズルソフトウェアが動作する携帯情報端末が有する十字キーや決定キーで所定のマスを二つ選択すると、マスの文字が入れ替わる。これを全てのマスが一致するまで繰り返すことでクロスワードパズル・ナンバープレースの回答を導出する。
【発明の詳細な説明】
【技術分野】
【0001】
携帯電話機及び携帯端末用(総称して携帯情報端末)のパズルゲーム、特にクロスワードパズル用のソフトウェア、などの入力方法に関する。
【背景技術】
【0002】
携帯用ゲーム機器や携帯電話機上で動作するパズルゲーム、たとえばクロスワードパズルやナンバープレースと言ったペンシルパズルを起源とするもの、などは短時間でプレイ可能なため定番のコンテンツとなっている。
【0003】
図1は、一般的なペンシルパズルとしてのクロスワードパズルの概念を説明するための概念図である。
【0004】
通常、外枠1の中を格子状に区分する。一般的に、縦横同数の格子が用意され、結果として全体の格子の数は平方数となることが多い。各格子は文字の書き込みができない黒マス4とそれ以外の文字の書き込みが可能な白マスに分類される。
【0005】
白マスは未記入マス2と記入済みマス3とに分かれる。文字通り未記入マス2は字が記入されていない白マスであり、記入済みマス3は文字の記入が終わった白マスである。ペンシルパズルにおいては、消しゴムを用いて記入済みマス3内の文字を消すことで未記入マス2に戻す。
【0006】
コンピュータでこれを実現する場合、フルキーボードがあれば、上記操作を容易に行うことが可能である。しかし、携帯用ゲーム機器や携帯電話機には、キーボード等の入力手段を有さないものや、入力手段はあるものの入力自由度の低いもの(たとえば携帯ゲーム機の「十字」キーや携帯電話のテンキー拡張キーボードなど)しかないものも多い。
【0007】
これらの、自由度の低い入力手段を用いて、クロスワードパズル等のペンシルパズルを実現する手段として、特開2007−195800号公報(特許文献1)ではタッチパネルを用いた手段が提案されている。
【特許文献1】特開2007−195800号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、特許文献1で開示する携帯用ゲーム機器や携帯電話機はタッチパネルを有するという条件があり、いついかなる状況下においても適用可能なものではない。
【0009】
本発明は、携帯用ゲーム機器や携帯電話機の入力手段により拘束を受けることなく、より適用範囲の広い入力方法を提供することにある。
【0010】
また、本発明の別の目的として、入力自由度が低いハードウェアを用いても、パズルゲームの入力が可能なパズルソフトウェアの入力方法を提供することにある。
【0011】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【0013】
本発明の代表的な実施の形態に関わるパズルゲーム用ソフトウェアの入力方法は、編集用の配列より第1のデータ構造体を選択する第1データ構造体選択ステップと、編集用の配列より第2のデータ構造体を選択する第2データ構造体選択ステップと、第1のデータ構造体の表示データと第2のデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を含むことを特徴とする。
【0014】
また、本発明の代表的な実施の形態に関わるパズルゲーム用ソフトウェアの入力方法は、編集用の配列より第1のデータ構造体を選択するための第1カーソルを表示する第1カーソル表示ステップと、第1カーソルを操作するための入力を受け付ける第1カーソル操作ステップと、第1カーソルの処理対象を特定すると共に、編集用の配列より第2のデータ構造体を選択するための第2カーソルを表示する第1カーソル特定・第2カーソル表示ステップと、第2カーソルを操作するための入力を受け付ける第2カーソル操作ステップと、第2カーソルの処理対象を特定する第2カーソル特定ステップと、第1カーソルが指標するデータ構造体の表示データと第2カーソルが指標するデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を有することを特徴とする。
【発明の効果】
【0015】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【0016】
本発明の代表的な実施の形態に関わる携帯電話機及び携帯端末用のパズルゲームの入力手段においては、入力用ハードウェアが制限された中での快適な動作が可能になる。
【発明を実施するための最良の形態】
【0017】
以下図を用いて本発明の実施の形態を説明する。
【0018】
(第1の実施の形態)
第1の実施の形態では、本発明の入力手段をクロスワードパズルに適用することを考える。
【0019】
(ハードウェア及びソフトウェアの構成)
図2は本発明の入力手段が適用されたクロスワードパズル用ソフトウェアが動作する携帯電話機の構成を表すブロック図である。また、図3は本発明の入力手段が適用されたクロスワードパズル用ソフトウェアのモジュール構成を表す図である。
【0020】
本発明の入力手段が適用されたクロスワードパズル用ソフトウェアが動作する携帯電話機はCPU101、メモリ102、無線部103、アンテナ104、入力部105、表示部106、スピーカ107、バス108より構成される。
【0021】
CPU101は、図3で図示するクロスワードパズル用ソフトウェアなどのソフトウェアを処理する中央処理装置である。また、メモリ102は、CPU101動作時の一時記憶に用いる揮発性メモリや、電源切断後の再起動用の不揮発性メモリを包括した記憶媒体である。
【0022】
無線部103はアンテナ104を経由して図示しない基地局(Node−B)や無線LANのアクセスポイント等と接続するための無線通信用の送受信部である。
【0023】
入力部105は本携帯電話機を操作する操作者が情報を入力するための入力手段である。本発明では、ハードウェアの実装上の制約などにより、この入力部105がある程度制限を受けた状態でも適切な入力手段を提供することを目的としている。
【0024】
なお、以下の説明では「「十字」キー」や「決定キー」などを用いているが、これらはこの入力部105に含まれるキーの一つである。「十字」キーは対象の移動を、決定キーは特定の状態の固定を行うキーである。
【0025】
表示部106は本携帯電話機を操作する操作者に情報を提供するための表示用装置である。一般的にはLCD(液晶表示器)や有機ELパネルなどが用いられる。
【0026】
スピーカ107は圧電素子などで動作する、音を発生・出力するデバイスである。
【0027】
バス108は各モジュール間でデータのやり取りをするためのアドレス・データバスである。
【0028】
次に、図3を用いてクロスワードパズル用ソフトウェアの構成に付いて説明する。
【0029】
クロスワードパズル用ソフトウェアは、基本ソフトウェア150上で動作する。このクロスワードパズル用ソフトウェアは、入力識別モジュール151、クロスワードパズルソフト基本モジュール152、初期化モジュール153、ヒントモジュール154、正誤判定モジュール155、表示部描画モジュール156より構成される。
【0030】
入力識別モジュール151は、入力部105の入力を受け付けるモジュールである。入力部105の入力には、クロスワードパズル用ソフトウェアとして有意なもの、無意味なものが存在する。この峻別を行い、有意なものについてはクロスワードパズルソフト基本モジュール152に出力する。
【0031】
クロスワードパズルソフト基本モジュール152は、クロスワードパズル用ソフトウェアで用いるデータの管理、入力識別モジュール151からの入力を受けての各モジュールの呼び出し、データの受け渡しなどを行う。クロスワードパズル用ソフトウェアの起動時にはこのモジュールが最初に呼び出され、このモジュールが他のモジュールを読み出す構成を取る。
【0032】
初期化モジュール153は、ゲーム開始時の正解用データ500、操作者に最初に提示され、パズル操作の対象となる編集用データ600を作成するモジュールである。これらのデータをメモリ102上に作成するパズルの再スタートが行われるまで、初期化モジュール153は起動しない。メモリ102上からも削除すればメモリの有効利用も可能である。
【0033】
ヒントモジュール154はクロスワードパズルで必要となる縦軸、横軸のヒントの抽出を行うモジュールである。縦軸・横軸のヒントは正解用データ500を構成する正解用格子データ200に含まれる。適切にこのデータを抽出するのが、このモジュールの処理である。
【0034】
正誤判定モジュール155は、入力によるデータの修正が行われた結果、入力した箇所の正誤を判定するモジュールである。
【0035】
表示部描画モジュール156はクロスワードパズルソフト基本モジュール152、ヒントモジュール154からの情報を受けて、操作者に対する情報を表示部106に表示することを目的としたモジュールである。
【0036】
なお、上述以外に、スタート用画面やデモ画面を表示するモジュールなどもあっても良いが本発明には直接関係しないので除外する。
【0037】
なお、本クロスワードパズル用ソフトウェアは、イベントドリブンで駆動するものとして説明する。
【0038】
(データ構造)
次に本ソフトウェアで取り扱うデータについて説明する。
【0039】
図4は、本発明を適用したクロスワードパズルの最終的な回答を表す概念図である。図5は正解用データ500の各格子を表す正解用格子データ200のデータ構造を表す概念図である。図6は、図4の正解データをメモリ102上に格納するための、正解用データ500のデータ構造を表す概念図である。図7は出題に際し、最初に操作者に対して開示する問題のデータ(編集データ)の各格子を表す編集用格子データ300のデータ構造を表す概念図である。さらに、図8は、編集用格子データ300を用いて作成される編集用データ600のデータ構造を表す概念図である。図9はカーソルデータのデータ構造を表す概念図である。図10は初期化モジュールにおける処理を表すフローチャートである。
【0040】
本実施の形態では、正解データは6×6=36文字から構成される。したがって、図5のデータ構造を持つ正解用格子データ200を36個有する形で、正解用データ500は構成される。
【0041】
この正解用格子データ200の各パラメータについて説明する。
【0042】
X座標201はこの格子がX座標のどこに位置するかを表すパラメータである。また、Y座標202はY座標のどこに位置するかを表すパラメータである。各モジュールはこれらを参照して正解用データ500と編集用データ600の対比や、表示位置の決定を行う。
【0043】
文字データ203は格子の中に入れられる文字を指定するパラメータである。ここで、黒マス4については表示不能なコード、たとえばNULL、などで表現する。なお、本明細書では、NULLを用いて黒マス4を表現する。ここで、文字データ203はあくまでも正解の情報であるため、特殊な状況(操作者がパズルの回答を諦めたときなど)を除き、携帯電話機の操作者に対して開示されることはない。
【0044】
Xヒント204は操作者に回答のヒントを導くために表示される横軸方向のヒントである。また、Yヒント205は縦軸方向のヒントである。これらは必要な長さの文字列より構成される。表示の必要が無い格子については、文字データ203同様NULL等の、非表示データが格納される。
【0045】
ポインタ206は次の格子データの格納されているアドレスを指標するパラメータである。ポインタ206により、各モジュールは格子間のつながりが表現される。
【0046】
これらのパラメータを用いて、図4の各格子を例にあげデータの格納状況を説明する。
【0047】
(0、0)の座標については以下のように正解用格子データ200が格納される。
【0048】
X座標201 :0
Y座標202 :0
文字データ203:「ム」
Xヒント204 :「中央本線の駅名」
Yヒント205 :「タイの格闘技」
ポインタ206 :(0、1)の正解用格子データ200のアドレス
【0049】
また、(5、0)の座標については以下のように正解用格子データ200が格納される。
【0050】
X座標201 :5
Y座標202 :0
文字データ203:「イ」
Xヒント204 :NULL
Yヒント205 :「言葉の○○を理解する」
ポインタ206 : NULL
なお、ポインタ206がNULLになっているのは、ハッシュテーブルを用いることを想定しているためであり、別の方式で正解用データ500を構成する場合には、この限りではない。
【0051】
さらに、(2、1)の座標の黒マス4については以下のように正解用格子データ200が格納される。
【0052】
X座標201 :2
Y座標202 :1
文字データ203:NULL
Xヒント204 :NULL
Yヒント205 :NULL
ポインタ206 :(2、2)の正解用格子データ200のアドレス
【0053】
最後に、(2、4)の座標のヒントが一切無い格子の正解用格子データ200は以下のようになる。
【0054】
X座標201 :2
Y座標202 :4
文字データ203:「ス」
Xヒント204 :NULL
Yヒント205 :NULL
ポインタ206 :(2、5)の正解用格子データ200のアドレス
【0055】
この正解用格子データ200から正解用データ500を作成するこの正解用データ500の一例を表すのが図6である。図6からも分かるとおり、正解用データ500はハッシュテーブルで構成されることを念頭においているが、特にこれにこだわる必要は無い。
【0056】
図6の例では、エントリリスト501が各行(横軸)ごとのアクセス先アドレスを用意し、そこから1格子ずつ正解用格子データ200を処理できるようになっている。
【0057】
この正解用データ500は、初期化モジュール153によって、クロスワードパズル開始時にメモリ102上に作成される。
【0058】
次にパズル開始時の初期画面であり、かつパズル操作時の作業用の記憶領域になる編集用データ600について説明する。
【0059】
編集用データ600は、操作者に提示されるパズルの初期状態であると同時に、パズル回答中は作業用の記憶領域になるデータ領域である。編集用データ600は、正解用データ500と同じ記憶方法(ハッシュテーブルによる構成など)を用いたほうが、ソフトウェアの設計上好ましい。したがって、ここでも、編集用データ600をハッシュテーブルにより作成する例を挙げる。
【0060】
図8の通り、編集用データ600は正解用データ500同様ハッシュテーブルによる管理を想定する。よって編集用格子データ300も基本的には、編集用格子データは正解用格子データ200のパラメータと同じ構成を取る。ソフトウェアの設計上、同一の構成としたほうが好都合だからである。
【0061】
ただし、Xヒント204及びYヒント205に相当する項目は無い。その代わりに、その格子の文字データ303が正解用格子データ200の文字データ203と一致したか(設計によっては移動を禁止するか)を表す、文字固定フラグ304を有する。
【0062】
X座標301はこの格子がX座標のどこに位置するかを表すパラメータである。また、Y座標302はY座標のどこに位置するかを表すパラメータである。各モジュールはこれらを参照して正解用データ500と編集用データ600の対比や、表示位置の決定を行うのは正解用格子データ200と同様である。
【0063】
文字データ303はその操作がおこなわれる時点で、その格子に表示すべき文字(表示データ)を表すパラメータである。この文字データ303の値が、該携帯電話機の操作者に対してゲーム画面上で開示される。正解用格子データ200同様、黒マス4の時にはここにはNULLが入力されることで白マスとの区別がなされる。
【0064】
文字固定フラグ304はパズル操作の結果、文字データ203と文字データ303が一致した際に「1」にセットされるパラメータである。なお、初期値は「0」(不一致)である。
【0065】
ポインタ305は次の格子データの格納されているアドレスを指標するパラメータである。
【0066】
これらのパラメータを用いて、図4の各格子を例にあげデータの格納状況を説明する。なお、正解すると文字固定フラグ304は「1」になるので、ここでは文字データ303には対応する正解用格子データ200の文字データ203と異なる文字が入力されているものとして扱い、黒マス4以外は説明を省く。
【0067】
(0、0)の座標については以下のように編集用格子データ300が格納される。
【0068】
X座標301 :0
Y座標302 :0
文字固定フラグ304:
0
ポインタ305 :(0、1)の編集用格子データのアドレス
【0069】
また、(5、0)の座標については以下のように編集用格子データが格納される。
【0070】
X座標301 :5
Y座標302 :0
文字固定フラグ304:
0
ポインタ305 :NULL
【0071】
さらに、(2、1)の座標の黒マス4については以下のように編集用格子データが格納される。
【0072】
X座標301 :2
Y座標302 :1
文字データ303:NULL
文字固定フラグ304:
0
ポインタ305 :(2、2)の編集用格子データのアドレス
【0073】
最後に、(2、4)の座標のヒントが一切無い格子の編集用格子データは以下のようになる。
【0074】
X座標301 :2
Y座標302 :4
文字固定フラグ304:
0
ポインタ305 :(2、5)の編集用格子データのアドレス
【0075】
このようにして、初期化モジュール153は編集用格子データ300を36個(本実施例の場合)作成し、合わせてエントリリスト601を作成することで、ハッシュテーブルである編集用データ600を作成する。
【0076】
本発明に関わるクロスワードパズルソフトでは、画面上でどの格子を処理の対象としているか表示するためにカーソルを用いる。クロスワードパズルソフト基本モジュール152が、このカーソルを管理するのがカーソルデータである。このカーソルデータの作成も初期化モジュール153が行う。
【0077】
図9はカーソルデータ400及び410を表す図である。
【0078】
通常のクロスワードパズルと異なり、本発明のクロスワードパズル用ソフトウェアでは図1で説明した未記入マス2は存在しない。では、クロスワードパズルとしての機能を担保するかといえば、選択した格子Aと選択した格子Bに関わる編集用格子データ300の文字データ303を入れ替えることで行う。つまり、画面上には文字データ303の交換を行うためのカーソルを最大で2個表示することとなる。
【0079】
カーソルデータ400は最初に表示するカーソル(第1のカーソル700)のためのデータであり、カーソルデータ410はカーソルデータ400がどの格子を指すか確定した後に表示されるカーソル(第2のカーソル701)のためのデータである。このため、カーソルデータ400とカーソルデータ410はほぼ同一の構造をとる。
【0080】
各カーソルデータにはX座標401(411)とY座標402(412)を有する。これは各カーソルがどの編集用格子データ300を指しているかあらわす。
【0081】
状態パラメータ403(413)はカーソルデータが操作対象になっているかを判断するパラメータである。状態パラメータ403(413)は未確定状態「0」と確定済状態「1」の2つの状態を表す。
【0082】
なお、操作対象になっている場合、状態パラメータ403(413)は未確定状態「0」であって、X座標401(411)とY座標402(412)に有効な数字が入っている。一方、状態パラメータ403(413)は未確定状態「0」であって、X座標401(411)とY座標402(412)に有効な数字が入っていない、または状態パラメータ403(413)が確定済状態「1」になっている場合、操作対象ではない。ただし、状態パラメータ403(413)が確定済状態「1」になっていれば、X座標401(411)とY座標402(412)に有効な値が入力されていることを前提として、表示の対象にはなる。
【0083】
カーソルデータ400のポインタ404はカーソルデータ410がどこに記憶されているかを表す。なお、カーソルデータ410のポインタ414にはNULLが入力されている。交換は2つの編集用格子データ300間で行われるものであり、3つ目のカーソルデータは存在しないためである。
【0084】
図9のカーソルデータの作成を行うと、初期化モジュール153はX座標401、Y座標402にそれぞれ初期位置の座標を入力する。また、状態パラメータ403は未確定を表す0が入力される。本実施の形態ではそれぞれ0から5までの値が有効なものとなる。
【0085】
一方、初期状態では2つ目のカーソルは表示されないことから、初期化モジュール153はX座標411、Y座標412にはNULLが、状態パラメータ413は0を入力する。
【0086】
これにより、初期化モジュール153によってカーソルの表示位置が決定される。
【0087】
(初期化処理)
次に初期化モジュール153における処理について図10を用いて説明する。
【0088】
図10は初期化モジュール153における処理を表すフローチャートである。
【0089】
まず、初期化モジュール153は正解用データ500を定義する(ステップS1000)。この正解用データ500の構成に際しては、正解用格子データ200及び正解用格子データ200の集合である正解用データ500を複数、予めメモリ102に記憶して、そこから正解データを読み出しても良いし、初期化モジュール153が36格子からなる正解用データ500を所定のデータベースを元に生成しても良い。また、無線部103、アンテナ104経由で基地局等の先にある図示しないサーバに対して、正解用データ500を要求するようにしても良い。
【0090】
次に、初期化モジュール153は編集用データ600を格納するデータ空間を確保し、必要な情報を正解用データ500よりコピーする等して設定する(ステップS1001)。たとえば、文字データ303などは複製の対象となる。また、X座標301及びY座標302は複製の過程で適宜数値が入力されるパラメータであろう。文字固定フラグ304はこの時点で0を入力し、またポインタ305については次の編集用格子データのアドレスを格納する。また、エントリリストには各格子行の先頭となる編集用格子データ(n、0)のアドレスが入力される。
【0091】
次に初期化モジュールは編集用データ600の編集用格子データ300間で文字データ303の入れ替えを行う(ステップS1002)。ここでいう「入れ替え」とは二つの編集用格子データの文字データ303の内容を入れ替えるだけである。ただし、編集用格子データ300の文字データ303の値がNULLの場合は入れ替えの対象にはならない。黒マス4が移動するとクロスワードパズルとして成立しなくなるためである。
【0092】
なお、ステップS1002の入れ替えに際しては、所定の回数以上を反復して行う必要がある。回数が少ないと、入れ替えが行われない格子データが生じるためである。
【0093】
ステップS1002の入れ替えが終了すると、次に正解用データ500内の各正解用格子データ200の文字データ203と編集用データ600内の対応する編集用格子データ300の文字データ303の内容の異同を確認する。すなわち、X座標201とX座標301、Y座標202とY座標302が同じものの文字データ203及び文字データ303のパラメータが同じであるかを確認する。
【0094】
全ての格子(本実施の形態では36格子)で文字データ203及び文字データ303の内容が異なれば(ステップS1003:No)、カーソルデータを作成する(ステップS1004)。カーソルデータ400、正解用データ500、編集用データ600と共にクロスワードパズルソフト基本モジュール152に参照用の座標が渡される(ステップS1005)。
【0095】
一つでも文字データ203及び文字データ303の内容が同じであれば(ステップS1003:Yes)、再度、ステップS1002の入れ替えを行う。
【0096】
以上により、初期化モジュール153の処理は終了する。この後、初期化モジュール153からカーソルデータ400、編集用データ600及び正解用データ500(厳密にはこれらのデータ、エントリリストのアドレス座標)がクロスワードパズルソフト基本モジュール152に渡される。このときのデータのやり取りはポインタのやり取りという形が一般的であろう。
【0097】
この後、クロスワードパズルソフト基本モジュール152は、操作者に対して、パズル情報を開示すべく出力用の情報を整理する。またメモリ102の容量が十分でないときは、初期化モジュール153を終了する。
【0098】
次に、図11を用いて、初期化モジュール153の処理の終了直後のクロスワードパズルソフト基本モジュール152のデータの状態について説明をする。
【0099】
図11は、初期化モジュール153に初期化が行われた後のクロスワードパズルの状態の一例を表す概念図である。
【0100】
この状態では、カーソルは1つ(第1カーソル700)しか存在しない。初期化モジュール153は、カーソルデータ400に対してのみ有効なデータを入力しているためである。
【0101】
この状態のままでは、クロスワードパズルに必要なヒントなどの準備ができていない。したがって、クロスワードパズルソフト基本モジュール152はヒントモジュール154に対して、ヒントの抽出を行わせる。
【0102】
図12はこのクロスワードパズルソフト基本モジュール152とヒントモジュール154間の処理を示すフローチャートである。
【0103】
まず、クロスワードパズルソフト基本モジュール152は正解用データ500及びカーソルデータのポインタを送信する(ステップS2000、S2001)。ここで、正解用データ500についてはエントリリスト501の座標を送信する。一方、カーソルデータについては、カーソルデータ410のX座標411、Y座標412、状態パラメータ103または413から、カーソルデータ400またはカーソルデータ410のいずれかのアドレスをクロスワードパズルソフト基本モジュール152が送信する。
【0104】
送信を受けると、カーソルデータのX座標、Y座標を抽出し、現在カーソルがあっている箇所がどこの格子なのかヒントモジュール154が特定する(ステップS2002)。
カーソル位置が分かれば、ヒントモジュール154が、正解用データ500のハッシュテーブル501からヒントデータを抽出すべき正解用格子データ200を特定する(ステップS2003)。
【0105】
ヒントを抽出する正解用格子データ200が分かれば、該当する正解用格子データ200のXヒント204、Yヒント205のアドレスを指標するポインタをヒントモジュール154は導出できる(ステップS2004)。この導出したポインタをヒントモジュール154がクロスワードパズルソフト基本モジュール152へ出力することで、ヒントの導出が可能となる。
【0106】
なお、データ構造が決まっているため、Xヒント204のアドレスポインタの送信を行えば、Yヒント205のアドレスも決まる。したがって、Yヒント205のポインタのやり取りを行うかは設計事項である。
【0107】
また、ステップS2004では対応する正解用格子データ200のXヒント204及びYヒント200をそのまま表示した。しかし、途中の文字(たとえば図4の(2、0)座標のような箇所)に当たる正解用格子データ200ではヒントが表示されない。これに対し、先頭の文字(図4で言えば(0,0)座標)を探し出し、対応する正解用格子データ200のXヒント204を表示するようにしても良い。
【0108】
第1のカーソルまたは第2のカーソルのどちらを表示するかの判断は、状態パラメータ403(413)などを用いることになると思われるが、設計事項であり、ここでは詳述は省略する。ここまでの処理が終われば、クロスワードパズルソフトは表示部106を介して図13に示すような操作者に開示可能な表示が可能になる。クロスワードパズルソフト基本モジュール152はヒントモジュール154から送信されたXヒント204(設計によってはYヒント205も)、カーソルデータ400及び編集用データ600のポインタを表示部描画モジュール156に送信する。これに基づいて表示部描画モジュール156は表示部106に図13のような描画を行う。
【0109】
この際、アニメーションをさせるか否か等は設計事項に付き省略する。
【0110】
(パズル中の処理)
初期化が終わると、クロスワードパズルソフト基本モジュール152は、入力部105からの操作者からの入力待ちの状態になる。
【0111】
図14はパズル中の入力識別モジュール151の基本的な動作を表すフローチャートである。
【0112】
入力部105から入力が行われると、入力識別モジュール151は行われたキー操作を解析する(ステップS3000)。すなわち、キーの種類、キーの押し込み/リリースなどである。
【0113】
そして、このクロスワードパズルソフトにとって、入力されたキー操作が有意なものであれば(ステップS3001:Yes)、入力識別モジュール151はクロスワードパズルソフト基本モジュール152に対して、発生したイベントの種別を送信する。発生したイベントの種別の送信を受けて、クロスワードパズルソフト基本モジュール152は、イベントの種別によって適切なモジュールが呼び出す(ステップS3002)。
【0114】
入力されたキー操作が有意なものでなければ(ステップS3001:No)、入力識別モジュール151は再び入力を待つ状態になる。
【0115】
以下イベント種別によっての処理を説明する。
【0116】
(カーソルの移動について)
入力部105のいわゆる「十字」キー、カーソルキーとみなすテンキーの入力時に行われる処理である。図13では、(0、0)にカーソルが存在するが、これを移動させるための処理である。以下では上記の操作を一括して「カーソルキーの押下」として説明する。
【0117】
カーソルキーが押下されると、カーソルキーの方向によって、カーソルデータ400(410)のX座標401(411)、Y座標402(412)の演算が行われる。たとえば右方向に移動を行う場合にはX座標401(411)が1増分され、左方向に移動を行う場合には、X座標401(411)が1減算される。また、下方向に移動を行う場合にはY座標402(412)が1増分され、上方向にカーソルを移動させるときにはY座標402(412)が1減算される。なおカーソルデータ400を処理の対象に選ぶか、カーソルデータ410を処理の対象とするかは、既述のとおり、主に状態パラメータ403によって判断される。
【0118】
この演算によりカーソルデータのパラメータは変更される。したがって、ヒントモジュール154を用いたヒントの抽出(図12参照)を行い、ヒントモジュール154から送信されたXヒント204(設計によってはYヒント205)、カーソルデータ400及び編集用データ600のポインタを表示部描画モジュール156に送信する。これらを受けて表示部描画モジュール156は表示部106に表示を行う。
【0119】
これらの処理により、移動後の状態が表示部106に反映される。
【0120】
(決定キーの押下)
図15は入力部105に含まれる決定キーの押下が行われた際の処理の流れを示すフローチャートである。これを用いて決定キー押下時の処理の説明をする。
【0121】
まず、クロスワードパズルソフト基本モジュール152はまず現在処理対象となっているカーソルデータが第1のカーソルに関わるカーソルデータ400なのか、第2のカーソルに関わるカーソルデータ410なのかを確認する(ステップS4000)。
【0122】
現在処理対象となっているカーソルの指標する格子が文字データの交換可能なものであるかクロスワードパズルソフト基本モジュール152は確認する(ステップS4001)。すなわち、一度正解であると判断された格子や、黒マス4は文字の交換ができないため、そこでの決定キーの押下はヒントの更新のみの処理となる(ステップS4005以降の処理)。なお、既に正解であると判断された格子は編集用格子データ300の文字固定フラグ304が「1」になっていることから識別できる。また黒マス4か否かは文字データ303がNULLかどうかで判断できる。
【0123】
ステップS4001で入れ替えが可能と判断されれば(ステップS4001:Yes)、操作対象のカーソルデータがカーソルデータ400か410かを判断する(ステップS4002)。
【0124】
第1のカーソル700に関わるカーソルデータ400であれば(ステップS4002:400)、状態パラメータ403を「1」にセットする(ステップS4003)。カーソルデータ410に処理を移行するためである。その後、カーソルデータ410の設定を行う一環として、X座標411、Y座標412を設定する(ステップS4004)。この際、設定される値は設計事項である。たとえば第1のカーソル700の右隣の格子に第2のカーソル701を最初に表示するような場合にはX座標411にはX座標401の値に1を加えたものを入力する。また、第1のカーソル700の現在の位置に関係なく、第2のカーソルの初期位置(カーソルデータ410のX座標411、Y座標412)を(0、0)にすることも考えられる。
【0125】
その後、カーソルデータ410に基づくヒントの導出をヒントモジュール154に対して行う(ステップS4005)。なお具体的な動作は図12に記載したとおりである。
【0126】
ヒントを取得した後は、クロスワードパズルソフト基本モジュール152はヒントモジュール154から送信されたXヒント204(設計によってはYヒント205も)、カーソルデータ400及び編集用データ600のポインタを表示部描画モジュール156に送信する。これに基づき表示部描画モジュール156は表示部106に描画を行う(ステップS4006)。
【0127】
図16はステップS4002を経由し、ステップS4005で操作対象が、カーソルデータ410に対応する第2のカーソル701に移った後の表示部106の表示状況の一例を表す図である。
【0128】
第1のカーソル700が(0、0)に表示された状態で、決定キーを押下すると、右隣に当たる(0、1)に第2のカーソル701が出現する。以降これが操作の対象になる。
【0129】
そして、第2のカーソルが位置する(1、0)の座標に従ったヒントが表示される。
【0130】
一方、対象のカーソルデータがカーソルデータ410に関わる第2のカーソル701であれば(ステップS4002:410)、状態パラメータ413を「1」にセットする(ステップS4101)。その後、状態パラメータ403と状態パラメータ413が「1」であることを確認した後、カーソル400が指す編集用格子データ300の文字データ303と、カーソル410が指す編集用格子データ300の文字データ303とを入れ替える(ステップS4102)。
【0131】
入れ替えが終わると、正誤判定モジュールにおける正誤判定を行う(ステップS4103)。これについては後述する。
【0132】
ステップS4103での正解か否か判別されたら、カーソルデータ400及びカーソルデータ410のリセットを行う。具体的には、カーソルデータ410のX座標411、Y座標412の内容を、カーソルデータ400のX座標401、Y座標402にコピーし、X座標411、Y座標412の内容を無効なものにする。また、状態パラメータ403、状態パラメータ413を「0」に書き換える。
【0133】
その後、更新したカーソルデータ400に基づくヒントの導出をヒントモジュール154に対して行い(ステップS4005)、表示部106の再描画を行う(ステップS4006)。
【0134】
また、各カーソルデータの更新に伴い、表示の更新がなされる。図17は、このステップS4101経由で、ステップS4005で操作対象がカーソルデータ400に戻った後の表示部106の表示状況の一例を表す図である。このように、(0、0)に表示されていた「ヤ」と(0、1)に表示されていた「ミ」が入れ替わり、かつカーソル表示がカーソルデータ400に対応した第1のカーソル700だけになる。また、ヒントモジュール154によるヒントの更新も必要があれば行い、表示に反映させる。
【0135】
なお、入力部105に解除キーなどを用意し、処理の中断等などを行うことも考えられるが、本発明とは直接的な関連性が無いため省略する。
【0136】
(正誤判定)
前述の通り、ステップS4103で入れ替え後の正解の判定を行う。この点について詳述する。
【0137】
図18は正誤判定モジュール155による正誤判定処理を表すフローチャートである。
【0138】
入れ替えが行われると、カーソルデータ400で指定されている編集用格子データ300とカーソルデータ410で指定されている編集用格子データ300の文字データ303が変更される。したがって、この2つの編集用格子データ300について正誤判定を行う必要がある。ただし、実際の処理はいずれの場合でも同じである。したがって、説明はカーソルデータ400で指定されているもののみについて行う。
【0139】
まず、クロスワードパズルソフト基本モジュール152は正誤判定モジュール155に対して、正解用データ500及び編集用データ600のアドレスと、カーソルデータ400のアドレスを送信する(ステップS5000)。
【0140】
正誤判定モジュール155は、カーソルデータ400が指標する座標の編集用格子データ300の文字データ303と、正解用格子データ200の文字データ203が一致しているか否かを確認する(ステップS5001)。一致していなければ(ステップS5001:No)、正誤判定処理は終了する。
【0141】
一致していれば(ステップS5001:Yes)、正誤判定モジュール155は横方向の文字列一致判定、縦方向の文字列一致判定を行う(ステップS5002、ステップS5003)。この文字一致判定については、ハッシュテーブルを用いた一致判定はよく知られているため省略する。なお、黒マス4によって分断されている箇所については調べる対象から外れるが、これらを除外する方法および一致判定方法も当業者に周知であるため、ここでは述べない。
【0142】
この判定が終わると、正誤判定モジュール155は横方向または縦方向のいずれか・又は双方の文字列が一致したかを確認する(ステップS5004)。いずれか一方・または双方が一致していれば(ステップS5004:Yes)、対応する編集用格子データの300の文字固定フラグ304を「1」にセットする(ステップS5005)。
【0143】
この際、文字固定フラグ304が「1」にセットされる対象は、カーソルデータ400で示唆される編集用格子データ300だけでなく、一致した文字列を構成する全ての編集用格子データ300の文字固定フラグ304が対象となる。
【0144】
なお、このステップS5004及びステップS5005をステップS5002及びステップS5003内に含めても問題は無い。この際、一度「1」にした文字固定フラグ304を「0」に戻さないように留意する。
【0145】
その後、正誤判定モジュール155における処理を終了し、クロスワードパズルソフト基本モジュール152に処理を返すこととなる。
【0146】
このように、格子間で文字データを入れ替えることでクロスワードの回答を行えるように設計することで、自由度が低い入力部であっても簡単に操作できるようにすることを可能にする。
【0147】
(第2の実施の形態)
第1の実施の形態では、操作を簡単に行えるようにする点にのみ着目した。
【0148】
しかしクロスワードパズルであっても、携帯電話機を用いてソフトウェア的に処理を行えるようにすることで、よりアクション性を高めたゲーム性を持たせることが可能となる。
【0149】
本実施の形態は第1の実施の形態をベースとして、操作に得点を割り当てることを可能とする。
【0150】
(ハードウェア及びソフトウェアの構成)
基本的に、ハードウェア及びソフトウェアの全体構成について相違は無い。個々のモジュールの相違は以下に述べる。
【0151】
(データ構造と初期化処理)
基本的にはデータ構造についても特に変更点はない。ただし「得点スコア」をつけるための変数が追加されている。この変数はクロスワードパズルソフト基本モジュール152で定義する。
【0152】
(パズル中の処理)
基本的な動作については第1の実施の形態と同様である。ただし、正誤判定のみ相違する。以下、図19を元に変更点について説明する。
【0153】
第1の実施の形態では正誤判定モジュール155に関する図18の処理では戻り値は特に規定していない。これに対し、第2の実施の形態では、正誤判定モジュール155の処理終了時にクロスワードパズルソフト基本モジュール152に値を返す。
【0154】
この返す値(戻り値)は、正解時の得点を意味する。以下、この得点がどのように計算されるか説明する。
【0155】
入れ替えた格子(カーソルデータ400(410)が指す格子)が正解しなければ、正誤判定モジュール155の処理から離脱する点については第1の実施の形態と同様である(ステップS5001:No)。このときの戻り値は「0」となる(ステップS6001)。
【0156】
一方、入れ替えた格子が正解していた場合(ステップS5001:Yes)、各処理で得点計算の処理が入る。
【0157】
ステップS5002からS5004までの処理は、第1の実施の形態同様である。このステップS5002からS5004までの処理の結果を踏まえて、正誤判定モジュール155は得点演算を行う(ステップS6002)。
【0158】
たとえば、1つのカーソルデータが指標する編集用格子データが置き換わると、
1)縦横どちらも正解していない。
【0159】
2)縦一列の完成
3)横一行の完成
4)縦横双方の完成
の4つの結果が考えられる。
【0160】
したがって、これに対し
1)0点
2)50点
3)50点
4)200点
という感じで点を割り当てる。これを戻り値として、クロスワードパズルソフト基本モジュール152に送信して(ステップS6002)、正誤判定モジュール155は処理を終える。
【0161】
クロスワードパズルソフト基本モジュール152は二つの正誤判定モジュール155についての戻り値を受け取ることになる。これらを単純に足すだけでなく、クロスワードパズルソフト基本モジュール152が更に加重配点を加えても良い。たとえば、2つの戻り値がいずれも200点であった場合、200+200=400点だけでなく更に300点加えることで、より高得点を狙えるようにすることも可能である。
【0162】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能であることは言うまでもない。
【産業上の利用可能性】
【0163】
上述では、クロスワードパズルへの適用を説明したが、必ずしもこれに限定されるものではない。所定の文字入力項目が存在し、文字の種別が特定されているパズルゲームに対しては適用可能である。たとえば、縦1列、横1行で全ての数字(1から9)が重複しないナンバープレースへの応用などが考慮できる。
【図面の簡単な説明】
【0164】
【図1】一般的なペンシルパズルとしてのクロスワードパズルの概念を説明するための概念図である。
【図2】クロスワードパズル用ソフトウェアが動作する携帯電話機の構成を表すブロック図である。
【図3】クロスワードパズル用ソフトウェアのモジュール構成を表す図である。
【図4】本発明を適用したクロスワードパズルの最終的な回答を表す概念図である。
【図5】正解用格子データのデータ構造を表す概念図である。
【図6】正解用データのデータ構造を表す概念図である。
【図7】編集用格子データのデータ構造を表す概念図である。
【図8】編集用データのデータ構造を表す概念図である。
【図9】カーソルデータのデータ構造を表す概念図である。
【図10】初期化モジュールにおける処理を表すフローチャートである。
【図11】初期化モジュールに初期化が行われた後のクロスワードパズルの状態の一例を表す概念図である。
【図12】クロスワードパズルソフト基本モジュールとヒントモジュール間の処理を示すフローチャートである。
【図13】表示部の表示状況の一例を表す図である。
【図14】入力識別モジュールの基本的な動作を表すフローチャートである。
【図15】決定キーの押下が行われた際の処理の流れを示すフローチャートである。
【図16】表示部の表示状況の一例を表す図である。
【図17】表示部の表示状況の一例を表す図である。
【図18】正誤判定モジュールによる正誤判定処理を表すフローチャートである。
【図19】第2の実施の形態における正誤判定モジュールによる正誤判定処理を表すフローチャートである。
【符号の説明】
【0165】
1…外枠、2…未記入マス、3…記入済みマス、4…黒マス、101…CPU、
102…メモリ、103…無線部、104…アンテナ、105…入力部、
106…表示部、107…スピーカ、108…バス、150…基本ソフトウェア、
151…入力識別モジュール、152…クロスワードパズルソフト基本モジュール、
153…初期化モジュール、154…ヒントモジュール、
155…正誤判定モジュール、156…表示部描画モジュール、
200…正解用格子データ、201…X座標、
202…Y座標、203…文字データ、204…Xヒント(横のヒント)、
205…Yヒント(縦のヒント)、206…ポインタ、
300…編集用格子データ、301…X座標、302…Y座標、303…文字データ、
304…文字固定フラグ、305…ポインタ、400…カーソルデ−タ、
401…X座標、402…Y座標、403…状態パラメータ、404…ポインタ、
410…カーソルデ−タ、411…X座標、412…Y座標、
413…状態パラメータ、414…ポインタ、
500…正解用データ、501…エントリリスト、
600…編集用データ、601…エントリリスト、
700…第1カーソル、701…第2カーソル。
【技術分野】
【0001】
携帯電話機及び携帯端末用(総称して携帯情報端末)のパズルゲーム、特にクロスワードパズル用のソフトウェア、などの入力方法に関する。
【背景技術】
【0002】
携帯用ゲーム機器や携帯電話機上で動作するパズルゲーム、たとえばクロスワードパズルやナンバープレースと言ったペンシルパズルを起源とするもの、などは短時間でプレイ可能なため定番のコンテンツとなっている。
【0003】
図1は、一般的なペンシルパズルとしてのクロスワードパズルの概念を説明するための概念図である。
【0004】
通常、外枠1の中を格子状に区分する。一般的に、縦横同数の格子が用意され、結果として全体の格子の数は平方数となることが多い。各格子は文字の書き込みができない黒マス4とそれ以外の文字の書き込みが可能な白マスに分類される。
【0005】
白マスは未記入マス2と記入済みマス3とに分かれる。文字通り未記入マス2は字が記入されていない白マスであり、記入済みマス3は文字の記入が終わった白マスである。ペンシルパズルにおいては、消しゴムを用いて記入済みマス3内の文字を消すことで未記入マス2に戻す。
【0006】
コンピュータでこれを実現する場合、フルキーボードがあれば、上記操作を容易に行うことが可能である。しかし、携帯用ゲーム機器や携帯電話機には、キーボード等の入力手段を有さないものや、入力手段はあるものの入力自由度の低いもの(たとえば携帯ゲーム機の「十字」キーや携帯電話のテンキー拡張キーボードなど)しかないものも多い。
【0007】
これらの、自由度の低い入力手段を用いて、クロスワードパズル等のペンシルパズルを実現する手段として、特開2007−195800号公報(特許文献1)ではタッチパネルを用いた手段が提案されている。
【特許文献1】特開2007−195800号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、特許文献1で開示する携帯用ゲーム機器や携帯電話機はタッチパネルを有するという条件があり、いついかなる状況下においても適用可能なものではない。
【0009】
本発明は、携帯用ゲーム機器や携帯電話機の入力手段により拘束を受けることなく、より適用範囲の広い入力方法を提供することにある。
【0010】
また、本発明の別の目的として、入力自由度が低いハードウェアを用いても、パズルゲームの入力が可能なパズルソフトウェアの入力方法を提供することにある。
【0011】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【0013】
本発明の代表的な実施の形態に関わるパズルゲーム用ソフトウェアの入力方法は、編集用の配列より第1のデータ構造体を選択する第1データ構造体選択ステップと、編集用の配列より第2のデータ構造体を選択する第2データ構造体選択ステップと、第1のデータ構造体の表示データと第2のデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を含むことを特徴とする。
【0014】
また、本発明の代表的な実施の形態に関わるパズルゲーム用ソフトウェアの入力方法は、編集用の配列より第1のデータ構造体を選択するための第1カーソルを表示する第1カーソル表示ステップと、第1カーソルを操作するための入力を受け付ける第1カーソル操作ステップと、第1カーソルの処理対象を特定すると共に、編集用の配列より第2のデータ構造体を選択するための第2カーソルを表示する第1カーソル特定・第2カーソル表示ステップと、第2カーソルを操作するための入力を受け付ける第2カーソル操作ステップと、第2カーソルの処理対象を特定する第2カーソル特定ステップと、第1カーソルが指標するデータ構造体の表示データと第2カーソルが指標するデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を有することを特徴とする。
【発明の効果】
【0015】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【0016】
本発明の代表的な実施の形態に関わる携帯電話機及び携帯端末用のパズルゲームの入力手段においては、入力用ハードウェアが制限された中での快適な動作が可能になる。
【発明を実施するための最良の形態】
【0017】
以下図を用いて本発明の実施の形態を説明する。
【0018】
(第1の実施の形態)
第1の実施の形態では、本発明の入力手段をクロスワードパズルに適用することを考える。
【0019】
(ハードウェア及びソフトウェアの構成)
図2は本発明の入力手段が適用されたクロスワードパズル用ソフトウェアが動作する携帯電話機の構成を表すブロック図である。また、図3は本発明の入力手段が適用されたクロスワードパズル用ソフトウェアのモジュール構成を表す図である。
【0020】
本発明の入力手段が適用されたクロスワードパズル用ソフトウェアが動作する携帯電話機はCPU101、メモリ102、無線部103、アンテナ104、入力部105、表示部106、スピーカ107、バス108より構成される。
【0021】
CPU101は、図3で図示するクロスワードパズル用ソフトウェアなどのソフトウェアを処理する中央処理装置である。また、メモリ102は、CPU101動作時の一時記憶に用いる揮発性メモリや、電源切断後の再起動用の不揮発性メモリを包括した記憶媒体である。
【0022】
無線部103はアンテナ104を経由して図示しない基地局(Node−B)や無線LANのアクセスポイント等と接続するための無線通信用の送受信部である。
【0023】
入力部105は本携帯電話機を操作する操作者が情報を入力するための入力手段である。本発明では、ハードウェアの実装上の制約などにより、この入力部105がある程度制限を受けた状態でも適切な入力手段を提供することを目的としている。
【0024】
なお、以下の説明では「「十字」キー」や「決定キー」などを用いているが、これらはこの入力部105に含まれるキーの一つである。「十字」キーは対象の移動を、決定キーは特定の状態の固定を行うキーである。
【0025】
表示部106は本携帯電話機を操作する操作者に情報を提供するための表示用装置である。一般的にはLCD(液晶表示器)や有機ELパネルなどが用いられる。
【0026】
スピーカ107は圧電素子などで動作する、音を発生・出力するデバイスである。
【0027】
バス108は各モジュール間でデータのやり取りをするためのアドレス・データバスである。
【0028】
次に、図3を用いてクロスワードパズル用ソフトウェアの構成に付いて説明する。
【0029】
クロスワードパズル用ソフトウェアは、基本ソフトウェア150上で動作する。このクロスワードパズル用ソフトウェアは、入力識別モジュール151、クロスワードパズルソフト基本モジュール152、初期化モジュール153、ヒントモジュール154、正誤判定モジュール155、表示部描画モジュール156より構成される。
【0030】
入力識別モジュール151は、入力部105の入力を受け付けるモジュールである。入力部105の入力には、クロスワードパズル用ソフトウェアとして有意なもの、無意味なものが存在する。この峻別を行い、有意なものについてはクロスワードパズルソフト基本モジュール152に出力する。
【0031】
クロスワードパズルソフト基本モジュール152は、クロスワードパズル用ソフトウェアで用いるデータの管理、入力識別モジュール151からの入力を受けての各モジュールの呼び出し、データの受け渡しなどを行う。クロスワードパズル用ソフトウェアの起動時にはこのモジュールが最初に呼び出され、このモジュールが他のモジュールを読み出す構成を取る。
【0032】
初期化モジュール153は、ゲーム開始時の正解用データ500、操作者に最初に提示され、パズル操作の対象となる編集用データ600を作成するモジュールである。これらのデータをメモリ102上に作成するパズルの再スタートが行われるまで、初期化モジュール153は起動しない。メモリ102上からも削除すればメモリの有効利用も可能である。
【0033】
ヒントモジュール154はクロスワードパズルで必要となる縦軸、横軸のヒントの抽出を行うモジュールである。縦軸・横軸のヒントは正解用データ500を構成する正解用格子データ200に含まれる。適切にこのデータを抽出するのが、このモジュールの処理である。
【0034】
正誤判定モジュール155は、入力によるデータの修正が行われた結果、入力した箇所の正誤を判定するモジュールである。
【0035】
表示部描画モジュール156はクロスワードパズルソフト基本モジュール152、ヒントモジュール154からの情報を受けて、操作者に対する情報を表示部106に表示することを目的としたモジュールである。
【0036】
なお、上述以外に、スタート用画面やデモ画面を表示するモジュールなどもあっても良いが本発明には直接関係しないので除外する。
【0037】
なお、本クロスワードパズル用ソフトウェアは、イベントドリブンで駆動するものとして説明する。
【0038】
(データ構造)
次に本ソフトウェアで取り扱うデータについて説明する。
【0039】
図4は、本発明を適用したクロスワードパズルの最終的な回答を表す概念図である。図5は正解用データ500の各格子を表す正解用格子データ200のデータ構造を表す概念図である。図6は、図4の正解データをメモリ102上に格納するための、正解用データ500のデータ構造を表す概念図である。図7は出題に際し、最初に操作者に対して開示する問題のデータ(編集データ)の各格子を表す編集用格子データ300のデータ構造を表す概念図である。さらに、図8は、編集用格子データ300を用いて作成される編集用データ600のデータ構造を表す概念図である。図9はカーソルデータのデータ構造を表す概念図である。図10は初期化モジュールにおける処理を表すフローチャートである。
【0040】
本実施の形態では、正解データは6×6=36文字から構成される。したがって、図5のデータ構造を持つ正解用格子データ200を36個有する形で、正解用データ500は構成される。
【0041】
この正解用格子データ200の各パラメータについて説明する。
【0042】
X座標201はこの格子がX座標のどこに位置するかを表すパラメータである。また、Y座標202はY座標のどこに位置するかを表すパラメータである。各モジュールはこれらを参照して正解用データ500と編集用データ600の対比や、表示位置の決定を行う。
【0043】
文字データ203は格子の中に入れられる文字を指定するパラメータである。ここで、黒マス4については表示不能なコード、たとえばNULL、などで表現する。なお、本明細書では、NULLを用いて黒マス4を表現する。ここで、文字データ203はあくまでも正解の情報であるため、特殊な状況(操作者がパズルの回答を諦めたときなど)を除き、携帯電話機の操作者に対して開示されることはない。
【0044】
Xヒント204は操作者に回答のヒントを導くために表示される横軸方向のヒントである。また、Yヒント205は縦軸方向のヒントである。これらは必要な長さの文字列より構成される。表示の必要が無い格子については、文字データ203同様NULL等の、非表示データが格納される。
【0045】
ポインタ206は次の格子データの格納されているアドレスを指標するパラメータである。ポインタ206により、各モジュールは格子間のつながりが表現される。
【0046】
これらのパラメータを用いて、図4の各格子を例にあげデータの格納状況を説明する。
【0047】
(0、0)の座標については以下のように正解用格子データ200が格納される。
【0048】
X座標201 :0
Y座標202 :0
文字データ203:「ム」
Xヒント204 :「中央本線の駅名」
Yヒント205 :「タイの格闘技」
ポインタ206 :(0、1)の正解用格子データ200のアドレス
【0049】
また、(5、0)の座標については以下のように正解用格子データ200が格納される。
【0050】
X座標201 :5
Y座標202 :0
文字データ203:「イ」
Xヒント204 :NULL
Yヒント205 :「言葉の○○を理解する」
ポインタ206 : NULL
なお、ポインタ206がNULLになっているのは、ハッシュテーブルを用いることを想定しているためであり、別の方式で正解用データ500を構成する場合には、この限りではない。
【0051】
さらに、(2、1)の座標の黒マス4については以下のように正解用格子データ200が格納される。
【0052】
X座標201 :2
Y座標202 :1
文字データ203:NULL
Xヒント204 :NULL
Yヒント205 :NULL
ポインタ206 :(2、2)の正解用格子データ200のアドレス
【0053】
最後に、(2、4)の座標のヒントが一切無い格子の正解用格子データ200は以下のようになる。
【0054】
X座標201 :2
Y座標202 :4
文字データ203:「ス」
Xヒント204 :NULL
Yヒント205 :NULL
ポインタ206 :(2、5)の正解用格子データ200のアドレス
【0055】
この正解用格子データ200から正解用データ500を作成するこの正解用データ500の一例を表すのが図6である。図6からも分かるとおり、正解用データ500はハッシュテーブルで構成されることを念頭においているが、特にこれにこだわる必要は無い。
【0056】
図6の例では、エントリリスト501が各行(横軸)ごとのアクセス先アドレスを用意し、そこから1格子ずつ正解用格子データ200を処理できるようになっている。
【0057】
この正解用データ500は、初期化モジュール153によって、クロスワードパズル開始時にメモリ102上に作成される。
【0058】
次にパズル開始時の初期画面であり、かつパズル操作時の作業用の記憶領域になる編集用データ600について説明する。
【0059】
編集用データ600は、操作者に提示されるパズルの初期状態であると同時に、パズル回答中は作業用の記憶領域になるデータ領域である。編集用データ600は、正解用データ500と同じ記憶方法(ハッシュテーブルによる構成など)を用いたほうが、ソフトウェアの設計上好ましい。したがって、ここでも、編集用データ600をハッシュテーブルにより作成する例を挙げる。
【0060】
図8の通り、編集用データ600は正解用データ500同様ハッシュテーブルによる管理を想定する。よって編集用格子データ300も基本的には、編集用格子データは正解用格子データ200のパラメータと同じ構成を取る。ソフトウェアの設計上、同一の構成としたほうが好都合だからである。
【0061】
ただし、Xヒント204及びYヒント205に相当する項目は無い。その代わりに、その格子の文字データ303が正解用格子データ200の文字データ203と一致したか(設計によっては移動を禁止するか)を表す、文字固定フラグ304を有する。
【0062】
X座標301はこの格子がX座標のどこに位置するかを表すパラメータである。また、Y座標302はY座標のどこに位置するかを表すパラメータである。各モジュールはこれらを参照して正解用データ500と編集用データ600の対比や、表示位置の決定を行うのは正解用格子データ200と同様である。
【0063】
文字データ303はその操作がおこなわれる時点で、その格子に表示すべき文字(表示データ)を表すパラメータである。この文字データ303の値が、該携帯電話機の操作者に対してゲーム画面上で開示される。正解用格子データ200同様、黒マス4の時にはここにはNULLが入力されることで白マスとの区別がなされる。
【0064】
文字固定フラグ304はパズル操作の結果、文字データ203と文字データ303が一致した際に「1」にセットされるパラメータである。なお、初期値は「0」(不一致)である。
【0065】
ポインタ305は次の格子データの格納されているアドレスを指標するパラメータである。
【0066】
これらのパラメータを用いて、図4の各格子を例にあげデータの格納状況を説明する。なお、正解すると文字固定フラグ304は「1」になるので、ここでは文字データ303には対応する正解用格子データ200の文字データ203と異なる文字が入力されているものとして扱い、黒マス4以外は説明を省く。
【0067】
(0、0)の座標については以下のように編集用格子データ300が格納される。
【0068】
X座標301 :0
Y座標302 :0
文字固定フラグ304:
0
ポインタ305 :(0、1)の編集用格子データのアドレス
【0069】
また、(5、0)の座標については以下のように編集用格子データが格納される。
【0070】
X座標301 :5
Y座標302 :0
文字固定フラグ304:
0
ポインタ305 :NULL
【0071】
さらに、(2、1)の座標の黒マス4については以下のように編集用格子データが格納される。
【0072】
X座標301 :2
Y座標302 :1
文字データ303:NULL
文字固定フラグ304:
0
ポインタ305 :(2、2)の編集用格子データのアドレス
【0073】
最後に、(2、4)の座標のヒントが一切無い格子の編集用格子データは以下のようになる。
【0074】
X座標301 :2
Y座標302 :4
文字固定フラグ304:
0
ポインタ305 :(2、5)の編集用格子データのアドレス
【0075】
このようにして、初期化モジュール153は編集用格子データ300を36個(本実施例の場合)作成し、合わせてエントリリスト601を作成することで、ハッシュテーブルである編集用データ600を作成する。
【0076】
本発明に関わるクロスワードパズルソフトでは、画面上でどの格子を処理の対象としているか表示するためにカーソルを用いる。クロスワードパズルソフト基本モジュール152が、このカーソルを管理するのがカーソルデータである。このカーソルデータの作成も初期化モジュール153が行う。
【0077】
図9はカーソルデータ400及び410を表す図である。
【0078】
通常のクロスワードパズルと異なり、本発明のクロスワードパズル用ソフトウェアでは図1で説明した未記入マス2は存在しない。では、クロスワードパズルとしての機能を担保するかといえば、選択した格子Aと選択した格子Bに関わる編集用格子データ300の文字データ303を入れ替えることで行う。つまり、画面上には文字データ303の交換を行うためのカーソルを最大で2個表示することとなる。
【0079】
カーソルデータ400は最初に表示するカーソル(第1のカーソル700)のためのデータであり、カーソルデータ410はカーソルデータ400がどの格子を指すか確定した後に表示されるカーソル(第2のカーソル701)のためのデータである。このため、カーソルデータ400とカーソルデータ410はほぼ同一の構造をとる。
【0080】
各カーソルデータにはX座標401(411)とY座標402(412)を有する。これは各カーソルがどの編集用格子データ300を指しているかあらわす。
【0081】
状態パラメータ403(413)はカーソルデータが操作対象になっているかを判断するパラメータである。状態パラメータ403(413)は未確定状態「0」と確定済状態「1」の2つの状態を表す。
【0082】
なお、操作対象になっている場合、状態パラメータ403(413)は未確定状態「0」であって、X座標401(411)とY座標402(412)に有効な数字が入っている。一方、状態パラメータ403(413)は未確定状態「0」であって、X座標401(411)とY座標402(412)に有効な数字が入っていない、または状態パラメータ403(413)が確定済状態「1」になっている場合、操作対象ではない。ただし、状態パラメータ403(413)が確定済状態「1」になっていれば、X座標401(411)とY座標402(412)に有効な値が入力されていることを前提として、表示の対象にはなる。
【0083】
カーソルデータ400のポインタ404はカーソルデータ410がどこに記憶されているかを表す。なお、カーソルデータ410のポインタ414にはNULLが入力されている。交換は2つの編集用格子データ300間で行われるものであり、3つ目のカーソルデータは存在しないためである。
【0084】
図9のカーソルデータの作成を行うと、初期化モジュール153はX座標401、Y座標402にそれぞれ初期位置の座標を入力する。また、状態パラメータ403は未確定を表す0が入力される。本実施の形態ではそれぞれ0から5までの値が有効なものとなる。
【0085】
一方、初期状態では2つ目のカーソルは表示されないことから、初期化モジュール153はX座標411、Y座標412にはNULLが、状態パラメータ413は0を入力する。
【0086】
これにより、初期化モジュール153によってカーソルの表示位置が決定される。
【0087】
(初期化処理)
次に初期化モジュール153における処理について図10を用いて説明する。
【0088】
図10は初期化モジュール153における処理を表すフローチャートである。
【0089】
まず、初期化モジュール153は正解用データ500を定義する(ステップS1000)。この正解用データ500の構成に際しては、正解用格子データ200及び正解用格子データ200の集合である正解用データ500を複数、予めメモリ102に記憶して、そこから正解データを読み出しても良いし、初期化モジュール153が36格子からなる正解用データ500を所定のデータベースを元に生成しても良い。また、無線部103、アンテナ104経由で基地局等の先にある図示しないサーバに対して、正解用データ500を要求するようにしても良い。
【0090】
次に、初期化モジュール153は編集用データ600を格納するデータ空間を確保し、必要な情報を正解用データ500よりコピーする等して設定する(ステップS1001)。たとえば、文字データ303などは複製の対象となる。また、X座標301及びY座標302は複製の過程で適宜数値が入力されるパラメータであろう。文字固定フラグ304はこの時点で0を入力し、またポインタ305については次の編集用格子データのアドレスを格納する。また、エントリリストには各格子行の先頭となる編集用格子データ(n、0)のアドレスが入力される。
【0091】
次に初期化モジュールは編集用データ600の編集用格子データ300間で文字データ303の入れ替えを行う(ステップS1002)。ここでいう「入れ替え」とは二つの編集用格子データの文字データ303の内容を入れ替えるだけである。ただし、編集用格子データ300の文字データ303の値がNULLの場合は入れ替えの対象にはならない。黒マス4が移動するとクロスワードパズルとして成立しなくなるためである。
【0092】
なお、ステップS1002の入れ替えに際しては、所定の回数以上を反復して行う必要がある。回数が少ないと、入れ替えが行われない格子データが生じるためである。
【0093】
ステップS1002の入れ替えが終了すると、次に正解用データ500内の各正解用格子データ200の文字データ203と編集用データ600内の対応する編集用格子データ300の文字データ303の内容の異同を確認する。すなわち、X座標201とX座標301、Y座標202とY座標302が同じものの文字データ203及び文字データ303のパラメータが同じであるかを確認する。
【0094】
全ての格子(本実施の形態では36格子)で文字データ203及び文字データ303の内容が異なれば(ステップS1003:No)、カーソルデータを作成する(ステップS1004)。カーソルデータ400、正解用データ500、編集用データ600と共にクロスワードパズルソフト基本モジュール152に参照用の座標が渡される(ステップS1005)。
【0095】
一つでも文字データ203及び文字データ303の内容が同じであれば(ステップS1003:Yes)、再度、ステップS1002の入れ替えを行う。
【0096】
以上により、初期化モジュール153の処理は終了する。この後、初期化モジュール153からカーソルデータ400、編集用データ600及び正解用データ500(厳密にはこれらのデータ、エントリリストのアドレス座標)がクロスワードパズルソフト基本モジュール152に渡される。このときのデータのやり取りはポインタのやり取りという形が一般的であろう。
【0097】
この後、クロスワードパズルソフト基本モジュール152は、操作者に対して、パズル情報を開示すべく出力用の情報を整理する。またメモリ102の容量が十分でないときは、初期化モジュール153を終了する。
【0098】
次に、図11を用いて、初期化モジュール153の処理の終了直後のクロスワードパズルソフト基本モジュール152のデータの状態について説明をする。
【0099】
図11は、初期化モジュール153に初期化が行われた後のクロスワードパズルの状態の一例を表す概念図である。
【0100】
この状態では、カーソルは1つ(第1カーソル700)しか存在しない。初期化モジュール153は、カーソルデータ400に対してのみ有効なデータを入力しているためである。
【0101】
この状態のままでは、クロスワードパズルに必要なヒントなどの準備ができていない。したがって、クロスワードパズルソフト基本モジュール152はヒントモジュール154に対して、ヒントの抽出を行わせる。
【0102】
図12はこのクロスワードパズルソフト基本モジュール152とヒントモジュール154間の処理を示すフローチャートである。
【0103】
まず、クロスワードパズルソフト基本モジュール152は正解用データ500及びカーソルデータのポインタを送信する(ステップS2000、S2001)。ここで、正解用データ500についてはエントリリスト501の座標を送信する。一方、カーソルデータについては、カーソルデータ410のX座標411、Y座標412、状態パラメータ103または413から、カーソルデータ400またはカーソルデータ410のいずれかのアドレスをクロスワードパズルソフト基本モジュール152が送信する。
【0104】
送信を受けると、カーソルデータのX座標、Y座標を抽出し、現在カーソルがあっている箇所がどこの格子なのかヒントモジュール154が特定する(ステップS2002)。
カーソル位置が分かれば、ヒントモジュール154が、正解用データ500のハッシュテーブル501からヒントデータを抽出すべき正解用格子データ200を特定する(ステップS2003)。
【0105】
ヒントを抽出する正解用格子データ200が分かれば、該当する正解用格子データ200のXヒント204、Yヒント205のアドレスを指標するポインタをヒントモジュール154は導出できる(ステップS2004)。この導出したポインタをヒントモジュール154がクロスワードパズルソフト基本モジュール152へ出力することで、ヒントの導出が可能となる。
【0106】
なお、データ構造が決まっているため、Xヒント204のアドレスポインタの送信を行えば、Yヒント205のアドレスも決まる。したがって、Yヒント205のポインタのやり取りを行うかは設計事項である。
【0107】
また、ステップS2004では対応する正解用格子データ200のXヒント204及びYヒント200をそのまま表示した。しかし、途中の文字(たとえば図4の(2、0)座標のような箇所)に当たる正解用格子データ200ではヒントが表示されない。これに対し、先頭の文字(図4で言えば(0,0)座標)を探し出し、対応する正解用格子データ200のXヒント204を表示するようにしても良い。
【0108】
第1のカーソルまたは第2のカーソルのどちらを表示するかの判断は、状態パラメータ403(413)などを用いることになると思われるが、設計事項であり、ここでは詳述は省略する。ここまでの処理が終われば、クロスワードパズルソフトは表示部106を介して図13に示すような操作者に開示可能な表示が可能になる。クロスワードパズルソフト基本モジュール152はヒントモジュール154から送信されたXヒント204(設計によってはYヒント205も)、カーソルデータ400及び編集用データ600のポインタを表示部描画モジュール156に送信する。これに基づいて表示部描画モジュール156は表示部106に図13のような描画を行う。
【0109】
この際、アニメーションをさせるか否か等は設計事項に付き省略する。
【0110】
(パズル中の処理)
初期化が終わると、クロスワードパズルソフト基本モジュール152は、入力部105からの操作者からの入力待ちの状態になる。
【0111】
図14はパズル中の入力識別モジュール151の基本的な動作を表すフローチャートである。
【0112】
入力部105から入力が行われると、入力識別モジュール151は行われたキー操作を解析する(ステップS3000)。すなわち、キーの種類、キーの押し込み/リリースなどである。
【0113】
そして、このクロスワードパズルソフトにとって、入力されたキー操作が有意なものであれば(ステップS3001:Yes)、入力識別モジュール151はクロスワードパズルソフト基本モジュール152に対して、発生したイベントの種別を送信する。発生したイベントの種別の送信を受けて、クロスワードパズルソフト基本モジュール152は、イベントの種別によって適切なモジュールが呼び出す(ステップS3002)。
【0114】
入力されたキー操作が有意なものでなければ(ステップS3001:No)、入力識別モジュール151は再び入力を待つ状態になる。
【0115】
以下イベント種別によっての処理を説明する。
【0116】
(カーソルの移動について)
入力部105のいわゆる「十字」キー、カーソルキーとみなすテンキーの入力時に行われる処理である。図13では、(0、0)にカーソルが存在するが、これを移動させるための処理である。以下では上記の操作を一括して「カーソルキーの押下」として説明する。
【0117】
カーソルキーが押下されると、カーソルキーの方向によって、カーソルデータ400(410)のX座標401(411)、Y座標402(412)の演算が行われる。たとえば右方向に移動を行う場合にはX座標401(411)が1増分され、左方向に移動を行う場合には、X座標401(411)が1減算される。また、下方向に移動を行う場合にはY座標402(412)が1増分され、上方向にカーソルを移動させるときにはY座標402(412)が1減算される。なおカーソルデータ400を処理の対象に選ぶか、カーソルデータ410を処理の対象とするかは、既述のとおり、主に状態パラメータ403によって判断される。
【0118】
この演算によりカーソルデータのパラメータは変更される。したがって、ヒントモジュール154を用いたヒントの抽出(図12参照)を行い、ヒントモジュール154から送信されたXヒント204(設計によってはYヒント205)、カーソルデータ400及び編集用データ600のポインタを表示部描画モジュール156に送信する。これらを受けて表示部描画モジュール156は表示部106に表示を行う。
【0119】
これらの処理により、移動後の状態が表示部106に反映される。
【0120】
(決定キーの押下)
図15は入力部105に含まれる決定キーの押下が行われた際の処理の流れを示すフローチャートである。これを用いて決定キー押下時の処理の説明をする。
【0121】
まず、クロスワードパズルソフト基本モジュール152はまず現在処理対象となっているカーソルデータが第1のカーソルに関わるカーソルデータ400なのか、第2のカーソルに関わるカーソルデータ410なのかを確認する(ステップS4000)。
【0122】
現在処理対象となっているカーソルの指標する格子が文字データの交換可能なものであるかクロスワードパズルソフト基本モジュール152は確認する(ステップS4001)。すなわち、一度正解であると判断された格子や、黒マス4は文字の交換ができないため、そこでの決定キーの押下はヒントの更新のみの処理となる(ステップS4005以降の処理)。なお、既に正解であると判断された格子は編集用格子データ300の文字固定フラグ304が「1」になっていることから識別できる。また黒マス4か否かは文字データ303がNULLかどうかで判断できる。
【0123】
ステップS4001で入れ替えが可能と判断されれば(ステップS4001:Yes)、操作対象のカーソルデータがカーソルデータ400か410かを判断する(ステップS4002)。
【0124】
第1のカーソル700に関わるカーソルデータ400であれば(ステップS4002:400)、状態パラメータ403を「1」にセットする(ステップS4003)。カーソルデータ410に処理を移行するためである。その後、カーソルデータ410の設定を行う一環として、X座標411、Y座標412を設定する(ステップS4004)。この際、設定される値は設計事項である。たとえば第1のカーソル700の右隣の格子に第2のカーソル701を最初に表示するような場合にはX座標411にはX座標401の値に1を加えたものを入力する。また、第1のカーソル700の現在の位置に関係なく、第2のカーソルの初期位置(カーソルデータ410のX座標411、Y座標412)を(0、0)にすることも考えられる。
【0125】
その後、カーソルデータ410に基づくヒントの導出をヒントモジュール154に対して行う(ステップS4005)。なお具体的な動作は図12に記載したとおりである。
【0126】
ヒントを取得した後は、クロスワードパズルソフト基本モジュール152はヒントモジュール154から送信されたXヒント204(設計によってはYヒント205も)、カーソルデータ400及び編集用データ600のポインタを表示部描画モジュール156に送信する。これに基づき表示部描画モジュール156は表示部106に描画を行う(ステップS4006)。
【0127】
図16はステップS4002を経由し、ステップS4005で操作対象が、カーソルデータ410に対応する第2のカーソル701に移った後の表示部106の表示状況の一例を表す図である。
【0128】
第1のカーソル700が(0、0)に表示された状態で、決定キーを押下すると、右隣に当たる(0、1)に第2のカーソル701が出現する。以降これが操作の対象になる。
【0129】
そして、第2のカーソルが位置する(1、0)の座標に従ったヒントが表示される。
【0130】
一方、対象のカーソルデータがカーソルデータ410に関わる第2のカーソル701であれば(ステップS4002:410)、状態パラメータ413を「1」にセットする(ステップS4101)。その後、状態パラメータ403と状態パラメータ413が「1」であることを確認した後、カーソル400が指す編集用格子データ300の文字データ303と、カーソル410が指す編集用格子データ300の文字データ303とを入れ替える(ステップS4102)。
【0131】
入れ替えが終わると、正誤判定モジュールにおける正誤判定を行う(ステップS4103)。これについては後述する。
【0132】
ステップS4103での正解か否か判別されたら、カーソルデータ400及びカーソルデータ410のリセットを行う。具体的には、カーソルデータ410のX座標411、Y座標412の内容を、カーソルデータ400のX座標401、Y座標402にコピーし、X座標411、Y座標412の内容を無効なものにする。また、状態パラメータ403、状態パラメータ413を「0」に書き換える。
【0133】
その後、更新したカーソルデータ400に基づくヒントの導出をヒントモジュール154に対して行い(ステップS4005)、表示部106の再描画を行う(ステップS4006)。
【0134】
また、各カーソルデータの更新に伴い、表示の更新がなされる。図17は、このステップS4101経由で、ステップS4005で操作対象がカーソルデータ400に戻った後の表示部106の表示状況の一例を表す図である。このように、(0、0)に表示されていた「ヤ」と(0、1)に表示されていた「ミ」が入れ替わり、かつカーソル表示がカーソルデータ400に対応した第1のカーソル700だけになる。また、ヒントモジュール154によるヒントの更新も必要があれば行い、表示に反映させる。
【0135】
なお、入力部105に解除キーなどを用意し、処理の中断等などを行うことも考えられるが、本発明とは直接的な関連性が無いため省略する。
【0136】
(正誤判定)
前述の通り、ステップS4103で入れ替え後の正解の判定を行う。この点について詳述する。
【0137】
図18は正誤判定モジュール155による正誤判定処理を表すフローチャートである。
【0138】
入れ替えが行われると、カーソルデータ400で指定されている編集用格子データ300とカーソルデータ410で指定されている編集用格子データ300の文字データ303が変更される。したがって、この2つの編集用格子データ300について正誤判定を行う必要がある。ただし、実際の処理はいずれの場合でも同じである。したがって、説明はカーソルデータ400で指定されているもののみについて行う。
【0139】
まず、クロスワードパズルソフト基本モジュール152は正誤判定モジュール155に対して、正解用データ500及び編集用データ600のアドレスと、カーソルデータ400のアドレスを送信する(ステップS5000)。
【0140】
正誤判定モジュール155は、カーソルデータ400が指標する座標の編集用格子データ300の文字データ303と、正解用格子データ200の文字データ203が一致しているか否かを確認する(ステップS5001)。一致していなければ(ステップS5001:No)、正誤判定処理は終了する。
【0141】
一致していれば(ステップS5001:Yes)、正誤判定モジュール155は横方向の文字列一致判定、縦方向の文字列一致判定を行う(ステップS5002、ステップS5003)。この文字一致判定については、ハッシュテーブルを用いた一致判定はよく知られているため省略する。なお、黒マス4によって分断されている箇所については調べる対象から外れるが、これらを除外する方法および一致判定方法も当業者に周知であるため、ここでは述べない。
【0142】
この判定が終わると、正誤判定モジュール155は横方向または縦方向のいずれか・又は双方の文字列が一致したかを確認する(ステップS5004)。いずれか一方・または双方が一致していれば(ステップS5004:Yes)、対応する編集用格子データの300の文字固定フラグ304を「1」にセットする(ステップS5005)。
【0143】
この際、文字固定フラグ304が「1」にセットされる対象は、カーソルデータ400で示唆される編集用格子データ300だけでなく、一致した文字列を構成する全ての編集用格子データ300の文字固定フラグ304が対象となる。
【0144】
なお、このステップS5004及びステップS5005をステップS5002及びステップS5003内に含めても問題は無い。この際、一度「1」にした文字固定フラグ304を「0」に戻さないように留意する。
【0145】
その後、正誤判定モジュール155における処理を終了し、クロスワードパズルソフト基本モジュール152に処理を返すこととなる。
【0146】
このように、格子間で文字データを入れ替えることでクロスワードの回答を行えるように設計することで、自由度が低い入力部であっても簡単に操作できるようにすることを可能にする。
【0147】
(第2の実施の形態)
第1の実施の形態では、操作を簡単に行えるようにする点にのみ着目した。
【0148】
しかしクロスワードパズルであっても、携帯電話機を用いてソフトウェア的に処理を行えるようにすることで、よりアクション性を高めたゲーム性を持たせることが可能となる。
【0149】
本実施の形態は第1の実施の形態をベースとして、操作に得点を割り当てることを可能とする。
【0150】
(ハードウェア及びソフトウェアの構成)
基本的に、ハードウェア及びソフトウェアの全体構成について相違は無い。個々のモジュールの相違は以下に述べる。
【0151】
(データ構造と初期化処理)
基本的にはデータ構造についても特に変更点はない。ただし「得点スコア」をつけるための変数が追加されている。この変数はクロスワードパズルソフト基本モジュール152で定義する。
【0152】
(パズル中の処理)
基本的な動作については第1の実施の形態と同様である。ただし、正誤判定のみ相違する。以下、図19を元に変更点について説明する。
【0153】
第1の実施の形態では正誤判定モジュール155に関する図18の処理では戻り値は特に規定していない。これに対し、第2の実施の形態では、正誤判定モジュール155の処理終了時にクロスワードパズルソフト基本モジュール152に値を返す。
【0154】
この返す値(戻り値)は、正解時の得点を意味する。以下、この得点がどのように計算されるか説明する。
【0155】
入れ替えた格子(カーソルデータ400(410)が指す格子)が正解しなければ、正誤判定モジュール155の処理から離脱する点については第1の実施の形態と同様である(ステップS5001:No)。このときの戻り値は「0」となる(ステップS6001)。
【0156】
一方、入れ替えた格子が正解していた場合(ステップS5001:Yes)、各処理で得点計算の処理が入る。
【0157】
ステップS5002からS5004までの処理は、第1の実施の形態同様である。このステップS5002からS5004までの処理の結果を踏まえて、正誤判定モジュール155は得点演算を行う(ステップS6002)。
【0158】
たとえば、1つのカーソルデータが指標する編集用格子データが置き換わると、
1)縦横どちらも正解していない。
【0159】
2)縦一列の完成
3)横一行の完成
4)縦横双方の完成
の4つの結果が考えられる。
【0160】
したがって、これに対し
1)0点
2)50点
3)50点
4)200点
という感じで点を割り当てる。これを戻り値として、クロスワードパズルソフト基本モジュール152に送信して(ステップS6002)、正誤判定モジュール155は処理を終える。
【0161】
クロスワードパズルソフト基本モジュール152は二つの正誤判定モジュール155についての戻り値を受け取ることになる。これらを単純に足すだけでなく、クロスワードパズルソフト基本モジュール152が更に加重配点を加えても良い。たとえば、2つの戻り値がいずれも200点であった場合、200+200=400点だけでなく更に300点加えることで、より高得点を狙えるようにすることも可能である。
【0162】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能であることは言うまでもない。
【産業上の利用可能性】
【0163】
上述では、クロスワードパズルへの適用を説明したが、必ずしもこれに限定されるものではない。所定の文字入力項目が存在し、文字の種別が特定されているパズルゲームに対しては適用可能である。たとえば、縦1列、横1行で全ての数字(1から9)が重複しないナンバープレースへの応用などが考慮できる。
【図面の簡単な説明】
【0164】
【図1】一般的なペンシルパズルとしてのクロスワードパズルの概念を説明するための概念図である。
【図2】クロスワードパズル用ソフトウェアが動作する携帯電話機の構成を表すブロック図である。
【図3】クロスワードパズル用ソフトウェアのモジュール構成を表す図である。
【図4】本発明を適用したクロスワードパズルの最終的な回答を表す概念図である。
【図5】正解用格子データのデータ構造を表す概念図である。
【図6】正解用データのデータ構造を表す概念図である。
【図7】編集用格子データのデータ構造を表す概念図である。
【図8】編集用データのデータ構造を表す概念図である。
【図9】カーソルデータのデータ構造を表す概念図である。
【図10】初期化モジュールにおける処理を表すフローチャートである。
【図11】初期化モジュールに初期化が行われた後のクロスワードパズルの状態の一例を表す概念図である。
【図12】クロスワードパズルソフト基本モジュールとヒントモジュール間の処理を示すフローチャートである。
【図13】表示部の表示状況の一例を表す図である。
【図14】入力識別モジュールの基本的な動作を表すフローチャートである。
【図15】決定キーの押下が行われた際の処理の流れを示すフローチャートである。
【図16】表示部の表示状況の一例を表す図である。
【図17】表示部の表示状況の一例を表す図である。
【図18】正誤判定モジュールによる正誤判定処理を表すフローチャートである。
【図19】第2の実施の形態における正誤判定モジュールによる正誤判定処理を表すフローチャートである。
【符号の説明】
【0165】
1…外枠、2…未記入マス、3…記入済みマス、4…黒マス、101…CPU、
102…メモリ、103…無線部、104…アンテナ、105…入力部、
106…表示部、107…スピーカ、108…バス、150…基本ソフトウェア、
151…入力識別モジュール、152…クロスワードパズルソフト基本モジュール、
153…初期化モジュール、154…ヒントモジュール、
155…正誤判定モジュール、156…表示部描画モジュール、
200…正解用格子データ、201…X座標、
202…Y座標、203…文字データ、204…Xヒント(横のヒント)、
205…Yヒント(縦のヒント)、206…ポインタ、
300…編集用格子データ、301…X座標、302…Y座標、303…文字データ、
304…文字固定フラグ、305…ポインタ、400…カーソルデ−タ、
401…X座標、402…Y座標、403…状態パラメータ、404…ポインタ、
410…カーソルデ−タ、411…X座標、412…Y座標、
413…状態パラメータ、414…ポインタ、
500…正解用データ、501…エントリリスト、
600…編集用データ、601…エントリリスト、
700…第1カーソル、701…第2カーソル。
【特許請求の範囲】
【請求項1】
所定の入力手段を有する携帯情報端末上で動作するパズルゲーム用ソフトウェアの入力方法であって、
該パズルゲーム用ソフトウェアは、操作者に対して開示の対象となる所定の表示データを有する2以上のデータ構造体を管理の対象とする編集用の配列を有し、
前記編集用の配列より第1のデータ構造体を選択する、第1データ構造体選択ステップと、
前記編集用の配列より第2のデータ構造体を選択する、第2データ構造体選択ステップと、
前記第1のデータ構造体の表示データと前記第2のデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を含むことを特徴とするパズルゲーム用ソフトウェアの入力方法。
【請求項2】
所定の入力手段を有する携帯情報端末上で動作するパズルゲーム用ソフトウェアの入力方法であって、
該パズルゲーム用ソフトウェアは、操作者に対して開示の対象となる所定の表示データを有する2以上のデータ構造体を管理の対象とする編集用の配列を有し、
前記編集用の配列より第1のデータ構造体を選択するための第1カーソルを表示する第1カーソル表示ステップと、
前記第1カーソルを操作するための入力を受け付ける第1カーソル操作ステップと、
前記第1カーソルの処理対象を特定すると共に、前記編集用の配列より第2のデータ構造体を選択するための第2カーソルを表示する第1カーソル特定・第2カーソル表示ステップと、
前記第2カーソルを操作するための入力を受け付ける第2カーソル操作ステップと、
前記第2カーソルの処理対象を特定する第2カーソル特定ステップと、
前記第1カーソルが指標するデータ構造体の表示データと前記第2カーソルが指標するデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を有することを特徴とするパズルゲーム用ソフトウェアの入力方法。
【請求項1】
所定の入力手段を有する携帯情報端末上で動作するパズルゲーム用ソフトウェアの入力方法であって、
該パズルゲーム用ソフトウェアは、操作者に対して開示の対象となる所定の表示データを有する2以上のデータ構造体を管理の対象とする編集用の配列を有し、
前記編集用の配列より第1のデータ構造体を選択する、第1データ構造体選択ステップと、
前記編集用の配列より第2のデータ構造体を選択する、第2データ構造体選択ステップと、
前記第1のデータ構造体の表示データと前記第2のデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を含むことを特徴とするパズルゲーム用ソフトウェアの入力方法。
【請求項2】
所定の入力手段を有する携帯情報端末上で動作するパズルゲーム用ソフトウェアの入力方法であって、
該パズルゲーム用ソフトウェアは、操作者に対して開示の対象となる所定の表示データを有する2以上のデータ構造体を管理の対象とする編集用の配列を有し、
前記編集用の配列より第1のデータ構造体を選択するための第1カーソルを表示する第1カーソル表示ステップと、
前記第1カーソルを操作するための入力を受け付ける第1カーソル操作ステップと、
前記第1カーソルの処理対象を特定すると共に、前記編集用の配列より第2のデータ構造体を選択するための第2カーソルを表示する第1カーソル特定・第2カーソル表示ステップと、
前記第2カーソルを操作するための入力を受け付ける第2カーソル操作ステップと、
前記第2カーソルの処理対象を特定する第2カーソル特定ステップと、
前記第1カーソルが指標するデータ構造体の表示データと前記第2カーソルが指標するデータ構造体の表示データを入れ替える表示データ入れ替えステップと、を有することを特徴とするパズルゲーム用ソフトウェアの入力方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2009−247525(P2009−247525A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2008−97982(P2008−97982)
【出願日】平成20年4月4日(2008.4.4)
【出願人】(501003630)株式会社ジー・モード (4)
【Fターム(参考)】
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願日】平成20年4月4日(2008.4.4)
【出願人】(501003630)株式会社ジー・モード (4)
【Fターム(参考)】
[ Back to top ]