なうろーでいんぐ
キーボード↑↓
でもいいぞ
旧サイト形式へ帰りたい人
ダイアログ進行
2011年04月10日15時00分
ダイアログ表示位置設定と項目&機能追加。
ファイル 366-1.png
画像入れ替えの前に、端ブロックの判定と走査方法を
ちょっと考える必要があると考えている。
面倒だが、どの方向の端ブロックなのかを保持して
それによって処理を分けるしかないか・・・。
そろそろ別動のクリア表示処理も真面目に考えないと
あかんなぁ。それに配布用パッキングもせんとアカン。

先日の描画関数内で描画元から持ってくるsizeの
指定を端フラグでif分岐すれば、まんま動くヨカン。
ブロック数が極端に増加した場合どうなるか不安になり、
1pxブロック動かしてみたら、案外普通に動いてワロタ。
流石に動きはちょっと鈍くなったが;

因みに、その時のブロックの総数簡易判定で78084個。
1秒1個壊す換算でも21時間半以上かかる。
そんなブロック崩ししたくないデス。


同日 17:00
端判定ちゃんと動いたで。
画面サイズがブロックサイズで割り切れる場合も
上層で考慮済み。ブロック生成側でフラグも立てたし。
画像はdib自身と引数の相手のdibでのビット内容比較。
ファイル 366-2.png
これでようやく画像入れ替えとかブロック追加を
まともに考える事ができるわ。


同日 21:11
透明ブロック追加。
画像は見やすい様に可視化した状態。
ファイル 366-3.png
ブロックサイズ可変、透過色(黒)を指定して色以外が
含まれるならブロックと化す感じにした。
2重壁と違うのは、判定は通常ブロックと同時に
行われるので、かぶった部分が消えてしまう点。
とりあえずは上手く動いて一安心。
2重壁を上手く部分指定するには、おそらく
第一段階のブロックとして上乗せする画像の更に
差分を取ってそこを判定し、2重壁の判定を先に行い、
ぶつかっていれば通常ブロックの判定は飛ばす、
というやり方で出来そうな気がするが如何に。


4月10日 0:04
思った通り、2重壁作成完了。
ブロック衝突時のSEも通常と別物に変更完了。
ダイアログの設定を詰めたらそろそろファイルを
パッケージングするコードを考えるとしよう。


同日 1:27
ダイアログに二重壁実装完了。
その間、3重以上の壁の作り方考えたんだが、
3重とかにするんだったら、参照するdibを引数に
個数分取って逐一検査していかないとあかんのよなぁ。
・・・追々としてそろそろコード整理しよう。
記事カテゴリ:プログラム関連
DIBへの落とし込み
2011年04月09日17時18分
相変わらずDIBSectionの件は解決してないけど、
とりあえずDIBSectionからDIBに落とし込んで
普通に動いてたのでソースage。
アルファ値考慮 部分画像 合成関数
上の方のコメントアウトは無視で。
ファイル 365-1.png
画像の出力先と入力元の位置計算まで含んでたから
計算超面倒だったわ・・・。
ほれこのとーり、今度は解放不可エラー起きないわ。
ファイル 365-2.png
まさかこんな時間までかかるとは思わなかった;
次、休憩入れてから音のダブルバッファな。
因みに、関数の引数は

LPDWORD DIB :ビットマップ画像自身、転送先
const CDibSection &dib :DIBSection、転送元
CPoint to :転送先のx,y座標位置
CSize size :転送するx,yの各サイズ
CPoint from :転送元のx,y座標位置
float a :アルファ値

である。


同日 21:08
結構手間取ったわ。
マルチではないけどシングルで再帰的にWAV
を読み込んで連続再生。ブツ切りにはなるが
継続してBGMを流す事はできた。
ファイル 365-3.png
これからマルチバッファして、次はタイマやな。


4月9日 0:57
マルチバッファ&タイマ実装。
ファイル 365-4.png
漸くボール制御側もタイマで一定速度になりました。
それまではブロックサイズが変わるだけで顕著に
スピードが変化してたので面白かったけど。
次はコード整理とダイアログの機能追加かね。

同日 2:23
ソース改善中、動作が徐々に良くなると気持ちいい。


同日 3:24
衝突音の変更とかボールサイズ変更とか実装。
ファイル 365-5.png
フルパスからもCreateFileできるので、簡単。
カレントディレクトリにさえ注意してればよい。
機能拡充は範囲が幅広いなぁ・・・;
記事カテゴリ:プログラム関連
唐突にjavaを
2011年04月08日17時22分
勉強する必要が出てきたのでこれまた勉強中。
先日はサーバーの動きを見たが、マルチプロセスが
微妙に理解できてないので余裕ができたらそれを
今日は残りで調べるつもり。


同日 18:14
本を読む速度がありえねぇ事になってるのに驚く。
いくら入門書とはいえ、200ページ以上が
30分そこらで終わるのには驚愕した。
何事も、分かりにくい部分がなければ脳内で
直結するもんだなとしみじみ感じるのであった。

javaはライブラリ、サブクラス、スーパークラス、
インターフェース、アプレットを残して
本を読むのをちょっと休憩する。


同日 19:30
JAVA入門読破。インターフェースによる多重継承、
ファイル入出力や、Thread、Runnable、アプレット等、
C言語に比べれば非常に楽な感じでした。
やはり、クラスのライブラリや関数が最初から
ある程度簡略化されてるからこそ、とっつきやすい。
コンストラクタやメモリの確保もnewで終わるし、
おそらくプログラマ初心者はCよりJAVAから
先にやるといいと思える程、丁寧で分かりやすかった。

では、マルチプロセスについて調べるか・・・。
資料として一番よさげなのはこちらかな。
http://www.fides.dti.ne.jp/~tokai/vc/vcchips1.html
・ パイプでプロセス間通信の基本 という題目の箇所。
プロセスはタスクマネージャのプロセスを見れば
という意見があって、成る程確かにマルチじゃねーか
と妙に納得した。exe同士が会話するのに
パイプを繋ぐ必要があって、それがややこしい。
定数からまずは理解せんとな・・・。


同日 21:06
パイプは親プロセスと子プロセスを繋ぐが、
stdin,stdout,stderrの3つの情報をやり取りする
必要があるのと、親→子と子→親で継承してはいけない
パイプハンドルが存在するのでそれは複製する。
(ちょっと理解不足)
パイプの設定が終わったら、実際に実行するプロセス
をGetEnvironmentVariable関数を用いて
環境変数からフルパスで取得し、CreateProcess。
プロセスが終了=やり取りを終えたかを確認する為に
WaitForSingleObject関数を使い、子から返された
結果をReadFileして表示すれば完了。という流れ。

環境変数から取得とは粋な技だこと。
記事カテゴリ:プログラム関連
溜まってた余計な私事を
2011年04月07日17時10分
ぼちぼち片付けてたら、こんな時間に・・・。
今からまたプログラム解析ちょこっとやるわ。


同日 20:04
ブラウザからのページ閲覧の仕組みを理解。
結局コンソールと挙動は余り変わらず、
ブラウザが命令をsendしてそこから
サーバーが応答した内容をrecvするので、
情報に応じてページが表示できる。
インターネットの中身を垣間見た感じでした。
cgiとの接続も載ってるっぽいので、
そこも詳しく見ていこうと思いますわ。

クライアントの要求をrecvして解析してsendする、
その一連の流れは頭の中にかなりはっきりとした
イメージを作る事ができましたとさ。


同日 23:03
cgiとの連携プレイについては、
パイプ処理によってR/Wのパイプを形成し、
しかるべき設定値をしかるべき値にセットして
execve関数でcgiと連携してた。
膨大な環境変数は、流石他のプロセスと
言わざるを得ない。
記事カテゴリ:プログラム関連