zzzです。

 前回コンソールで作ったダメージ逆計算機が貧弱すぎたため、再びソースコードを見ざるを得ない状況となり辛かったです。そのかわり今度こそは完璧のはずです。ただ若干速度が遅すぎるのが気になります。
 が100回も一気にダメージを代入したりすると遅くなるだけで、一回のダメージの代入、検索には一秒程度だったので大丈夫なはずです。そもそも100回もダメージを受けて入力し続けるという状況があまりない気がしますが、一応有り得ますよね。1000回は流石にサポートできそうにありませんが。

 色々とバグ取りに苦悩していたため全然進行していません。そろそろスパゲッティになってきました。タブコントロールの実装はもう見たくないです。
 タブの削除と追加が思いのほか難しいです。交換のほうが楽でした。

 しかしダメージ逆計算機のほうはこれ以上無い仕上がりに。作ってみておもったのですが無意味に見えてきました。相手の能力値の特定が意外と出来ないのです。

pokeinverse4

 当たり前ですがダメージ低めで死んだ場合、出てくる選択肢が多すぎます。仕様上仕方がないですけど。
 さらにたつじんのおびと持ち物なしの区別をつけるのを諦めたり、ジュエルも諦めようかとおもったんですけど意地で何とか実装したりしました。そのせいで内部挙動が非常に重くなってしまいましたが……。

 とりあえず見た目では何も変わっていませんが色々内部は変わっています。

pokeinverse5

・F1キーで「計算」ボタンを押すように。
・「計算」ボタンを押すことで「計算結果」ページをタブに追加するように。(計算結果ページは未だ真っ白)
・タブを右クリック時ポップアップメニューを表示するように。ポップアップメニューは面倒なので画像に載っているとおり最低限の二種を実装。
・タブを削除するときのバグを修正。

 あとは計算結果ページに上画像みたいな相手の能力値を書けば終わりです。とりあえずは。
 zzzです。

 ジュエルがはてしなく面倒なことに気づきました。何がまずいかというと持ち物があったりなかったりと推移してしまうことです。

 ジュエル所持ダメージ100⇒持ち物なしダメージ66⇒持ち物なしダメージ66

 といったようなとき「持ち物:ジュエル」だけではいつジュエルを持っていたのか分からないということになります。うーん。ジュエル選択のときだけコントロールを増やすのですか?または計算を押したときにダイアログボックスを表示させて、ジュエルいつつかわれましたか?とか出すのですか?前者ですね。分かりました。

 そして前に作ったダメージ計算がどのように動いているか忘れました。ちょっと見たらとてつもないスパゲッティです。
 zzzです。

 明らかに投稿するジャンルがプログラミングではなく、ゲーム開発でした(ダメージ計算をゲーム開発といってよいのかわからないが)。間違えたことを、プログラミングでサーチしていた皆様方に深くお詫びします。

 ともかく形だけ完成しました。
pokeinverse3

 フォントを太字にするか細字にするかで迷いました。細字版がこちらです。
pokeinverse2

 あれ?細字のほうがよさそうですね?並べてみると分かることもあるのですね。細字にします。
 計算機部分はほぼ出来ているので、一週間以内に形以外でも完成しそうです。
2012.02.22 燃え尽きた
 zzzです。

 マッチ棒くん(http://yokai-tp.com/flash/match/)に絶望した。

 問3。
matti

 答えてみたがこれが正解じゃないだと……。
matti2

 正直問3が一番簡単だとおもうんだ……。
2012.02.21 金銀合戦
 zzzです。

 沈黙は金雄弁は銀。この言葉っていい加減時代に合わせて沈黙は銀雄弁は金と言う言葉に代えるべきだよね。つまり何がいいたいかと言うと、

 ギルティギア最新作が出るらしい。最もやりこんだゲームだったからうれしい。がPS3持ってないんだよなあ。そもそも最新作とはいえ調整されるかすら怪しいようだ。ネットワーク対戦は完備するようだが、ブレイブルーのつかいま

 ポケモン終わったら何をしようかなあ、と皮算用をしてしまっている段階でやばい気がする。とりあえず持ち物がジュエルの場合はてしなく鬱陶しいことになっていることは分かった。これだけは解決しないとダメだろうなあ。とはいえ何で作ったかなあ。テストランできるほど近作をやりこんでいないのだが。だれかデバッ

 (∵)ワレココクキャキャキャキャ○○
 問 ○○に当てはまる言葉を書きなさい。
 解  
こんにちは、KOMARIです。

ねこりすについてのお知らせです。

バージョン1.00を公開して以降、結構な頻度で更新を行っております。

バグをみつけたかたはご一報ください。

私自身もユーザーとしてプレイをし、バグの発見に勤しんでおります。

パズル生成速度の向上にむけて、掘木氏にDLLの改善を申し出たところです。

この場を借りて、改めて、忙しい中DLLを作成してくれた掘木氏に感謝をしたいと思います。

ちなみに私は今日やっと解禁要素をすべて出すことができました・・・いやぁしんどかったです。

ねこりすの完成度のさらなる向上にむけて一層努力していく所存です。



ところでダウンロードはこちらのホームページからできますのでお気軽にしてみてください。

http://mathyippee.web.fc2.com/

パズルを解いたり、ノーマルモードの比率短縮は結構しんどいし時間もかかりますけど達成感はほんとにあります。



特にパズルは掘木氏が5時間かかって解けなかった問題もあります



それではまた次回の記事でお会いしましょう!
 zzzです。

 ここまでやった。ただし形だけ。

pokeinverse

 コントロールをWIndowsのテーマによって変更するようにしたのだが、弊害が発生。送られてくるメッセージが違う。ちなみに私はWIndows7である。
 現在、親と子のウィンドウの関係が
 大本の親ウィンドウ⇒タブコントロール⇒スタティックコントロール⇒各種コントロール(buttonやeditbox)
 となっているのだが、クラシックテーマだとWM_CTLCOLORSTATICのメッセージがスタティックコントロールにきて、各種コントロールの背景の書き換えに成功するのだが、標準テーマだとここを書き換えても無意味でタブコントロールのWM_CTLCOLORSTATICメッセージを変更しないと、各種コントロールの背景の書き換えに成功しない。
 テーマごとに違うとかどうなってるの、としかいいようがない。さらにどっちの場面でもNULL_BRUSHが無効化される。一番ほしい設定なんだけど。
 カスタムドローでもボタンの描画には通用しなさそうだったし、オーナードローするほどの勇気が出ないし、もう2箇所で書き換えて対処してしまいました。おかげですこし不便。

 とりあえず一度コントロールさえ作りきってしまえばかなり柔軟なつくりとなっているので何とかなる。がコントロール作成が苦痛だ。あと30個はあるよ……。
 zzzです。

 ダウト神経衰弱をバージョンアップしました。内容はまったく変わっていませんが、ウィンドウのテーマによって表示が変更されるようになりました。全体的にきれいになったといえるのではないでしょうか。

 変更したせいでなぜかバグが少し発生しましたが、直したので多分もう大丈夫でしょう。多分。
 下記ホームページにアップしたので、ほしいと思ってくれたとてもありがたい方はこのURLへ飛んでいってください。
http://mathyippee.web.fc2.com/index.html
 zzzです。

 ようやく根幹部分に携わることが出来る。ここまでくるのがきつかった……。

 タブの実装に成功。あとはコントロールの配置さえ出来ればokである。とりあえず何も配置していないけどこんな感じになっている。

tab

 ぶっちゃけもう逆ダメージ計算に拘らず、ダメージ計算機も実装していいレベルになってきた。がモチベーションが最低なので投げる可能性もある。というかもうここまでくるのにどれだけかかってるんですか……。
 zzzです。

 ねこりすの更新が終わりました。新しいバージョンをアップロードしたのでもう大丈夫です。
 大まかなルールなどは変わっていませんが、非常にプレイしやすくなっています。パズルでの最短手が何かが分かったようになったり、始めから全機能が解禁されておらず、特定の要素を満たせば解禁されて競争心をあおるようにしたり、パズル製作モードがあったりしています。本当にゲームらしくなっているので、興味がある方はダウンロードしてみてください。
さて、KOMARIです。

とうとう、ねこりす(暫定完成版)が完成しました。

ぜひともDLしてデバッグやらなんやらして楽しく遊んでくださいね!

ダウンロードはこちらのホームページから。

http://mathyippee.web.fc2.com/



↑すごく・・・コピペです。

ダウンロードは近日中にできるようになると思います!

zzz氏にアップを頼んでおきます。

ちなみに、今ダウンロードできるのは旧verなので注意してください!
 zzzです。

 17ポーカーは掘木さんにスープレックス,ロコモーションG,バベルスクランブル,スライディングします。決して丸投げではありません。大ダメージです。

 ということで17ポーカーについて紹介します。
 皆さんはライアーゲームという漫画(又はドラマ又は映画)を知っていますでしょうか。そこで行われていたゲームとして「17ポーカー」というゲームが存在しました。
 ルールは簡単です。ノーマルなポーカーのように、まず5枚引き最初のチップ額(ファーストベット)を決め、一度山札からカードを交換して、またチップ額(セカンドベット)を決め、相手と勝負するというゲームです。ただし、山札は17枚、A,K,Q,J,10の4枚のカードとジョーカーです。

 ということでその17ポーカーを実際に作ってみました(掘木さんが)。厳密にはディーラーがいないため、掛け金の推移が少し違いますが。
 以下ゲーム画面です。

 ファーストベット画面。こちらはKのスリーカードということで中々強そうです。チップを5枚上乗せします。
17poker

 相手も勝負に乗るということで、互いにチップ10枚で終わりました。
 次にカード交換場面。当然右の二枚を切ります。
17poker2

 Kのスリーカードは変わらず。交換終了画面からセカンドベット画面に移ります。Kのスリーカードなのでまだ勝負できます。10枚チップを上乗せしましょう。
17poker3
 相手はさらに17枚上乗せ……。私が降りるかまだ勝負するか迫られます。
17poker4
 いやな予感しかしません。普通なら降りてますけど、ここはブログのために特攻して相手と勝負します。
17poker5
 相手はJのフォーカード……こちらの負けです。チップ37枚を相手に取られました。

 とまあこんな感じでかなり読み合いがあります。普通に対人でも面白いですし、このゲームで作った鬼のような挙動をするCOMたちでも十分な歯ごたえがあります。
 近日中に公開してくれるだろうと期待をこめて掘木さんにプレッシャーをかけますので、どうかお楽しみください。
2012.02.09 typeidxe

 zzzです。

 とりあえずテンプレートクラスとtypeidの罠にはまってました。もし解決方法があるのなら誰か教えてください。以下でエラー。

#include<string>

template<typename T>
class A
{

public:

int f(void)
{

if(typeid(T) == typeid(int)) return t;
if(typeid(T) == typeid(std::string)) return t.size();

}

private:

T t;

};

void main(void)
{

A<std::string> a;
a.f();

}

 おそらく
 実体化⇒if文云々関係なく関数内部が展開⇒return t;はintではないだろ!⇒コンパイルエラー
 
 
 ということで怒っているのでしょう……。横着せずにちゃんと特殊化しろということなのでしょう。
2012.02.08 雌伏
 zzzです。

 暗号化とかファイル圧縮技術について少し勉強してた。

 公開鍵暗号について。今のところ私が実装しても無意味そう。

 そもそも公開鍵を複合するプログラムを作らないといけないんだけど、クライアント側のプログラムとホスト側のプログラム、両方配った時点で暗号として意味をなさない。プログラムを解析すればいいわけだし。
 ということはホスト側のプログラムを公開しないことが重要。つまり常駐系のネットゲームじゃないと意味を成さないわけだ。うーん、これなら適当な暗号でもいいか。まあ、そもそも解析するようなやつがいないから問題ないんだけど。

 リソースの圧縮、暗号化が今のところ最も問題か。ダウト神経衰弱は丸見えの状態だったし。bitmapの圧縮はともかく音源の圧縮って何なんだ……。ぶっちゃけ暗号化だけでもいいんだけど、ちょっとくらい容量を減らしたい。

 雌伏の時ですな。色々知識が足りない。ってずっと雌伏してる気が……。
 zzzです。

 掘木氏の製作物を手伝う、もとい寄生させてもらっているのだが、スパゲッティを防げそうにない。絶望。まあ昔よりマシだよね!

 というか本当に見やすいソースコード書いてくれて助かる……。練りに練られてる感がある。私なんてもうポケモンのダメージ計算部分なんて見たくないし。
 多分一週間以内に掘木氏から出来たよーというアナウンスが来るよ。うん。まあどこまで拘るかによるか。

 とりあえずC言語のバトンは作ったけど出来栄えは、。簡単なものを目指した。なぜならそこまで私に知識がないから。
 関数を並べまくって問題にしようかと思ったけど、難しくなりそうな気がしたので型に限定した。私自身答えが分からないものもあったり。intのバイト数の正確な求め方とか。4バイトか8バイトかで大体あうよ。うん。
 wchar_tが最も難しいんじゃないかな?UNICODEもいいんだけどね。絶対に2バイトとか楽でいい。メモリの節約なんて考えない私にとっては特に。

 もうメモリなんていくらでも用意できるよね、と思ってるからまずいのかもしれない。実際相当量読み込まなきゃ大丈夫そうだし。……こういう考えでいくから中規模以上のプログラム組んだときに破綻するのかなあ。
2012.02.05 C言語バトン
 zzzです。

 C言語バトンとやらをやってみましたが、これはC言語なのかと思って少々悩んだ結果、楽しめばいいのではないかという人類共通の基本概念に従いまして、以上の結果がこれです。
 C言語に関するバトンがこれしか見当たらなかった……なぜですか。もう私がバトンを作ってやりたいくらいです。

 と思ってバトンを編集しようと思ったら消えたし……もういいです。私が作ります。

 KOMARI様がダウト神経衰弱の動画を撮ってニコニコにupしてくれました。感謝です。プレイヤーの掘木氏、Gel'fond氏にも感謝です。


 zzzです。

 ポケモン逆ダメージ計算機第四回目のはず。

 さて、前回でダメージ計算に関してはうまくいった(いや、ほんとは色々問題があるんだけど目をつぶる)ので、ようやくコンソール画面から脱却して、ちゃんとしたものを作ってた。

 が、いきなり問題が続出……。理由。コールバック関数をメンバ関数にしようとしたせい。
 どうやらコールバック関数は実態がないと駄目なようだ……(もしメンバ関数にうまく実装できる方法があるのなら教えてください)
 ということでコールバック関数にstaticをつけて実装するわけだがこれはこれで問題が山のようにある。
 私ごときには思いつかないようなうまく実装しているホームページがあった。

http://members3.jcom.home.ne.jp/progstudio/win_tips1.html

 これで解決!サブクラス化もメンバ関数に古いコールバック関数を突っ込めば大丈夫!
 ただ若干問題点が目白押しだが。まずコピーも代入もしたらやばい感じがする。Destoryが2回発動するんじゃないか……。まあそこは代入とコピー禁止の構造にすれば問題ないんだろうけど。

 出鼻からくじかれてしまった。クラス構築は難しい……。
 zzzです。

 我らのバグ処理班、掘木氏が見事に解決してくれました。普通に==演算子をオーバーロードが問題だったのですが、あまりにVC++のデバッガの挙動が異常だったため、VC++側の設定が間違っているのかと原因追求していた私はダメでした。……バグ処理班って一番きついポジションですね。

 しかしテンプレートクラスやテンプレート関数には悩まされっぱなしです。便利なんですがねえ……。
2012.02.02 行進
 zzzです。

 とりあえずダウト神経衰弱とねこりすのバージョンを更新。

・ダウト神経衰弱
 XPでマウスを動かすととてつもない遅延がでていたバグを解消。7ではなぜか滑らかに動いていた。多分PCの性能とかそういう問題ではなさそう。マウスの挙動が若干変わっていたのかね。

・ねこりす
 よくわからないさまざまなバグが取れているはず。音楽関連とか。
 パズルの生成時間が大幅に速くなった。ただし一部パズルの形が変化してるやも?





 ポケモンから一旦離れて木の生成についてがんばっているが難しい。アルゴリズムの本やらで色々書いてくれているんだが、実践しようとすると難しすぎる。2分木なら楽なんだけど、一般の木となるとなおさらに。