FLASHでピクロス(お絵かきロジック、イラストロジック、ノノグラム)のパソコン用ゲームの作り方とは?

このQ&Aのポイント
  • FLASHでピクロス(お絵かきロジック、イラストロジック、ノノグラム)のパソコン用ゲームを作りたいですが、作り方がわかりません。
  • 簡単なものでも構いませんので、ピクロスの作り方を教えてください。
  • ActionScript2.0を使用して作れるものでお願いします。
回答を見る
  • ベストアンサー

FLASHでピクロス(お絵かきロジック、イラストロジック、ノノグラム)

FLASHでピクロス(お絵かきロジック、イラストロジック、ノノグラム)のパソコン用ゲームを作りたいのですが、作り方がまったくわからず困っております。 凝ったものでなくでも簡単なもので結構ですので、作り方を教えていただけたら嬉しいです。よろしくお願い致します。 ActionScript2.0を使用して作れるものでお願い致します。 現在、間違い探し・シューティングなどの簡単なゲームは作れるのですが、ピクロスとなるとまったくわからず…。 http://tonakai.aki.gs/picturelogic/ ちなみにこちらのサイトさまのようなゲームは理想ですが、作れないと思いますのでもっと簡単にしたもので結構です。(マウスを置いた場所の縦・横の線に色がつく→つかない、時間カウントなし等) よろしくお願い致します。

noname#116462
noname#116462
  • Flash
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

#1、2です。 #1のスクリプトに誤りがありました。 function Game_Judge 内の  > for( j = i ; ( j < row ) && ( judge == 1 ) ; j++ ) は、正しくは  for( j = 0 ; ( j < row ) && ( judge == 1 ) ; j++ ) ( ↑ j の初期値は、i ではなく 0 ) でした。 失礼いたしました。 この場をお借りしまして、訂正させていただきます。 それから、#2で正誤判定の話が分かりにくくなってしまったのですが。 要するに、配列変数で持っている絵のデータと、対応するマスの状態(=フレームの番号)を照合し、正解であれば変数 judge に 1 が、誤りであれば 0 が入ります。そういう、おまじないの式だと思ってくださっても構いません。 ビット演算につきましては、興味がありましたら解説サイトなどで調べてみてください。いろいろなことに使える、便利な演算です。

noname#116462
質問者

お礼

お返事が遅くなり、申し訳ございません。 ご親切なご回答どうもありがとうございました!無事作成することができました! わかりやすく書いていただきとても助かりました。 本当にありがとうございました…!!

その他の回答 (2)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

#1の解説です。 次のような絵を描くとします。  ■ ■ □ □ ■ ■  □ □ ■ ■ □ □ 空白の□を 0 、塗りつぶす■を 1 に置き換えると、この絵は  1 1 0 0 1 1  0 0 1 1 0 0 と表せます。 縦と横の、表のような並び方にも注目してください。2次元配列で表わせそうですね。 * * * マスは1つずつムービークリップを配置します。 フレームに□・■・×の絵を描いておくと、このムービークリップはどんな状態を表す絵にも化けられます。 見た目のことだけでなく、現在のフレームを見ると、マスが塗りつぶされているのかどうかも判断できます。 このようにして作ったムービークリップを、必要なマスの数だけ配置します。 名前は、固定の名前(サンプルでは cell )に、配列変数のインデックスに合わせた番号を付けて命名します。例えば、左上のマスは cell00 です。 これで、cell+列+行というように変数を使って参照できる上、配列変数との関連も持たせることができます。 なお、マスは数が多いため、canvas という別のムービークリップを作ってその子にしています。 問題を付ける時も数字のマスが多くなりますから、縦と横で1つのムービークリップにまとめておくと、位置を決める時に便利です。 * * * 絵が完成したかどうかは、配列変数と対応するマスのフレームを照合して調べます。 配列変数で 1 のところはフレーム2、0 のところはフレーム1か3になっていれば正解で、全てのマスが正解ならクリア、1つでも誤りがあればミスです。 #1のサンプルでは、この判定を  judge = ( dot_data[ i ][ j ] ^ check_data ) & 1; というビット演算で行っています。 ビット演算は2つの2進数を1桁ずつ見て、両者の関係で 0 または 1 が決まる演算です。 ムービークリップの絵を□→■→×の順に描くには理由があります。 それぞれのフレームの番号を2進数に直すと、この3つは 01 ・ 10 ・ 11 と表せます。ゲームでの特性が似ている□と×は実は、フレーム番号を2進数で表すと下1桁が 1 であるという、隠れた共通点もあるのです。 ビット演算の詳細はよそに譲りまして、簡単に言いますと、^ ( XOR )は片方だけが 1 であれば 1 、それ以外は 0 になる演算です。 それから、今回は下1桁しか必要ないので、1 で & ( AND )を取って下1桁だけを取り出します。 すると、絵のデータの 1 (塗りつぶす)と■のフレーム番号 2、絵のデータ 0 (塗りつぶさない)と□・×のフレーム番号 1 または 3 とでは、1 という結果を得ることができます。 しかし、■のところを□や×にしたり、□のところを■にした時は 0 になります。 この特性を利用して、各マスと絵のデータを照合します。 基本的には for ループを二重にして全部調べるのですが、誤りが見つかった時はその時点で打ち切るようなループを考えます。 ActionScript の for は、2番目の条件が成立している間だけループが継続する仕組みです。 正誤を保持する変数(サンプルでは judge )を1つ用意して、全部調べるほかに「この変数が 1 である間」という条件を加えます。 先のビット演算で調べた結果を judge に入れます。judge が 1 である、つまり正解である時はループが継続して次のマスを調べますが、0 (誤り)だった場合は継続条件が不成立になってループが打ち切られます。 従って、ループが終了した時、judge が 1 のままなら全部正解で最後のマスまでチェックされ、0 であればどこかに誤りがあって中断されたということになります。 あとはループの後でこの judge の値を見て、クリアもしくはミスの処理を行えばいいわけです。 - - - - - 今回は問題の表示や自動作成の部分まではご紹介できませんが。 絵のデータを 1 と 0 にして2次元配列変数で持つと、縦または横方向に 1 がいくつ連続しているかを調べることも容易になります。 自動作成は 1 が連続する数を変数に控えておき、1列もしくは1行単位でまとめて1つのヒントにする、といった方法になるかと思います。 自動作成のプログラムは難しいので、まずはスクリプトで固定の問題データを用意し、問題の表示とその通りに正誤を判定する作品あたりから始めてみてはいかがでしょう。

  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

問題はひとまず置いて、クリックでマスを塗りつぶし、絵のデータと一致していればクリアと判定するサンプルをご紹介します。 ( Flash Player 7 以降、ActionScript 1.0 / 2.0 ) 【操作方法】 マスをクリックするごとに□→■→×と切り替わり、×の次は□に戻ります。 判定ボタンを押すたびに正誤を判定します。  ■ ■ □ □ ■ ■  □ □ ■ ■ □ □ このように塗りつぶすとクリアです。×は□と同じ扱いになります。 1箇所でも誤りがある場合はクリアになりません。 【作例】 20 × 20 の□・■・×の順に1フレームごとに絵を描いたムービークリップを作り、リンケージ( ID は” CELL ”)を設定します。 ステージに判定ボタンを配置し、インスタンス名を” judge_btn ”と付けます。 次のスクリプトをメインのタイムラインのフレーム1に記述して、プレビューで動作を確認してみてください。 (↓ 各行頭に全角のスペースが入っています。コピーする際はご注意ください) //* * *  /*   初期設定  */  //絵のデータ  dot_data = new Array();  dot_data =  [   [ 1 , 1 , 0 , 0 , 1 , 1 ],   [ 0 , 0 , 1 , 1 , 0 , 0 ]  ];  //キャンバスのセル数とマス1つあたりの大きさ  row = dot_data[ 0 ].length;  col = dot_data.length;  cell_w = 20;  cell_h = 20;  //キャンバスを作り、仮に(100,50)に配置  base = this.createEmptyMovieClip( "canvas" , this.getNextHighestDepth() );  base._x = 100;  base._y = 50;  /*   塗りつぶしと終了判定  */  function Put_Dot()  {   //クリックするごとにフレームを進め、□→■→×の順に切り替える   //×の次は□に戻る   this.gotoAndStop( ( this._currentframe % 3 ) + 1 );  }  function Game_Judge()  {   var i , j , judge;   var check_data;   //絵のデータとマスの状態を照合   //誤りが見つかったら処理を打ち切る   judge = 1;   for( i = 0 ; ( i < col ) && ( judge == 1 ) ; i++ )   {    for( j = i ; ( j < row ) && ( judge == 1 ) ; j++ )    {     check_data = base[ "cell" + i + j ]._currentframe;     judge = ( dot_data[ i ][ j ] ^ check_data ) & 1;    }   }   //ループ終了後もjudgeが1ならクリア、0の場合はミス   if( judge == 1 )   {    trace( "クリア!!" );   }   else   {    trace( "ミス!!" );   }  }  /*   マスを配置する関数  */  function Cell_SetUp()  {   var i , j;   var clip_name;   var clip;   for( i = 0 ; i < col ; i++ )   {    for( j = 0 ; j < row ; j++ )    {     //列と行の数だけマスを配置     clip_name = "cell" + i + j;     clip = base.attachMovie( "CELL" , clip_name , base.getNextHighestDepth() );     clip._x = cell_w * j;     clip._y = cell_h * i;     //クリックした時の処理     clip.onRelease = Put_Dot;    }   }  }  /*   マスの配置と、判定ボタンの設定  */  Cell_SetUp();  judge_btn.onRelease = Game_Judge; //* * * 字数制限の都合上、説明は次の回答でいたします。

関連するQ&A

  • actionscript3.0でイラストロジック

    FLASHのactionscript3.0でイラストロジックを作成してみたいと思い、下記のサイト様を参考にして作ってみようと思ったのですが、「1180:未定義である可能性が高いメソッドflagStateの呼び出しです。」のエラーが出てしまいます。 まだactionscriptを始めたばかりで、どのようにすればいいかまったく分かりません。わかる方がいましたら教えて下さい。よろしくお願いします。 http://achardesignagency.blog12.fc2.com/blog-entry-44.html

    • ベストアンサー
    • Flash
  • こんなことは可能でしょうか?

    フラッシュで簡単なシューティングゲームを作りたいのですが、作り方の説明が載っているサイトありませんか? というかフラッシュでシューティングゲームとかって簡単でしょうか? まぁとにかくフラッシュ上でマウスを使った何かをしたいと考えているので、マウス操作に関することが書いてあるサイトを教えてください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ピクロスとイラストロジック

    DSのソフト 「ピクロス」と「イラストロジック」の購入を考えているんですが、どちらが良いのか本当に迷っています。 自分の今まで調べた意見を参考にさせてもらうと ピクロス・・・操作が不便       自作ロジックができる Wi-Fi 通信 イラストロジック・・・操作が楽?           結構難しい問題がある。 最大の迷い点は 操作が楽な方:Wi-Fi です。 是非皆さんの見解を聞きたいと思います。 どっちがオススメなのか。 ご自分が持っているソフトの良いところ、悪いところそれぞれ教えてほしいです。 皆さん宜しくお願いします。

  • Flashウィンドウ内におけるマウスポインタの移動速度を遅くするには?

    最近、Flashの勉強を始めたばかりです。ソフトは「Flash CS3 Pro」を使っております。 ソフトの使い方も覚えてようやく慣れてきたので,なにか作品を作りながらActionScriptについても覚えていきたいと思いました。 そこで質問はタイトルの通りなのですが、Flashウィンドウ内におけるマウスポインタの移動速度を遅くするには、どのように記述すればよいのでしょうか?(AS2またはAS3でお願いします。) 具体的に作りたいものは、普通のマウスを利用したペンタブレットのようなものです。 理想は、手元マウスでの作業スペースを指定して(例えば、縦50cm×横50cm のように)、座標変換でFlashウィンドウサイズと相対させたいです。 これだと質問内容と変わってきてしまうかもしれませんが、こちらの回答も頂けると嬉しいです。 色々と本やネットで探してみたのですが、期待する情報が得られなかったので、ここに質問させていただきました。 みなさん、どのような意見でも構いませんので、回答よろしくお願いいたします!

  • Flashでのマウスの位置に合わせてスクロール。

    作業環境 PC : Windows7 Flash : Flash8 Actionscript : 2.0 困っています。 Flashの制作でマウスの位置に反応して左右にスクロールするのもを作りたいのですが、マウスに反応はしてくれても、画像のループ処理がうまくいかず、画像が途切れてしまいます。 ■参考にしているサイト http://acchan.s55.xrea.com/flash/scroll_menu/0501/scroll_menu0501b.html 僕が作ろうとしている状況は、下記の通りです。 ・ステージサイズ1160pxで、高さは223px ・スクロールする画像の全体での長さは3240px ・スクロールする画像は各ボタンになっていて、180pxが18個並んでいます。 理想としては、マウスの位置に合わせて、画像が両サイドに永久ループし、マウスオーバーしている画像は、その画像のリンク先に飛ばせるようにしたいのです。 どうかお力おお貸しください。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • FLASHゲームには、FLEXとFLASHどちらがいい?

    webプログラマです。(主にPHP,ajax) FLASHで簡単なゲームを作ってみたいと思いました。 まだ調べてる段階で、わからないところがわからない状態です。。 一番わからないのが、FLEXとFLASHの違いでいまいちピンときません。 FLEXは、MXMLでのコードベースでの作成、FLASHはGUIでの作成といった感じなのでしょうか? いろいろと見てると、FLEXはプログラマ向けといったことが書いてあるのですが、 個人的には、コードベースよりも見た目で作れるFLASHの方が分かりやすいじゃないかと思ってしまうのですが。。 ActionScriptについては、FLASHでもFLEXでもコード書くことには違いないみたいですが。 一応、FLEXはFLASHから派生したようなものというイメージがあるので、 FLASHで始めて、ActionScriptを混ぜていく方向で実装してみようかと思うのですが、どうでしょうか。 ある程度分かってきた段階でFLEXの利点とかもわかってくるかなと思ってます。 それと、簡単なゲームというのは、ソーシャルアプリにあるようなものです。 例えば、○×クイズとかそういったライトな感じのものを考えてます。 この場合、クイズの質問文をサーバーに取りにいくということと、 ユーザーの回答をサーバーに保存するといった通信を行いたいです。 この処理はActionScriptで行うことになると思いますが、 FLEXでもFLASHでも可能という認識でよろしいでしょうか。 こういった簡単なゲームは、FLASHじゃなくとも PHP+ajaxで作れてしまうわけで、その方向であれば実装方法とか頭に浮かぶんですが、 FLASHはいままで触ったことなく、頭の中に「?」がいっぱいの状態です。 ご教示、ご指南お願い致します。

    • ベストアンサー
    • Flash
  • flash  ドラッグでの細かい移動制限

    お世話になります。flashとactionscriptの初心者です。 マウスでオブジェクトをドラッグしたとき、そのオブジェクトが別のオブジェクト(壁)をすり抜けないようにするための方法を探しています。(手書き絵を参照ください)。 作りたいものは、オブジェクトをドラッグして迷路を進ませるようなイメージです。 「オブジェクトをドラッグで動かして、壁に当たるとゲームオーバー」のような迷路のゲーム(イライラ棒みたいなもの)はたくさん見つかるのですが、自分が作りたいのは「壁に当たったらその場で止まる」「その場から(何事もなかったのように)ドラッグし直して動かせる」というものです。時間をかけて調べたり探したりしてみたのですが分からず途方に暮れています。 actionscriptは2.0での作成で考えていますが、3.0でもかまいません。初心者で質問の仕方もわかりにくく申し訳ないのですが、どうぞご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • フラッシュメニューの作成

    こんにちは、ホームページにフラッシュメニューをつけたいです。 ボタンの上にマウスを持ってくるとサブメニューが表示されるやつです。無料の素材だと大きさが合わず、拡大すると変になってします・・。ですので、自分で作ろうと思うのですが、どなたか作り方を教えて頂けませんか?FLASH MAKER3なら持っているのですが、その他簡単に作れるソフトがあれば教えて下さい。メニューは縦です。ボタンを押すと表示されるのではなく、マウスを持ってきた時だけ表示させ、そのサブにもリンクをはりたいです。すみませんが、よろしくお願い致します!!!!

  • flash画像の再生・ボタンによる切り替え

    初めて質問させていただきます。 flash初心者です。 CS5、ActionScript3.0で作成しております。 http://www.united-arrows.jp/ こちらのサイトのトップページにあるようなものを、flashで作成しようと考えております。 5枚の画像を順番に再生し、フェードインしながら切り替わり、また、5枚の画像に対応する5つのボタンのマウスオーバーに反応するようなものです。 上記サイトのように、表示していた画像を残しながらフェードインで切り替えとなると、重ね順の変更などが必要になってくるかと思われますが、初心者なものでActionScriptに関しての知識もほとんどなく、ネットや書籍で調べてはみたのですが全くわからず大変困っております。 どうか宜しくお願い致します。

    • ベストアンサー
    • Flash
  • オススメの携帯ゲーム(J-SH52)

    J-SH52(または53)で出来るオススメの携帯ゲームがあれば教えて下さい。 月額使用料がかからないもので、できれば100~200円位でダウンロードできて何度でもできるタイプのものがいいです。 今までしていたゲームは、テトリス・お絵かきロジック・遊々麻雀・花鳥風月(花札)・ZOOOなどです。 アクション・シューティングとかよりも、パズル・カードゲームっぽいのが好みです。 よろしくお願いします(^^)