(57)【要約】      （修正有）【課題】タッチパネル式の表示装置を備えるコンピュータにおけるパズルゲームプログラムを提供する。【解決手段】タッチパネル式表示装置を備えたコンピュータを、タッチパネル式表示装置に表示したｍ×ｎに配置したブロックに対する操作を検出するブロック操作検出処理部１２、検出した操作に基づいてその移動方向に位置する行または列のブロックを連続的に順次移動することでブロックの移動処理を行うブロック移動処理部１３、移動後の状態のブロックの配置と元の状態のブロックの配置とを比較することで一致を判定する一致判定処理部１４、として機能させるパズルゲームプログラム。【選択図】図１
2014061042.tif 000002
【特許請求の範囲】
【請求項１】
タッチパネル式表示装置を備えたコンピュータを，
前記タッチパネル式表示装置に表示した，ｍ×ｎに配置したブロックに対する操作を検出するブロック操作検出処理部，
前記検出した操作に基づいて，その移動方向に位置する行または列のブロックを連続的に順次移動することで，前記ブロックの移動処理を行うブロック移動処理部，
前記移動後の状態のブロックの配置と，前記元の状態のブロックの配置とを比較することで一致を判定する一致判定処理部，
として機能させることを特徴とするパズルゲームプログラム。
【請求項２】
前記パズルゲームプログラムは，
前記コンピュータを，さらに，
ｍ×ｎに配置した元の状態のブロックに対して，任意の回数だけブロックを移動させることで問題を生成する問題生成処理部，
として機能させ，
前記ブロック操作検出処理部は，
前記タッチパネル式表示装置における，前記問題として生成されたｍ×ｎに配置したブロックに対する操作を検出する，
ことを特徴とする請求項１に記載のパズルゲームプログラム。
【請求項３】
前記パズルゲームプログラムは，
前記コンピュータを，さらに，
前記パズルゲームプログラムの表示の制御を少なくとも行うゲーム制御処理部，
として機能させ，
前記タッチパネル式表示装置において，前記問題と前記ブロックの元の状態とを同時に表示する，
ことを特徴とする請求項１または請求項２に記載のパズルゲームプログラム。
【請求項４】
前記問題生成処理部は，
前記ユーザのパズルゲームのクリア回数に基づいて，前記元の状態からのブロックの移動回数を変更する，
ことを特徴とする請求項２または請求項３に記載のパズルゲームプログラム。
【請求項５】
前記問題生成処理部は，さらに，
前記ｍ×ｎの各ブロックに対して，色または絵柄を任意に割り当てることで，前記元の状態となるブロックを生成する，
ことを特徴とする請求項２から請求項４のいずれかに記載のパズルゲームプログラム。
【請求項６】
前記問題生成処理部は，さらに，
前記元の状態となるブロックを生成する際に，前記ユーザのパズルゲームのクリア回数に基づいて，前記ｍ×ｎの各ブロックに対して割り当てる色または絵柄の数を変更する，
ことを特徴とする請求項５に記載のパズルゲームプログラム。
【請求項７】
請求項１から請求項６のいずれかに記載されたパズルゲームプログラムを備える，
ことを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，タッチパネル式の表示装置を備えるコンピュータにおけるパズルゲームプログラムに関する。
【背景技術】
【０００２】
コンピュータゲームとしてのパズルゲームは，ゲームのルールが明確であるため，比較的取り組みやすく，気軽に遊べるので，コンピュータゲームの中で一ジャンルとして確立されている。また，ゲームプログラムも複雑な処理が不要で，かつ画像データなども多用しないため，ゲームプログラムの容量が少なく，処理性能が高くないコンピュータ，たとえば携帯電話（スマートフォンを含む），ＰＨＳ，タブレット型コンピュータなどでも遊ぶことが可能である。
【０００３】
このようなパズルゲームの一例を特許文献１乃至特許文献４に示す。
【０００４】
特許文献１乃至特許文献４をはじめとして，パズルゲームの一つとして，特定の課題に合致させることを目的としたものが存在する。たとえば特定の絵柄に揃える，数値を揃えることを目的としたパズルゲームなどである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２４６１５２号公報
【特許文献２】特開２０１１−５５９９９号公報
【特許文献３】特開２０１１−１５６１５９号公報
【特許文献４】特開２０１１−２５１００６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年，パズルゲームは脳の活性化に役立ち，たとえば認知症の予防などにも有効であると言われている。そのため，上述のようなパズルゲームを高齢者が利用することで，脳の活性化を促し，認知症の予防に役立たせることが期待できる。
【０００７】
上述のように，特定の絵柄や数値に揃えることを目的としたパズルゲームは，ルールがもっとも分かりやすいことから，高齢者にとってもなじみやすいといえる。しかしながら，高齢者にとってコンピュータ自体になじみがない人も多く，複数の操作ボタンなどがあった場合には，パズルゲームであってもなかなか操作することが容易ではない。そのため，パズルゲームを行うことを断念してしまうおそれもある。そこで高齢者にとっても操作しやすいパズルゲームが求められている。
【０００８】
また高齢者といってもその能力には幅がある。従って，高齢者を対象としたパズルゲームであっても，その能力に衰えがほとんどない高齢者の場合，簡単なパズルゲームでは満足することができず，すぐに興味がなくなってしまうおそれもある。一方，能力の衰えが大きい高齢者の場合，複雑なパズルゲームは解くことができず，この場合も興味がなくなってしまう可能性が高い。
【０００９】
そこで高齢者を対象としたパズルゲームの場合，その能力差が大きいことから，幅広く対応することが求められる。
【課題を解決するための手段】
【００１０】
そこで本発明者は上記課題に鑑み，特に高齢者の認知症予防を目的としたパズルゲームを発明した。
【００１１】
第１の発明は，タッチパネル式表示装置を備えたコンピュータを，前記タッチパネル式表示装置に表示した，ｍ×ｎに配置したブロックに対する操作を検出するブロック操作検出処理部，前記検出した操作に基づいて，その移動方向に位置する行または列のブロックを連続的に順次移動することで，前記ブロックの移動処理を行うブロック移動処理部，前記移動後の状態のブロックの配置と，前記元の状態のブロックの配置とを比較することで一致を判定する一致判定処理部，として機能させるパズルゲームプログラムである。
【００１２】
本発明のように構成することで，ユーザは，直接，ブロックを触っているかのような感覚で操作ができるので，コンピュータに不慣れな高齢者であっても楽しむことができる。また，自ら指を動かしてパズルを解くことができるので，指先の運動となり，脳の活性化につなげることもできる。
【００１３】
上述の発明において，前記パズルゲームプログラムは，前記コンピュータを，さらに，ｍ×ｎに配置した元の状態のブロックに対して，任意の回数だけブロックを移動させることで問題を生成する問題生成処理部，として機能させ，前記ブロック操作検出処理部は，前記タッチパネル式表示装置における，前記問題として生成されたｍ×ｎに配置したブロックに対する操作を検出する，パズルゲームプログラムのように構成することもできる。
【００１４】
本発明のように構成すれば，問題を自動的に生成するので，問題生成時のブロックの移動回数を任意に変更すれば，高齢者の能力差に応じることも可能となる。そのため幅広い高齢者が楽しむことができる。
【００１５】
上述の発明において，前記パズルゲームプログラムは，前記コンピュータを，さらに，前記パズルゲームプログラムの表示の制御を少なくとも行うゲーム制御処理部，として機能させ，前記タッチパネル式表示装置において，前記問題と前記ブロックの元の状態とを同時に表示する，パズルゲームプログラムのように構成することもできる。
【００１６】
パズルゲームでは，一般的に正解となる元の状態を問題と同時に表示することはない。そこで本発明のように構成することで，元の状態を確認しながらパズルゲームを楽しむことができる。
【００１７】
上述の発明において，前記問題生成処理部は，前記ユーザのパズルゲームのクリア回数に基づいて，前記元の状態からのブロックの移動回数を変更する，パズルゲームプログラムのように構成することもできる。
【００１８】
上述の発明において，前記問題生成処理部は，さらに，前記ｍ×ｎの各ブロックに対して，色または絵柄を任意に割り当てることで，前記元の状態となるブロックを生成する，パズルゲームプログラムのように構成することもできる。
【００１９】
上述の発明において，前記問題生成処理部は，さらに，前記元の状態となるブロックを生成する際に，前記ユーザのパズルゲームのクリア回数に基づいて，前記ｍ×ｎの各ブロックに対して割り当てる色または絵柄の数を変更する，パズルゲームプログラムのように構成することもできる。
【００２０】
これらの発明のように構成することで，パズルゲームの難易度を細かく調整することが自動的に行える。そのため，通常は問題作成が一番大変であるが，その負担を軽減することができる。
【００２１】
上述の各パズルゲームプログラムを備えるコンピュータを構成しても，本発明と同様の技術的効果を得ることができる。
【発明の効果】
【００２２】
本発明によって，高齢者であっても操作がしやすく，またなじみやすいパズルゲームプログラムを構成することができる。また，難易度を適度に保つことができることから，高齢者の興味を惹きつけることができる。
【図面の簡単な説明】
【００２３】
【図１】本発明のパズルゲームプログラムの機能の概略を示す概念図である。
【図２】本発明のパズルゲームプログラムを実行するコンピュータのハードウェア構成の一例を模式的に示す図である。
【図３】本発明のパズルゲームプログラムの処理プロセスの一例を示すフローチャートである。
【図４】パズルの一例を模式的に示す図である。
【図５】選択されたパズルの一例を模式的に示す図である。
【図６】問題生成処理の一例を模式的に示す図である。
【図７】起動画面の一例を模式的に示す図である。
【図８】あるレベルのパズルの一覧が表示された画面の一例を模式的に示す図である。
【図９】ゲーム画面の一例を模式的に示す図である。
【図１０】ブロックの移動処理を模式的に示すフローチャートである。
【図１１】パズルの表示装置上での表現とプログラム上での表現を模式的に示す図である。
【図１２】図１０の移動処理において，下方向にブロックを移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図１３】図１０の移動処理において，上方向にブロックを移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図１４】図１０の移動処理において，右方向にブロックを移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図１５】図１０の移動処理において，左方向にブロックを移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図１６】クリア画面の一例を模式的に示す図である。
【図１７】レベルのクリア画面の一例を模式的に示す図である。
【図１８】新しいレベルのパズルの一覧が表示された画面の一例を模式的に示す図である。
【図１９】ゲームのクリア画面の一例を模式的に示す図である。
【図２０】ブロックの移動処理のほかの実施態様を模式的に示すフローチャートである。
【図２１】図２０の移動処理において，下方向にブロックを２マス移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図２２】図２０の移動処理において，上方向にブロックを２マス移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図２３】図２０の移動処理において，右方向にブロックを２マス移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【図２４】図２０の移動処理において，左方向にブロックを２マス移動させた場合の，パズルのプログラム上での表現と表示装置上での表現とを模式的に示す図である。
【発明を実施するための形態】
【００２４】
本発明のパズルゲームプログラム１の機能を示す概念図を図１に模式的に示す。本発明のパズルゲームプログラム１は，携帯電話（スマートフォンを含む），ＰＨＳ，タブレット型コンピュータなどを含むコンピュータ上で実行される。このコンピュータは，後述するように，タッチパネル形式の表示装置７２を備えている。
【００２５】
図２に，パズルゲームプログラム１を実行するためのコンピュータのハードウェア構成の一例を模式的に示す。
【００２６】
本発明では，パズルゲームプログラム１がコンピュータ上で実行されることで実現される。コンピュータは，プログラムの演算処理を実行するＣＰＵなどの演算装置７０と，情報を記憶するＲＡＭやハードディスクなどの記憶装置７１と，タッチパネル式のディスプレイである表示装置７２と，演算装置７０の処理結果や記憶装置７１に記憶する情報をインターネットやＬＡＮなどのネットワークを介して送受信する通信装置７３とを有している。コンピュータ上で実現する各機能（各手段）は，その処理を実行するプログラムの各機能が演算装置７０に読み込まれることでその処理が実行される。各機能は，記憶装置７１に記憶した情報をその処理において使用する場合には，該当する情報を当該記憶装置７１から読み出し，読み出した情報を適宜，演算装置７０における処理に用いる。なお，パズルゲームプログラム１は，その機能が複数のコンピュータに分散配置されていても良い。
【００２７】
本発明における各手段は，その機能が論理的に区別されているのみであって，物理上あるいは事実上は同一の領域を為していても良い。
【００２８】
パズル情報記憶部７１１は，記憶装置７１において，本発明のパズルゲームで出題するパズルの情報を記憶する。パズルとしては，複数のレベルに分けられており，そのレベルごとに複数のパズルが記憶されていることが好ましい。図４にパズルの一例を模式的に示す。図４は，レベル１の９つのパズルの一例を示している。なお，パズル情報記憶部７１１には，実際には，各ブロックごとの色や絵柄などの情報が記憶されており，それが管理されている。なお，図４では，ブロックには白地，網掛け，斜線の３種類で示しているが，実際には，これらが異なる色，たとえば白地は白，網掛けは黄色，斜線は水色として表現されていることが好ましい。また最大，ブロックの数だけ色や絵柄などを設けることができる。
【００２９】
また図面上は，各ブロックに色や絵柄などが表現されているが，パズルゲームのプログラム上では，各ブロックを行列の一要素と見て，色や絵柄に対応する情報（たとえば数値）が記憶されている。たとえば図４の場合，３×３のパズルであるので，３行３列の配列としてパズルゲームプログラム１では処理を実行する。そして白地のブロックには「０」，網掛けのブロックには「１」，斜線のブロックには「２」といったように，それぞれ対応する情報が記憶されている。なお，パズルの形状は正方形に限られるものではなく，ｍ×ｎであれば良い。なお，ｍ，ｎは自然数であり，ｎ＝ｍの場合も含まれる。
【００３０】
パズルゲームプログラム１は，ゲーム制御処理部１０と問題生成処理部１１とブロック操作検出処理部１２とブロック移動処理部１３と一致判定処理部１４とを有する。
【００３１】
ゲーム制御処理部１０は，パズルゲームに関する全般の制御処理を行う。たとえばゲームの起動，各画面の制御，次のパズルへの移行，クリアした場合の画面表示，終了処理などを行う。
【００３２】
問題生成処理部１１は，ユーザが，パズルを選択することを受け付けると，そのパズルの問題を生成する処理を実行する。パズル情報記憶部７１１で記憶してるパズルの情報を抽出し，それを任意に複数回，縦または横にマスを移動させることで，元の状態から崩し，それを問題として生成する。
【００３３】
たとえば選択されたパズルが図５（図６（ａ））の状態の場合，１行目を右に２つ（図６（ｂ）），３列目を下に１つ（図６（ｃ）），３行目を左に１つ（図６（ｄ）），１列目を上に１つ（図６（ｅ）），２列目を上に２つ（図６（ｆ）），１行目を左に２つ（図６（ｇ）），２行目を左に２つ（図６（ｈ）），１列目を下に１つ（図６（ｉ）），それぞれ移動させる。これによって，図６（ｉ）の状態ができるので，図６（ｉ）を問題として生成する。何回移動させるかは任意の設定に基づく。またブロックを上下左右にどれだけ移動させるかは，たとえば乱数などによって定めればよい。
【００３４】
ブロック操作検出処理部１２は，ユーザが表示装置７２上で選択したブロックを検出し，選択されたブロックが，どの方向にどれだけ移動する操作が行われたかを検出する。すなわち上下左右にいくつ移動する操作が行われたかを検出する。
【００３５】
ブロック移動処理部１３は，ブロック操作検出処理部１２で検出したブロックを移動させる操作に基づいて，ブロックを移動させる処理を実行する。すなわち，ユーザが選択したブロックについて，移動させる方向に位置する行または列のブロックを，その順序に従って，連続的に移動させる処理を実行する。
【００３６】
ここでｍ×ｎに配置されるブロックであるから，ある方向にブロックを移動させた場合には，その方向に，その並び順だけブロックがずれることとなるが，移動方向の端から移動量に相当する場所に位置するブロックは，ｍ×ｎの配置から外れてしまう。一方，移動方向の反対の端から移動量に相当する場所にはブロックが存在しなくなる。そこで外れたブロックを，その存在しなくなったブロックに，そのまま配置をする移動処理を行う。これによって，ブロックの両端が連続的に繋がっているように移動制御することができる。
【００３７】
たとえば３×３で配置されるブロックであって，右方向にブロックを１だけ移動させた場合，その行に位置するブロックをそれぞれ順次，１つだけ右に移動させる。そうすると，その行の右端に位置したブロックは３×３の配置からずれることとなり，その行の左端に位置したブロックは空白となる。そこで，ずれたブロック（右端に位置していたブロック）を左端に移動させる処理を実行する。
【００３８】
一致判定処理部１４は，ブロック操作検出処理部１２で検出した操作に従ってブロック移動処理部１３でブロックの移動処理後，それがあらかじめ記憶された元の状態と一致しているかを判定する。
【００３９】
つぎに本発明のパズルゲームプログラム１の処理プロセスの一例を図３を用いて説明する。なお，以下の説明では，タブレット型コンピュータでパズルゲームプログラム１を実行する場合を説明するが，それ以外の携帯電話，ＰＨＳなどであっても同様に行える。
【００４０】
まずユーザは所定のコンピュータで，たとえば，タッチパネル式の表示装置７２のパズルゲームプログラム１のアイコンをタップ（表示装置７２を軽く叩く操作）することで，ゲームを起動させることの入力指示を行う。ゲーム制御処理部１０は，この入力指示に基づいてパズルゲームプログラム１をコンピュータで起動し，（Ｓ１００）。起動画面を表示装置７２で表示させる。図７にパズルゲームプログラム１の起動画面の一例を模式的に示す。
【００４１】
ユーザはゲームを開始する場合，図７の起動画面から「ゲームを始める」をタップする。これによって，ゲーム制御処理部１０は，図８に示す画面を表示装置７２に表示させる。図８では，あらかじめ定められたレベル（ステージ）のパズルの情報の一覧を，ゲーム制御処理部１０は，記憶装置７１のパズル情報記憶部７１１から抽出して表示する（Ｓ１１０）。たとえば図８では，レベル１（ステージ１）のパズルをパズル情報記憶部７１１から抽出して表示している。
【００４２】
ここで，ユーザが異なるレベルのパズルを選択したい場合には，レベルを示す表示（「ステージ１」の表示）をタップすることで，レベルを選択する。その選択指示をゲーム制御処理部１０は受け付け，選択されたレベルのパズルの情報をパズル情報記憶部７１１から抽出して表示させる（Ｓ１１０）。
【００４３】
図８の画面で表示されているパズルの一覧から，ユーザは遊びたいパズルを一つ選択し，タップをする。この選択指示をゲーム制御処理部１０が受け付けると（Ｓ１２０），その選択されたパズルの情報に基づいて，問題生成処理部１１が問題を生成する（Ｓ１３０）。この問題生成処理は，上述のように，元の状態から，任意の方向に，任意の回数だけブロックを移動させることで，問題を生成する。
【００４４】
たとえばＳ１２０において，図８の左下のパズルを選択した場合，図６のようにブロックを移動させる処理を実行することで，図６（ｉ）のように問題を生成する。なお，このブロックを移動させる処理は，後述のブロック移動処理部１３の処理を実行すればよい。
【００４５】
このようにして問題生成処理部１１で問題を生成すると，ゲーム制御処理部１０は，図９に示すように，問題と正解（目標とする元の状態）とを一つに表示したゲーム画面を表示装置７２で表示する（Ｓ１４０）。この際に，正解とする元の状態を配列Ａに記憶させておく。たとえば正解が図６（ａ）の状態とすると，配列Ａ（ｍ，ｎ）には，それぞれ，Ａ（１，１）＝１，Ａ（１，２）＝０，Ａ（１，３）＝０，Ａ（２，１）＝１，Ａ（２，２）＝０，Ａ（２，３）＝２，Ａ（３，１）＝０，Ａ（３，２）＝０，Ａ（３，３）＝２を格納しておく。なお，図９では，正解を表示した状態を示したが，正解を表示せずに，ユーザからの正解の表示操作，無操作状態の一定時間の経過によって，一時的に正解を表示させるようにしても良い。これによって，正解を記憶しようとするので，記憶力も鍛えられる。
【００４６】
ユーザは，このゲーム画面で，ブロックを選択して上下左右方向にスワイプ（表示装置７２に指を触れたまま特定の方向に移動する操作）することで，ブロックを正解の状態にあわせるように移動させ，パズルの問題を解くこととなる。
【００４７】
パズルゲームプログラム１において，ブロックを移動させる処理を図１０のフローチャートを用いて説明する。図１０のフローチャートの場合，ユーザの一度のスワイプでは１つだけ上下左右方向に移動させられる場合を示す。
【００４８】
図１１は，パズルの表示装置７２上での表現とプログラム上での表現とを模式的に示す図である。パズルが図１１の状態に変形されていたとする。図１１の状態は３×３のパズル（ｍ＝３，ｎ＝３）であり，左上のブロックが原点Ｍ（１，１）となり，右および下方向をそれぞれ正方向としている。またパズル上の各ブロックには，それぞれ図１１に示すように色が配置されている。そのため，プログラムの処理では，ブロックの位置に対応する配列Ｍ（ｍ，ｎ）には，それぞれ，Ｍ（１，１）＝０，Ｍ（１，２）＝１，Ｍ（１，３）＝２，Ｍ（２，１）＝２，Ｍ（２，２）＝０，Ｍ（２，３）＝０，Ｍ（３，１）＝１，Ｍ（３，２）＝０，Ｍ（３，３）＝０として値が代入されている。
【００４９】
まずユーザが図９のゲーム画面において，移動させるブロックを選択し上下左右方向にスワイプすると，その操作をブロック操作検出処理部１２が検出をする（Ｓ１５０）。そうすると，ブロック操作検出処理部１２は，選択されたブロックの位置とその移動方向を検出する（Ｓ３００，Ｓ３１０）。
【００５０】
ここで図９でユーザが選択したブロックが（ｉ，ｊ）＝（２，１）であり，下方向に１つ移動（（ｘ，ｙ）＝（０，１））させるとする。なお，変数（ｉ，ｊ）はユーザにより選択されたブロックの位置（座標）を示すものであり，変数（ｘ，ｙ）はスワイプさせた方向およびその移動量を示すものである。
【００５１】
そうすると，ブロック移動処理部１３は，ブロックの移動処理を実行する。上述の場合，ブロック移動処理部１３は，移動方向が上下方向なので（Ｓ３２０），配列Ｘ（１，１），Ｘ（２，１），Ｘ（３，１）に対してそれぞれ，Ｍ（１，１），Ｍ（２，１），Ｍ（３，１）の値を代入する（Ｓ３３０）。すなわちＸ（１，１）＝０，Ｘ（２，１）＝２，Ｘ（３，１）＝１を代入する。
【００５２】
そしてブロック移動処理部１３は，移動方向が下方向（正方向）であるから，カウンタａ＝１からａ＝ｍ（ｍ＝３）になるまで，Ｓ３４０の処理を繰り返す。すなわちまずカウンタａには初期値１を代入し，Ｍ（１，１）＝Ｘ（３，１）＝１を代入する。そしてカウンタａをインクリメントしてＭ（２，１）＝Ｘ（２−１，１）＝Ｘ（１，１）＝０を代入する。そしてカウンタａをインクリメントしてＭ（３，１）＝Ｘ（３−１，１）＝Ｘ（２，１）＝２を代入する。これによって，新しい配列Ｍは，Ｍ（１，１）＝１，Ｍ（１，２）＝１，Ｍ（１，３）＝２，Ｍ（２，１）＝０，Ｍ（２，２）＝０，Ｍ（２，３）＝０，Ｍ（３，１）＝２，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図１２である。図１２（ａ）は移動前後の配列Ｍの状態，図１２（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００５３】
また図９でユーザが選択したブロックが（ｉ，ｊ）＝（１，１）であり，上方向に１つ移動（（ｘ，ｙ）＝（０，−１））させるとする。
【００５４】
そうすると，この場合，ブロック移動処理部１３は，移動方向が上下方向なので（Ｓ３２０），配列Ｘ（１，１），Ｘ（２，１），Ｘ（３，１）に対してそれぞれ，Ｍ（１，１），Ｍ（２，１），Ｍ（３，１）の値を代入する（Ｓ３３０）。すなわちＸ（１，１）＝０，Ｘ（２，１）＝２，Ｘ（３，１）＝１を代入する。
【００５５】
そしてブロック移動処理部１３は，移動方向が上方向（負方向）であるから，カウンタａ＝１からａ＝ｍ（ｍ＝３）になるまで，Ｓ３４０の処理を繰り返す。すなわちまずカウンタａには初期値１を代入し，Ｍ（１，１）＝Ｘ（１＋１，１）＝Ｘ（２，１）＝２を代入する。そしてカウンタａをインクリメントしてＭ（２，１）＝Ｘ（２＋１，１）＝Ｘ（３，１）＝１を代入する。そしてカウンタａをインクリメントしてＭ（３，１）＝Ｘ（１，１）＝０を代入する。これによって，新しい配列Ｍは，Ｍ（１，１）＝２，Ｍ（１，２）＝１，Ｍ（１，３）＝２，Ｍ（２，１）＝１，Ｍ（２，２）＝０，Ｍ（２，３）＝０，Ｍ（３，１）＝０，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図１３である。図１３（ａ）は移動前後の配列Ｍの状態，図１３（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００５６】
また図９でユーザが選択したブロックが（ｉ，ｊ）＝（１，２）であり，右方向に１つ移動（（ｘ，ｙ）＝（１，０））させるとする。
【００５７】
そうすると，この場合，ブロック移動処理部１３は，移動方向が左右方向なので（Ｓ３２０），配列Ｘ（１，１），Ｘ（１，２），Ｘ（１，３）に対してそれぞれ，Ｍ（１，１），Ｍ（１，２），Ｍ（１，３）の値を代入する（Ｓ３５０）。すなわちＸ（１，１）＝０，Ｘ（１，２）＝１，Ｘ（１，３）＝２を代入する。
【００５８】
そしてブロック移動処理部１３は，移動方向が右方向（正方向）であるから，カウンタｂ＝１からｂ＝ｎ（ｎ＝３）になるまで，Ｓ３６０の処理を繰り返す。すなわちまずカウンタｂには初期値１を代入し，Ｍ（１，１）＝Ｘ（１，３）＝２を代入する。そしてカウンタｂをインクリメントしてＭ（１，２）＝Ｘ（１，２−１）＝Ｘ（１，１）＝０を代入する。そしてカウンタｂをインクリメントしてＭ（１，３）＝Ｘ（１，３−１）＝Ｘ（１，２）＝１を代入する。これによって，新しい配列Ｍは，Ｍ（１，１）＝２，Ｍ（１，２）＝０，Ｍ（１，３）＝１，Ｍ（２，１）＝２，Ｍ（２，２）＝０，Ｍ（２，３）＝０，Ｍ（３，１）＝１，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図１４である。図１４（ａ）は移動前後の配列Ｍの状態，図１４（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００５９】
また図９でユーザが選択したブロックが（ｉ，ｊ）＝（２，２）であり，左方向に１つ移動（（ｘ，ｙ）＝（−１，０））させるとする。
【００６０】
そうすると，この場合，ブロック移動処理部１３は，移動方向が左右方向なので（Ｓ３２０），配列Ｘ（２，１），Ｘ（２，２），Ｘ（２，３）に対してそれぞれ，Ｍ（２，１），Ｍ（２，２），Ｍ（２，３）の値を代入する（Ｓ３５０）。すなわちＸ（２，１）＝２，Ｘ（２，２）＝０，Ｘ（２，３）＝０を代入する。
【００６１】
そしてブロック移動処理部１３は，移動方向が左方向（負方向）であるから，カウンタｂ＝１からｂ＝ｎ（ｎ＝３）になるまで，Ｓ３６０の処理を繰り返す。すなわちまずカウンタｂには初期値１を代入し，Ｍ（２，１）＝Ｘ（２，１＋１）＝Ｘ（２，２）＝０を代入する。そしてカウンタｂをインクリメントしてＭ（２，２）＝Ｘ（２，２＋１）＝Ｘ（２，３）＝０を代入する。そしてカウンタｂをインクリメントしてＭ（２，３）＝Ｘ（２，１）＝２を代入する。これによって，新しい配列Ｍは，Ｍ（１，１）＝２，Ｍ（１，２）＝０，Ｍ（１，３）＝１，Ｍ（２，１）＝０，Ｍ（２，２）＝０，Ｍ（２，３）＝２，Ｍ（３，１）＝１，Ｍ（３，２）＝０，Ｍ（３，３）＝０，となる。これを模式的に示すのが図１５である。図１５（ａ）は移動前後の配列Ｍの状態，図１５（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００６２】
以上のような処理を実行することで，ユーザが選択したブロックのスワイプ操作に従って，ブロックを移動する処理を行える。
【００６３】
このようにして移動処理を実行後，一致判定処理部１４は，正解（元の状態（図６（ａ）の状態））と一致するかを判定する（Ｓ１７０）。すなわち，一致判定処理部１４は，配列Ｍと配列Ａのそれぞれの値を比較し，すべての値が一致する場合に正解と判定する。上述の場合にはそれぞれ一致しないので，次のブロック操作の検出を待機し，上述の処理を反復することとなる。
【００６４】
一方，一致判定処理部１４におけるＳ１７０の判定の結果，正解と一致した場合には，ゲーム制御処理部１０は，図１６に示すクリア画面を表示装置７２に表示する（Ｓ１８０）。そして，ユーザが次のパズルを楽しみたい場合には，図１６のクリア画面における「次へ」の選択を受け付けることで，まだそのレベルのパズルがすべてクリアしていなければ（Ｓ１９０），ゲーム制御処理部１０は次のパズルを自動的に選択し，問題生成処理部１１がＳ１３０における問題の生成処理を実行する。
【００６５】
一方，そのレベルのパズルがすべてクリアしていれば（Ｓ１９０），ゲーム制御処理部１０は，たとえば図１７に示すレベルのクリア画面を表示装置７２に表示する（Ｓ２００，Ｓ２１０）。そして，ユーザが次のレベルのパズルを楽しみたい場合には，図１７のレベルのクリア画面における「次へ」の選択を受け付けることで，ゲーム制御処理部１０が次のレベルのパズルの一覧を，記憶装置７１のパズル情報記憶部７１１から抽出して表示する（Ｓ１１０）。たとえばレベル１が終了したのであれば，レベル２のパズルの一覧を抽出して表示する。この状態を示すのが図１８に示す画面である。
【００６６】
もし最終レベルまですべてのパズルを終了したのであれば（Ｓ２００），ゲーム制御処理部１０は，図１９に示すようなゲームのクリア画面を表示装置７２に表示する（Ｓ２２０）。
【００６７】
なお，上述のブロック移動処理部１３におけるブロックの移動処理としては，図１０の処理を示したが，１回のスワイプの操作で複数のマス目を移動可能な場合，たとえば図２０に示すフローチャートの処理を用いることもできる。この場合の処理を以下に説明する。
【００６８】
パズルの元の状態が図６（ａ）の状態で，そこから図１１の状態に変形されていたとする。
【００６９】
まずユーザが図９のゲーム画面において，移動させるブロックを選択し上下左右方向にスワイプすると，その操作をブロック操作検出処理部１２が検出をする（Ｓ１５０）。そうすると，ブロック操作検出処理部１２は，選択されたブロックの位置とその移動方向を検出する（Ｓ４００，Ｓ４１０）。
【００７０】
ここでユーザが選択したブロックが（ｉ，ｊ）＝（１，１）であり，下方向に２マス移動（（ｘ，ｙ）＝（０，２））させるとする。
【００７１】
そうすると，ブロック移動処理部１３は，ブロックの移動処理を実行する。上述の場合，ブロック移動処理部１３は，移動方向が上下方向でかつ正方向なので（Ｓ４２０，Ｓ４３０），配列Ｘ（１，１），Ｘ（２，１），Ｘ（３，１）に対してそれぞれ，Ｍ（１，１），Ｍ（２，１），Ｍ（３，１）の値を代入する（Ｓ４５０）。すなわちＸ（１，１）＝０，Ｘ（２，１）＝２，Ｘ（３，１）＝１を代入する。
【００７２】
そしてブロック移動処理部１３は，カウンタａ＝１からａ＝ｍ（ｍ＝３）になるまで，Ｓ４６０の処理を繰り返す。すなわちまずカウンタａには初期値１を代入し，Ｍ（１，１）＝Ｘ（３−｜１−２｜，１）＝Ｘ（２，１）＝２を代入する。そしてカウンタａをインクリメントしてＭ（２，１）＝Ｘ（３−｜２−２｜，１）＝Ｘ（３，１）＝１を代入する。そしてカウンタａをインクリメントしてＭ（３，１）＝Ｘ（３−２，１）＝Ｘ（１，１）＝０となる。これによって，新しい配列Ｍは，Ｍ（１，１）＝２，Ｍ（１，２）＝１，Ｍ（１，３）＝２，Ｍ（２，１）＝１，Ｍ（２，２）＝０，Ｍ（２，３）＝０，Ｍ（３，１）＝０，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図２１である。図２１（ａ）は移動前後の配列Ｍの状態，図２１（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００７３】
また図９でユーザが選択したブロックが（ｉ，ｊ）＝（３，３）であり，上方向に２つ移動（（ｘ，ｙ）＝（０，−２））させるとする。
【００７４】
そうすると，この場合，ブロック移動処理部１３は，移動方向が上下方向でかつ負方向なので（Ｓ４２０，Ｓ４３０），まず負方向を正方向に変換する（Ｓ４４０）。すなわちｙ＝ｍ−｜ｙ｜の処理を実行する。ここではｙ＝−２なので，ｙ＝１とする。
【００７５】
つぎに，正方向に変換した後，ブロック移動処理部１３は，配列Ｘ（１，３），Ｘ（２，３），Ｘ（３，３）に対してそれぞれ，Ｍ（１，３），Ｍ（２，３），Ｍ（３，３）の値を代入する（Ｓ４５０）。すなわちＸ（１，３）＝２，Ｘ（２，３）＝０，Ｘ（３，３）＝０を代入する。
【００７６】
そしてブロック移動処理部１３は，カウンタａ＝１からａ＝ｍ（ｍ＝３）になるまで，Ｓ４６０の処理を繰り返す。すなわちまずカウンタａには初期値１を代入し，Ｍ（１，３）＝Ｘ（３−｜１−１｜，３）＝Ｘ（３，３）＝０を代入する。そしてカウンタａをインクリメントしてＭ（２，３）＝Ｘ（２−１，３）＝Ｘ（１，３）＝２を代入する。そしてカウンタａをインクリメントしてＭ（３，３）＝Ｘ(３−１，３）＝Ｘ（２，３）＝０となる。これによって，新しい配列Ｍは，Ｍ（１，１）＝０，Ｍ（１，２）＝１，Ｍ（１，３）＝０，Ｍ（２，１）＝２，Ｍ（２，２）＝０，Ｍ（２，３）＝２，Ｍ（３，１）＝１，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図２２である。図２２（ａ）は移動前後の配列Ｍの状態，図２２（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００７７】
また図９でユーザが選択したブロックが（ｉ，ｊ）＝（１，１）であり，右方向に２つ移動（（ｘ，ｙ）＝（２，０））させるとする。
【００７８】
そうすると，この場合，ブロック移動処理部１３は，移動方向が左右方向でかつ正方向なので（Ｓ４２０，Ｓ４７０），配列Ｘ（１，１），Ｘ（１，２），Ｘ（１，３）に対してそれぞれ，Ｍ（１，１），Ｍ（１，２），Ｍ（１，３）の値を代入する（Ｓ４９０）。すなわちＸ（１，１）＝０，Ｘ（１，２）＝１，Ｘ（１，３）＝２を代入する。
【００７９】
そしてブロック移動処理部１３は，カウンタｂ＝１からｂ＝ｎ（ｎ＝３）になるまで，Ｓ５００の処理を繰り返す。すなわちまずカウンタｂには初期値１を代入し，Ｍ（１，１）＝Ｘ（１，３−｜１−２｜）＝Ｘ（１，２）＝１を代入する。そしてカウンタｂをインクリメントしてＭ（１，２）＝Ｘ（１，３−｜２−２｜）＝Ｘ（１，３）＝２を代入する。そしてカウンタｂをインクリメントしてＭ（１，３）＝Ｘ（１，３−２）＝Ｘ（１，１）＝０を代入する。これによって，新しい配列Ｍは，Ｍ（１，１）＝１，Ｍ（１，２）＝２，Ｍ（１，３）＝０，Ｍ（２，１）＝２，Ｍ（２，２）＝０，Ｍ（２，３）＝０，Ｍ（３，１）＝１，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図２３である。図２３（ａ）は移動前後の配列Ｍの状態，図２３（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００８０】
また図９でユーザが選択したブロックが（ｉ，ｊ）＝（２，３）であり，左方向に２つ移動（（ｘ，ｙ）＝（−２，０））させるとする。
【００８１】
そうすると，この場合，ブロック移動処理部１３は，移動方向が左右方向でかつ負方向なので（Ｓ４２０，Ｓ４７０），まず負方向を正方向に変換する（Ｓ４８０）。すなわちｘ＝ｎ−｜ｘ｜の処理を実行する。ここではｘ＝−２なので，ｘ＝１とする。
【００８２】
つぎに，正方向に変換した後，ブロック移動処理部１３は，配列Ｘ（２，１），Ｘ（２，２），Ｘ（２，３）に対してそれぞれ，Ｍ（２，１），Ｍ（２，２），Ｍ（２，３）の値を代入する（Ｓ４９０）。すなわちＸ（２，１）＝２，Ｘ（２，２）＝０，Ｘ（２，３）＝０を代入する。
【００８３】
そしてブロック移動処理部１３は，カウンタｂ＝１からｂ＝ｎ（ｎ＝３）になるまで，Ｓ５００の処理を繰り返す。すなわちまずカウンタｂには初期値１を代入し，Ｍ（２，１）＝Ｘ（２，３−｜１−１｜）＝Ｘ（２，３）＝０を代入する。そしてカウンタｂをインクリメントしてＭ（２，２）＝Ｘ（２，２−１）＝Ｘ（２，１）＝２を代入する。そしてカウンタｂをインクリメントしてＭ（２，３）＝Ｘ（２，３−１）＝Ｘ（２，２）＝０を代入する。これによって，新しい配列Ｍは，Ｍ（１，１）＝０，Ｍ（１，２）＝１，Ｍ（１，３）＝２，Ｍ（２，１）＝０，Ｍ（２，２）＝２，Ｍ（２，３）＝０，Ｍ（３，１）＝１，Ｍ（３，２）＝０，Ｍ（３，３）＝０となる。これを模式的に示すのが図２４である。図２４（ａ）は移動前後の配列Ｍの状態，図２４（ｂ）は移動前後の配列Ｍに基づいてパズルで表示した場合の状態である。
【００８４】
以上のような処理を実行することで，ユーザが選択したブロックを２マス以上ずつ移動させられる場合であっても，ブロックの移動処理が行える。
【００８５】
なお，図１０および図２０のブロックの移動処理は一例であり，ほかの処理であっても同様に実現できる。また配列を用いて処理する場合を説明したが，ポインタを用いるなど，別の方法を用いることもできる。
【００８６】
また，記憶装置７１にパズル情報記憶部７１１を備える場合を示したが，備えなくても良い。この場合，ｍ×ｎのパズルであることに基づいて，各ブロックの色または絵柄を任意に選択し，それをｍ×ｎの任意の位置に配置することで，パズルの元の状態を生成する。そしてそこから問題生成処理部１１が問題を生成する処理を実行しても良い。この場合，色や絵柄が増えると難易度が高くなることから，難易度に応じて（たとえばレベルの値に応じて，ゲームのクリア回数に応じて），レベルの値やゲームのクリア回数が低い場合には色や絵柄の数を少なくし，難易度が高くなる（レベルの値やゲームのクリア回数が高くなる）につれ，色や絵柄の数を多くすることが好ましい。最大で，ｍ×ｎ種類の色や絵柄のパズルとすれば，すべてのブロックに異なる色や絵柄が配置されるので，もっとも難しい状態の問題を生成することができる。また，問題生成処理部１１で，ブロックを移動させる回数を増やした方が元の状態からの変化の度合いが大きくなるので，レベルの値やゲームのクリア回数に応じて，ブロックを移動させる回数を変化させても良い。
【００８７】
このような処理を設けることで，パズル作成の負担を軽減し，また難易度に応じたパズルの問題を生成することができる。
【００８８】
また別の実施態様として，問題生成処理部１１を設けなくても良い。この場合，パズル情報記憶部７１１に，元の状態となるパズルと，問題として出題するパズルの双方を記憶しておけばよい。これによって，問題生成処理部１１を不要とするので，問題生成に要する時間が不要となり，処理をより高速に行える。
【産業上の利用可能性】
【００８９】
本発明のパズルゲームプログラム１によって，高齢者であっても操作がしやすく，またなじみやすいパズルゲームを構成することができる。また，難易度を適度に保つことができることから，高齢者の興味を惹きつけることができる。
【符号の説明】
【００９０】
１：パズルゲームプログラム
１０：ゲーム制御処理部
１１：問題生成処理部
１２：ブロック操作検出処理部
１３：ブロック移動処理部
１４：一致判定処理部
７０：演算装置
７１：記憶装置
７２：タッチパネル式表示装置
７３：通信装置
７１１：パズル情報記憶部
【図１】
2014061042.tif 000003
【図２】
2014061042.tif 000004
【図３】
2014061042.tif 000005
【図４】
2014061042.tif 000006
【図５】
2014061042.tif 000007
【図６】
2014061042.tif 000008
【図７】
2014061042.tif 000009
【図８】
2014061042.tif 000010
【図９】
2014061042.tif 000011
【図１０】
2014061042.tif 000012
【図１１】
2014061042.tif 000013
【図１２】
2014061042.tif 000014
【図１３】
2014061042.tif 000015
【図１４】
2014061042.tif 000016
【図１５】
2014061042.tif 000017
【図１６】
2014061042.tif 000018
【図１７】
2014061042.tif 000019
【図１８】
2014061042.tif 000020
【図１９】
2014061042.tif 000021
【図２０】
2014061042.tif 000022
【図２１】
2014061042.tif 000023
【図２２】
2014061042.tif 000024
【図２３】
2014061042.tif 000025
【図２４】
2014061042.tif 000026