ラベル DXライブラリ の投稿を表示しています。 すべての投稿を表示
ラベル DXライブラリ の投稿を表示しています。 すべての投稿を表示

2015年1月11日日曜日

DXライブラリー日記 「マウスホイールの拾い漏れ、こぼし」


  2割は頂く。
  そう宣言する。
  必ず貰うから。



あの馬鹿たれが好き勝手にしている某プログラムが哀れになったので色々と手直ししている。
表示がらみは普通に60FPS出るようになったので問題なし。
ただ、これだと文字の表示スピードが一秒間に60文字しか出せない。
どうしたものかと思い、3文字に一回フリップするようにしたらいい感じなので、この辺は好きに調整出来る様にする事にしよう。


  • キーボードのみでもカーソルで履歴を行ったり来たり、背景表示
  • 文字のノーウエイト表示(画面端でのみフリップするようにしただけとも言う)
  • ノーウエイト時でも強制ストップする制御文字追加

キーボード周りはこんなものであろう。
あとはセーブロードをキーボードからでも出来る様にしたいところだが、めんどくさいので無し。
マウス使ってメニューを出せ、と。


マウスに関しても少し追加機能のコードを書いていたら嵌った。


『if文になんでもかんでも条件式を放り込むな』

というのが今日の教訓。
マウスホイールの回転量を得る関数 GetMouseWheelRotVol() を一個使っているうちは良かったのだが、上回転、下回転で分けるために二個目のif文追加したら見事に反応が変になった。


<<失敗>>

if(GetMouseWheelRotVol() > 0 )  history_mode(); //履歴モードへ
if(GetMouseWheelRotVol() < 0 )  check=1;         //クリック待ち抜け条件


何も考えずに二行目を追加したが、よくみりゃどっちが呼ばれるか判らんジャン!
そりゃ意味不明な挙動になるな。



<<当たり前の書き方>>


mouse_w=GetMouseWheelRotVol()
if (mouse_w>0){
history_mode();
}else if (mouse_w<0){
check=1;
}




これでOKと思ったところ、このホイールはウインドウがアクティブじゃなくても効いてしまうという、、、、、

ハイハイ、めんどくさいめんどくさい。
アクティブかどうかチェキしてホイールの回転返す関数作って


int get_mouse_wheel(){
//ウインドウがアクティブの時だけマウスホイールの値を返すよ
if (GetWindowActiveFlag()) {
return (GetMouseWheelRotVol());
} else{
//それ以外は0を返すよ
return (0);
}

}



こうね


mouse_w=get_mouse_wheel();
if (mouse_w>0){
history_mode_2();
}else if (mouse_w<0){
check=1;
}





ふう、おかげで履歴と本文を行ったりきたりが楽になったと。
本当はこの後、右クリックで履歴を抜けていたのに加えて、履歴最終ページからはホイールを進める方向に回した際に本文に戻ってくるようにしたのであるが、何年も前に書いた物だけあって抜ける条件をどう書いていいものかと1時間悩んだ。



  矢張り2割は頂く。
  絶対に頂く。























2014年3月28日金曜日

DXライブラリー日記 「相対パスとカレントディレクトリと喉元過ぎれば~」

そういえばそうだった的に思い出した事案――


ミーナの馬鹿が「データフォルダ作って」などというので、

「めんどうくさいのでフォルダに全部放り込んでEXEファイルへの相対パスでショートカットでもつくりなさい」

と言って追い払ったのですが、出来ないと言う。

そんな馬鹿なと思って調べてみると――

Windows Script Programming
ショートカットに相対パスを指定する。

対処できるようだけど、Vistaでは出来ないとか、OSごとの対応などしたくない。
苦肉の策でバッチファイル書いてみたらどうか? とやってみたが、コマンドプロンプトが表示されるので格好良くない。ついでに言うとカレントフォルダがバッチファイルの位置になるようで、指定した先のプログラムがフォルダの中のファイルを相対参照しようとすると、見事に落ちる事が発覚。そりゃそうだ。



あ~あ、と敗戦処理的に画像だの音だのをdataフォルダに放り込む仕様に変更……

――うごかない。

はぁ~?




~~~ 3時間経過~~~


2014年3月19日水曜日

DXライブラリー日記 「コマンド一覧覚書」



ミーナのアフォに付き合ってたら碌でもないことになった。
付き合うのは今回きりです。

プログラムは渡すのであとは勝手にやってください。
本人も忘れているのでソースからコマンドひっぱってきましたので書いておきます。
たいした事はできません。





コマンド


・画像表示関係

//jpgファイル表示
//テキストは消える。
[********.jpg]


//jpgファイル処理時に16本の柱上に分割して画像を表示。
//fade_maskの後に使うと良い
[********.jp1]


//単純に画面を消して表示。ぱっと表示
//コレを実行するとオートで画面上下フレームとBrightダウンフラグがオフになります。
[********.jp2]


//jpgファイル読み込みと表示 少し速いバージョン
[********.jp3]


//アルファ付きPNG表示
//実際にはPNGファイルを用意すること。
//オートでアルファチャンネル扱いの********_a.PNGファイルを読む性質があるので、
//同サイズのグレースケール画像を用意するとキャラの立ち絵的な事が可能になる。
//黒いところほど透ける。
[********.jpa]


//オートで背景画像を暗く表示するかどうかのフラグセット
[bright_d.com] 画像表示後に自動で暗くなりません。
[bright_u.com] 画像表示後に自動で暗くなります。


//画面の上下の枠を表示するか否かのスイッチ
[frame_of.com] 枠off
[frame_on.com] 枠on


//16本の柱で画面を黒く塗りつぶします。
[fill_blk.com]


//黒でカーテン引きます
[curtain1.com]


//黒く塗りつぶす
[black_01.com]  おそい
[black_02.com]  早い


//ホワイトアウトする命令。
[white_01.com]  おそい
[white_02.com]  早い




・音関係
WAVEファイルかMP3ファイルのみの対応となります。
実際のファイルの拡張子を変える必要は有りません。


//効果音を鳴らします。鳴り終るまで処理は停止
[********.mp3]
[********.wav]


//効果音を鳴らしたあと、直ぐに他の処理をします
[********.wa3]


//BGM鳴らします。
//ファイル名の頭4文字を「BGM_」にすると勝手にBGMとしてループ再生されます
[BGM_****.mp3]
[BGM_****.wav]


//効果音、BGMをフェードインしながら鳴らします
[********.wa2]
[BGM_****.wa2]


//効果音をフェードインで鳴らしたあと、直ぐに他の処理をします
//MP3には未対応のはず。
[********.wa4]


//BGMをピタッと止めます
[bgm_stop.com]

//BGMをフェイドアウトさせて止めます
[bgm_fade.com]


//効果音をピタッと止めます
[sou_stop.com]


//効果音をフェイドアウトさせて止めます
[sou_fade.com]


//BGMのボリュームをフェードで半分にします
[BGMvol_d.com]


//BGMのボリュームをフェードで100%にします
[BGMvol_u.com]






・テキスト関係

//消えたテキストを描きなおします
[txtwrite.com]


//テキストの背景に黒い影を付ける
[tback_on.com]


//テキストの背景に黒い影を付けない
[tback_of.com]


//振り仮名表示
//かならず2文字指定すること
//1文字の場合はスペースをいれることで調整
{やま}山{おか}岡{し }士{ろう}朗






・制御関係

//次のテキストファイルを読み込みます
//文字の位置は全て初期化されます
[********.txt]


//ウエイト命令文字。500ミリ秒止まります。



//改行時クリックさせる文字



//句読点で一瞬ウエイトいれるか否か
廃止


//文字表示位置リセット
廃止
黙って別テキストを読み込ませてください





2013年4月9日火曜日

DXライブラリー日記 009 「――ダッシュ その2」

某氏がゴハンを作ってくれると言うので待ってたら、

「新しいうどんだ、手抜き蕎麦だ。食え」

などと言う。

うどんと蕎麦が違ってる辺りも突っ込みどころとしてポイントが高いが、手打ち、たぬきの両天秤にかかるダブルの突っ込みポイントも中々の物だと思った昼下がり。


ずるずる~。



メモリリークも多分消滅したと思うので、少し通して表示させてみた。
ダッシュも昨日作ったように綺麗に……



ダッシュを3個以上使うの禁止な。

ガックシ。










2013年4月8日月曜日

DXライブラリー日記 008 「――ダッシュ」

「的を得る」とか見ると、反射的にそれは「射る」だ、と言いたくなるボクチンの仲魔達こんにちわ。

 「―」
この横一文字はまかり間違って単体で使うと、下記のように矢の様な攻撃を受けます。

ex) 「や~い、それは2文字セットで使うんだよ。あと三点リーダー『…』も2個セットで使うんだよ、しってっか? ばーか」 

もしこんな事言われても、くじけずに私の様に強く生きて欲しいです。
――そう、まるで胴を真っ二つにされても生きている(らしい)オオサンショウウオの様に。


京極夏彦が「……」を撤廃して、既刊の本でも新版だと「――」に変更した理由が気になる今日この頃です。


そんな仲魔達御用達の文字、ダッシュですが、趣味のプログラムも厨二病的精神を発揮して、綺麗に表示されるように直してみました。


現状でだと、間に黒い線が出てます

ダッシュの縦書き表示の改良画像 その1




2文字目のダッシュを少し上にずらしてみたら、ちょっといい感じです。
でもまだ薄っすらと継ぎ目が見えるので――

ダッシュの縦書き表示の改良画像 その2



一文字目も少し下にずらしてみたら、綺麗に繋がりました。

ダッシュの縦書き表示の改良画像 その3


これで素敵な厨二病ライフを送ることが出来る様になりました。
好きなだけ京極気分を味わえます。



ちなみにブリーチは読んだことないです。


なん……だと……? なん・・・だと・・・?画像





DXライブラリー日記 007 「馬鹿が使うと危険なLoadGraph()の罠」

気温が上がり、多少は春めいてきた東北の昨今。
なぜか部屋に異臭がたちこめる日々でもあります。
部屋の散らかり具合をおこられたので、頑張って掃除していたら異臭の元凶を発見したであります隊長!!

『机の下で倒れていた醤油注ぎ』

どうしてくれようか、この絨毯に染込んだ挙句に固くガードを決めこんだ黒いシミ。







何も考えずに使っていた関数達のメモリーについて考え始めました。
発端は、ネットブックとデスクトップで挙動が違う&ず~っと読み進めていくと真っ黒い文字が表示されるという状態が発生したからです。真っ黒い■がずらずらと表示される様は中々にショッキングでありました。


とりあえず、
  • LoadGraph()
  • DeleteGraph()
この3つの挙動をイマイチ理解していない事が元凶っぽいので、返り値を常に表示させるようにしてみました。



……。
ははは、こやつめ。
ハンドルを使いまわすと、いとも簡単に指定して消せないメモリーが多数発生すると言うことが、いまさら分かりました。


int load_handle;

load_handle=LoadGraph("picture.jpg");     //load_handle→「12345」
DrawGraph(0,0,load_handle);
load_handle=LoadGraph("character.jpg");    //load_handle→「23456」  この時点で最初に確保したメモリの手がかり消失
DrawGraph(0,0,Load_handle);
DeleteGraph(load_handle);           //2個目に確保したメモリしか消えない


毎回消そうLoadGraph。
気をつけておけばいいのか、ファイル名とハンドルを保持しておく関数を作ってそれ使うべきなのか?


そろそろ参考ページでも見た方がいい気がしてきました。



2013年3月19日火曜日

DXライブラリー日記 005 「綺麗な縮小」

セーブ画面のサムネイルが汚い。
DXライブラリは拡大は普通だけど、縮小は思った通りにならない。


DX_DRAWMODE_NEARESTネアレストネイバー法で描画0
DX_DRAWMODE_BILINEARバイリニア法で描画する1
DX_DRAWMODE_ANISOTROPIC異方性フィルタリング法で描画する2
DX_DRAWMODE_OTHERそれ以外


SetDrawMode()関数でこいつらを指定しても、縮小はガッタガタでがっくし。
2Dだけどビデオカードの3D機能で描画しているので、その辺の設定次第かと思い色々と弄ってみたものの変わらず。

完全に諦めてた私。



ところが、昨日この腐れプログラムをネットブックで動かしてみたら、ガウスフィルターが効かない場面が多々あると発覚し、その問題を解決しようとリファレンスを読んでいたところ、2,4,8分の1単位でなら綺麗に縮小できる事が発覚。

ってかチャンと読めという話。

縦600ドットの画像を縦800ドットに一回拡大して
GraphFilter( Handle, DX_GRAPH_FILTER_DOWN_SCALE, 8 ) ;
といたした所~~


DXライブラリで綺麗な縮小する画像



綺麗になった。



thum_tmp=MakeScreen(1200,1000,false);
SetDrawScreen(thum_tmp);
save_thum1=LoadGraph( "save01.bmp" );
DrawExtendGraphF( 0 , 0 , 1067 ,800 , save_thum1 , false ) ;
GraphFilter( thum_tmp, DX_GRAPH_FILTER_DOWN_SCALE, 8 ) ;


少し大きめにMakeScreenで最初にthum_tmpを作っても、GraphFilterを使うとthum_tmpのサイズも8分の1になってるのかなこれ?
まぁその都度DeleteGraphするからどうでもいいかな?






2013年3月15日金曜日

Google Readerからの乗り換え 『Feedly』が私には合ってる。LIvedoorはイマイチ。

いつもどおりにGoogle Readerを開いたら謎の表示が出ている。

「7月1日に終わるからコレ」

と、英語で書いてある。
一瞬目の前が真っ暗になるが、代替案があるんだろ、なぁグーグル様? と思いつつmoreと書かれたリンクを押してみるが、更なる絶望を実感するだけであった。



しょうがなくやる気なくふてくされながら他の選択肢を模索した。
乗り換え先の目標は以下の画像の様に表示してくれるRSSリーダーである。

私が愛してやまないGoogle Readerの画面

幸いなことに購読リストは簡単にインポートエクスポートできる様なので、とりあえず日本のサイトを試す。

条件は先ほどの画像の様に
  • 新着順に登録先の見出しのみがずらりと並ぶ
  • 左にフォルダ分けされたメニューが並ぶ

と、なってくれさえすれば、別にGoogle Readerにはこだわりはしない。






今回の騒動の移転先として早速上がっているのを良く見るのがLivedoor Readerだったので、ログインしようとしたら……
20年前くらいのCDSネットのメールアドレスが登録されとる。

半笑いになりながら現在のメールアドレスに変更して、データをインポートしてみた。
さぁ表示だ

Livedoor Readerの初期画面


ちっがぁああああああう!!!
RSSリーダーにアクセスしたら即、登録しているサイトの見出し全部を新着順に右ペインに表示して欲しいのよ。私。

いやいや、設定次第で出るんじゃなかろうか? と30分ほど弄ったのだが駄目。
せめてフォルダ分けしたサイトごとに時系列表示してくれれば良いのだが、
ニュースフォルダをクリックしても何も無し。
ニュース→Gigazine、と押して初めてそのサイトの見出しが表示される、という形式なのは納得いかない。

挙句に、見出しのみ表示でも隙間が多すぎて見渡しが悪すぎ。
一行にまとめて欲しい




ヘッドラインモードと言う文字が見えるが、良くあるマガジンモード(超苦手)みたいな感じなんじゃろ? と思って表示してみたら……

……もういいなり。




Yahooはまだ準備中であった。




本日は疲れ果てたので、コレで最後と思い、英語だけどFeedlyを試すことに。

常用ブラウザはchromeなので拡張機能からポンといれるだけで、勝手にいろんなものもってかれてそうで怖いけどインポートも何も無しにデータは移行完了。

さぁ表示だ。

Feedly概観画像


あ、イイ。
フォルダ分けしたサイトメニューは?
と思ったら左端の方にカーソルを持っていくと自動で浮き出る仕組みだった。



ってか、「左にカーソル持ってくとメニューが浮き上がる」とかって特許だったりしないよね?
いやマジで。
趣味で作ってるノベルゲのシステムがコレなんすけど……



まぁ幾らでも変えられるから良いけどさ。

さて、ビクビクしながらPreferenceを開いて色々設定を眺めるが、イマイチ理解できない。
とりあえず

 General→Start page→ALL

のチェックを入れると、私が望んだ見出し一覧をずらっと表示になったので安心した。
更に、さきほどのLivedoorでは出来なかった、「フォルダクリックでそこに登録されてるサイトの見出し一覧表示」にも対応しているので素晴らしい。

あとは、左メニューが常時表示にならんかなぁ? と英語を眺めるが、どうにもそういった表記は見当たらない。 もしやと思い、ウインドウを最大化してみたら~ 



Feedlyの挙動。ウインドウサイズによってメニューが出たりする

オッケイ!
出た出た!

どうやらブラウザの幅を見て、一定以上ならば常時表示、それ以外はメニュー浮き出し、というのを自動で切り替えてる模様。

ホイールでの挙動も殆どGoogle Readerと変わらないし、本当に7月1日に終わりならFeedlyに乗換えかな?
現状では満足。






>>続き記事 「更に見た目を似せる努力」








2013年3月1日金曜日

DXライブラリー日記 004 「メニューやっつけ画像できた~。ついでにYoutubeはじめました」

ようやく雪が解け始め、小型温室の中の野菜さんたちの芽も出てきてハッピーな感じです。
いつものように愉快な仲魔たちの間抜けな発言を眺めていたところ、工作記事のURLが載っていたので、早速私もチャレンジしてみました。

 題名は「丸めたティッシュ」です。



ティッシュを使った工作


もっとも、今ぷちぷちと作ってるプログラムもくだらなさでは同レベルだと思います。
さてそのくだらないプログラムさんですが、本日はメニュー画像がにょっきり出てくるようにしました。


DXライブラリ日記 メニュー画像作成


現状では画面の左端付近にカーソルを持っていくとにょっきり出現するのですが、右クリックで呼び出せても良いような気がしてるので、両方採用されそうな感じです。


あと追加したいのは、背景画像を見る、くらい?
文字の一瞬ページ表示は趣味じゃないので見送りです。めんどくさいとも言います。






試しにデスクトップを録画してみたけど、ガッタガタです。
本物はするすると表示されます。






2013年2月24日日曜日

DXライブラリー日記 003 「Deleteでたー」

おういえす!
一昨日は猫の日だったらしいにゃん。

次は3月3日の耳の日が有って――

――しっぽの日は何月何日なんだ?



風呂に入ってから考えることにしましょう。











やっぱり必要な気がしてきたので、Deleteボタンを付けました。
データが無い時にはボタンを表示されないようにしたのですが、ここで問題発生です。



DXライブラリ日記「Deleteボタンつけたよ」if文の判定について考える画像

入れ子構造で領域判定するとき、「内側から優先的に判定していけば良いや」と思ったのですが――
上の画像でバツが付いてる方の判定だと、Save1の時には思ったとおりに動くのですが、Save2を処理する時にはDeleteボタンが無いくせにクリックできない謎の空白ゾーンが発生してしまいます。
当たり前といえば当たり前ですが、こういうのは実際に作ってみないとわからんものです。
ゲーム製作者さんの苦労は計り知れないのですなぁ

DXライブラリ日記「Deleteボタンつけたよ」画像



















「Deleteボタンを常時表示させておいて、NO DATAの時には処理しなきゃ良いジャン」

などという意見を言うヒト大嫌いです。
無い時には何も出さないのです。
引き算が重要なんです。

きゅきゅ!



2013年2月21日木曜日

DXライブラリー日記 002 「セーブ日付でたー」

朝から各種振込みやら床屋やら買い物やらLOTO6買出しやらで中々に充実した日です。

ふと外出最終地点のイオンの駐車場で他人のスタッドレスタイヤの事が気になったので、駐車場同一コート内の足元を見て回りました。
半数以上がそろそろ交換しないとあかんがな、という換装感想

恐ろしかったのが、「前後どっちか履いとけば良いだろう?」的な発想をかましているであろうミニバンが2台発見された事であります。うち一台は、「後輪のみスタッドレスのFF車」という――なんといいますか、今ここでパンクさせておいた方が世界が平和になる確率100%といった感情が湧き上がるといった具合でありまして、アニメ絵を貼り付けた車を痛車と呼ぶならば、更に一層痛々しい車であるこいつはなんと呼べば良いのか考えつつ、放射能よりもこっちの方が統計的に間違いなく危険、という結論でも何でもない自分内結末を迎えて帰宅した次第であります。





セーブ時の日付が表示に反映されなくて煩悶していたのだが、根本的にDrawGraphの順番が間違っている事が発覚です。
間抜けは程ほどにしたいところ。


無事に日付が付きました。
パーツはもう少し色気をつけたいところです。
あとマウスで殴り描きした背景もなんとかしたいです。

SAVEメニューに日付が付きました。



要らないと思うけど、削除機能とかも付けた方が良いのだろうか?


2013年2月18日月曜日

DXライブラリー日記 001 「セーブ実装できたー」

ど素人がねちねちとC言語でイタズラするよシリーズ――、と銘打って日記を書くことにした。
毎日チョットでも更新する気力になれば由。




やっぱりセーブ画面にはサムネイルが欲しいよね、という事で付けて見たけど、なんか縮小が汚い気がする。でも今は気にしない。

やっとこさフォトショップで作ってみた想像図通りになんとかなったっぽい。


DXライブラリーでノベルゲームのセーブモードを作ったよ


たかが文字と絵を出すだけのノベルゲーみたいなモノだと思ってねちねちと作ってるけど、なんとまぁ気が付くとあれもこれも必要だと気が付いて肥大化するのが怖い。

というか、クリックってどうやって検出するべきなんだろうか?
ループ内で常に0.1秒分位入力を保存しておけばええのかなぁ?
現状でマウスボタン押したままセーブメニューが反応する位置までカーソル持っていくと、上の画像のダイヤログが出てしまう。

ダイヤログにしても、OSの機能を使えるんだろうけど、DXライブラリーでどうやっていいのか分からないので、結局自分で作ってもうたがな。
結果としては良かったのでOK。


 msgbox”せーぶするよ”

とかVB6.0が懐かしい。


簡単ダイヤログはVB6.0





明日はセーブ2と3の分も同じくつくるよ。