※修正しました(2014/5/31 20:59)
(致命的なバグを見落としていました。if文内のboolが逆でした)
※修正しました(2014/6/1 14:31)
※修正しました(2014/6/1 14:44)
※修正しました(2014/6/1 17:20)
カスタマイザブルな15パズル
カスタマイザブルな15パズル
- 添付ファイル
-
- main.cpp
- Revision 4
- (22.88 KiB) ダウンロード数: 365 回
-
- 15puzzle.zip
- Revision 4
- (4.26 MiB) ダウンロード数: 365 回
最後に編集したユーザー elle on 2014年6月01日(日) 17:23 [ 編集 4 回目 ]
Re: カスタマイザブルな15パズル
文章が投稿できてなかったので…(内容が長いと投稿できない?)
15パズルを作ってみました。
主なFeatureは次の通りです。
・画像(bmp|jpeg|jpg|png|dds|argb|tga)をドラッグアンドドロップするとその画像でゲームができます。
・フォルダをドラッグアンドドロップすると、フォルダ内からのランダムになります(奥の階層も含めます)。
・音声ファイル(wav|mp3|ogg)をドラッグアンドドロップすると移動音がその音になります。
・これもファルダをドラッグアンドドロップすると、そのフォルダ内からランダムで移動音として再生されます。
・Rキーを押すと同じ配置で、Nキーを押すと別の配置でやり直すことができます。
・これらの設定をデフォルトに戻したいときは0キーを押します。
・クリア後にSキーを押すと配置と移動回数・経過時間が記録された.txtファイルが出力、
そのファイルをドラッグアンドドロップすることで同じ配置を再現してプレーできます。
(追加)・矢印キーでも操作できます。
(追加)・Iキーを押すと各画像の上に位置番号が表示されます。押すたびに、黒→白→なしとループします。
感じたこと
・stringstream便利。「std::string(ss.str()).c_str()」でchar*として渡せるのに気付いたのが最大の収穫。
・練習のためにfilesystemを使ったが、毎回basic_pathに直すのが面倒。しかしoperator/のオーバーロードはなるほどと思った。
・バイナリでint型を格納するのに毎回reinterpret_castが必要なのが面倒。しかもこれバイトオーダー違う環境だと上手く動かないような…。
15パズルを作ってみました。
主なFeatureは次の通りです。
・画像(bmp|jpeg|jpg|png|dds|argb|tga)をドラッグアンドドロップするとその画像でゲームができます。
・フォルダをドラッグアンドドロップすると、フォルダ内からのランダムになります(奥の階層も含めます)。
・音声ファイル(wav|mp3|ogg)をドラッグアンドドロップすると移動音がその音になります。
・これもファルダをドラッグアンドドロップすると、そのフォルダ内からランダムで移動音として再生されます。
・Rキーを押すと同じ配置で、Nキーを押すと別の配置でやり直すことができます。
・これらの設定をデフォルトに戻したいときは0キーを押します。
・クリア後にSキーを押すと配置と移動回数・経過時間が記録された.txtファイルが出力、
そのファイルをドラッグアンドドロップすることで同じ配置を再現してプレーできます。
(追加)・矢印キーでも操作できます。
(追加)・Iキーを押すと各画像の上に位置番号が表示されます。押すたびに、黒→白→なしとループします。
感じたこと
・stringstream便利。「std::string(ss.str()).c_str()」でchar*として渡せるのに気付いたのが最大の収穫。
・練習のためにfilesystemを使ったが、毎回basic_pathに直すのが面倒。しかしoperator/のオーバーロードはなるほどと思った。
・バイナリでint型を格納するのに毎回reinterpret_castが必要なのが面倒。しかもこれバイトオーダー違う環境だと上手く動かないような…。
最後に編集したユーザー elle on 2014年6月01日(日) 17:26 [ 編集 1 回目 ]
Re: カスタマイザブルな15パズル
ソースコードを埋め込もうと思ったらやはり投稿できないようなので添付にしました。
(追記)一番上のトピックにまとめました。不慣れですみません。
しかし200行くらいの予定がどんどん追加されていってGodClassになってしまった…。
少なくともkeyとmouseくらいは分けた方が良かったかもしれないですね。
(追記)一番上のトピックにまとめました。不慣れですみません。
しかし200行くらいの予定がどんどん追加されていってGodClassになってしまった…。
少なくともkeyとmouseくらいは分けた方が良かったかもしれないですね。
Re: カスタマイザブルな15パズル
- Puzzle15クラスはNoncopyableというよりSingletonでは?
- sealed はC++/CLIのキーワードなので、C++11なら final を使うべき
- 正規表現よりはbasic_path::extensionをつかって比較したほうが良いような気がする
- セーブデータはテキストにしたほうが普通のエディタでもそのまま閲覧できて便利
- NaturalPow関数に再帰を使う理由がよくわからない、負の指数を入れると無限ループになる
Re: カスタマイザブルな15パズル
移動音を指定していない状態だと、移動するたびに「move soundの再生に失敗しました」というダイアログが出ました。
わざわざ移動音を用意しなくても、無音で普通にプレイできるようになるとさらにいいと思います。
あと、矢印キーでも移動操作ができると嬉しいです。
さらに、終了してもう一度プレイしようとしたところ、OS標準の「動作を停止しました」という表示が出て強制終了になりました。
画像ファイルをexeファイルにドロップした場合は
「clear soundが見つかりません」「shuffle soundが見つかりません」と出たあと、強制終了します。
一度解凍した15puzzleフォルダを消して再解凍しても、強制終了を回避できませんでした。
DLしたzipファイルのMD5は8C8BC3459FAABBB08C6FA8BABD6EA41Dです。
Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
わざわざ移動音を用意しなくても、無音で普通にプレイできるようになるとさらにいいと思います。
あと、矢印キーでも移動操作ができると嬉しいです。
さらに、終了してもう一度プレイしようとしたところ、OS標準の「動作を停止しました」という表示が出て強制終了になりました。
画像ファイルをexeファイルにドロップした場合は
「clear soundが見つかりません」「shuffle soundが見つかりません」と出たあと、強制終了します。
一度解凍した15puzzleフォルダを消して再解凍しても、強制終了を回避できませんでした。
DLしたzipファイルのMD5は8C8BC3459FAABBB08C6FA8BABD6EA41Dです。
Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: カスタマイザブルな15パズル
>h2so5さん
ご指摘ありがとうございます。1点を除いていずれも修正しました。
>みけCATさん
プレーありがとうございます。
修正しましたので良ければご確認ください。
ご指摘ありがとうございます。1点を除いていずれも修正しました。
これについてなのですが、string_typeが返るようなので のような形になってしまうように思うのですが、やはり正規表現よりbasic_pathを使った方がいいのでしょうか…h2so5 さんが書きました:
- 正規表現よりはbasic_path::extensionをつかって比較したほうが良いような気がする
>みけCATさん
プレーありがとうございます。
こちらの機能を追加しました。矢印移動便利ですね、自分でも気が付きませんでした。みけCAT さんが書きました:移動音を指定していない状態だと、移動するたびに「move soundの再生に失敗しました」というダイアログが出ました。
わざわざ移動音を用意しなくても、無音で普通にプレイできるようになるとさらにいいと思います。
あと、矢印キーでも移動操作ができると嬉しいです。
こちらですが、プログラム内でgamesystem.datが空である場合の対処がなされていなかったためかと思われます。みけCAT さんが書きました: さらに、終了してもう一度プレイしようとしたところ、OS標準の「動作を停止しました」という表示が出て強制終了になりました。
画像ファイルをexeファイルにドロップした場合は
「clear soundが見つかりません」「shuffle soundが見つかりません」と出たあと、強制終了します。
一度解凍した15puzzleフォルダを消して再解凍しても、強制終了を回避できませんでした。
修正しましたので良ければご確認ください。
Re: カスタマイザブルな15パズル
>h2so5さん
なるほど…そのやり方は思いつきませんでした。
確かにこの方が拡張子が直感的にテーブル化できますね。
そのやり方で実装してみました。
なるほど…そのやり方は思いつきませんでした。
確かにこの方が拡張子が直感的にテーブル化できますね。
そのやり方で実装してみました。