1 :
名無しさん@お腹いっぱい。 :
01/11/20 18:40 ID:dEhL3Xq/ Delphiを使ってのゲーム製作に関する話題。 begin game := TGame.Create; game.Execute; end;
2 :
名無しさん@お腹いっぱい。 :01/11/20 18:48 ID:dEhL3Xq/
3 :
名無しさん@お腹いっぱい。 :01/11/20 19:04 ID:HdVpXyl7
>>1 解放しろゴラァ!!
って、実は・・・
var
game: IGame;
だったりして
>>3 Execute の中で自爆( Self.Free; )してるとか。
6 :
1 :01/11/22 12:16 ID:???
begin game := TGame.Create; game.Execute; game. end;
7 :
ごめん :01/11/22 12:19 ID:???
begin game := TGame.Create; try game.Execute; finally game.Free; end; end;
8 :
名前は開発中のものです。 :01/11/23 02:01 ID:/5CWUig5
書きこみ少なくて寂しいage ゲーム用途に特化したコンポーネントってどんなものがあるのですか? DelphiXとQuadruple Dくらいしか知りません。 個人的にはTGWが好みなのですが(DirectX不要、機能が絞られているが手軽等) バージョン3でしか使えないのが痛い…ソースも添付されてなかったし。 これの代わりになるようなものが有れば紹介してください。
9 :
KID_A :01/11/23 11:05 ID:tO/y/bFh
>>8 俺もTGW使ったことあるYO
マップ作るのが面倒だったから
TGW用のマップエディタ作ったりしたなぁ。
っていうか、ゲーム作成だったらDelphiXとQuadruple Dで充分しゃない?
10 :
名前は開発中のものです。 :01/11/23 14:22 ID:q4RkzzLH
>>2 Delphi6PersonalでDelphiXが使えないのですが・・・
何気にDelphiXのページ古くなってない?
デルファイでゲーム製作したいage
>>16 あ、ああいやいや、多分更新されていないという意味だろう。
18 :
名前は開発中のものです。 :01/11/29 04:49 ID:6GJtphfZ
誰かdelphiの'クラス'についてわかりやすく教えて・・・ いくつかページ読んだけどよくわからんもんで
>>18 しばらく Delphi やってれば、そのうち解ってくる
>>19 そうだね
ある日突然、ギターのFが弾けるようになるように解る日が来る。
>>18 type
kurasu = class
end;
22 :
名前は開発中のものです。 :01/11/29 11:30 ID:GzG00Mj3
>>18 私もつたない理解だけど、答えられる範囲で答えよう。
で、どこがわからないの?全部、は無しね。
23 :
名前は開発中のものです。 :01/11/29 17:59 ID:zUTAKRMT
>>19-20 なるほど、そんなもんなんすかね
>>21-22 全部、と言いたい所なんですが、それじゃ答えようがないと思うんで
何が便利で具体的にどんな使い方ができるんですか?
関数とかをファイル別に分けておけるって事ですかね?
>>23 本屋に行って「オブジェクト指向」についての入門書を
探してみましょう。その方が早いです。
26 :
18&23 :01/11/29 18:26 ID:zUTAKRMT
>>24-25 オブジェクト指向はなんとなく解るんですけど
それをどんな風に使えばいいのか解らないんですYO!
クラスってのはオブジェクトを作るって事?
早くなくても良いから教えてYO!
27 :
名前は開発中のものです。 :01/11/29 19:32 ID:kzVykY2n
フォーム使ってれば自分でも知らないうちにオブジェクト指向 してる事になるよ。まあ、コンポーネントをただ使うだけと 自作するのでは労力もかなり違う。 はじめのうちは使うだけの人に徹したほうがいいと思う。 そこから徐々に既存のコンポーネントを拡張していけばいいんじゃ ない?
>>26 OOPの捉え方は覚え方、プログラミングの目的なんかで変わってくる
と思いマス。
とりあえず最初はクラス=オブジェクトと決め付けるのが得策。
オブジェクト(=クラス)={
○オブジェクトの持っている情報。(「X=3」「Y=”ワイや。”」等)
○オブジェクトの取る行動。(「Xを1増やす」「Yの文を教える」「Xの値を教える」等)
}
:使い道:3に1足した数を教えてもらう。文を教えてもらう。等。
:応用:別のプログラムに持ち込む。等。
最初は「オブジェクトの中身はこの2つの要素だけ。」
とでも思って初心者入門ページなどを訪れてみては。
30 :
名前は開発中のものです。 :01/12/02 01:31 ID:ScTA5nhP
32 :
名前は開発中のものです。 :01/12/08 00:02 ID:XLZX5Dqq
RPGの敵キャラのデータは何型に入れたら一番いいですか?
>>33 構造体かクラスで敵キャラの型を自分で作る。
TEnemy = class(TGameCharacter) public procedure Move; override; procedure Attack(target:TGameCharacter); override; procedure Damage(HitCount: Integer); override; end;
37 :
35 :01/12/15 11:11 ID:???
>>36 あ、あ、参考にさせていただきます。サンク!
38 :
名前は開発中のものです。 :01/12/16 04:17 ID:5AxsYv/G
delphiわけらからんあげ
YaneuraoGameScriptからDelphi6Personal乗り換える。 ダウンロードしてアップデートしてHelloWorld完了。 ifとかforなどを確認する。だいたいわかった。 けれどもクラスやオブジェクトやメソッドが意味不明。 しかしどの書籍を参考にすればいいかは知っているから バイト代が入ったと同時に本屋に走ればいい。問題ない。 たぶん。ム板のスレにも同じような質問があるだろうし……。 Quadruple Dをダウンロードしてくる。いじってたら絵が出た。ヤター!! サンプルのソースを見る。FPSの計算にQueryPerformanceCounter();という 命令が使われているけど、ヘルプを検索してもどういうわけか見つからない。 ム板のDelphiスレをひととおり捜してみても、そんな質問は出ていない。 Googleで検索したらVC++についてのページが出てきた。あれえ? DelphiよりもWindowsに近い基本的な命令なんだろうか。 すいません。お手上げです。質問させてください。 1.QueryPerformanceCounter();がDelphiのヘルプにないのは何故なのですか? 2.またどのような書籍(またはサイト)で説明されているのでしょうか? 3.命令が網羅されている辞典のような書籍(リファレンス?)を 紹介してください。ヘルプよりも紙媒体の方が好きなので…。 よろしくおねがいします。
40 :
39 :01/12/16 19:02 ID:???
訂正。 QueryPerformanceCounter();が使われているのは 「サンプルのソース」ではないです。 Extreme Shootersという、Quadruple Dの作例の、 ソースが公開されているシューティングゲームです。
41 :
名前は開発中のものです。 :01/12/16 20:22 ID:V2T+L2Ma
>>39 YGSをやめた理由は?
漏れYGSで作ろうかと思ってたんだけど。
43 :
名前は開発中のものです。 :01/12/16 23:15 ID:UIW9iU9y
ゲームに限定されないけど、 関数のヘッダにかくコメントって Delphiではどんなの書いてる?
>>43 {----------------------------------------------}
{ Function: hogehoge }
{ Argumrnts: a: xxx(^^;) }
{ b: xxx(x_x) }
{ Return: 1: hoge 2: hage(-_-) }
{ History: 1990/10/10 Created }
{----------------------------------------------}
コンポーネントの何たるかも、オブジェクト指向の何たるかも 分かっていない者からの質問です。 ラベルコンポから派生した、マウスカーソルと重なっている間は 色が変化するコンポがあるとします。 それを何個か並べてゲーム中の選択肢を選ばせる場面で使います。 どれかがクリックされたら全てのラベル共通のOnClickハンドラに 飛んで、どのラベルが押されたかを判断するようにしようと思います。 ラベル本来の使い道とは違うので、こういう事するのは有りなのか な?と疑問が沸きました。 お行儀が悪ければ、具体的に指摘していただけませんか。
46 :
39 :01/12/17 02:57 ID:???
>>42 おかしいなあ。語句にカーソルを合わせてF1押すことも
もちろん試したのですが(つうか最初に書くべきだった)
QueryInterfaceが選択されて出てきませんでした。
探し方が悪いのかダウンロード版にはヘルプが無いのか。
MSDNのページをあさってみます。
ありがとうございました。
>>41 大学の都合でOOPを身につける必要が生じたので、
その勉強を兼ねて。
別にYGSが悪いとか考えたわけじゃないです。
47 :
42 :01/12/17 07:05 ID:???
>>46 ごめん、試してみたらF1で出ないわ(w
とりあえず、ネットつなげない時用に、
ツールバーの上で右クリック、「カスタマイズ」→「コマンド」→「ヘルプ」→「Windows API」
でツールバーの上にWindowsAPIのHelpのアイコン出せるので。
# デフォルトでメニューから選べるようにしといて欲しいもんだけど
48 :
名前は開発中のものです。 :02/01/11 03:34 ID:4gfbUP+R
>>41 C言語の腐ったような、おままごと見たいな言語よりは、
まともな言語使っておいた方が自分のためにもいいぜ。
けっこうまともなデバッガも付いてるしさ。
別に乗り換え先の言語はDelphiじゃなくてもいいけど。
50 :
名前は開発中のものです。 :02/01/15 22:00 ID:no/G6LIu
ゲームを作ってみようと思って最近Delphi入手してプログラムの勉強を始め、 とりあえず画面にスプライトをたくさん表示してみたりしてるとこなんですが どうにも画面のちらつきが気になってしまう。 自分の持ってる知識では 1.裏バッファに描画。 2.V-ブランクを待つ。 3.表バッファと裏バッファの入れ替え(ん?考えてみたらフルスクリーンじゃなきゃダメなのかな?だと裏→表バッファへコピーかな) って感じでやれば良いと思うんですが、 V-ブランクのタイミングを調べる関数がどうしても見つかりません。 そもそもDelphiにはそんな関数は存在しないんでしょうか? よく知らないんだがWIN32APIってのを使わないといけないのだろうか。
51 :
名前は開発中のものです。 :02/01/15 22:08 ID:aT6JIdrh
52 :
50 :02/01/15 23:50 ID:Ix5dcxBu
>>51 え〜と、そのサンプルは見てみましたが、
Vブランクのチェックとか裏バッファ使うとかやってませんし,残念ながら画面もちらつきまくってます。
ちょっと話がずれますが
サンプルでBitbltって関数を使ってますが、これはWin32APIの関数なのかな?
自作のコードではCanvas.Transparent:=TrueにしてCanvas.Draw()でスプライトを表示してました。
多分、BitBltを使うほうが速いのか? これから処理メーターでも作って比較してみます。
あぁ、でも処理メーター作るのには時間を計る関数を調べなきゃならないなぁ。
Delphiのヘルプって使いずらくてしんどいです。
Delphi6Personalのダウンロード版をってるんですがパッケージ版についてる紙のマニュアルは見やすいんですかね?
見やすいのなら買ってみようと思います。
バックバッファとしてTImageを用意してそこに描画、そこから画面全体(もしくは更新部分のみ) を表にBitBlt。 それで描画が遅くて耐えられないようだったら他の方法を考えるのでいいかと。 BitBltはWin32APIです。 パッケージ版はどうかな。買うほどではないと聞きますが。 ヘルプは慣れです^^;
55 :
50 :02/01/16 01:30 ID:???
>>53 パッケージ版はいまいちですか。その分のお金をDelphiなりWin32Apiの解説本に使ったほうが良さそうですね。
>>54 紹介のページ見てみました。そうか、PCだとコンシューマーと違って環境ごとにリフレッシュレートが違うって事が頭から抜けてました。
大昔、ゲームメーカーにいた時にプログラマーさんから教えてもらった知識が頭にあって、
Vsyncに同期を取って描画、ウェイト処理をするのが当たり前だと考えてました。
んー。結局、ちらつきのまったく無い画面、スムーズなスクロール等を実現したければ
フルスクリーンにして、リフレッシュレートもこちらから指定しないと難しいみたいですね。
で、そのためにはDirectDrawを覚える、と。
今作ってるゲームは練習用ですし、ちらつきは我慢してとりあえず完成させてみます。
DirectX以前に勉強しなきゃならないことは、いっぱいありますし。
レスくださった方々、どうもありがとうございます。
56 :
51 :02/01/16 01:51 ID:???
実はレスしているのは全部私だったりして。 51のリンク先のサンプルをダブルバッファリングするように書き変えてみましたが、 高速化の工夫を何もしていないとはいえ、かなり描画が引っかかります。 全面をBltするのはやめたほうがいいかも。面倒ですが。
57 :
51 :02/01/16 01:54 ID:???
>56で描画が引っかかると書いたのは間違いだった模様。(裏で重いアプリが動いていたせい) あの程度の描画量だと引っかかりもなくスムーズに描けました。
58 :
名前は開発中のものです。 :02/01/21 01:02 ID:3QJf94A+
情報が少なすぎてなにやっていいのかさっぱりです。
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,ミ,,゚Д゚彡 < ひまわりって、Delphiの人つくったん? UU""" U U \_______________
61 :
名前は開発中のものです。 :02/01/21 12:21 ID:cvZI6toD
delphiで、効果音とかの短いwavを、いったんメモリに読み込んで鳴らそうて思ってるんですが なかなか上手くいかないんで教えろ。 今のところ sndPlaySound(Pchar('koukaon.wav'),SND_ASYNC) ってなってるところ、最後のパラメーターをSND_MEMORYって書き換えたいんだけど そうするとファイル名のところをポインタ型にしなくちゃいけないらしんだよ。windows的に。 で、filestreamとか使ってwavfile読み込んだ変数のポインタ渡そうとしても 型が違いますとかコンパイラの人に怒られちゃうんですが、 どうしたら良いんでしょうか? フサギコさん教えて!
氏らん事は教えられません。 よくわかなんだけど PFileStreamとか定義するんじゃないかしら . ̄ ̄∨ ̄ ̄ ̄ . ∧,,∧ ミ ゚Д゚ ミ たんにwavだけなら (ミ ミ) ム技板で質問してもいいかもね。 〜ミ ミ ∪''∪
>>61 function load(fn: string): string;
var
fs: TFileStream;
ss: TStringStream;
begin
result := '';
fs := TFileStream.Create(fn, fmOpenRead);
try
ss := TStringStream.Create('');
try
ss.CopyFrom(fs, fs.Size);
result := ss.DataString;
finally
ss.Free;
end;
finally
fs.Free;
end;
end;
こんなコードを使って
s: string;
s := load('gikohahaha.wav');
sndPlaySound( pchar(s), SND_MEMORY or SND_ASYNC );
とか。
stringヲツカウトハ━━━━━━(゚∀゚)━━━━━━ !!
65 :
61 :02/01/21 23:34 ID:???
>>Delフサギコ
ム板はなんだか敷居が高く感じられるので(;´Д`)コワヒ。。。
>>63 様
無事動きました。(゚д゚)ウマー
えーと、いったんTStringStreamに読み込んで。。。
(;´Д`)理解するまでもう少し時間をください。
これから研究してみます。
ありがとうございました。
66 :
名前は開発中のものです。 :02/01/22 01:16 ID:97pziEaT
MemoryStreamに読み込んで、Pointerプロパティを使うとかどうですかね
67 :
61 :02/01/22 03:00 ID:???
いや、問題は windowsはポインタを要求してるのに delphiのコンパイラの型チェックが string型しか通しませんぞゴルァ と言ってるんで、どうしたものかと。。。 あれ、ひょっとして単に型キャストすれば良いのか? pointerをPCharにキャストってできるもんなの?
68 :
名前は開発中のものです。 :02/01/22 03:19 ID:97pziEaT
できます
69 :
名前は開発中のものです。 :02/01/22 03:28 ID:97pziEaT
あ、Memoryプロパティの間違いでした こんな感じで、キャストはいりません ms:=TMemoryStream.Create; ms.LoadFromFile('ding.wav'); //鳴らしたいときに sndPlaySound(ms.Memory, SND_MEMORY Or SND_ASYNC); //再生が終わったら ms.Free;
70 :
61 :02/01/22 03:31 ID:ygXI2h8+
━━━━━━(゚д゚)━━━━━━ !! お騒がせしました。忘れてください。 //でも処理落ちの原因は別のことらしいことがわかっただけでも収穫。
71 :
61 :02/01/22 03:37 ID:ygXI2h8+
ていうか普通にポインタ渡せるじゃん。今やってみたら。 【謎】何で前やったときできないと思ったんだろう。【馬鹿】 というわけで逝ってきます。
72 :
63 :02/01/22 10:14 ID:???
stringに入れるのはキャストの問題っつーよりも 後始末忘れていいっていうメリットのためだったりする。 すでに動いてるコードがあったので貼っただけで、 キャストは普通にできるという指摘はするの忘れた(笑) あと、ファイルから文字列への読み込みはこんな回りくどいことしなくても TFileStreamからサイズ得て、読込先文字列にSetLengthして Read(文字列[1], サイズ)とかやってしまうほうが手っ取り早いね。 なにぶん昔書いたコードなんで。
73 :
名前は開発中のものです。 :02/02/04 23:57 ID:c8nI8v2v
実は今Delphiで述べるスクリプトエンジンを作ってるんですが、いろいろつまづいてます。 テキスト表示時に左から右にジワーって表示する方法ってどうやるのかな。 やっぱりvcl特有のCanvas使った方が楽? それと応援よろしく!
74 :
名前は開発中のものです。 :02/02/10 00:48 ID:clzP6W0o
これからDirectXの勉強はじめようとしているんですが、 DelphiXって7.0までで8.0には未対応みたいですが、8.0環境で 使用可能なのでしょうか? 環境は以下の通りです。 Windows2000+DirectX8.0a+Delphi5.0
75 :
名前は開発中のものです。 :02/02/10 15:29 ID:q93AWxup
これからAVG作ります。が、 スクリプトエンジン作って、それにスクリプト実行させた方がいいの? それともスクリプト自体埋め込んでコンパイルしたほうがいいの? 個人的には前者にしようと思ってるんですが、どうですか?
76 :
名前は開発中のものです。 :02/02/10 19:11 ID:l65SDJXg
保守
78 :
名前は開発中のものです。 :02/04/11 01:56 ID:qACW/i2k
AVG(エロゲとか)なんかで、キャラが少しずつ透き通るようにして消えていったり、 逆に背景にぼんやりと浮かんできて、だんだん実体化していったり、というような 描画がありますが、 あれは、背景とキャラの対応するビットをRGBの3次元でベクトル化して 徐々に色を変え(背景→キャラ)ているんですか? TImageとか駆使して、同じ事はできるんでしょうか?
79 :
名前は開発中のものです。 :02/04/11 02:21 ID:pQvJJR5A
「アルファブレンド」で検索スレ
>>74 8.0でも7.0の機能は使用可能だからDelphiXは使用可能。
というか以前、使ったことがある。
8.0の機能は当然DelphiXが対応していない限りは使えない(自力でやらないとならない)。
82 :
名前は開発中のものです。 :02/04/13 00:35 ID:ifPWzmQQ
83 :
名前は開発中のものです。 :02/04/13 05:21 ID:rOowDTgg
DelphiXってDelphi6にはインストできないんすか?
84 :
名前は開発中のものです。 :02/04/13 14:04 ID:/234efMA
>>83 できるよ。やったもの。
DelphiXの掲示板は見た?
海外サイトをDeplhiX、Delphi6で検索してもOK。
>>85 DelphiXの掲示板は、無くなっちゃったみたいで、
海外サイトを見てやったんだけど、最後をどうすればいいのかわからないんです。
Step 6:
Lastly, and probably the most confusing part of this Delphi’s
re-nameing of DsgnIntf in the new versions of Delphi. Because
of this DXReg.pas will not compile.
No IDE editors:
First delete everything under the Type declaration in DXReg.Pas,
then remove all references to RegisterComponentEditor and
RegisterPropertyEditor in the Register procedure. Finally remove
all code below the RegisterComponents procedure, making sure
DXReg.pas still ends with an ‘end.’
When you are done with all that hacking your DXReg file should
look like this…
のくだり。
http://turbo.gamedev.net/delphixd6.asp
87 :
名前は開発中のものです。 :02/04/20 07:07 ID:rbPzu4hk
DsgnIntfの定義を直すだけではなかったかな。 ていうか、With IDE editors (experts):の方を参照
88 :
名前は開発中のものです。 :02/04/25 17:39 ID:l/nZYoa.
アクションゲームを作ろうと思うのですが、ジャンプのさせかたがわかりません。 どういう風にすればできるのでしょうか?
90 :
名前は開発中のものです。 :02/04/25 20:27 ID:JxszzDhA
質問です。 ダンジョンRPGみたいなのを作ってるんですけど、 例えば「階段を下りますか? Y/N」 みたいな質問に対して、 キーボード入力で答えさせたいときってどうするんでしょうか。 画面にメッセージ表示('階段を下りますか? Y/N'); キー入力待ち; キー = Y なら 階段を下りる処理 キー = N なら何もしない ; みたいな感じに書きたいんですけど、 フォームのKeydownじゃできませんよね?
DirectInputでは
92 :
90 :02/04/25 21:34 ID:???
やっぱDirectXっての使わないとだめですか。
>>90 FormのOnKeyDown/Upイベントで処理できるはずだが?
フォーム上にフォーカスを持ちうるコントロールが無い限りは。
KeyDownイベントが発生したらGetAsyncKeyStateでリアルタイムなキー 押下情報をゲームで使う全てのキーの分取得&保持。 ダンジョンRPGだったらここが負担になる事は無いと思う。 後はメインループをグルグルさせて、シーン別に処理を書いていけば いいんじゃないかと。 (タイトル画面、マップ移動、戦闘等、無論イエスノー待ちもシーンの一つ) 試してないのであしからず。
嫌なら使わなくても良いんじゃないの
96 :
95 :02/04/25 22:30 ID:???
ハッ!
97 :
名無しヘタぐらま ◆B18Bks.Y :02/04/25 22:45 ID:nDQik/kg
Windows API の GetKeyState でどうですか? “ちょこっと作ってみた限り”大丈夫だと思いますが…. 目的のキーが入力されるまで待つ部分は自分で作るダス.
98 :
90 :02/04/25 22:59 ID:JxszzDhA
>93-97 おおっ、いろいろありがとうございます。 調べつつ試してみます。
99 :
名前は開発中のものです。 :02/04/25 23:11 ID:sTpOeU02
100 :
名前は開発中のものです。 :02/04/25 23:11 ID:sTpOeU02
100
101 :
素数2 :02/04/25 23:12 ID:???
ゲームってどうやって作るんだろうな・・・ stringgridで○×くらいしかつくれん。
102 :
94 :02/04/25 23:17 ID:???
あ、メインループというのは一つのハンドラの中でぐるぐる じゃなくって、タイマーイベントなりでメイン部を定期的に 処理してねって事です念の為。
>>94 KeyDownイベントは変数Keyにキーコードが入っているが・・・・
HSPじゃあるまいしグローバルでキー情報取得するのはやめれ。<GetAsyncKeyState
アクション系等でリアルタイムの取得する必要がある時はDirectInput使え。
105 :
名前は開発中のものです。 :02/04/25 23:42 ID:sTpOeU02
ddddインスコできない。どうすりゃいいの? コンパイルエラーになる
>>104 GetAsyncKeyStateとDirectInputの違いって何?
DirectX, COM, 初期化, 確認が必要鴨
いや、そうじゃなくて、 GetAsyncKeyStateじゃなくてDirectInputを使うことによってどんな利点があるのかってこと。 GetAsyncKeyStateでキー状態取っちゃダメなの?
>>109 フォアグラウンドのアプリがキーボードを占有して
バックグラウンドのアプリへのキー入力のデータが抑制される。
(他のアプリにフォーカスが切り替われば自動的に通常状態に復帰)
GetAsyncKeyStateだと、ゲームがバックグラウンドの時も キー状態を取っちゃうってこと?
>>105 まずは環境とエラーメッセージを書きましょう。
とりあえず俺っちはDelphi6&Win2000で出来たが。
113 :
名前は開発中のものです。 :02/04/29 09:59 ID:x6016wxY
ていうか、クソスレが上がってるのが気に入らない! 下げ進行はよくないぜ
114 :
名前は開発中のものです。 :02/04/29 20:03 ID:RsIpxpAM
便乗質問age 強制イベント(NPCが動く、など)の最中にキーボードを押すと イベント終了時にさっき押した分だけキャラが動いてしまいます FormKeyDownで処理しているんですが、この入力待機分のKeyを クリア(?)するにはどうしたらいいんでしょうか? DirectInputはごめんなさい
>>114 強制イベント終了後、バッファが空になるまで読む。
116 :
名前は開発中のものです。 :02/04/29 20:57 ID:x6016wxY
>>114 どういう組み方をしているのか教えてくれ。
バッファのクリアよりも、根本的に
バッファにたまった分をイベント後に処理しないような組み方にした方が良いと思われ。
むしろ、動くようにする方が難しいと思うのだが。
117 :
114 :02/04/30 10:00 ID:Y2Rh.VqQ
>>115 ごめんなさい。ど素人なんでそのやり方がわかりません。
>>116 まずグローバル変数「State:Integer」を定義します。
それでFormKeyDown手続きの中で
case State ofでState別に処理します
(ここでは0を通常状態,1を強制イベントと仮定)。
自キャラが自由に動くState=0の時に適当な行動を取ると
TTimerがオン、State:=1になります。
この時(State=1)のキーダウン手続きのcase文の中身はなにもありません。
そしてTTimerを使ってNPCを動かし終わると
TTimer文の最後でState:=0に戻すという組み方です。
このTTimerが作動している時(State=1)にキーをいろいろ押すと
State=0に戻った瞬間に自キャラが一気に動いたりして困ってます。
State=1の状態ではキーの入力による処理は何もないはずなんですが(?)。
分かりにくい文章ですが助言お願いします。
115が理解できないと思った俺の予想が的中した。 なんだか面倒なことをやっているようだが、 FormKeyDownでは押されたキーのフラグを立てるだけにして、 メインルーチン(例えば始終動いているTimer)で、 フラグが立っていたら○○するというようにした方がいいよ。 まあ、そこまでくるとFormKeyDownなど使う必要はなく、 メインルーチン側でGetAsyncKeyStateやDirectInput等で 逐一キーの状態を見るのがよいのだが。
正直Windowsのイベントドリブンをそのままゲームのシステムとして使うと 余計ややこしくなる。
120 :
114 :02/04/30 21:17 ID:???
>>118 Timerのほうで試してみたんですが、どうもダメなようでした。
やっぱりGetAsyncKeyStateぐらい知らないといけませんね。
これからそれを勉強してみます。ありがとうございました。
121 :
名前は開発中のものです。 :02/05/10 07:57 ID:fPVbdKYo
ところで、delphiでネットワークは組めるんですか?っつーか、ネットゲームは作れるんですか?
>>121 作れます。
ただし、そんなことを聞いているうちは無理だというのが一般的な意見かと思います。
Delphiの言語仕様が気に入らないので諦めました。
124 :
名前は開発中のものです。 :02/05/14 21:39 ID:.e.pT2og
125 :
名前は開発中のものです。 :02/05/18 15:03 ID:5NjAQm1o
本屋いったんですけど、DELPHIの本が一冊も売ってなかった・・・。 通販で買おうと思うんですけど、なんかお勧めあります?通販で立ち読みできればなあ。
>>125 C Magezineで今月号からDelphiの連載が始まっていて
そこで何冊かお勧め本が紹介されているんだが
中級〜上級者向けとして「Delphi 6 プログラミングバイブル」が必携の本だと書かれていたよ。
ただし、価格¥6,200とかなり高め。
ゲームプログラミング向けならそのものズバリの
「Delphiゲームプログラミングのエッセンス」てのと
「DelphiでWindowsゲームを作ろう! 」があるみたいだね。
Amazonで検索してレビューなんかを参考にしたら(・∀・)イイ!んでないだろうか?
>>127 わかりました。検索してみます。
ネットで本が買えるなんて、いい時代になったものだ。
129 :
名前は開発中のものです。 :02/05/27 10:19 ID:dTayolSg
DelphiでOggVorbis使ってる人いる?
W杯での試合や2chでの盛り上り(試合内容ネタスレ&仮面宮本AA&世界のおねいさんハァハァ等) や少林サカーを観て猛烈に感動したので某キャプつば(FC)風ソフトを作りたいのですが デルファイ6パーソナルで可能でしょうか?教えて下さい
期待age
>>130 あなたに根気と探究心があるなら可能です
134 :
名前は開発中のものです。 :02/07/21 20:16 ID:n3k2iOFU
コンポーネントをインストールしたのですが、コンポーネントタブに追加(表示)されていません。 コンパイルのときはエラーなどはでませんでした。 パレットの設定を見てもインストールされていません。どうすればいいのですか?
>>134 当社のSilverSupportのご利用を
お勧めいたします。
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( ) 12インシデントデ300,000エント オトクダヨ
| 某|
(__)_)
register -> Register って奴のマルチポスト?
Yes
138 :
名前は開発中のものです。 :02/08/09 13:28 ID:9nr2ViFw
全画面にするにはどうすればいいですか? DirectX以外の方法でお願いします Del6personalです
>>139 DirectXで全画面にしても、復帰するときウィンドウがヨリベンになっちゃう時あるんだよな。
なかなか参考にナターヨ
142 :
名前は開発中のものです。 :02/09/26 19:08 ID:yScJhLfb
age
143 :
名前は開発中のものです。 :02/10/26 15:45 ID:rDF8hQBV
Delphi6でもDelphiXが使えるらしいのですが、どうすれな使えるようになるのでしょうか?
DelphiXをDelphi6で使うための記事ってなぜ全部英語なんでしょ? なにか書いてはいけない理由とかあるのでしょうか HPのネタにしようかと思ってもあまりに誰もやってないのでちょっと心配になりました
うーん、というか誰も日本語で書いてないからとしかいえない。 調べて自分でやる人には英語の記事だけで十分すぎるというか。 まあ、あなたが日本語の記事書いて下されれば、 同じ質問が来た時にそこにリンク張りますよ。
Delphiって何かMSXのようなフレーバーがあって好きさ。
>147 漏れはX68kっぽい空気があるなと思う
150 :
名前は開発中のものです。 :02/11/19 02:50 ID:QmgZWZyA
XPや2000でも安定した速度を出すにはどうすればよいのでしょうか? 教えてください。
98/MEと2000/XPでは事情が違うのか? メインループの先頭で前回通過してから一定時間以上(たとえば16.6msec)たって いないとメインループに入らないようにする AppIdle、QueryPerformanceCounter、QueryPerformanceFrequencyあたりを使う
152 :
名前は開発中のものです。 :02/11/20 20:55 ID:mmD5/Uww
Delphi6Personalってただ?
あぼーん
ただ
155 :
名前は開発中のものです。 :02/11/22 14:21 ID:jbWqD9HC
ゲームパッドの入力についておしえて
あぼーん
あぼーん
あぼーん
Delphi6にDelphiXできねー!!!! 英語読めねーよ!!!
じゃあ諦めろ
あきらめとけ
あぼーん
あぼーん
>>160 英語読めなくてもインストールできたっつーの!!
ただ、実際、英語読まずしててゲーム作ろうなんて、 今の時代かなりおこがましいと思われ。 とりあえずは英語に見ただけで拒否反応していたら損するよ、これからは。
あぼーん
DirectX SDKはDelphiで使えますか?
そりゃ DirectX つかえたら使えるだろ。
Delphi用のヘッダは含まれていませんので別途必要
>>172 そこんとこよくわかるようなサイトありますか?
あぼーん
176 :
名前は開発中のものです。 :02/12/16 18:43 ID:TsLEMy2F
RPG作ってるんだけど、マップとかのアルゴリズムについて解説してるサイトとか無いですか。
ageちまった。スマソ
あぼーん
あぼーん
ddddのチュートリアルや、DelphiXのDXTimerでも普通に使われている Application.OnIdleですが、これで困った事はありませんか? 俺のパソコンはどれも問題は起こさず、 CPUメーターが100パーセントになるけど、ゲームは普通に動きます。 が、友達のパソコンは1フレームに数秒かかったり、 ほかのソフトが落ちたりして大変だそうです。 var Doneにfalseをいれるだけでダメになります。 一応、そういうパソコンもあると言う事で、使わない事にしました。 OnIdle以外の方法でシビアにDirectInputを取ってこれるような方法を、 実践してる方がいればご教授下さい。
>>181 適度にSleep(0) してみるとどう?
あぼーん
184 :
名前は開発中のものです。 :02/12/20 08:49 ID:dMB3k3fY
TImage.OnMouseMoveイベントが起ったらそのX,Yに画像を移動して表示を 作ってるのですが、 var Back: TBitMap; { 背景画像 } Mask: TBitMap; { マスク } Pattern: TBitMap; { パターン } procedure Form1.Image1MouseMove(Sender: TObject; Shift: TShiftState, X, Y: Integer); begin { Image1に背景を上書き } StretchBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height, Back.Canvas.Handle, 0, 0, Back.Width, Back.Height, SrcCopy); { 表示したいパターンのマスクをOR描き } StretchBlt(Image1.Canvas.Handle, X, Y, Image1.Width, Image1.Height, Mask.Canvas.Handle, 0, 0, Mask.Width, Mask.Height, SrcPaint); { 表示したいパターンをAND描き } StretchBlt(Image1.Canvas.Handle, X, Y, Image1.Width, Image1.Height, Pattern.Canvas.Handle, 0, 0, Pattern.Width, Pattern.Height, SrcAnd); Image1.Repaint; end; でやると画面がちらちらしちゃいま〜す。 よって助けてください。 お願いします。 この通りです。
あぼーん
Image1.Repaintを削除し、タイマーで数分の一秒に一回Repaintしてはいかが? 試してないけど。
あぼーん
あぼーん
delでRPGって、時代の流れに逆行してるよな。 ツクールでつくれよ・・・って話だ。 判官贔屓ってやつで、応援したくなる。がんがれ!
>>189 delphiは無料だから。
これにdirectXがオフィシャルで準備されていればほんの少しは楽になるのにな。
>>189 ツクール嫌いもいるよ。
ツクールは簡単な分、厨なゲームが多い。
というか絶対量がおおいだけだろ。 プログラムのやつもろくなもんじゃねえ。
確かに、ツクール以外で面白いRPGなんて皆無に等しい 漏れも昨日から書き始めたんだけど、ダメージ計算式に1日費やしてしまった。
今使うならDelphiXとQuadruple Dのどっちがいいかな。 Quadruple Dの新バージョンはいつになるんだろう
>>194 ひとりごちのほうに Quadruple D 3.00 のβ版がupされていますね。
現在マニュアル作成中とのことなのでもう間もなくかも。
なにより萌え要素が入ってくるというのは大変重要です。(期待大)
196 :
名前は開発中のものです。 :03/01/23 21:08 ID:9Cl6xi4t
Quadruple D 3.00 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
197 :
名前は開発中のものです。 :03/01/26 00:15 ID:apCviNTD
「プログラムこぴぺ」…。 ただのコピペだろ…。
200 :
名前は開発中のものです。 :03/01/26 00:32 ID:EpQwOCcq
>>197 procedure TForm1.FormCreate(Sender: TObject);
に
Cmd := cmdStop;
が抜けてる
>>200 ありがとうございました。
説明書にはのってなかった・・。
いいわけですね。すいません。
助かりました。感謝。
202 :
名前は開発中のものです。 :03/01/27 23:40 ID:pOW+ueEO
ヒント:人に質問する時の言葉遣いに気を付ける
>>202 たしかに、設問がちょっと適切ではない気がする。
じゃんけんそのものとは、関係ないな。
勝負続行」の部分を while で書き直して見ろ
という事ではないかと。
206 :
名前は開発中のものです。 :03/01/28 14:29 ID:qikczq8T
>>206 ImageListのOnChangeじゃなくて、FormのOnCreateで処理すべきかと
>>207 ありがとうございました。
エラーでなくなりました。感謝です。
>>206 TImageList の OnChange イベントによる
procedure TForm1.ImageList1Change(Sender: TObject);
でなく、
TForm の OnCreate イベントによる
procedure TForm1.FormCreate(Sender: TObject);
begin
ImageList1.Draw(Image1.Canvas, 200, 180, 0);
Image1.Repaint;
end;
として描くようにすれば、いいと思うが。
OnChange は文字通り ImageList が描き替わったときに
起こるイベントだから。
210 :
209 :03/01/28 16:19 ID:tWcxnn8A
>>208 書き遅れ、スマン。 リロードせんで、 207 さんの書き込みに
気付かなかったよ。
>>209-210 詳しく教えてくれてありがとうございます。
英語を理解してないまま、やっていました。
単語くらい覚えないといけませんね。
感謝です。
212 :
名前は開発中のものです。 :03/01/28 23:01 ID:ubzIY39v
213 :
212 :03/01/28 23:05 ID:lk6AYDc1
>>212 の、書かないところは、//メインフォームの宣言の
TForm1から、privateの上までと、interfaceのusesのところ、とか
書いていません。あとは、手打ちしました。
すいませんが教えてください。
214 :
名前は開発中のものです。 :03/01/28 23:23 ID:BQ3p325a
>>212 書いてない所が多くてよくわからないが…。
とりあえず OnTimer イベントで呼び出すプロシージャ( procedure )
はチェックしてみました?
215 :
212 :03/01/28 23:30 ID:lk6AYDc1
216 :
212 :03/01/28 23:44 ID:8P3sZRd0
>>214 一応、イベントのOnTimerのボタンを押すとでてくるのですが・・。
TForm1 = class(TForm)の中に・・
そのあとの、
procedure TForm1.Timer1Timer(sender:TObject);
begin
end;
が出てこないのです・・。
217 :
212 :03/01/28 23:46 ID:8P3sZRd0
すいませんが、Publicの宣言は自動表示なのでしょうか? そこも自分で書いています・・。
218 :
214 :03/01/29 00:14 ID:3aoZMSb3
>>216 >>212 のソースだと、コントロール "Timer1" が呼び出すプロシージャが
判らないっす。
左の”オブジェクト インスペクタ”の”イベント”で Timer1 の OnTimer
イベントが何呼び出してるか確認してみて。
219 :
212 :03/01/29 00:43 ID:5jmVJA0U
>>218 エラーがでてしまいます。
メゾットTimer1Timar 実現部が見つかりません。
と出ています・・。
プログラムミスでしょうか・・。
220 :
212 :03/01/29 00:53 ID:5jmVJA0U
Procedure Timer1Timer(Sender: TObject); を消してやってみると、 メゾットTimer1Timar を追加すべき場所が見つかりません。”END” または、INITIALIZATIONがユニットソースから見つけられませんでした。 と、でてしまいます・・。 やっぱり表示ミスですかね・・?
221 :
214 :03/01/29 00:59 ID:3aoZMSb3
>>219 あー、それはエラーメッセージ通り、呼び出すプロシージャ自身が
無いか、宣言されていない、もしくはプロシージャ名を間違えている
のでは、と。
222 :
212 :03/01/29 01:05 ID:5jmVJA0U
>>221 やはりそうでしたか・・。
ありがとうございました。もう一度はじめから打ってみます。
223 :
212 :03/01/29 02:47 ID:aq5aT4OP
>>217 のとおりでした。自動表示ですね。
何度もためしましたが、できませんでした。
使いかた間違っていました。
すいませんでした。
224 :
212 :03/01/29 03:18 ID:aq5aT4OP
自動じゃないですね・・。
>>221 さんの言っている意味が理解してないみたいです・・。
あぁぁぁぁ・・。
どっかにミスがあるはずなのに・・。
考えます・・・
225 :
名前は開発中のものです。 :03/01/29 04:38 ID:SoZHO6hy
QuadrupleDのインストールってつまり libの中身をDelphiのディレクトリの中のLibにぶち込んで コンポーネントのインストールってところで名前入れて GO!でいいんだよね? なんか暗黙のうちに組み込まれましたとかでるんだけど コンポーネント一覧にマニュアルに書いてあるのが出てこない。 なんか違ってる?
226 :
名前は開発中のものです。 :03/01/29 04:47 ID:fBpSUHac
>>225 DirectXヘッダ関連をパス通ったところに入れてないんじゃない?
ライブラリパスを変えてないんじゃフォルダごとコピーじゃ動かんよ
227 :
名前は開発中のものです。 :03/01/29 05:08 ID:SoZHO6hy
>>226 レスありがとです。
DirectXヘッダ関連ってつまり
dxheaderに入ってるファイル達ですよね?
マニュアル通りちゃんと出してやってるんですが
∧ ∧ ( ̄ー ̄) (つ つ ( ヽノ し(_) Now Thread Stoping. ... 大変見苦しいスレでありました. スレストするまでお待ちください。。。ニヤリッ
229 :
214 :03/01/29 05:12 ID:3aoZMSb3
>>224 212 さん、落ち着けー。 落ち着くんだー。
もしかして、
>>212 のソースを書いている途中の話で、フォーム上に
配置した Timer コントロールを押してもどうにも出来なくなったという事?
スマン。 もう走っているソースの一部かと思っていた。
だとしたら、一番最後の行にあるはずの end. が消えちゃってます。
あとは、クラス定義部分にミスがあります。(これは自分で見つけてや)
頑張ってね。
o. /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無様に . / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
231 :
名前は開発中のものです。 :03/01/29 05:41 ID:fBpSUHac
>>227 >暗黙のうちに組み込まれました
今、インストールし直してみたけどこんなのでない
どこかで間違ってるだろうからどうやってインストールしたか最初から順番に教えて
232 :
名前は開発中のものです。 :03/01/29 05:52 ID:SoZHO6hy
>>231 そこまでしていただけるとは足向けて眠れねぇぞゴルァ。
えーと、libとdxhederディレクトリの中身を
delphi\Libの中にぶち込みまして…
コンポーネントのインストールってところでQuadrupleD_install.pasの
名前をコピーしてOKってやると、パッケージ - dcluser.dpk
ってやつが出てきて、コンパイルすると暗黙のうちに組み込まれました。
とか出やがります。
233 :
名前は開発中のものです。 :03/01/29 06:39 ID:xqGCYytw
234 :
名前は開発中のものです。 :03/01/29 06:53 ID:fBpSUHac
>>232 合ってるっぽいですね(TT
漏れの場合は
コンポーネントのインストール→新規パッケージに追加(パッケージファイル名は適当に(漏れはqd3)つけて)
とやりました……っとよく見たらでてました
>[警告] ユニット 'DGCarad9' は暗黙のうちにパッケージ 'qd3' に組み込まれました
>[警告] ユニット 'Ddidex' は暗黙のうちにパッケージ 'qd3' に組み込まれました
(以下略)
すまん、警告のことだと思ってなかったです このへんは無視していい警告です
環境オプション→パレットにも表示されてないですか?
235 :
名前は開発中のものです。 :03/01/29 07:03 ID:SoZHO6hy
>>234 出来た!!
できたですよ。ありがとうございます。
既存じゃなくて新規にしたらいけました。
わーい、ぐりぐり画像つかってやる。
236 :
名前は開発中のものです。 :03/01/29 07:21 ID:g/1Lb8lz
237 :
212 :03/01/29 09:51 ID:+0l5e5FL
>>229 end.を書いていませんでした!!!
ありがとうございます。
ちゃんとエラーでてたときに、意味がわかりませんでした・・。
クラス定義部分には打ち間違いもあることがわかりました。
いろいろ考えてて、ちがう方向に行きそうでした。
感謝です。ありがとうございます!!
助かりました。
むー、激しく誤爆 QuadrupleDのヘルプ通りにやって、1枚絵を表示させたいんだけど、 実パラメータが足りない。ってでるです。 ヘルプからコピペしてもでるんで、記述ミスってわけじゃないと 思うんですけど、何がいけないんでしょうか? 場所は Vector(tick,50), ってとこみたいです。
age忘れ。よろしくおねがいします。
o. /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無様に . / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
242 :
名前は開発中のものです。 :03/02/04 19:50 ID:0p5AHbKy
OnKeyDownイベントで、zやxを指定するにはどのように記述すればよいのでしょうか? VK_zでも駄目で、zでも駄目、Old('z')でも駄目でした。 どなた様か、よろしくお願いします。
o. /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無様に . / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
>244 ありがとうございます。 おかげさまで助かりました。 重ね重ね、お礼申し上げます。本当に感謝しております。
∧ ∧ ∧ ∧ /⌒~~~⌒\ ( ,,) (,,・Д・) / ( ゚>t≡ )y─┛~~ 〜(___ノ 〜(___ノ ,γ_ (_ ノγ U ∩_∩) THANK YOU 2ch ┌───────┐ \ α___J _J and (| ● ● | ヽ / ̄ ̄ ̄ ̄\ GOOD-BYE 2ch WORLD! /.| .┌▽▽▽▽┐ .|____|__||_| )) / ● ●、 ( ┤ .| | .|□━□ ) |Y Y \ またどこかで会おうね \. .└△△△△┘ .| J |) |.| | .▼ | | \あ\ | ∀ ノ | \/ _人|∧∧∩゛冫、 .∧_∧ | \り.\ . | - ′ | _/)/)/( ゚Д゚)/ ` . (´∀` )..ヽ(´ー`)ノ \が\ . | ) \ / 〔/\〕 U / ∩∩ ( ) (___) \と.\ .|/ | | | c(*・_・) | |ヽ(´ー`)ノ_| | | | |〜 /\.\う\| (-_-) (__)_) UUUU /∪∪ (___)(_(__) ◎ ̄ ̄◎─┘ .└──┘.(∩∩)
247 :
名前は開発中のものです。 :03/02/07 20:42 ID:a3UyrHMb
QuadrupleDいれて、絵を表示させようとしています マニュアル見ながら Vector→Vector2d もやったのにまっさらなフォームしか表示されません 助けてくださいな
>>248 足りてないだけでした。お騒がせしました
QuadrupleDでpng画像って使えないの?
. __ ‖ ~"ー 、,,_ | ‖ 終 .了 ,> \ | / ‖ _,:-−'´ ‖/~ ヽ | / ‖ , )) ,、 ,、 /'ll__/ ヽ / ヽ__/ ヽ/ _‖ _ ヽ. ∧___∧ / / ´ ‖ー/ ` l ロ. / _ _ / ´ 、__, ` |. ‖∨ ,! || | l--l ` _l ∨ ヽ/ ̄)( ̄ ̄`"::::ノ (⌒ヽ, ..ヽノ , ( ヽ_ / /ll `'ー、....::ノ ∀\/ー- /`l ヽ ヽ、 ,ヽ:..:ノ ‖ '::::|⊃ iー- l (_〕i__ l : :::Y ‖ ::| |"|ー-,| |(
254 :
名前は開発中のものです。 :03/02/23 14:28 ID:LSaXKoou
0000を四つに分けるのはどうしたらいいですか
255 :
名前は開発中のものです。 :03/02/23 17:12 ID:bI8S4HFB
>>254 '0000' が文字列か整数かによって違いますが…。
256 :
名前は開発中のものです。 :03/02/23 20:02 ID:LSaXKoou
>>256 showmessage(IntToStr(1234 mod 10));
showmessage(IntToStr(1234 div 10 mod 10));
showmessage(IntToStr(1234 div 100 mod 10));
showmessage(IntToStr(1234 div 1000 mod 10));
(1234 div 100 mod 10)
1234を100で割って12
12を10で割った余りは2
‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/終 ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ \_/\_/\_/\_/\_/\_/\_/\_/\_/ _________________________ /| |\ \だからさぁクソスレ立てんなって言っただろ/ ?パチパチ?パチパチ  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄?パチパチ? ∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ( ´∀`)∧_∧∧_∧∧_∧ _∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧ ∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧ ( ) ( ) ( ) ( )
QuadrupleD新版キタ━━━━━━(゚∀゚)━━━━━━ !!!!! 3月12日更新なのに気づくの遅いよ俺!! Xsimplify.exeの更新のみの模様 これでやっと自前の3Dオブジェクトを表示させることができますヨ チュートリアルなどドキュメント類の誤記は放置のようですのでこれから始める人は要注意 過去ログで指摘されてる以外にもいくつかありますがスペルミス程度のものばかりです TCanvasを使う苦労に比べれば屁みたいなものです メタセコとの連携が強化されつつあるのでMLもチェキ
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | このスレは終了よ \_____ _________________ // ∧_∧ ∧__∧ ( ´∀`) ( ・∀・) 〉 <、 n ,> 〈 イ´γ 、ヽ ,||、 ,,ノ,_i⌒) __/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (⌒r´⌒y/ f々) (;:..(..:::;ノ / \ ここまでよくがんばったわね。 ハ::,;、::::ノ〈//`´ (二二ノノ | もう楽におなりなさい… |ノ:::::::〈\./ (_ミ:::〈 \__________ ィf::::::::::;ヽ、 〈;::::::;::ヽ (ミ:::;;:::;;:::::} 〉;;;::::)::) 人;;;;;y;;;;;;ノ /^i;;:イ;;;ノ | / / / /| / `y / 〈 < | | || | ヽ `ヽ| i | ト.、 \`ヾ:| | |/^〉 ノ ^〉| ノ__.|ヘ;| しヘ;|_ 〉 ∠_ノL! ∠_ノL! ≪完≫
_ ♪ ┌―─┴┴─―┐ ♪ ♪ ヽoノ │ 終 了 | ♪ ヽoノ へ). └―─┬┬─―┘ ( ヘ く ││ > ゛゛'゛'゛
264 :
名前は開発中のものです。 :03/05/12 23:46 ID:+3okumJP
QuadrupleDのDDPDを使っているのですが添付されているチュートリアルのサンプルが動作しません セッションの新規作成はできるのですが参加しようとするとタイムアウトしてしまいます どなたか心当たりのある方お願いします
┌────┐ ┌──────┐ ┌┤┌───┘ └──┐┌─┬┤ │││ ││ ││ ││└──┐ ││ │└──┘│┌──┘ ││ │┌──┐││ ││ ││ ││└────┐ ┌───┤├┐││ │├────┬┘ │┌──┤├┴┼┘ ││┌──┐└┐ ││ └┤ └┐ └┤│ └┐└┐ ││ │┌┐└┐ ││ └┐│ │└──┐││└┐└┐ ││ ││ │┌──┘││ └┐└┐││ ││ ││ ││ └┐└┤│ ││ │└───┴┴┐ └┐││ ┌┘│ └────┬┬┘ └┤│ ┌┘┌┘ └┘ │└──┘┌┘ └────┘
>>264 ageるな馬鹿。
やっとこのスレが静かになったきたというのに。
上位100スレぐらいが荒らしの射程範囲なので、あげちゃだめ。
HEXはどうやるんですか?
>268 もちっと詳しく書かないとHEXの何をどうしたいのかがわからんぞ
270 :
268 :03/05/17 02:34 ID:IP6oP4NN
2HEX間の距離(HEXの数)を数えたいのです。
>>270 ああ、HEXマップをいじっている時に私もつまづいたなぁ…。
とりあえず、私の使っている方法。
”HEXマップにおける距離”=”ユニット(コマ)が進む数”だから、
0 1 2 3
┌─┬─┬─┬─┬
0│ │ │ │ │
└┬┴┬┴┬┴┬┴
1 │ │ │ │
┌┴┬┴┬┴┬┴┬
2│ │ │ │ │
…のように、レンガ壁状のマップで考えます。
そして、この1コマを4分割。
□□□□□□□□
□□□□□□□□
□□□□□□□□
□□□□□□□□
□□□□□□□□
□□□□□□□□
あとは、直線の距離を出して、2で割ればOK。
>>271 の続き
(x0,y0)〜(y1,y0)の距離を出したかったら、
xq0 := (x0 * 2)+(x0 mod 2); yq0 := y0 * 2;
xq1 := (x1 * 2)+(x1 mod 2); yq1 := y1 * 2;
xlen := Abs(x1-x0)+1; ylen := Abs(y1-y0)+1;
hexlen := Sqrt( xlen*xlen + ylen*ylen ) / 2 + 1;
で、算出できるはずです。(メンドいから整数と実数の変換は略)
>>272 ゴメン、間違えた。
× xlen := Abs(x1-x0)+1; ylen := Abs(y1-y0)+1;
じゃなくて
◎ xlen := Abs(xq1-xq0)+1; ylen := Abs(yq1-yq0)+1;
ね。
274 :
272 :03/05/17 16:16 ID:LhaqdzNz
>>272 また訂正。 何やってるんだ俺は……。(恥)
xq0 := (x0 * 2)+(y0 mod 2); yq0 := y0 * 2;
xq1 := (x1 * 2)+(y1 mod 2); yq1 := y1 * 2;
xlen := Abs(xq1-xq0)+1; ylen := Abs(yq1-yq0)+1;
hexlen := Sqrt( xlen*xlen + ylen*ylen ) / 2 + 1;
275 :
268 :03/05/18 00:57 ID:RcPQLtqQ
4分割は新鮮でしたが、 (0,0)-(1,3) が 5 になるのですけど。 x0 = 0; y0 = 0; x1 = 1; y1 = 3; xq0 = 0; yq0 = 0; xq1 := (1 * 2) + (3 mod 2) = 3; yq1 := 3 * 2 = 6; xlen := Abs(3)+1 = 4; ylen := Abs(6)+1 = 7; hexlen := Sqrt(4*4 + 7*7) / 2 + 1 = 5.03;
276 :
272 :03/05/18 02:18 ID:MA7QNrHO
>>275 ホンマや…。 ちょっと昔のソース探してみます。
今適当に思いついた奴だけど、 □■□□□ ■=移動軸、★=目標、☆=自分 ★■□□■ □□■□■ □□■■□ ■■■☆■ をちょっとずらして □■□□□ ★■□□■ □□■□■ □□■■□ ■■■☆■ とすると、ヘックスの移動が、普通の四角マスでの ・縦移動(HEXの右上左下方向の移動) ・横移動(HEXの横方向の移動) ・左上右下移動(HEXの左上右下方向の移動) に対応することになる。 で、目標から上下左右(斜めは考慮する必要なし)にある一番近い軸までの距離と、 軸との交点から自分(中心)までの距離を足せば、移動距離となる、ハズ。 上の例だと斜めの軸までの距離が1、☆までが3、合計の移動距離が4が結論ということになる。 でも、障害物とか地形効果とか考えると単純に距離だけ求めても、とか思うんだけどどうだろ?
行頭の半角スペースは無視されるんだった…。 □■□□□ ■=移動軸、★=目標、☆=自分 ★■□□■ □□■□■ □□■■□ ■■■☆■ こうね。
279 :
268 :03/05/18 05:00 ID:enzpE3WK
>>277 移動させるときはリアルタイムストラテジースレにあるA*アルゴリズムを考えています。
なんか、ちんぷんかんぷん。
654444456
543333456
543222345
432112345
432101234
432112345
543222345
543333456
654444456
654444456
543333456
543222345
432112345
432101234
432112345
543222345
543333456
654444456
>>270 >>275 昔のソース見たら、やはり Sqrt を使った
>>274 の方法だった…。
よく、動いていたな〜。 この直線距離は単なる目安だったからかも。
それで、やっと”コマを動かす距離”を出せましたわ…。 コレでいいはず。
xlen := Abs(x1-x0); ylen := Abs(y1-y0);
if xlen <= (ylen div 2) then hexlen := ylen
else hexlen := xlen + ylen - (ylen div 2);
0 1 2 3 4
1 2 3 4 5 ← 1つずらしレンガ状の移動距離を…
2 2 3 4 5
3 3 4 5 6
0 1 2 3 4
1 2 3 4 5 ← 整えるとこうなる。
2 2 3 4 5
3 3 4 5 6
>>279 経路探索は、ちゃんとやっていたんですけどね。(笑)
ちゃんと消費移動量出して。
>>280 今度は(1,0)-(0,1)で2になります。
x0=1;
y0=0;
x1=0;
y1=1;
xlen = Abs(0-1) = 1;
ylen = Abs(1-0) = 1;
1 <= (1 div 2) が成立しないので、
hexlen := 1 + 1 - (1 div 2) = 2;
最終的にこれでいけました。
function GetHexLen(const P1, P2: TPoint): Integer;
var
W, H: Integer;
begin
W := Abs(P2.X - P1.X);
H := Abs(P2.Y - P1.Y);
if H <= W * 2 then
begin
if (Odd(P1.Y) and (P1.X >= P2.X)) or
((not Odd(P1.Y)) and (P1.X <= P2.X)) then
Result := H + W - H div 2
else
Result := W + H div 2
end else
Result := H;
end;
283 :
272 :03/05/19 00:13 ID:xetwIoTi
>>282 あう。 何度も何度もすいませんでした。
(0,0)からしか検算していなかった私のミスです。
きにすんな
Bitbltを使ってアニメーションをさせてるんですが、開始すると アニメーションは割と綺麗に動きますが、実行させてるFormが 非常に重たくなります。Formを移動させようとしようものなら、 かなりガクガクに動くように…(開発環境マシンはP42.53GHzです) 何方か対策をご教授願えれば幸いです。 // TimerのIntervalは500に設定してます。 procedure TForm1.Timer1Timer(Sender: TObject); begin image1.Picture.LoadFromFile('C:\001.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; sleep (100); image1.Picture.LoadFromFile('C:\002.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; sleep (100); . . . image1.Picture.LoadFromFile('C:\006.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; end;
>>285 sleep() でウェイトをかましているからでは。
WINのタスクを独り占めして文字通り眠ったようになりますから。
タイマーとカウンタを使うのはどうでしょう?
TForm1.FormCreate の所で cnt を 1 に設定しておいてから、
procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Picture.LoadFromFile('C:\00' + IntToStr(cnt) + '.bmp');
BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY);
image2.Repaint;
Inc(cnt);
if cnt>6 then cnt:=1;
end;
というのは如何でしょう?
あと、 bmp ファイルは最初にまとめて ImageList へ読み込ませては?
>>286 見事に軽くなりました(´ー`) ありがとうございますた。
ImageListコンポーネントは使ったことがないのですが、
ちょっと弄ってみることにします。
質問です。 ■■■ ■□■ ■■■ (元絵:□が残したい部分・■が黒塗りつぶし) □□□ □■□ □□□ (マスク:□が白塗りつぶし・■が残したい部分の黒塗りつぶし) を、OR→AND演算で表示すれば半透明化出来ると思うのですが、 ↑のマスク画像無しで、半透明化するにはどうすればいいのでしょうか? # ADVなエロゲーを再現しようと思ってるのですが、画像を抜き出してみたところ、 # 手元のゲーム(VisualArts系やDOのゲーム等)では、各キャラクターの立ち絵に # マスク用画像が用意されてなく、黒背景に立ち絵が描いてある画像しか # 入ってませんでした。これらは、何か別の画像と論理演算を行って # 半透明化させてるんでしょうか?
マスク画像は実行時に作成しているか、 1ピクセルずつ合成してるんじゃないの? SRCANDやSRCPAINT以外にもたくさんの合成方法があるけど、 1回のBitBltで透過させる事は不可能だと思う。
>>288 TBitmap の ScanLine を使って、
>>289 さんの仰るとおり 1 pixel ごとに
処理するヨロシ。
291は何なの!? 荒らしいらい?
>>288 TImageのプロパティで出来るじゃん
>>288 Doは知らんがVisualArts系にはマスク部分ある。確か立ち絵のファイルといっしょになってる。
画像抜くのに使ってるソフトによってはマスク部分が無視される。
というかあれのマスク部分考慮してる抜き出しソフト見たことない。あんまり需要無いしな。
295 :
288 :03/05/25 03:35 ID:OUd92QaS
296 :
290 :03/05/25 17:23 ID:ll42N4KR
>>295 ソース拝見いたしました。
> ・For文で回してる処理が非常に遅い(scanlineのせい?)
マスクを作るプロシージャにて、パレットコードを String に変換している
為と思われます。
procedure TForm1.make_mask(sBmp:TBitmap);
var
i,j, x : Integer;
p : PDWORD;
mp : PBYTEArray;
begin
for i:=0 to sBmp.Height-1 do begin
p := sBmp.ScanLine[i]; // ビットマップ座標(0,i)のポインタ
mp := mask.ScanLine[i];
x :=0;
for j:=0 to sBmp.Width-1 do begin
if p^ = $00000000 then //if str_mask = '000' then
begin
mp[x]:=$ff; mp[x+1]:=$ff; mp[x+2]:=$ff; // B=255 , G=255 , R=255
end else begin
mp[x]:=$00; mp[x+1]:=$00; mp[x+2]:=$00; // B=0 , G=0 , R=0
end;
Inc(p); Inc(x,3);
end;
end;
end;
……と、いうのは如何でしょう?( PDWORD よりも PDCHARArray の方が
わかりやすいでしょうか)
>>296 自己レス
PDCHARArray って何やねん…。 PBYTEArray です。
>>295 > ・残したいキャラに含まれている黒色までマスク化してしまう(目の黒など)
ペイントソフトを使って、マスク用のカラー(例 $ffff00 などの使わない色)で
抜きたい所を塗るのはどうですか?
if p^ = $00000000 then の所は変更せねばなりませんが。
298 :
290 :03/05/25 17:41 ID:ll42N4KR
連続投稿すみません。 キャラ絵を見てみましたが、瞳の中や影にあたる部分に背景を透けさせる色 RGB(0,0,0) で塗られている部分があります。 この絵からマスクをつくると、目の部分が抜けてしまいますね。
>>285 もう直したかもしれないけれど、LoadFromFile は、描画ごとに毎回やるには
むちゃくちゃ遅いです。
>>286 のようにTImageかTImageListに、あらかじめ格納しておくに一票。
>>292 TAlphaBitmapっていうグラフィックエンジンの紹介かと
>>298 普通はマスクの色は、使っていない色を使います。
でも、フルカラーとかハイカラーで書いていると面倒だよね。
遅レスですまんが 0 1 2 3 4 1 2 3 4 5 2 2 3 4 5 3 3 4 5 6 移動条件を全マス上下左右+左上+右下に統一しておいて こうずらしたほうが良くない? 0 1 2 3 4 1 2 3 4 5 2 2 3 4 5 3 3 4 5 6
>>300 5 4 3 3 3 3 4 5 6
5 4 3 2 2 2 3 4 5
4 3 2 1 1 2 3 4 5
4 3 2 1 0 1 2 3 4
4 3 2 1 1 2 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 3 3 3 4 5 6
が、
5 4 3 3 3 3 4 5 6
5 4 3 2 2 2 3 4 5
4 3 2 1 1 2 3 4 5
4 3 2 1 0 1 2 3 4
4 3 2 1 1 2 3 4 5
5 4 3 2 2 2 3 4 5
5 4 3 3 3 3 4 5 6
になるということですか。
うーん、
>>282 のように(1,0)−(0,1)が2になりそうな予感…。
ソース、ぷりーず。
302 :
301 :03/05/29 23:44 ID:mpTwdvzD
301訂正。 「右上」だからこうですね。 5 4 3 3 3 3 4 5 6 5 4 3 2 2 2 3 4 5 4 3 2 1 1 2 3 4 5 4 3 2 1 0 1 2 3 4 4 3 2 1 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 4 5 6
おおそうか、すでに既出だったか。 白い四角と黒い四角はNGワードに入れてたから見えなかったよ。
305 :
288 :03/06/03 20:41 ID:dV3uJJSo
>>296 レス遅れましたが、ありがとうございました。
お陰で苦にならない速度で描画出来るように(´ー`)
現在、立ち絵やシナリオウィンドウにアンチエイリアスを
かける処理を考えてるんですが、単純にぼかしをかけた
マスク画像を用意して、それを重ねるのが一番簡単でしょうか?
ぼかしをかけるサンプルを適当に拾って弄ってるんですが、
なんか実行時に使うと、やたらと時間がかかるので…
306 :
296 :03/06/03 22:24 ID:VCAAEscw
>>305 多少はお役に立ったようで何より。
アンチエイリアスですが……、私の知っている限りでは一枚絵ではちょっと
難しいと思います。
やはり仰る通り、アンチエイリアスのかかったマスクを、背景とαブレンドで
合成してから、立ち絵を描写した方がよろしいかと。
307 :
296 :03/06/04 01:33 ID:yTkfegdd
308 :
296 :03/06/04 04:16 ID:yTkfegdd
すいません データをLZ77圧縮(展開)したいのですが、 Delphiじゃできませんかね
Delphiで出来ないことなんてそんなにないから安心しろ
311 :
名前は開発中のものです。 :03/06/26 02:54 ID:N77Il6kb
Delphiにzlibのコンポーネントとかついてなかったっけ?
漏れもDelphiでなんかつくってみたくて、ここにたどり着きますた(・∀・)保守っとこ
保守なんていらんつーに
314 :
名前は開発中のものです。 :03/07/08 20:57 ID:q5vqgPew
すいませんが教えてください。 LightWaveで作った3Dのオブジェクトを使って PC上でバイクを改造するプログラムを作りたくて Delphiを始めたのですが、どうやって読み込むのかわかりません。 検索してみてもその辺の解説が見つからないので もしご存知でしたら教えてください。
316 :
名前は開発中のものです。 :03/07/09 06:01 ID:/lHa0Xtu
317 :
名前は開発中のものです。 :03/07/09 07:28 ID:z+m4emKo
なんでテメーはさっきからDelphiのスレなんかに貼ってるんだよ
319 :
名前は開発中のものです。 :03/07/09 11:06 ID:ql5zHAJ+
ちょっと難しいかもしれませんが、 別プロセスの確保してるメモリのアドレスを指定して、その値を貰ってきたい場合の方法が解る方教えて頂けませんか? ・プロセス名でそのプロセスの使用しているメモリ領域の取得が可能でしょうか?可能ならその方法。 ・別プロセスの使用しているメモリ領域の値の取得方法。 以上2点、もちろん1点でもかまいません。 解る方、ご教授くださいm(_ _)m
320 :
名前は開発中のものです。 :03/07/09 11:07 ID:KtHg7Cpg
あげんなヴォケ
322 :
名前は開発中のものです。 :03/07/09 15:54 ID:BU3ACoKR
未だにsage原理主義者がいるのか・・・
323 :
314 :03/07/09 16:46 ID:SyWy0giO
>>315 サンクス。
よく分からんががんがって見る。
324 :
名前は開発中のものです。 :03/07/09 23:41 ID:ZOyC2Ge6
>>319 メモリマップドファイル。共有用のメモリを確保して各プロセスは
ファイルとしてアクセスする。
各プロセスに割り当てられたメモリ空間は別プロセスからアクセスすると
保護違反になるので無理。
327 :
夏厨 :03/07/28 21:17 ID:kSvdxyQD
初心者が質問していいスレはここでつか?
画面描画をDelphiXで、音声再生をQuadrupleDでやってる漏れは変態ですか?(´・ω・`)
330 :
名前は開発中のものです。 :03/07/29 16:07 ID:DStWVx2P
>>326 横レスですが、
>各プロセスに割り当てられたメモリ空間は別プロセスからアクセスすると
>保護違反になるので無理。
私も、他のプロセスのゲームのパラメータを変更するようなツールを作りたいと思ってたのですが
それは結構難しいのでしょうか?
331 :
名前は開発中のものです。 :03/07/29 16:26 ID:bPalsdQf
>>330 そういうときは操作したいゲームをツールの子プロセスとして起動する
世のチート・クラックツールはほとんどそういう作りだと思うが?
その程度のこともわからないうちから他プロセスのメモリなぞいじったら
PCぶっ壊すのが落ちだからヤメトケ
他プロセスのメモリにアクセスするAPIがあったような
>>333 ReadProcessMemory/WriteProcessMemory
335 :
夏厨 :03/08/14 16:50 ID:wwHVbfPP
ええと、質問です。 少し前にDelphiをダウンロードして勉強しているのですが、クライアントソケット、サーバーソケットのヘルプが無いらしく、どうにも使い方がわかりません。 クライアントとサーバーの接続を確立するには、クライアント側のクライアントソケットのHostプロパティに接続先のコンピューター名を設定しなければいけないそうなのですが、 コンピュータ名って一体何なのでしょうか?
336 :
夏厨 :03/08/15 00:33 ID:hl2WmB9Z
すいません自己解決いたしました。 ええと、そこで新たに質問なんですけど、無料ダウンロードのバージョンではクライアント/サーバーソケットでしか接続できないのでしょうか? ということは、つまりIP接続は不可能ってことですよね?
338 :
夏厨 :03/08/15 13:20 ID:qkV4VO0M
>>337 ううん、Indyってなんだろう・・・?
調べてみます。
それでまた質問なのですが、現在Bitmap描画で非常に困っています。
なんとか表示はできたものの、
1:パレット通りの色で描画できない
2:Bitmapファイルの特定の矩形だけを選んで描画できない
という壁にぶちあたっています。
これらはTBitmapのプロパティをいじるだけで実現可能でしょうか?
質問です。 ジョイスティックの入力を調べるには やはりダイレクトXを使わないと難しいのでしょうか? ヘルプを見まくったりぐぐったりしたのですが どうしてもDelphiだけでのやり方が見つからなかったんで。
341 :
夏厨 :03/08/16 14:55 ID:01BjsKnm
>>339 ありがとうございます!
・・・え、英語だ・・・・Indyっていうのはイイヘルプみたいなものなのかなぁ・・・?
それで、BitBltを調べて使おうとしているのですが、どうにも上手くいきません。
BitBlt(Form1.Canvas.Handle,
0,
0,
64,
32,
BitmapA.Handle,
0,
0,
SRCCOPY);
こういう使い方であっていますでしょうか・・・?
デバイスコンテキストっていうのもかなりチンプウカンプンです。
画像すら表示できないので、色深度についてはまた後で調べてみようと思います。
>342 ありがとうございます。くぅぅ英語かぁ。 >068.ZIP うちのXPだとキーボードの上下左右でしか反応しませんでしたけど・・・ いやまてよ。つまり下のuses MMSystem以降の文を適したところに 入れてやればジョイスティックで動くということかな? なんとか努力して学習してみます!
いや待てよ待てよ。なんとなく判ってきた。 UNIT1の中でujoypadを呼び出して、そこでMMSystemを呼び出して、ってことか。 とりあえず、FalseとTrueのトラップは回避しました。 しかし、まだなぜか入力反応が妙だ。 もちっと頑張ってみます。
346 :
夏厨 :03/08/16 22:17 ID:y2Q/T/Cw
すいません自己解決いたしました。 BitBltは転送するだけで描画はしてくれないんですね。 Repaintしたら描画されました。ハンドルの指定もちょっと間違えていたようです。 またまた質問なのですが、Timerを使ったときにTransparent を True にしてImageをRepaintすると、背景は見えるのですが手前に描画した絵がちらついてしまいます。 これはいった何故なのでしょうか?また、どうすれば解決できるのでしょうか?
JOYスティック、自分で理解しようとしましたが、さすがに無理ですた。 九九を覚えてる最中に因数分解に挑戦するようなもんでした。 42番のファイルはうまく動かなかったので、過去のファイルをあさってみることに 順々に調べていって、38番のファイルでヒットしました。 似たようなプログラムでも色々やりかたが違ってて驚き。 なんとかこれで前に進めそうです。 副産物でTForm1.AppIdleでのループも覚えたりして、色々収穫ありました。 感謝です。
っていうかDirectXの方がレスポンスとか優れてるって聞くけどね
349 :
名前は開発中のものです。 :03/09/18 00:27 ID:reI1vnNj
QD3のチュートリアル「tutorial\DDSD\recording」をコンパイルしてみました が、実行したら即終了してしまいます 上手く動いている人はいます?
350 :
名前は開発中のものです。 :03/09/20 16:34 ID:tFWmTUD8
DirectDrawを使って画像を表示したいんだけど。Cでは出来たのに C++だと出来ないYp 誰か教えてぇ
俺HSPからdelphiに移ってきた者だす。 ユーザーからの入力待ちで処理を中断する時、HSPならloopにawaitかけてユーザーからの 入力を待ったんだけどdelphiでもこんな感じであってる?
>>351 Win32GUIならあってない
ゲームなら好きにしろ
>>351 OnKeyPressなどのイベントをご利用ください。
ゲームデバイスならTTimer使って一定時間毎にデバイスチェック、変化があったらメインフォームに
PostMessage
(´-`).。oO(処理待ちにawaitなんて使うなよ‥)
TTimerより、OnIdolの方がよくない?
入力待ち<>処理待ち
mp3かoggをBGMとして使いたいのですが、使えるものが見つかりません。 今まで試したのは、VBMP3.dll、AlphaOgg、MP3Playerです。 VBMP3は、mp3再生開始時にプチノイズが入る。 AlphaOggは、初期化時に0.8秒ほどの長いノイズが入るのが避けられない仕様との事。 MP3Playerは、ライセンスがGUN?とかで、これを使うとゲームのソースを公開しなければならなくなるので絶対に嫌。 VBMP3とAlphaOggのノイズは、Prodigy192、YMF744の安物、オンボードの3環境で共通して起こったので、 環境依存の問題では無いと思います。 MP3かoggを再生出来るものがありましたら、教えてキボンヌ……お願いします。
ドライバの問題じゃないよな。 標準のメディアプレイヤーで再生した後に、効果音を再生したりすると、 以前のバッファのデータが残っていてノイズのように再生されることがある。 うちでも普通に起こる問題だ。 WDMドライバの問題らしく、 Windows2000,XPで起こって、Win98で起こらなかったリする。
で、どうしてもそのソフトの問題だと思うなら、 DirectSoundのストリーミング再生とOggVorbisのDLL使って、 自分でルーチンを組んで再現するか確かめてみろ。
>>358-359 oggの方はドライバの問題じゃないです。
既知の不具合に仕様として記述されていますし。
これ以外にogg再生できるものは検索しても見つかりませんですた
VBMP3はドライバの問題かもしれませんねー。
けれども、3環境2PCで再現されたので、多分関係無いと思います。
Win98seでも起こりましたので、XP依存の問題でも無いようです。
製作者の方も、バグを治しきる能力が無いと宣言なされて、投げてしまっていらっしゃいますし・・・
>自分でルーチン組んで
無理です。
組んでくれませんか?
delphiで作られたゲームを色々落としてみたのですが、
BGMにoggやmp3が使われてるものは1つとして見つかりませんでした。
どなたかご存知ありませんかね?
>>357 開発者ならGPLぐらい覚えておこうな。
ちなみにOggを使うほうがいいぞ。Oggなら64kbpsでもMP3の128kbpsと同じクラスの音質がでる。
>>361 助かりました!
DLL同士での下位互換はまったくないみたいで、
手当たり次第にダウンロードして動かした結果、4回も再起動させられましたが、
DLLのバージョンさえ間違えなければ、凄く安定していてCPU使用率もAlphaoggよりも低く、ウマーです。
DSDDとAPI直接の両方からWAVを再生の実験をしてみても、
まったく干渉しあう事なく綺麗に再生されました。
単純な再生であればかなり直感的で短いコードで済むようなので、
マニュアルを読み通せる程の英語力は無い漏れでも、
ゲームのBGMという目的であれば使いこなせそうです。
本当にありがとうございますた
>>362 プログラム始めてまだ一週間経っていないんで・・・
感染する露出狂組合みたいなもんだって事は理解しています。
もちろんogg優先で探していたのですが、見つからないのでmp3で妥協を、と思っていたのですが、
BASSはまったく同じコードでoggとmp3が再生できてしまうので、問答無用でoggを使うつもりです。
>>362 そう単純でもないんだけどね。
低スペックのマシンを考慮すると、OGGはメモリ消費とかCPU負荷がちょっと…
確かに、webで手に入るゲームで、かつDelphiで、OggVorbis使ってるのは少ないかも。 うちでは今のプロジェクトで使ってるまつ。 過去作品も、MIDIからOggに乗り換え予定。 PCだし、ゲームに使う分にはメモリ消費は誤差の範囲だけど、 CPU負荷は結構でかいね。 OggVorbis対応にするために、+200MHzほど動作環境引き上げますた。
Quadruple Dを使った解りやすい解説サイトってないですか?
367 :
名前は開発中のものです。 :03/10/30 16:15 ID:x7sfAWDS
すいません、どうしても判らないので質問。
裏画面を塗りつぶしてからイメージリストのイメージを描いて
それから表画面に描画、というやりかたなのにちらつきが発生するんですが
これは何が原因なのでしょうか?
プログラムとソースは以下です
procedure TForm1.FormCreate(Sender: TObject);
begin
uraGa.Canvas.Pen.Color := RGB(0,135,64); //線の色を緑に
uraGa.Canvas.Brush.Color := RGB(0,135,64);//塗りつぶしも緑に
uraGa.Canvas.Rectangle(0,0,137,97);
tagnum := 0;
omoteGa.Canvas.Draw(0,0,uraGa.Picture.Graphic);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
tagnum := TButton(Sender).Tag;
Caption:=IntToStr(tagnum);
uraGa.Canvas.Rectangle(0,0,137,97);
ImageList1.draw(uraGa.Canvas,tagnum*32+8,0,1); //フィールド描画
omoteGa.Canvas.Draw(0,0,uraGa.Picture.Graphic);
end;
ソース
ttp://forgamedev.zombie.jp/uploader/up5/img/237.lzh
自己解決しました。DELPHI、ちらつき、でぐぐった結果。 >FormCreate の所で Form1.DoubleBuffered := True; としてダブルバッファ >を有効にすると、ちらつきは抑えられます。 メモリ食うけど。 でした。試してみたらちらつきが見えなくなりました。
MMTimerを使って乗り物シミュレーションの計算処理をしているんだが、 (必ず秒間30回やらないといけない) HT対応のPentium4でプログラムが突然死するという報告を受けてしまいマスタ・・・。 HTを切ると正常になるようなので、別スレッドで動いてるというコイツがいちばん怪しい・・・ 普通にtimeSetEventしてるだけなのにヽ(`Д´)ノ ウワーン 愚痴ってスマン(´・ω・`)
>>370 timeSetEventじゃなくて別スレッド内の処理に問題があるんじゃないのか
同期処理や排他処理に問題があると見るのが普通だな。 HTだと本当に同時にプログラムが動くので、シングルCPUのときに発現しなかった 潜在的な問題が起きてしまったんだろう。
373 :
370 :03/11/02 00:05 ID:hZhBKi/R
ソースをくまなくチェックしてたら、異なるスレッドから同じVCLにアクセスしてる 部分が3行ほどあった・・・ 非HTだと全く気づかなかったのに、なかなかシビアだHT _| ̄|○ もしかして、スレッドAで大域変数に書く&スレッドBでそれを参照するっていう動作も 全部書き直さないとだめかな・・・。
Delphiマガジンの連載がまとまって書籍になりましたが、 内容はどういうのものなんでしょうか? 雑誌本体もネットで知ったので、注文するのに躊躇してます。
376 :
374 :03/11/24 23:20 ID:HhVX+ghW
>375 情報感謝〜。 なんか、期待してたのとは違う・・・ これならネット調べまくった方が良いカモ。
377 :
名前は開発中のものです。 :04/01/09 21:24 ID:XF/BcCFo
GLDPNGでαチャンネル付きのpngを読み込んで、 そのままCopyRectで重ねて表示すると、ちゃんとブレンドされて表示されますか? どこが悪いのかわからずに困り果てています。 TBitmapに流し込んだ時点で透過情報が失われてしまうのか?とか疑ってるんですが……
>>377 TBitmapには、αブレンド描画機能はなかったはず
GLDPNGがもし気の利いたライブラリなら、α描画用のルーチンがついてると思うよ
今時αブレンドやるなら、DirectGraphicsかな(さすがに、自前描画は・・・。GDI+は重いし・・・)。
>>377 ドキュメントよく嫁
>e.アルファチャンネル
>TGLDPNG ではアルファチャンネルを扱うことが出来ます。ただしあくまで読み込みや保存のみで画像をアルファチャンネルを使っての表示とかは出来ません。
>>378 ありがとうございます。
GLDPNGはpng画像を読み込んでTBitmapに格納するライブラリみたいなので、表示関係とかは無いみたいです。
今検索してみたら、ひとりごこちというページが見つかって、QDというのがあったので、
それを使ってDirectGraphicsにチャレンジしてみます。かなり大変そうですが(^^;
>>379 そこは読んでいたのですが、TBitmapでαブレンドが出来ると思っていました。
二人ともありがとうございました。成功したらupします。
8時間くらい弄り続けたけど無理だった__| ̄|○ なんかすっげー無駄な時間過ごしてしまった気分。 普通にゲーム作るのにはアルファブレンドなんて必要ないのかな? 透過色を作ってくりぬきとかでやるみたいだけど、 それよりも簡単に出来そうで応用も効きそうだったからやろうとしていたんだけど、 見当違いだったのか、漏れがとことんあほすぎるだけなのか…… GGXみたいなのが作りたくて、まあ無理だからとりあずシューティング作ろうとしてるんだけど。
Quadruple Dのインストールト、GLDPNGのインストール?と、 まあその2つだけは出来たから無駄では無いか。夕飯食べよう。
>>383 ム板で聞いた方がいいと思われ。
もっとも、普通はヘルプの開発者ガイド見れば十分な気がするが‥‥
>>383 同じ作者さんの「Delphi Graphic Secrets」あたりが気に入ってるのなら十分に
買う価値は有ると思われマシ。
ただ個人的な意見では「コンポーネント作成」の「入門書・手引き書」としては
チと難し過ぎ&マニアックではないかと・・・。
入門書的なものとしては「実践 Delphiコンポーネントプログラミング」
(秀和システム)あたりがワタシとしてはオススメです。
386 :
383 :04/01/21 09:19 ID:wd1TdNXX
レスありがとうございます。 大変参考になりました。早速その書籍を注文することに します。
QuadrupleDのサンプルをいろいろいじってるんですが、 これってFormの上に直接描画しかできないんでしょうか? たとえばターンベースSLGのようなものを作りたい場合、 操作系のボタンなどはTControlで済ませたいのですが、 そうするとPanelの上とかに配置できたほうが便利です。 どうすればいいですか?
388 :
名前は開発中のものです。 :04/02/02 01:08 ID:tEb92+er
プログラム板から誘導されてきました、お願いします 動きの激しい(シューティングなどの)ゲームを作るとちょっと描画がもたつく 感じがするのですがDelphiで高速な描画というとどういった方法がセオリーですか? 今はImageList.Drawを使っています
>>391 DM_DISPLAYFREQUENCYを指定するの止める。
DevMode.dmFields := DM_PELSWIDTH or
DM_PELSHEIGHT or
DM_BITSPERPEL;
もしくは、ちゃんと垂直同期周波数を指定して使う。
DevMode.dmDisplayFrequency := 85; // 垂直同期周波数 85Hz
でも、DirectXのSetDispalyModeの方が便利じゃない?
393 :
391 :04/02/17 20:09 ID:dkJ1RZI2
教えていただいた通りにやりまして、 無事解決できました。ありがとうございました。
>>391 ゲームなどの一時的な切り替えの場合は
>>392 の言うとおり、IDirectDraw::SetDisplayMode使ってください。おながいします。
マルチポストは人間として最低だ
396 :
391 :04/02/18 00:01 ID:4t4/ZNaZ
>395 ばれましたか、以後きおつけます。 >394 DelphixでSetDisplayModeを使ったフルスクリーンを試してみます。
>>396 軽々しく嘘をつくな
匿名なのをいいことにやったんだろ?
言われなかったら黙ってるつもりだったんだろ?
「きおつけます」って何だ?「気をつけます」のタイプミスなのは分かるが
どうして「やりません」と言わない、言えない。
どうせまたやるんだろ?
人間として最低だ
ただ一つ良かったのは、マルポ先に解決を報告したこと。
ま、当然すべき後始末なんだが、それすらできない馬鹿が多くて善行だと錯覚してしまう。
↑こんな風に↑人(
>>391 )を信じられない人↑にはなりたくないね。
398 :
391 :04/02/18 03:17 ID:4t4/ZNaZ
>397 おっしゃる通りです。 「気をつけます」ではなく「二度としません」と述べるべきでした。 まして、タイプミスをするなど大変申し訳なく思います。 今回の件で自分がいかにネットマナーにたいして大変甘い考えだったのか 再認識いたしました。 今後はこのような事が二度と無いよう気をつけます。 delphi板の皆様および397様、申し訳ございませんでした。
そのくらい軽く流せる大人に、私はなりたい
まじめに答えすぎじゃー
お
402 :
395 :04/02/18 23:55 ID:3+LDjO65
ツッコミ書こうか迷ったけど、日付を見て突っ込んだ。 「こっちに書いたけど、しばらくしてもレス付かない…困ったなぁ…」って 感じじゃないから。 「こっちにホイっと。こっちにもホイホイっと」って感じ。 一番悪質なのは、「時間も同じで文面もコピペのくせに、HNだけ変えてる」とかな。 あーゆーのは人間として根本的なものが欠けてると思う。
403 :
名前は開発中のものです。 :04/02/19 02:06 ID:uxu8pHRJ
>>402 それはネット社会でのマナー。
一般人はそう思わないかもしれない。
世の中には、他人を利用するだけの人や、人の手柄を横取りする人や、
粗暴な人や、馬鹿やキチガイもいるの。
> 粗暴な人や、馬鹿やキチガイもいるの。 403が当てはまるな
405 :
名前は開発中のものです。 :04/02/19 05:22 ID:6U2dcXmj
>404 その根拠は?
煽りを受け流すのもネットマナーですよ?
>>405 「馬鹿」「キチガイ」
これらの言葉を使っているあたりが。
メタ議論するときは、名前に「メタ議論」て書いといて下さい。 ローカルであぼーんできるので。
某掲示板で「内容同じ・HN変え」がつっこまれてる。 馬鹿だねぇ…。 本当にマルチポストする馬鹿って、どうしようもないね。
情報を効率よく手に入れる方法が 馬鹿とは思えんがね。 くわて6年間ネットをやってきたがマルチポストに 迷惑をこうむった事も不快に思ったことも一度も無い。 どうもオタクっぽい人間は細かいルールを勝手に作るのが好きだ。 こういった意味の感じられないルールも、そういう体質から 産まれたものじゃないかな。
>>411 釣れるといいですネ。
マルチポストは馬鹿ですヨ。
413 :
411 :04/02/20 03:21 ID:tzgUlsN4
「オレ以外が釣れるといいですネ」って意味ネ。 「馬鹿」って言葉が理解出来ないなら「マナーが覚えられないカス」って 言えば分かってもらえるかな。 自己中はクズ。
414 :
名前は開発中のものです。 :04/02/20 03:47 ID:+CHepr4l
>>411 はスパムメール送信ソフトでも作ってるんだろ。
415 :
名前は開発中のものです。 :04/02/20 03:52 ID:+CHepr4l
411の文を良く読んでみたら、
他人が不快に思う事でも自分が不快でないなら何をやってもよい
と言っている。
まさしく、
>>403 に出てくる典型的なウンコ。
416 :
411 :04/02/20 04:51 ID:UoZnuZJu
まぁ、落ち着いて。 とりあえずマルチポストの何が迷惑なのか 言ってみ。 それと413は勝手に411と名乗らないようにw
ウンコには理解する脳みそ足りない。
本当だ。間違えた(藁 まぁ、いくらマナー違反だっつっても、理解出来ない人はいるだろーから これ以上はとやかく言わんけどな。 人それぞれっと。
まー、マルチポストだとレスつけても、質問者が書いたこと忘れて 反応なしが多くてアホらしくなることはあるが、別に迷惑じゃないわな。 自分がよく見てる場所で、同時に同じ質問がされても 気分が悪いだけで、迷惑じゃない。 あえて迷惑だと言うなら、「マルチポストに関する議論」が出てウザイことかな。 goto論争みたいなもん。 # あ、そりゃ十分迷惑か
>419 それ、すげーウンコだな。
マルチポストは質問者に対して失礼だと思うんだが。 「お前らに質問しても分かるかどうか怪しいからな。他の場所でも質問しちゃろう」 と受け取れる。 それから事後報告が無い場合が多い。あっても 「他の場所で解決しました。ありがとうございました」 アホか。掲示板はそいつのためのものじゃない。 次に来た人が同様の問題を抱えていた場合参考にするっていう掲示板の大きなメリットが無くなってしまう。
偶然違う者が同じ質問しただけかもしれないじゃないか 証拠もなしに疑うのはイクナイ(・A・)
424 :
411 :04/02/20 16:13 ID:UoZnuZJu
>422 という処置をして、解決したのかまで報告すれば 掲示板のメリットもたもてる。 要はマルチポスト自体よりも、その後のケアに問題があるのだと察する。 だがそこまでキチンとしたケアしている人は少ない。よって マルチポスト=悪い と見られるのもしょうがないのかも。 >419 同じくそれ酷い。 >423 論点がズレています。確実にマルチポストであることを前提としていますから。
425 :
411 :04/02/20 17:10 ID:UoZnuZJu
誤)・・・という処置をして、解決したのかまで報告すれば 正)・・・どういう処置をして、解決したのかまで報告すれば
友達に「教科書忘れたから貸して」とか言われて
カバンから教科書取り出したら
もう既に友達が他の人(周辺の)から教科書借りてて
「もういいよ」とか言われたときは少しむなしかったよ
お前な、俺に教科書貸してって言うたんちゃうんかと
(´・ω・`)
人に頼みごとしておきながら、「解答者の解答者による質問者のための行為」を無駄にしかねない行為をするなよ。
「人のために動いたら、『その頼みごとをした当事者によって』その努力は無駄になった」
それが気分のいいものであるはずがない
>>423 一字一句違わない文章が同日ほぼ同時刻に投稿されているのを見て、そう考えるのはおかしい。ID同じならなおさら。
プログラミングとは関係ない。他スレ逝ってこい! っと言ってみるテスト♪
JEDIのヘッダだけで簡単にDirectX対応アプ作れんのに なんでわざわざラッパー使うの?
> 一字一句違わない文章が同日ほぼ同時刻に投稿されているのを見て、そう考えるのはおかしい。ID同じならなおさら。 同じ疑問を抱いた第三の人間によるコピペならどうなんでしょう っと煽ってみるテスト(おんぴゅう
>429 1:事実に対して仮定を持ち出す 2:ごくまれな反例をとりあげる
>>429 同時期に二人の人間が同じ疑問を持ち、二人とも2chへ向かい
一方が書いた文章を他方が他スレや他板にコピペするという「意味不明な行動」に走る
可能性をどの程度と考えますか?
っと乗ってみるテスト
>>423 それぐらい、見たら判別つく。
コピペだから言ってんの。
ちなみに、件の場所は今のところ放置。
ヤツはもう違うHNで別人になりきるつもりだろうな…。
と、思ったけど…。 一方は消したようだな。 ゲームプログラミングに関係無ない話題を広げてしまって、申し訳ない。
434 :
名前は開発中のものです。 :04/02/20 23:50 ID:H+nxhdTG
太閤立志伝2で、安土城の屏風を作れと命令されて、 二人の絵師に依頼すると、二人目に 絵師「二股をかけるとは〜殿もお人が悪い」 主人公「なんじゃ知っておったのか」 となる。
太閤立志伝2てDelphi製?
436 :
名前は開発中のものです。 :04/02/21 09:10 ID:6FItl7or
PEiDとかのファイルスキャナで調べてみれば?
437 :
名前は開発中のものです。 :04/02/22 22:32 ID:kS04/uuK
glsceneはどうなんですか? コンパイルして実行してみた限りではDemoはすごいのですが・・・・ ちなみにコンパイルするにはソースファイルのフォルダをたくさん ライブラリパスに登録してやらにゃあいけませんネ。
ソースファイルを全て一つのフォルダにするとわけわからんなってウマー
文字列データをバイナリ形式にして ファイルに保存する方法を教えてください。
バイナリ形式(?)と文字列データ(?)の違いとは何ぞや。
442 :
440 :04/02/26 10:55 ID:POoWNNj0
要はTxtファイルじゃなくてバイナリで保存したいと言うことです。 ヨロシコ
ますます意味がわからんねぇ。 バイナリエディタでTxtファイル開いて味噌。自分の間抜けさが分かるから。
444 :
441 :04/02/26 23:07 ID:7p4E82A5
だから「婉曲表現」でレスしたのに…。 最初から「拡張子変えて保存したら?」とでもレスした方が良かったかな…。
445 :
440 :04/02/26 23:11 ID:POoWNNj0
バイナリ形式にすれば書き出したデータの内容を 隠ぺいできるかと思ったのですが、かんてぃがい?
うん
>>445 どこまでマジなのか知らんが、おもいっきりかんてぃがい。
例えリソースにしたって、見ようと思えば見れるし。
そこまで見たいデータなのかは知らんが。
なんだ暗号化か。
あれだろ数値をバイナリで保存したら 変なボツボツで暗号化されたー と思ってるんだろう
16進になってるのをみて すげー。わけわかんねー。隠蔽できたー ってかんてぃがいしてるだけ
で、バイナリで保存する方法は?
TFileStream
>>451 その前に暗号化しないと意味ねぇだろうが。
まだ分からんのか。
文字コードを数値のままテキストとして保存すりゃ、 テキスト形式だが、それなりに隠蔽できるかもな。 単純な暗号化よりかえって気付かんかも知れん。 むしろそのままのデータでもないのに解読しようとする香具師には 何をどうしてもほぼ無駄なんだが… 激しく遅レスか、スマソ
456 :
名前は開発中のものです。 :04/03/07 07:46 ID:izXAOVj3
>>456 \GLScene_v09b_Full\Delphi6
の内容を
\GLScene_v09b_Full\Source
へコピー
GLScene6.dpk
をダブルクリックし
インストール
を選ぶ
\Source
このフォルダとそのサブフォルダすべてにライブラリパスを通す
(一つのフォルダに全てをコピーしたほうが楽かも)
以上で終了
DGLをインストールしているとエラーがでるから要注意な
458 :
名前は開発中のものです。 :04/03/07 08:56 ID:9FNkdWMb
タクティクス系のゲームを作ろうと思っているんですけど、どこかに作り方とかありませんか? 本とかでもいいんで。
ない
462 :
名前は開発中のものです。 :04/03/07 10:06 ID:izXAOVj3
464 :
名前は開発中のものです。 :04/03/07 15:07 ID:9FNkdWMb
FFタクティクスみたいなのです
465 :
名前は開発中のものです。 :04/03/07 15:46 ID:aAwpNem/
midiではなくspiファイルを使いたいのですが 出来ますか?
466 :
名前は開発中のものです。 :04/03/07 16:12 ID:DH9RCA5T
16bit ⇒ 32768色 24 or 32bit ⇒ 1,677万色
>>470 Windowsのビットマップ勉強し直せ
474 :
名前は開発中のものです。 :04/03/08 21:47 ID:gzfiLnJc
今、ポンジャンゲームをつくっています! 基本部分は以下のようなクラス構成になったんですが、 どんなもんでしょうか? //牌クラス type TTile = class private FKind: Integer; //牌の種類 FScore: Integer; //牌の点数 public constructor Create(Kind: Integer; Score: Integer); //牌を生成 function Kind: Integer; //牌の種類を返す function Score: Integer; //牌の点数を返す end; //牌山クラス type TWallTile = class private FPosition: Integer; //次に引く牌の位置 FNumber: Integer; //牌の数 FTiles: array[0..63] of TTile; //牌のセット public constructor Create; //牌山を生成 destructor Destroy; override; //牌山を破棄 procedure Shuffle; //牌山を混ぜる function Pick: TTile; //牌を引く function Position: Integer; //次に引く牌の位置を返す function Number: Integer; //牌の数を返す end;
475 :
名前は開発中のものです。 :04/03/08 21:49 ID:gzfiLnJc
//プレイヤークラス type TPlayer = class private FCall: Boolean; //リーチフラグ FScore: Integer; //点数 FHand: array[0..7] of TTile; //手牌 FPicked: TTile; //引いた牌 FDiscarded: TTile; //捨てた牌 public //procedure Pick; //procedure Discard; end; //ゲームクラス type TGame = class private FScene: Integer; //シーン FCount: Integer; //カウンター FLeader: Integer; //親 FPlayer: array[0..1] of TPlayer; //プレイヤークラス FWallTile: TWallTile; //牌山クラス public constructor Create; destructor Destroy; override; //procedure Dealing; end;
どうしろっていうんだ
形にこだわる奴ほど途中で投げ出しやすいよな
これだけ見せられて評価を迫られても
479 :
名前は開発中のものです。 :04/03/09 23:33 ID:89NMQiY1
>>474 >>475 クラスの構成について意見がききたかったので(^^;
メソッドはある程度できてるので。。。
まずポンジャンゲームってのを知らなかった ルールもどんなゲームかもわからんので何も返事できん ↓知ってる香具師がんば
えっ!? お、俺? ↓…次のやつがんば
482 :
名前は開発中のものです。 :04/03/10 00:07 ID:L9clygDL
「ポンジャン」は登録商標です
>>470 32bitのうち8bitは透明(アルファ)だから24bitと色数は同じ
透明が増えて +1 嘘ぴょん
ボタンを押すと効果音が鳴るようなものを作ったのだけど、実行ファイルを作ったとき、同じディレクトリに鳴らすwavを置かないとビープ音になってしまいます。 wav自体を実行ファイルに組み込む、またはwavの暗号化みたいなことはできるですか?
>>487 rc ファイルでプロジェクトに組み込み
実行時にTResourceStreamで読み出すがよい
暗号化はできる。 おそらくリソースにすれば組み込むこともできる。
488-490 どうもありがとうございます。 トライしてみます。
トライしつづけろ
ヨーダの言ってることは嘘だ
フォースが落ちてきていると思ったらそういうことか。
だったら俺はあげるぜ。
496 :
名前は開発中のものです。 :04/03/19 00:01 ID:PRfbCbRV
>>496 いや、一回氏ね!こんなので100円も取るのかよ!
お前、ヴァカだろ?
体験版とかないの?
500 :
名前は開発中のものです。 :04/04/12 01:50 ID:w6zbO8/e
>>490 487じゃないけど、いいサイト教えてくれてありがとう。わかりやすいね。
こちらで、質問していいのか解りませんがDirectXについて質問です。 DirectX9でスプライトを表示したいのですがよく解りません。 DirectX9のヘッダはProject JEDIのものを利用しています。 d3dx9.pasの定義では function Draw(const Texture : IDirect3DTexture9; const SrcRect : PRect; Center, Position : PD3DXVector3; Color : TD3DColor) : HResult; stdcall; となっていますが、SDKのID3DXSprite.Drawメソッドとは定義が異なっており どう置き換えて良いか解りません。 もう一点、ID3DXSprite.Begin 、ID3DXSprite.End も _Begin 、_End となってまして そのままでは実行できませんでした。 SDKでは HRESULT Begin(VOID) ですが、d3dx9.pasでは function _Begin(Flags : LongWord) : HResult; stdcall; となってまして、Flags に代入すべき値が解りません。 どなたか、教えて頂けないでしょうか? 長文失礼しました。
>>502 >英語のヘルプとMSDNにはsummerの変更が反映されてるらしい
あ、そうなんですか・・・
update summer 2003 日本語版は反映されてないんですか〜。
やはり英語ドキュメントにも目を通すべきでしたね。
ありがとうございました。
QuadrupleDに関して質問です。 TDGCaradのWindowModeメソッドを実行すると、 フォームのクライアント領域が(強制的に)変更されますよね。 WindowModeメソッドを実行した後で、 フォームのクライアント領域のサイズを変更すると、 画像もそれに伴って拡大されますが、少しぼやけてしまいます。 これをぼやけないで拡大する方法はありませんでしょうか。 具体的なサイズを述べると、320×240ピクセルの解像度の画像をそのまま拡大して、 640×480ピクセルのクライアント領域に表示したいのです。 D3DDeviceのSetSamplerStateメソッドあたりにこういう設定があるのだと思っていたのですが、 どう設定してもうまく行きませんでした。 よろしければご教授ください。
505 :
名前は開発中のものです。 :04/05/27 17:11 ID:3QjbMYRC
>>506 ありがとうございます。どうやら家の環境が悪いみたいですね。
文字にアンチエイリアスを書ける方法を教えてください
この板のDelphiスレを全部漁ればきっと出てくる。 このスレにもあったと思う
じゃあもういいです!
なんだかよくわからないけど ここに拳銃おいときますね _,、__________,,,、 `y__////_jニニニニニfi 〈_フソ ̄フ ,=-_,,,,-┴─' //o /rて__/ ,//三/ / ̄" 〈。ニ___/
95+w6is6は多重人格者ですか?
516 :
505 :04/06/02 01:31 ID:5YP19q1h
OSはWin2kで グラフィックボードはわかりません。すいません。
わからない、だって?わかろうとしていないだけじゃないのか?
ズブの初心者ですがゲームを作りたくてDelphiを購入しました Delphiの入門書でお奨めのタイトルありますか? やる気はあるんでお願いします
521 :
505 :04/06/02 23:51 ID:5YP19q1h
>>517 すいませんです。一応自分でも調べてみたのですが全然解りませんでした
>>518 ありがとうございます。
多分これだと思います
Intel Corporation 810 Graphics Controller Hub
523 :
517 :04/06/03 20:24 ID:JyJN5bDC
>521 チップセットか。 えーと、IntelのHPでドライバを更新。
525 :
505 :04/06/04 05:50 ID:AO8L39ub
>>523 ありがとうございます
ドライバを更新してみましたがやっぱり透過されませんでした
526 :
517 :04/06/04 19:01 ID:PVsApv1c
うーん。32bitカラーが使えないと投下されないのかな。 んなわけないよな。ごめん。なんかわかったら教える。
QDとEasy3Dどっちがいいかな?
529 :
505 :04/06/07 15:13 ID:7SYBlQj4
>>527 D3DFMT_A8R8G8B8で何も描画されなくなってしまったので対応してないみたいです。
そのサイトの方法3を使用することによってきちんと不具合も無く透過出来るようになりました。
ありがとうございました
530 :
名前は開発中のものです。 :04/06/07 19:54 ID:74upfBbg
QDのメッシュとsxなどの外部ファイルを使わないポリゴンを同時に表示したくて
DirectXSDKのサンプルとQDのサンプルを参考にしてプログラムを組んでみました。
なんとか表示はできたものの、ウィンドウのリサイズや終了時にアプリケーションエラーがでてしまいます。
QDのログをみるとこのようなエラーが記録されていました。
>Direct3DDeviceオブジェクトの解放に失敗しました(Error Code = UNKNOWN ERROR ... $00000001)
メッシュのロードをしなければ終了時にアプリケーションエラーはでなくなりましたがログのエラーは消えていません。
リサイズ時には終了してしまいます。
このエラーを出ないようにするにはどうすればよいでしょうか?
http://gamdev.org/up/img/677.zip
>>530 FormにOnCloseイベントを設定して、DG.Freeとしてやったら、ちゃんと終了したよ。
開放を忘れないようにしような
DGは明示的にFreeしなくてもフォームが勝手に捨ててくれるんじゃねえの?
534 :
530 :04/06/08 21:39 ID:+uDFzKA1
>>532 今までOnDestroyで解放していました。(これはエラーがでます。)
OnCloseで解放するとうまくいきました。
ありがとうございました。
何か間違ってる
TDDIDFFXについての質問です カーソルキーを押しっぱなしにするとTDDIDFFX.Stick.X(又はY)は常に1(又は-1)を返します カーソルキーを連打しないと動作しないようにするにはどのようにすればできるでしょうか?
>>530 せっかくあるんだからTDGVertexBuffer使いなよ
538 :
530 :04/06/09 23:57 ID:dS+m1a5k
>>537 使おうとしたけどサッパリ使い方がわからず諦めた
>>538 そんな難しいか?
TForm1に
vb: TDGVertexBuffer;
を追加。
FormCreateのVB作成部分を
vb:= TDGVertexBuffer.Create(DG, 3, SizeOf(TCustomVertex), 0,
D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT);
pVertices:= vb.Lock(0, 3, 0);
try
CopyMemory(pVertices, @vertices, SizeOf(vertices));
finally
vb.Unlock;
end;
に。
ApplicationEvents1IdleのVB表示準備部分を
DG.D3DDevice.SetStreamSource(0, vb.VertexBuffer, 0, SizeOf(TCustomVertex));
に。以上。
>>539 ありがとー
エラーもでないし上手くいきました
リサイズすると消えてしまいますがもうちょっとがんばってみます
541 :
名前は開発中のものです。 :04/06/17 16:52 ID:UbgtGyWv
>>540 Create時の指定が D3DPOOL_MANAGED なら消えないみたいですね。
というわけでDGCarad9.pasの
2682
2701行は
D3DPOOL_MANAGEDの間違いだと思うのですが・・・・・
さらに、
2711
2718行は
if FPool <> D3DPOOL_MANAGED then
の方がいい気が・・・・
教えてエロイ人。
教えない
そもそも内部でRestore用に保持するぐらいなら鼻から MANAGED使った方がいい気がするんだが。
JEDIのDX9ヘッダを使用しているのですが、困っています。 以下のコードでActiveはプロジェクトファイルの中でフォーム作成直後に呼ばれる関数で、Timer_RenderはTTimerコンポーネントでIntervalは1で動かしています。また、フォームのクライアントサイズは640*480です。 var D3D9:IDirect3D9; Dev:IDirect3DDevice9; procedure TMainWindow.Active; var d3dpp:D3DPresent_Parameters; begin D3D9:=Direct3DCreate9(D3D_SDK_VERSION); ZeroMemory(@d3dpp,SizeOf(d3dpp)); d3dpp.Windowed:=true; d3dpp.SwapEffect:=D3DSWAPEFFECT_DISCARD; D3D9.CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,Handle,D3DCREATE_HARDWARE_VERTEXPROCESSING,@d3dpp,Dev); Timer_Render.Enabled:=true; end; procedure TMainWindow.Timer_RenderTimer(Sender: TObject); begin Dev.Clear(0,nil,D3DCLEAR_TARGET,$000000FF,1.0,0); Dev.BeginScene; Dev.EndScene; Dev.Present(nil,nil,0,nil); end; このプログラムは最低限のデバイス作成と画面の初期化だけを実行するものです。 フレームレートが33FPS前後しか出ず、困っております。 ご助言よろしくお願いします。 私の環境は、WindowsXP+Delphi7ProでPentium4の3.4GHz、GeForceFX5950Ultraで測定しました。
> Timer_RenderはTTimerコンポーネントでIntervalは1で動かしています ( ゜д゜)カポーン
546 :
544 :04/06/21 17:49 ID:hUNg5P7j
追伸、Idleで動作させても50FPS程度です。
>>544 d3dpp.PresentationInterval:= D3DPRESENT_INTERVAL_IMMEDIATE;
は?
548 :
544 :04/06/22 09:38 ID:yy2X6pb6
>>547 ありがとうございます。無事60FPS以上出ました。
ヘルプにフルスクリーンでしか意味ないようなこと書いていたので試してませんでした(^^;
549 :
名前は開発中のものです。 :04/06/23 11:37 ID:175oP9wI
>>548 60FPS以上いくと不安定になるVGAもあるみたいだから
注意してちょんまげ
フルスクリーンとウィンドウの切り替えは、 D3DPresentParametersのWindowedを変更してデバイスをResetするだけでは駄目なんでしょうか。 上記の方法でやろうとすると、フルスクリーンからウィンドウになったときにタイトルバーが消えてしまいます。 FormのBorderStyleをbsNoneにしたような感じですが、この状態でBorderStyleを変更しても変化がありません。 正しく切り替えるにはどのようにしたらいいでしょうか。
QD3を使ってのゲーム作成を始めました。 fpsなどの情報をTextOut()や、それに近いもので表示させようと思っています。 現行の処理(OnIdleにて): D3DDevice.BeginScene(); PushSprite(); // BitMapを多数配置 Sxw := TSXTextWriter.Create(); Text[n] := Sxw.CreateStringTexture(); PushSprite(); // 上で作成した文字列のテクスチャをいくつか D3DDevice.EndScene(); D3DDevice.Present(); Text[n].Free// 上で作成した文字列のテクスチャの解放 Sxw.Free; のようにして、TSXTextWriterを使用していますが、 テキストのテクスチャ数が増えるに連れて、大変重たくなってしまいます。 きっともっと良い描画方法があると思うのですが、 メモリデバイスコンテキスト等も上手くいかず、苦戦しております。 何かヒントをいただけないでしょうか?
>551 シーン描画毎にテクスチャとTSXTextWriterをクリエイトする意味あんの? 文字列に変化ある時に書き換えるだけじゃだめなんか。
553 :
551 :04/07/25 03:26 ID:TtxXwPsH
>>552 ゲームのスコアを表示させているため、
かなりの頻度で文字列が変化してしまうもので…。
ですが、ご指摘の通り、TSXTextWriterは毎回生成・破棄する
必要がないため、FormCreate/Destroyに移動させました。
もしかしてTBitmap.Canvasとか使った方がいいんでしょうかね?
引き続き色々試してみようと思います。
テクスチャの描画毎の生成破棄も相当コスト高いとおもうけど。 ふつうにあらかじめ確保したテクスチャにWriteすべきでね?
555 :
551 :04/07/25 14:40 ID:TtxXwPsH
>>554 やっぱりそうですよね…。
でもそうやってみると、どうしてもリークしてしまうんです。
やり方がおかしいのかな_| ̄|○
・MainFormのprivateでText1: TDGTexture;を宣言。
・FormDestroyでText1.Free;
procedure OnIdle();
begin
:
Text1 := Sxw.CreateStringTexture();
PushSprite(Text1);
D3DDevice.Present();
// この辺りで何らかの解放処理が必要なのでしょうか。
:
end;
(今は、SXLibを見ながらTBitmapを使おうと模索中です。)
>>555 ん?それだと
>Text1 := Sxw.CreateStringTexture();
の部分で毎回テクスチャがクリエイトされちゃうじゃん。そりゃリークしまくるでしょ。
Writeすればっつーのは
FormCreateでText1をクリエイトして
>Sxw.Write(0,0,'Score',Text1);
とでもすればっていうこと。
あ、言い忘れた。 当たり前だけど毎描画Writeするのも重いはず。 別に文字列持っておいて変化したらWriteするようにするのが普通だと思う。
558 :
551 :04/07/25 16:26 ID:TtxXwPsH
>>556-557 おあーぁぁー、Writeってそういうことだったんですね…。
メソッド名そのままの効果…何故気付かないのか私は_| ̄|○
これなら期待通りの動作をしてくれます!
> 別に文字列持っておいて変化したらWriteするようにする
CPU使用率が(一部)断然下がりました。
おかげさまで、描画系の作成に苦労しなくて済みそうです。
>>552 ,554(=556,557?)さんをはじめ、スレ住人皆さん、
ご教授いただき有難うございました<(_ _)>
QDmanual/ML/sampleの山|λ......
初心者丸出しの質問ですいませんが ゲームのハイスコア(1位から10位ほど)を保存したいんですけど 何を使えばいいんでしょうか
tstringlist
Quadruple Dを使ってゲーム作っているのですが、 画像の一部だけを描画するにはこの方法でいいのでしょうか? Scene.PushSprite( Vector2D(0,0), [ SXVertexSP(50,50, $FFFFFFFF, 0.0,0.0), SXVertexSP(100,50, $FFFFFFFF, 50/Texture.Width, 0.0), SXVertexSP(50,100, $FFFFFFFF, 0.0, 50/Texture.Height), SXVertexSP(100,100, $FFFFFFFF, 50/Texture.Width, 50/Texture.Height) ], Texture, sxbAlpha, False ); もっとスマートな方法ってありますか?
>>561 それでよし
>>559 漏れもTStringListに一票
桁揃えておけばソートできるしな
暇ならハイスコアコンポーネントでも作って公開してくれ
>>550 変える順番が大事
変える個所は合ってる
>>543 ほかの個所は使ってる
>>536 前回のキー入力を保存
状態遷移でググると基本的な考え方がわかる
やね本2の解説がわかりやすい
>>528 QDの良い所はVCL連携と3Dオブジェクト(しかもモーション付き)の扱いが楽
>>562 レスありがとうございます。
でもこれだと解像度の違いのせいか、描画したい元画像の範囲選択が上手くいかないんです。
解像度を800×600にして、元の画像の大きさが50×100だとすると、下のソースでは
画像の Rect(0, 20, 50, 50) の部分が描画されると思うのですが、ずれてしまいます。
Scene.PushSprite(
Vector2D(0,0),
[
SXVertexSP(0, 0, $FFFFFFFF, 0.0, 0.2),
SXVertexSP(0, 50, $FFFFFFFF, 1.0, 0.2),
SXVertexSP(30, 0, $FFFFFFFF, 0.0, 0.5),
SXVertexSP(50, 30, $FFFFFFFF, 1.0, 0.5)
],
Texture,
sxbAlpha,
False
);
ゲームでたくさんの画像を使うときには皆さんどうしているのですか?
一つ一つテクスチャを作るか、それとも一つのファイルに画像を収めて
一部だけを描画するようにしているのでしょうか。
そりゃずれると思われ
微妙に間違えてますた。 でも、これでもずれますが、どのようにパラメータを指定すればいいんでしょう。 Scene.PushSprite( Vector2D(0,0), [ SXVertexSP(0, 0, $FFFFFFFF, 0.0, 0.2), SXVertexSP(50, 0, $FFFFFFFF, 1.0, 0.2), SXVertexSP(0, 30, $FFFFFFFF, 0.0, 0.5), SXVertexSP(50, 30, $FFFFFFFF, 1.0, 0.5) ], Texture, sxbAlpha, False );
566 :
名前は開発中のものです。 :04/08/15 02:11 ID:PuiE5qNp
>>565 画像のサイズが2のn乗じゃないから。
テクスチャのサイズは読み込んだ画像と同じとは限りません。
TDGTextureのプロパティTotalWidthなどで確認できます。
Widthとの値の差を見比べるとよいでしょう。
読み込んだ画像が2のn乗に満たない場合は自動的にテクスチャのサイズが拡張されます。
そのサイズは読み込んだ画像以上でなおかつ最小の2のn乗になります。
50x100の場合は64x128になります。
たとえば50x100の画像を読み込んで作ったテクスチャの左上から32x32を表示したい場合は
テクスチャが64x128に拡張されているので以下のようにしてUVを求められます。
U=1/64*32
V=1/128*32
ここからは余談ですがグラフィックボードによってはテクスチャに色々な制限があります。
・256x256以下のサイズしか扱えない
・正方形でないとならない
・2のn乗サイズでないといけない
・32bit色が使えない
記憶を頼りに書いてるので間違ってたらツッコミおながいします。
ちなみにVoodooシリーズがこれらの制限に全てひっかかるカードです。
丁寧な解説ありがd
>>567 起動してくれません。デバッグログには、
「Direct3DDeviceオブジェクトの生成に失敗しました(Error Code D3DERR_OUTOFVIDEOMEMORY)」
とあります。
>>568 たぶんビデオカードのメモリが不足してるだけだからテクスチャのサイズが小さくなれば解決すると思う
サンプルでは512キロバイト使ってるからグラフィックボードを買い足していない環境じゃつらいかも
思いついた対策を書いておきます
これでもダメならグラフィックチップの種類やVRAM容量、エラーログの全文がわかればもう少し詳しく調べられるかも
・画像編集ソフト(ペイントなど)で画像のサイズ(今は288x256)をもっと小さくする(試しに32x32ぐらいに)
・画像編集ソフト(ペイントなど)で画像の色数を減らす(16ビット色に)
・TDGCarad(女の子のアイコンのコンポーネント)のプロパティUseSoftwareVertexProcessingをTrueにする
>>569 全部試してみたけどダメでした。ファイルサイズは630バイトくらい。
ビデオRAM : 4MB
グラフィックアクセラレータ : ATI社製RAGE(TM) Mobility-CL(AGP)
ノートパソコンなので画像系には弱いのですかね? Lavie Lシリーズです。
前略(特に問題ナシ)
#00013 | ■■■画面モードを初期化します■■■
#00014 | Driver : ati2drab.dll
#00015 | Description : ATI RAGE MOBILITY AGP
#00016 | VendorID : 00001002, DeviceID : 00004C4D, SubSysID : 81581033, Revision : 00000064
#00017 | ウィンドウモード 640x473で初期化します
#00018 | ハードウェアアクセラレーションを利用します
#00019 | 希望のデプスステンシルサーフェスのフォーマットが見つかりませんでした
#00020 | デプスステンシルサーフェスのフォーマット...UNKNOWN
#00021 | ソフトウェアT&Lを利用します
#00022 | Direct3DDeviceオブジェクトの生成を行います
#00023 | Direct3DDeviceオブジェクトの生成に失敗しました(Error Code = D3DERR_OUTOFVIDEOMEMORY)
#00024 |
#00025 | ■■■お別れの時がやってまいりました■■■
以下略(特に問題ナシ)
>>570 RAGEのグラフィックボードを使って試してみました。
同じエラーがでるし原因究明は楽かなと思いました
……がその前にちゃんと計算すればよかった orz
バックバッファ:640x480x3(=900kbyte)
フロントバッファ:640x480x3(=900kbyte)
windowsの解像度:1024x768x3(=2.25Mbyte)
テクスチャ:512x256x3=(384kbyte)
合計:4.3828125Mbyte
テクスチャのサイズを変えた所で足りません。
Form1のClientWidthとClientHeightを320x240にすると
バッファ2つあわせても450kbyteになるので合計で4Mbyte以下に抑えられます。
とりあえずこっちでは動きました。
> ビデオRAM : 4MB さすがに、これはキツイと思われ
Formを小さくしてみてもダメでした。 BIOS設定でもVRAM増やせないみたいだし。 _/ ̄|○モウダメポ・・・
>>573 動かないサンプルを動かそうとするよりすでに動いているものがあれば
それを改造していったほうが早いんじゃないかと思います
(質問ではテクスチャがズレてしまったとあるのでそのプログラムのUV値をいじるだけでいいはず)
もともとの問題はテクスチャがずれる理由の解明で
それは解決してるはずです
なぜ動かないかは気になるのでもし改造していって動かなくなったり
動くものが完成したら教えてください
そうですね。 今動いているもので全く問題ないので、それでやっていこうと思います。 丁寧にありがとうございました。
http://deliverer.s5.xrea.com/xx/xxx/000061.html //u,v : single;
u := texture.u;
v := texture.v;
Scene.PushSprite(
Vector2D(0,0),
[
SXVertexSP(0, 0, $FFFFFFFF, 0.0 * u, 0.2 * v),
SXVertexSP(0, 50, $FFFFFFFF, 1.0 * u, 0.2 * v),
SXVertexSP(30, 0, $FFFFFFFF, 0.0 * u, 0.5 * v),
SXVertexSP(50, 30, $FFFFFFFF, 1.0 * u, 0.5 * v)
],
Texture,
sxbAlpha,
False
);
とするのが正しい。
texture.uとtexture.vは、1.0とは限らない。
又、元の画像の一辺の長さは4の倍数にするべき。
トラブルを避ける意味では、辺が2のべき乗の長さの正方形の画像がいいかもしれない。
また、テクスチャに関しては、複数作る場合も一つしか作らない場合もどちらもあり。
>>576 参考になりました。ありがとうございます。
リンク先も見てみましたが、変なレスって・・・。
578 :
名前は開発中のものです。 :04/08/21 04:12 ID:rcQjHDLj
QD3.00が入っている環境にQD3.01をインストールするにはどうすればいいですか?
>>578 今までインストールされていた3.00に、3.01のファイルを上書きすればOKです
>>577 先日の記事で更に修正されているようです。
もう解決してるとは思いますが。
QD3.01のDGCarad9.pas[1839]の、
SetWindowPos()は必要なんでしょうか?
これがあると、フォーム作成途中に
強制表示される等して、厄介で…。
QD3.01a入れたら変になっちゃった。
↑どう変になったかをどうぞ。
どなたかQD3で半透明ポリゴンの表示のやり方が分かる方居ませんか? 調べたところ // アルファブレンドを有効にする DG.D3DDevice.SetRenderState( D3DRS_ALPHABLENDENABLE, Integer(True)); // 色の算出方法の設定 DG.D3DDevice.SetRenderState( D3DRS_SRCBLEND, Integer(D3DBLEND_SRCALPHA)); // 転送元の色の算出方法 DG.D3DDevice.SetRenderState( D3DRS_DESTBLEND, Integer(D3DBLEND_INVSRCALPHA)); // 転送先の色の算出方法 // テクスチャのブレンディング方法の設定す DG.D3DDevice.SetTextureStageState( 0, (D3DTSS_ALPHAOP), Integer(D3DTOP_MODULATE) ); // 色の成分を乗算する DG.D3DDevice.SetTextureStageState( 0, (D3DTSS_COLORARG1), Integer(D3DTA_TEXTURE) ); // テクスチャの色 DG.D3DDevice.SetTextureStageState( 0, (D3DTSS_COLORARG2), Integer(D3DTA_DIFFUSE) ); // ディフーズの色 を使うらしいのですが上手くいきません。。 どなたか教えてください。
TSXFrameを使わない理由を教えて。>583
585 :
583 :04/09/06 06:07 ID:yPxmxkf1
こんな便利なのがあったのか・・ orz Frame.BlendMode :=sxbAlpha; であっさり半透明になりました。 584さんありがとうございます。
実行ファイルがないと試す気にもならんな
588 :
586 :04/09/11 12:02:43 ID:4eUrWUgm
実行ファイルはサイズがでかい割りに内容はたいしたことないので アップはやめときます。 コンパイルには D6 Personal(D5でも可)、 Cloote Delphi DirectX Header(small 版でおk) が必要です。 Cloote Delphi DirectX Header は Summer2003で作りましたがSummer2004でもコンパイルできるみたいです。 またサンプルによっては Clootie_DX90_dlls、 Sample DirectX Framework(common.zip)が必要かもしれないです。
589 :
586 :04/09/11 12:03:47 ID:4eUrWUgm
×Cloote ○Clootie
590 :
名前は開発中のものです。 :04/09/13 21:01:56 ID:XXuocjss
気になったんだけど、Delphi製の市販のゲームってある?
593 :
名前は開発中のものです。 :04/09/13 22:09:09 ID:XXuocjss
ツールじゃなくてゲーム無いかなーって思ったんだけど。。。
ブラウニーのダウンスレイブってエロゲーが確かDelphi製。
ドラクエファイブですか?
Clootie最近は更新が続くね
鯖落ちなの? いつ行っても鯖落ちですよ?
そんなことよりおまいらQD2.13aに更新されてますよ
きっとbegin end;を閉じ忘れてたところが一箇所あったから、そこを修正しただけだろう。
Irrlicht 0.7はdelphi対応か・・・・
Delphi.NETかよ! Personalからは使えないのかな XBOXにまで対応してどんどん凄くなっていくなぁ
ほっしゅほっしゅ♪
607 :
保守age :04/10/27 01:41:30 ID:pd6tXyNi
保守age
ほっしゅほっしゅ
609 :
名前は開発中のものです。 :04/11/16 02:49:27 ID:UlXlDdL3
テトリスを作っているんですが、壁にぶち当たっています。 4*4の多重配列を使って次に出てくるピースをfor文で表示する際、 BlockArr[x, y] := NextBlockArr[x, y]; という風に、そのまま代入したいのですがうまくいきません。 このような代入の仕方は間違っているのでしょうか?
静的配列と動的配列の、値渡しと参照渡しのソゴがでてるんじゃないか、という気がする。 いや、全く根拠はないよ。
>>610 レスありがとうございます。
質問の仕方が悪かったのですが、代入した方が、きちんと配列として認識されていないようなのです。
もう一度1からいろいろ調べてみたいと思います。
>>611 動的配列は使っていません。
しかしながら、値渡し、参照渡しという言葉知らなかったので、これも調べたいと思います。
今日は寝て、明日また新鮮な頭で考えます。
>>612 「配列として認識されていない」の意味がわからないんだが具体的な症状はなんだ?
代入しても値が変化しないならチェック方法が悪いだけという事も考えられるぞ。
まあ、がんがれ。
よくやるミス for y := 0 to MaxY - 1 do for x := 0 to MaxX - 1 do if NextBlockArr[x, y] then hoge; BlockArr[x, y] := NextBlockArr[x, y]; まあ警告出るけどな
型宣言がバラバラになされてて、互換性がないとか言われるのとは違うのかな? 「配列として認識されていない」というのを聞くと何だか違う気がしますが。
617 :
609 :04/11/16 22:20:12 ID:UlXlDdL3
いろいろ調べてみたところ、配列は認識されていました。 どうも描画時にミスがあるようです。 昨日は頭が混乱していて、調べきれていないのに書き込んでしまいました。 いろいろヒントをいただきましてありがとうございました。
[y, x]じゃないの?
型宣言しておけばFORNEXTせずに BlockArr := NextBlockArr; なんてこともできるけど、今はそこまで説明しないほうがよさそうだ。
ホシュ
>>622 メモリに格納されてる順番通りにアクセスした方が速かった気がするけど…
どうだったっけ?
624 :
名前は開発中のものです。 :04/12/30 08:26:16 ID:O3iJ5ayA
意外な結果がでますた。
仮にメモリアクセスの速度が等価だとしても回数が多いループが内側に入ったほうが速くなるはずです。
なんかおかしいって!!
http://gamdev.org/up/img/2197.zip hoge[x,y]で計測中...
計測終了
1140_秒
hoge[x,y]で計測中...
計測終了
1141_秒
hoge[x,y]で計測中...
計測終了
1156_秒
hoge[y,x]で計測中...
計測終了
1250_秒
hoge[y,x]で計測中...
計測終了
1250_秒
hoge[y,x]で計測中...
計測終了
1234_秒
hoge[x,y]で計測中... 計測終了 632_秒 hoge[y,x]で計測中... 計測終了 225_秒 ちゃんと差でたよ。 CPU何? こっちは、Pen4 2.6GHz キャッシュの違いじゃないのか?
626 :
名前は開発中のものです。 :04/12/30 10:57:38 ID:O3iJ5ayA
>>625 AthlonXP 1600+
CPUが違うからかな
他にも測ってくれるヤツいないか〜?
バイナリ付きだからDelphiもってなくてもできるぞ〜
それにしても単純ループで2倍以上も差がでるとは((((;゚Д゚)))ガクガクブルブル
hoge[x,y]で計測中... 計測終了 280_秒 hoge[x,y]で計測中... 計測終了 281_秒 hoge[x,y]で計測中... 計測終了 281_秒 hoge[x,y]で計測中... 計測終了 281_秒 hoge[y,x]で計測中... 計測終了 211_秒 hoge[y,x]で計測中... 計測終了 211_秒 hoge[y,x]で計測中... 計測終了 211_秒 hoge[y,x]で計測中... 計測終了 210_秒 超低電圧版 Pentium M 1.1 GHz
AthloXP1800+ hoge[x,y] : ave.1200ms hoge[y,x] : ave.990ms [y,x]の方が早いのか、うーん…
hoge[x,y]で計測中... 計測終了 703_秒 hoge[x,y]で計測中... 計測終了 687_秒 hoge[x,y]で計測中... 計測終了 703_秒 hoge[y,x]で計測中... 計測終了 422_秒 hoge[y,x]で計測中... 計測終了 422_秒 hoge[y,x]で計測中... 計測終了 422_秒 セレロンD 2.4GHz
hoge[x,y]で計測中... 計測終了 940_秒 hoge[x,y]で計測中... 計測終了 939_秒 hoge[x,y]で計測中... 計測終了 939_秒 hoge[y,x]で計測中... 計測終了 1147_秒 hoge[y,x]で計測中... 計測終了 1166_秒 hoge[y,x]で計測中... 計測終了 1152_秒 XP1700+
どっちがいいかはCPU次第か。 二重ループのせいで激しく重くなりそうな場合は 別な方法で軽くさせたほうがいいってことか。
そもそも配列は遅いよ。
>>634 ポインタ使って必要な分メモリ確保しろってことじゃない?
>634 そこでMMXやSIMDを使うんですよ。
637 :
名前は開発中のものです。 :05/01/02 06:48:36 ID:FyapawCk
今ネットゲームを作っているのですがIDとパスワードの管理をどうしようか考えてます。 楽できるコンポーネントがあれば使いたいのですが ・ファイルに保存、読み込みができる。 ・IDをキーにパスワードを検索できる。 ・IDの重複チェックができる。 という条件で何かいい方法ないでしょうか?
ファイルに読み書きできないデータって何よ!?
640 :
名前は開発中のものです。 :05/01/03 10:39:24 ID:xyHgcURU
QuadrupleDでxからsxに変換するの面倒なんだけど 一括変換する方法もしくはxのまま使う方法ない?
>>640 どっちも規格は公開されているから自分でコンバーターを作れば神。
あるいは、QD本家のBBSにメタセコファイルをそのまま使うサンプルを作った人の
書き込みがあったな。
>>626 今更かもしれませんがせっかくなので.いずれも5回平均.
●Athlon 64 3000+(最大2GHz)
hoge[x,y]:305.7_秒(※1回目が極端に遅かったのでこれを除外すると249.75_秒)
hoge[y,x]:117.6_秒
●MMX Pentium 200MHz
hoge[x,y]:16198_秒
hoge[y,x]:5341_秒
>>633 うちのDelphi 5で調べたところでは
最適化オプションを有効にすると配列の要素へのアクセスが最適化されるようです.
(8086系のニーモニックが少しでもわかる方はCPUウィンドウでマシンコードをご覧になることをおすすめします.)
>>629 Pentium Mはクロック周波数当たりの速度は速いですよ.
というかPentium 4(とこれをベースにしたCeleron)は
クロック当たりの速度を犠牲にする代わりに
それ以上にクロック周波数をガンガンあげられる構造なのです.
おまいらが巡回してるサイトを教えてください!
何故、結果が違うんでしょうね。面白かったです。 Athlon XP 2400+ hoge[x,y]で計測中... 計測終了 576_秒 hoge[x,y]で計測中... 計測終了 579_秒 hoge[y,x]で計測中... 計測終了 627_秒 hoge[y,x]で計測中... 計測終了 627_秒 Celeron 2400 hoge[x,y]で計測中... 計測終了 718_秒 hoge[x,y]で計測中... 計測終了 734_秒 hoge[y,x]で計測中... 計測終了 610_秒 hoge[y,x]で計測中... 計測終了 625_秒
648 :
名前は開発中のものです。 :05/01/11 01:53:33 ID:emWhx/Bt
RPGの戦闘やADV等で、「何かキーが押されるまで待つ」というのは、 どうやって実装したらよいのでしょうか? ぐぐってはみたのですが、見つけられませんでした。 どなたかご教示お願いします。
>>648 それくらい自分で設計できないと
ゲームは作れないと思いますが
ネット上で見つからないわけがない ぐぐりなおせ
てか探さなくても少し考えればわかるだろうに…
キーボードバッファをポーリングするか、 キーボードバッファにウォッチドッグタイマーを設定すれば良い
キーだけで良いのなら、 ・ グローバルな”キー待ち解除フラグ”を用意 ・ キー待ち開始時に、"キー待ち解除フラグ"へfalseを代入 ・ "キー待ち解除フラグ"がtrueになったら、次へ進む ・ OnKeyDown内で、"キー待ち解除フラグ"へtrueを代入
>>648 あとゲームなら、OnIdleでGetKeyState()とかかな?
>>648 var
keycode: byte;
begin
keycode:=0;
while GetKeyState(keycode) >= 0 do begin
Application.ProcessMessages;
Inc(keycode);
sleep(1);
end;
end;
Application.ProcessMessagesを呼ぶなら、普通にOnKeyDownでいいと思う。
QuadrupleDを利用して現在ゲーム製作中です 不明な点があるので質問させてください 画面に文字を書く場合のことです 現在はSxLib9のTSXTextWriterを利用してテクスチャを作っているのですが マニュアルをみたところ複数行に対応していないように見受けられました。 一行ごとにテクスチャを用意するという方法で今はやっているのですが よりよい方法がありましたらご教授ください
>>657 自分でクラス化する。
じゃないと、改行幅きめられんでしょ。
四角色指定でのグラデーションも全体にかかっちゃうし。
>>658 いわれてみればまさにそのとおりです
SxLib9.pasを覗いて処理の内容は大まかに把握したので
自分でクラス化することにしました
ご回答どうもありがとうございました
660 :
658 :05/01/17 22:48:27 ID:HVMOReOm
結論 理由 おまけ
pascalとして既にある関数を自分でわざわざ作っている予感がして不安になるときが多々あります。
あるある。最近だとTObjectListというものを発見した。 コンマとかセミコロンで区切った文字列を、TStringListなんかに分解する関数ってあるのかな? もう作っちゃったわけだが。
>>663 TStrings.CommaTextで出来そうじゃね?
誤爆してました
>664 レスありがd でも”CommaText”は逆の働きで、TStringListの全行を、コンマ区切りの一行の文字列に統合する関数なのです 1対1で対応する、逆の機能を持つ関数がふつーはあるよね。でも見つからない
>>666 var
StringList: TStringList;
str: string;
i: Integer;
begin
str:='mona,giko,c';
StringList:=TStringList.Create;
try
StringList.CommaText:=str; //CommaTextへ代入すればOK
for i:=0 to StringList.Count-1 do begin
Memo1.Lines.Add(StringList[i]);
end;
finally
StringList.Free;
end
end;
668 :
666 :05/01/23 00:16:42 ID:6Jup5Ydu
おおぉぉ、これはエレガント。いいもの見せてもらった、ありがとー! try〜finallyで囲ってあるあたりがプロっぽいね
Createの後にtry finallyは常識なわけだが
そうでもない。 絶対に例外が起きえないケースだったら 余分なコードを減らすためにあえて入れない事もあると思うが。
どうせコンパイルしたら同じバイナリになるのになんでそんな手間をかけてまでソースを省く
太公望キタ━━━━(゚∀゚)━━━━ !!
頑張り杉
すごすぎてオシッコもれそうになった 車に乗れるとは思わなかった
涙ものの黄金ソースだ。 読んでると勇気が出てくる。
wizっぽいダンジョンRPGをつくってみようと思って色々調べて回ってるんですが、 ダンジョンの描画をどうやってよいのかわかりません。 RPGはだいたいのばあい、マップデータを読み込んでそれにあわせて画像を読み込みますよね? とりあえず話がわかりやすくなるようにこのマップデータを0と1だけにして、0だと通行可能、1だと通行不可(壁)ってことにします。 で、次のようなマップデータがあるとしたらどうなるんでしょうか? 111101 100001 100001 111011 111011 111p11 pがキャラの現在位置だと考えてください。キャラクターの視界は前3マス、左右1マスだとします。 キャラクターの視界は --- --- --- | @ | A | B | --- --- --- | C | D | E | --- --- --- | F | G | H | --- --- --- P となってるわけです。そして、 F、H、C、Eが1の画像 G、D、@〜Bが0の画像が描画されるとしますよね? でもこうしたマップデータの読み込みだけだと いまいる場所から3歩進むとマップデータ一番上の右から2番目の0の部分がうまく描画されないですよね? それってやっぱりFならCに入るデータが0のばあい、と1のばあいって感じでやってかないとムリなんでしょうか? それとも根本的にやりかたが間違っているんでしょうか? マップデータの読み込みとそれにあわせた描画(0ならAを描画、1ならBを描画)という風にやっていって うまくダンジョンを表示したいのですが、良い方法はありますでしょうか?
681 :
名前は開発中のものです。 :2005/05/06(金) 04:42:38 ID:Dd1ojjj5
>>680 「うまく描画されない」というのは具体的にどんな状態なの?
とにかくやってみろ。けっこう面白いぞ
ブロック単位で考えるからそういうことになるんでないの? 遠くから壁単位で有無を判定してから描いていけば? --- --- --- ←最初にここの壁を調べてあったら描画 | @ | A | B | ←次にここの縦壁を調べてあるなら描画 これを手前まで繰り返し。無駄な描画はあるがこれが一番簡単だと思う。
{ delphi初めて1週間 基礎の基礎がわかってきたっぽいので、今持ってる知識で15パズルを作ってみることにした こんな単純なゲームなのに想像以上に難しいのな 上手くいかなくてウンウン唸ってたんだけど ごく単純なミスだったりして(;付け忘れたり、変数を初期化してなかったり)己の未熟さを悟った 気づけばもうこんな時間。いつになったら完成するのかな }
685 :
名前は開発中のものです。 :2005/08/10(水) 02:02:14 ID:5uOtmxXP
age
>>680 俺はこんな風なやりかたしてたなあ。0:周りに壁なし、1:北に壁、2:東に壁、4:南に壁、8:西に壁、って決めて、orをとる。
北にまっすぐ伸びる通路だったら、
002802800
002802800
002802800
002802800
002802800
002802800
ただ、マップを作るのが非常にめんどい。
5月かよ、、ただの思い出話になってしまった
689 :
名前は開発中のものです。 :2005/09/12(月) 17:56:09 ID:BA20QLlV
690 :
名前は開発中のものです。 :2005/09/17(土) 23:47:48 ID:KzJYNX2D
DELPHIでゲームを作りたいです。 何からはじめればいいですか?
>>690 Delphiの勉強からはじめてください^^
692 :
名前は開発中のものです。 :2005/09/18(日) 02:08:42 ID:CIQutMjq
>>691 どの様にはじめればいいですか?
とりあえずDelphiはインストールしました。
どの様にしていけば作れるのでしょうか?
宣伝乙
695 :
名前は開発中のものです。 :2005/09/18(日) 09:04:25 ID:RV7RJOwl
696 :
名前は開発中のものです。 :2005/09/18(日) 15:52:14 ID:XaX+U7kd
>>693 ,695
ありがとうございます。早速見てみます。
Quadruple Dを使うには DirectX9.0以降に対応したグラフィックチップが必要ですか?
698 :
名前は開発中のものです。 :2005/10/10(月) 23:14:21 ID:ErOlXdkv
オンボードのサウンドボードだとQD3で作ったソフトが起動しなかったけど
|д゚) |≡ヽ(*'∀')ノ<700ゲッツ!! |ミ
DelphiXって6には対応してないのか?
702 :
名前は開発中のものです。 :2005/12/10(土) 10:39:50 ID:O4wbTESX
そのネタは何年か前によく出たな 今時DelphiXも無いと思うんだが、 どうしても使いたければ、UnDelphiX使いなよ
>>701 検索したら、海外にインストールするための記事ないか?
>>701 DelphiXで検索したら、インストールする方法を和訳してあるサイトがあったよ。
707 :
名前は開発中のものです。 :2005/12/12(月) 19:06:29 ID:TTWK6eI4
アマゲニュースって、ジサクジエン(・∀・)して、広告料金稼いでいるらしいから 好きじゃないな
広告が悪みたいな風潮はいただけんな 一生google使うなよ
709 :
名前は開発中のものです。 :2005/12/13(火) 00:19:40 ID:Bq3u+gAG
711 :
名前は開発中のものです。 :2006/01/03(火) 20:00:41 ID:yxS2cKCH
Delphi6 とunDelphi XでSTGをつくっています。 敵を倒したときに レンズフレアっぽい爆発やパーティクルを散らしたり したいんですが、どういう方法をとればいいでしょうか。 TDirectDrawSurfaceって 矩形描画関係のメソッドはいろいろあるんですが (DrawAdd,DrawAlpha,FillRectAdd,FillRectAlphaなど) 楕円や線を描画するメソッドは用意されていないようです。 Canvasにはellipseやmoveto&linetoがありますが、 半透明合成や加算合成はできませんし。 何かよい方法がありましたら教えていただけるとうれしいです。
712 :
な :2006/01/03(火) 21:42:35 ID:E1OTiKsy
DelphiXのチュートリアルにも書いてありますが、サーフェイスの画素データに 直接アクセスして描画してみたらどうでしょう。 外してたらごめん。 procedureTForm1.Button1Click(Sender:TObject); var ddsd:DDSURFACEDESC; function DDScanLine(y:Integer):Pointer; begin {TBitmap.ScanLine と同じ働きをします} Result :=Pointer(Integer(ddsd.lpSurface)+y*ddsd.lPitch); end; var y:Integer; begin ddsd.dwSize :=SizeOf(ddsd); ifDXDraw1.Surface.Lock(ddsd)then begin {ddsd.dwWidth サーフェースの幅} {ddsd.dwheigh サーフェースの高さ} {ddsd.lpSurface ピクセルデータ(0,0)へのポインタ} {ddsd.lPitch 下の行のスキャンラインへのオフセット} {Abs(ddsd.lPitch)1ラインで使用しているバイト数} try for y:=0 to ddsd.dwHeight-1 do FillChar(DDScanLine(y)^,Abs(ddsd.lPitch),Y); finally DXDraw1.Surface.UnLock;{これが必須} end; end;
>>711 DirectDrawを使って半透明や加算合成をやりたい時は、
サーフェスに自前で描画するか、
CanvasのPen.Modeを使った擬似的な合成をやるしかない。
サーフェスに描画するときは、システムメモリにサーフェスをおかないと
致命的なほど速度が遅くなるし、システムメモリにおいてもまともな速度を出すには、
かなりのチューニングが必要になる。
Canvasを使う場合は、思ったとおりの画像がでない。
また、かなり遅くなるので注意。
よって、DirectDrawはやめてDirect3D使うのが一番簡単だったりする。
714 :
711 :2006/01/04(水) 01:11:02 ID:Z7OuzLUo
回答どうもです
Inside DelphiXのサンプルを弄って試行錯誤しているような段階なんで
覚束ないんですが
>>712 あらかじめ円の画像を用意しておく
↓
DXDraw1.SurfaceをLock
↓
DDScanLineで読み出して円の画像と合成
↓
Unlock
というやり方でいいんでしょうか
>>713 なかなか厳しいんですね
Quadruple Dのサンプルをみて、こういうのがDelphi Xで出来たらいいな、と
思ったもので
Extreme Shooters (beta4.53)
http://www-fu.magma.ne.jp/~hayase/dddd/works.html Direct3Dは残念ながら未だ手付かずですが
後学のため、大まかなやり方でも教授いただければ幸いです
ていうか、俺もDirectDrawやってるプロジェクトがあるんだが、 ビデオカードがもう2D対応をあきらめてるんだよね。 もう、最新のカードでも全然速度がでない。時代を感じるよ
716 :
名前は開発中のものです。 :2006/01/04(水) 14:54:21 ID:CMUGU7Z6
素直にQuadrupleD3系を使えと言うことやね
なってマァの人?
718 :
名前は開発中のものです。 :2006/01/04(水) 21:02:37 ID:CMUGU7Z6
違うが。 つーか、マァの人ってここ何年なにやりたいんだろうさね。
719 :
な :2006/01/04(水) 23:13:28 ID:fuT7K2Cj
720 :
な :2006/01/25(水) 00:27:36 ID:daGWhNcX
721 :
名前は開発中のものです。 :2006/02/09(木) 10:54:46 ID:6cZnww8L
Delphi売却記念age
マァの人、HPどこいったよ
723 :
な :2006/02/27(月) 00:59:06 ID:QHDsHNqO
>>723 それは、VCL使ってるからです。
VCL使ったアプリは、実は、ウインドウサイズ0のMDIアプリなんですよ。
デスクトップ全体を使ったMDIアプリだと思うと、挙動が一致するよね?
結論だけいいますと、嫌だったら、VCL使わずにウインドウを出せ!ということになります。
そんなに難しくないから、やってみてもいいよ。
サンプルはC言語で一杯あるし。
ああ、でもやる方法あるかも。 自分が、昔作ったゲームで上手く最小化してるみたい。 探してみる。
勘違いだったかもしれん。 ただ、Alt+Tabぐらいなら、メッセージフックして自前で最小化すればいけるかもしんない
ごめん、640*480のテクスチャを500回描画してた。 そりゃ重くなる罠
そりゃすごい
>>727 メインループは、あれでいいと思う。
でも、うちだとウインドウ出た後、死んだw
---------------------------
アプリケーション エラー
---------------------------
EInvalidOperation がモジュール Project1.exe の 000461FC で発生しました。
コントロール '' は親ウィンドウを持っていません.
---------------------------
OK
---------------------------
731 :
ぬ :2006/03/02(木) 22:26:15 ID:JE6uGfoU
ゲーム音楽をMP3でやりたいと思っているのですが、QDでは無理でしょうか? Media Playerはあんまり使いたくないのですが、その他の方法をご存知の方 教えていただけないでしょうか?
>>732 MP3より、Oggおすすめ。
Ko-Taさんとこに、QDでOgg再生するライブラリあったはず。
>>731 うごいたよー
CreateParamsで、普通のウインドウとして生成する方法があったのか。
氏らなんだ。
ひさしぶりにこのスレが動いているね。 732じゃないけど、MP3をQDでならすライブラリはやっぱしないのかね? やはりoggだけでなくMP3もならしたいわ。
735 :
732 :2006/03/06(月) 12:09:37 ID:eqqeXN6l
>>733 Oggですか。MP3並のファイルサイズに出来るのかな?
一度調べてみます。ありがとう。
>>734 そうなんですよね・・・。
やっぱ一般的ですし。
開発者的には、oggはライセンス的にクリーンなのがいい。 mp3はライセンス問題があるのよ。 音質的にも、mp3よりかなりいいしな。
じゃあogg広めようぜ
実際、使ってる人は使ってるって感じ。 大分広まってるよ。同人でogg使ってるところ結構ある
じゃあ、ここでMP3をQDで動かせるようなライブラリ作ろうぜ。
でも漏れゲームは経験が少なく、どうも原理がわかってないので、ロジック
がよくわからん。
DirectSoundを使うんだから、mp3をwavへ変換しないと駄目なんだよな?
でこのスレか、もしくは他のところで紹介されていた、
ttp://www.un4seen.com/ がいいかなと思うんだけど、これで皆で考えてみないか?
いや、みんなと言われても、oggでライブラリがあってすぐにでも使えるのに、 しかも低音質なmp3を使う利点を説明してもらわないとw
あと、gifみたいに突然ライセンス料を請求されたりするのをビクビクしてすごすことより 大きいメリットもねw
まあ、どうしてもやりたけりゃacm使うのが手っ取り早いと思うよ。
>>740 音担当がわがままだと、つらいのさ・・・。
いや、利点欠点を説明して指示出したり、コンバートすんのも仕事じゃねーの?w おまい、グラフィッカがBMPとかGIFで提出してきたら、それそのまま使うのかよw
コンバートするのまでグラフィッカの仕事にしてもらう
OggはMP3 LAMEに比べて高域の位相がずれまくりで圧倒的に音悪いだろ 音いいって奴らはどういう耳してんだ?
?
>>745 漏れ、BMPでやってる・・・。JPGでいまいちどうやって画像を合成するか
わからんくて・・・。
どっかいい方法説明しているサイトとか無いかな?
>>747 |
|
|
ぱくっ|
/V\
/◎;;;,;,,,,ヽ>そんなエサで
_ ム::::(,,゚Д゚)::| 俺様が釣られると思ってんのか!!
ヽツ.(ノ:::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
>>749 JPGで合成する、と考えるからわけわかめになるのだ。
JPGからBMPに読み込めばいいだけ。
Delphi JPEGでググってみ
>>750 調べてみた。
も、もしやBitmap.Assignを使えばいいのかな?
今から外出で確認出来ないので、後でやってみる。 ありがとう!
752 :
734 :2006/03/09(木) 21:43:23 ID:BnM5a+WA
mp3をならせるようにしたい理由としては、 ゲーム遊ぶ側が音楽差し替えて遊びたいときとかに、 oggだといろいろ面倒ってところでしょうかね。 面倒なのが嫌いなのでko-taセンセのライブラリでoggならしていますが、 これを機にすこしmp3方面もいろいろしらべてみようかしらん。
753 :
749 :2006/03/10(金) 11:46:52 ID:mC3ViI6k
>>750 Bitmap.Assignで出来ますた。
目からウロコですた。 ありがとう。
想像力かけてる自分に萎え。
754 :
734 :2006/03/12(日) 13:53:05 ID:Z05so1Xf
>739 英語が読めないのがしんどいですが自分も頑張ってみます。 un4seenにあったBASS_ChannelGetDataでなんとかなりそうかな?
QDでポリゴン表示するのって上限あるんですか? ポリゴン数90,000から30,000くらいに減らしたらやっと全部表示したけど・・・ sxファイルだって1MB程度だからメモリってわけじゃなさそうだし。 やってる事はサンプルのポリゴン回転のやつをファイルだけ入れ替えただけ。 念のためTForm1.ApplicationEvents1IdleのbeginのあとにDone:=True;を入れた。
756 :
734 :2006/03/12(日) 15:39:00 ID:Z05so1Xf
できたー。 てかBassのサンプルのwritewavのやり方をそのまま持ってくるだけで ストリーミング再生できました。
>>756 良かったらここか、もしくはどこかにupしてくれるとうれすい・・・。
758 :
734 :2006/03/13(月) 00:25:33 ID:OLYI8HcJ
759 :
757 :2006/03/13(月) 14:28:33 ID:AA1ZU6pZ
>>758 もつかれー。
ところでdddd.dcuってなんだっけ?
これが無いといわれるのだがw
760 :
734 :2006/03/13(月) 20:29:21 ID:vIzWqz7/
TOggDataCtrlからDDDD:TDDDD;を消しちゃってくだされ。
おお!ちゃんと鳴ってるね!乙 bass.dllは商用の場合、有償か・・・
762 :
名前は開発中のものです。 :2006/03/18(土) 11:52:37 ID:P6tvauUW
キャラクタのクラス設計で悩んでいます。 キャラクタクラスは複数のアイテムを持っています。 アイテムはレコードで定義されています。 持っているアイテムデータは隠蔽しておき、アイテムにアクセスする時は 配列プロパティを使おうと思っています。tom.Items[0]みたいに。 今悩んでいるのが、この配列プロパティが何を返すか。 アイテムレコード型のポインタを返すと、誤ってそのポインタの参照先を 開放することもあるのでどうかと思うし、かといってアイテムレコードを そっくり返すのもコスト的にどうかなあと思うわけで。 どうするのがいいですかね?
763 :
ぬ :2006/03/18(土) 13:29:52 ID:tcpIaWqQ
1:誤って解放しないよう心がける 2:アイテム構造体の各フィールドだけを返すメソッドを用意する あとはワカンネ
764 :
762 :2006/03/18(土) 15:40:43 ID:P6tvauUW
2はちょっとねえ。 やはり1が現実的ですかね。
ハンドル値とかIDが妥当じゃない?
個人開発のゲームプログラミングで厳格なアクセス制御を追求するのってどうなんだろう、とか。
多人数のプログラマが大規模なゲームとか作るときなんかは有用かもしれないけど、
自分でちゃんとコードの管理・把握ができるような規模なら、わざわざそんなことしなくてもいいわけで・・・。
まずは本当にその可視性が必要なのか疑ってみてもいいんじゃね?
とグローバル変数使いまくりのおれが言ってます
>>722 ヽ( ・∀・)ノ キャッキャ
768 :
名前は開発中のものです。 :2006/03/24(金) 07:15:32 ID:i3tXvG4H
チャットの文字入力部分はどうやって作ればいいんですか? TEditを重ねるだけだとフルスクリーンの時チラついてしまいます。(QD3 IMEと直接おしゃべりする方法等、ヒントだけでもくれないでしょうか
770 :
ぬ :2006/03/27(月) 20:03:34 ID:Q0gSAZ4A
>>770 うおおおおおおおおお ありがとおおおおおおおおおお
今日何時間グーグル先生に泣きついたけどわからなかった!!
サンプル見た!まさにこれがやりたいwwwwww
今からソース読むお!!!さんきゅうー!!!!!
>>762 自分なら、
>>767 も書いてる通りアイテムクラスを作って、プロパティに
アイテム上限数をつける(上限があるなら)。
アイテムのデータはアイテムクラスの中のTListで保存して、外からは
Tアイテム.ItemofIndex[1]みたいな感じで呼べるようにしとくかな。
クラスを解放した時は自動的にTListも解放するようにする。
銀行の中のアイテムに関しては、このクラスをそのまま銀行用にもう1コ
呼ぶか、もしくは銀行の中のアイテムかどうかのflagをつけるとか。
とかどうだろうw
>>773 巡回荒らしだと思ったらDelの参考書ジャマイカ
>>773 中村たんの本だから投票したいが。
うーん。DirectX使ったほうが早いしなー
777 :
名前は開発中のものです。 :2006/03/32(土) 16:00:39 ID:ssE5v7Nz
778 :
名前は開発中のものです。 :2006/04/04(火) 01:22:30 ID:6l9yFxzU
ループを使わないで配列を任意の値で埋める方法なんだけど、値が1バイトの時は FillCharを使うとして、Integer等の時もループを使わないで済む方法は あるんでしょうか? 例 a: array[0..100] of Integerの各要素を-1で埋めたい
>>778 ないっす・・・
for使うしかないと思う
forでなんか不都合ある?
780 :
名前は開発中のものです。 :2006/04/04(火) 01:55:54 ID:6l9yFxzU
そう。ないのね。 別に不都合はないです。あれば使いたかった。
ま、FillChar も内部でループ回してるだけだしなー
782 :
名前は開発中のものです。 :2006/04/04(火) 02:44:07 ID:8yBi0Id5
>>778 自分でそういう手続きを書けばいいと思うよ
SizeOf(Integer)*100 じゃだめかい
786 :
名前は開発中のものです。 :2006/04/04(火) 11:04:07 ID:6l9yFxzU
>>783 それだ!
で、
動的配列FArrayに対して
FillChar(FArray, Length(FArray) * SizeOf(Integer), $FF);
とやって見事にはまったぜ。
FillChar(FArray[0], Length(FArray) * SizeOf(Integer), $FF);
とせにゃならんのね。
まあ、-1ならそれでいいわなw
788 :
氏天国 :2006/04/04(火) 13:33:04 ID:tuMOHa7l
ハングル文字解読乙! 基本形 「O」→数字のゼロ 「ト」→カタカナのと 「T」→英語のてぃ 「一」→漢字のいち
分かり難くなるから、forで-1を代入した方が良いのでは?
全て同じ数値で埋めるってのは、結局内部では同じ事を繰り返して埋めてるわけで。 なにをどうしようと、やってることは結局繰り返しなわけで。 だったらforでかまわないわけで。
インラインアセンブラでやれ
>>790 え、それはちがくね?
出てくる実行ファイルのコードが最適化ぐあいが違うじゃん
Forでやるならカウント変数の管理が、
その命令の中での処理として吐かれるだろうけど、
関数の中での場合は違うんじゃね?
一個の命令で書いてコメントつけておいたほうがスマートな気がするけどなぁ
>>790 2をかける、をとにかく掛け算でやるタイプだな
>>794 それは普通じゃね・・・?
速さが要求されるとこならビットシフトだろうけど、
そんぐらいの最適化、最近のコンパイラならやってくれそう。
マイナスの時は結果が違うから、最適化出来ないでしょ。
delphiと関係ない話題になってまいりました
800 :
名前は開発中のものです。 :2006/04/07(金) 17:47:48 ID:ATF2qtg5
*2やってCPUウインドウで見てみ。 ちゃんと、ビットシフトに直されるから。 はっきりいって、よほどクリティカルな場所じゃない限り、 最適化なんてコンパイラに任せた方が面倒がおきなくてすむ。
>プログラムの意味を変更しないことが保証されています。 掛け算ではオーバーフローは出るけど、シフト演算では出ない。 よって掛け算はシフト演算に最適化されない。
801 名前:名前は開発中のものです。[sage] 投稿日:2006/04/07(金) 21:45:07 ID:TXtEFKQG *2やってCPUウインドウで見てみ。 ちゃんと、ビットシフトに直されるから。 はっきりいって、よほどクリティカルな場所じゃない限り、 最適化なんてコンパイラに任せた方が面倒がおきなくてすむ。
なんだなんだw
for i :=0 to 100 do begin なんだ? end;
13000www
DirectXいじるなら Delphiは 遠回りだと気付いた 春の夜
810 :
名前は開発中のものです。 :2006/04/15(土) 21:42:52 ID:CSoMynjQ
別にヘッダがある以上、C++とそう状況は変わらんけどな。
DirectShow弄る時とか、ユーティリティ関数がコンバートされてないとか、その辺の問題がある以外は、 大して状況は変わらんよ
modってけっこう遅いなぁ
あ、すまん。雑談スレじゃなかた
Delphi graphic secretsなら一年前アキバのしょせんに売ってたお いまあるかはしらない
815 :
名前は開発中のものです。 :2006/04/20(木) 22:18:39 ID:10nxPwle
リアルタイムゲームは大抵、ファイル(F)等のMainMenuが開くとゲームが停止して それが閉じるとまたゲームが動きますけど、どのイベントでゲームを停止したり 再開させているんでしょうか?
816 :
ぬ :2006/04/20(木) 23:34:26 ID:ftoD76SU
>>815 ゲームループの実装手法と Windows のメッセージ構造が関係しとる。
大抵そういうゲームは、アイドル時間を利用してゲームループ回してる。
アイドル( idle )ってのは車のアイドリング(空転)と同じで、いわゆる「暇」のこと。
ちなみに Delphi だと TApplication.OnIdle とかで簡単にアイドル状態をキャッチできる。
詳しい実装方法は Delphi ゲーム製作講座に書いてあるよ。
で、なんで止まってるように見えるかというと、
メニュー開いてるときとか、他にもウィンドウをドラッグしてる最中とかは、
そっちの処理のほうが忙しくなるので、ウィンドウ( TForm )の処理に構っていられなくなる。
暇( idle )じゃなくなるってことだな。
その結果ループが止まり、描画処理が行われず、画面が止まってるように見える。
つまり、プログラマが何らかのイベントを用いて意図的に停止?動作させているわけではなく、
勝手にそうなっちゃう、が正解。
もしそんな状況でも動作させつづけたいなら、スレッド( TThread )とか使えば良いんじゃないかな。
だめだ
死ぬ
817 :
名前は開発中のものです。 :2006/04/20(木) 23:58:04 ID:BSLx/OuN
そういや、なんでまた、Delphiゲーム講座とアマゲニュースの人って同一人物だって事、 当人はひた隠しにするんだろうな。
818 :
ぬ :2006/04/21(金) 00:31:26 ID:19KokKEv
ん、わからんが勝手にonG#にしてる E --0-- B --3-- G --4-- D --2-- A --x-- E --4-- んでAsus4 → A sus4は安易すぎるかも試練
819 :
ぬ :2006/04/21(金) 00:33:36 ID:19KokKEv
スマソ
822 :
名前は開発中のものです。 :2006/04/21(金) 17:01:01 ID:3hMlOUmI
ギターじゃね?
823 :
名前は開発中のものです。 :2006/04/21(金) 20:20:49 ID:eu/ck77W
Delphiでギターの練習ソフトを作れって事?
824 :
ぬ :2006/04/21(金) 21:40:34 ID:19KokKEv
ただのゴバークです 大変失礼しました 〈 ドモッ、スミマセン....。 〈 スミマセンスミマセン...。 〈 コノトオリデス! ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ (´Д`;)ヾ (;´Д`) ∨) ( 八) (´Д`;)、 (( 〉 〉 ノノZ乙
825 :
815 :2006/04/21(金) 21:56:53 ID:ASot9yYT
>>816 たいしたゲームじゃないんでTTimer使って速度調整していたんですが、
アドバイス通りOnIdle使ってみました。
たしかに勝手に止まりますね。
826 :
名前は開発中のものです。 :2006/04/22(土) 00:20:07 ID:xYKpdzLP
一ヶ月前に一度もテストしないで作った 当たり判定統括ライブラリが、一発で動いたー いやっほー
Virtual; と Virtual;Abstract; の違いがわかったー!!!
829 :
名前は開発中のものです。 :2006/04/29(土) 13:48:10 ID:P3tEKmOP
「タイトル→ゲーム→ED」とかのシーン遷移ってどうやってる? じゃんけんゲーみたいな単純なもんなら行き当たりばったりでなんとかなるけど、 それなりの規模のゲームを目指すなら、咄嗟の拡張に強いシステムを組まなくちゃいけないよな やっぱりコーディング前に仕様書みたいなもの書いたりするんだろうか どうよ?
自分は各シーンクラスと そのシーンを全て持たせた管理クラスを作ってる。 ループから呼び出すのは管理クラスで管理クラス内でシーンごとに分岐。 シーン内で違うシーンへの移行フラグが立ったら、 管理クラスがそれを受け取って…みたいな。 一般的なやり方だと思ってやってたんだけど違ったらスマン
おいらの場合は、Stateパターンで。 次の状態をクラス型で返して状態遷移。 次は、そのクラス型を元にStateを生成。 共用するデータは、管理クラスに持たせる。 でも、あまりスマートじゃない・・・
>>830 >>831 なるほど。
やっぱ管理クラス内でシーンクラスを遷移させるのが分かりやすいのかも。
拡張するのも簡単だし。
831氏の場合は、管理クラスがシーンクラスを直接見てるわけじゃなくて、
シーンクラスが廃棄されるときに次のシーンクラスを作成する、って感じかな。
おれは最近TListのタスクってやつを使い始めた。
例えばstgの弾とか爆発とか、ゲーム内で作成するオブジェクトの数が不定な場合は便利だー。
俺は、シーン自体を管理させるクラスとかは置いてないな ただ、タイトル画面移行手続きに 全オブジェクト廃棄 オブジェクトA生成 オブジェクトB生成 オブジェクトC生成 ってやってるだけ ABCはその画面を作る元になる粉みたいなキャラとか。 意外と扱いやすい
834 :
名前は開発中のものです。 :2006/04/29(土) 15:52:47 ID:KY27NHQk
835 :
ぬ :2006/04/29(土) 18:16:22 ID:P3tEKmOP
みんなレスサンクスですよ。 やっぱそれぞれ一長一短があるし、作るもんによって実装方法は違うよなー ところでQD使ってて、小数の割り算の精度が悪くなる原因がわかった。 DirectXの初期化部分でFPU設定が変わっちゃうからみたい。 CreateDeviceの呼び出し時にD3DCREATE_FPU_PRESERVEを加えたら直った。 QDのCreateDeviceはこれ付いてないみたいだから、小数の計算がなんかへんだなーと思ったら っていうか既出ですか?
知らなんだ
837 :
名前は開発中のものです。 :2006/04/29(土) 22:28:02 ID:KY27NHQk
かなり昔に、 Set8087CW(Default8087CW); を使わんと、QDでのフォント描画がおかしいという話があった気がしないでもない。 それも同じことなのかな。
838 :
ぬ :2006/04/29(土) 23:30:37 ID:P3tEKmOP
GetPrecisionModeでFPUの精度を調べてみたら、 DirectX初期化前 → pmExtended DirectX初期化後 → pmSingle 単精度になってた。 SetPrecisionMode(pmExtended);を実行したらまた拡張精度に戻せるけど、 戻しちゃうとDirect3Dのパフォーマンスが落ちるらしい。 どうしたらいいんだろう。 以下検証こーど。DGCaradをフォームに貼り付けてから実行。 uses Math; procedure TForm1.FormCreate(Sender: TObject); var i, j: Cardinal; s: Extended; begin //コメントアウトすると計算結果が変わる? //SetPrecisionMode(pmExtended); i := 2; j := 5; s := i / j; Form1.caption := FloatToStr(s); end;
QD3で使うsxファイルってテクスチャ読まないのですか? Xファイルとbmpは同じフォルダに入ってる。 色付きオブジェクト以外真っ白・・・・
840 :
名前は開発中のものです。 :2006/05/03(水) 11:34:15 ID:A5mWBe1p
志村ー、TSXFrame.texture
841 :
839 :2006/05/03(水) 12:11:17 ID:C+qvBRVh
え?手動で読み込み? まさか貼り付け座標も・・・? 急激にテンション低下orz
842 :
名前は開発中のものです。 :2006/05/03(水) 19:30:19 ID:TKRZ+xS1
>>839 QD3の方のソースを書き換えちゃえば?
843 :
839 :2006/05/03(水) 19:40:39 ID:QKQhcnIL
それってsxファイルの中に入ってるであろうテクスチャファイル名やUV値をGETして TSXFrame.textureでセットすると言う事でしょうか? それともハナからファイルをプログラム側で管理してセットするということでしょうか? 前者にしてもsxファイルのフォーマットやらなにやら不明だし・・・ 後者・・・・って無いよね? Xファイルビューワが相手のテクスチャ情報をあらかじめ知ってるわけないし。 QD3のソース書き換え出来るほどのスキルは無いっす。 つかこういう仕様なのQD3?
844 :
名前は開発中のものです。 :2006/05/04(木) 00:28:29 ID:59sQee+g
あのなあ、文句ばかり言わず、頭使えよ たとえば、メタセコでxファイル作って、その後sxに変換とかやるなら、 メタセコ上でUVを設定するんだよ
845 :
名前は開発中のものです。 :2006/05/04(木) 00:37:57 ID:59sQee+g
つか、sxファイルにテクスチャファイル名なんて入っていないだろそもそも。 sxlib9.pasくらい、一度は自分で読んでみろよ。 わざわざソースが公開されてんだから。
846 :
842 :2006/05/04(木) 01:34:20 ID:bLT7LC2U
>>843 i _.,,,,.,..\ / リ,;;;;;;:: ;;;;;:: ;;;;; ::;;;;;; \ |! 人 从
i | .;';;;;゙;;゙;ミミ )ノ (彡ノり/リノ" ミ;;;;;;,,,.. ゝ |! ) あ (
i| |i i;;;;;;;;;;;;;rj );;; ヾ、;;;;...__,, );;;;;;;; ヾ ) お (
i| |.i ':;;;;;;;;;;' j. i:::) ` ;;ー--、` 〈;;;;;;;::;;; i ) お (
i| i i ;'.⌒''~゙,.. `⌒'ヽ.i i::/ ^:::::::.. i ,ll/ニi ;; l ) / (
l| | i ;i::! ..;ノ ::;.... i )i l ヾヽ'' ゚ ))ノ;; / ) っ (
l | i. `i ::: : .::: :| 'ノ | | iにニ`i, (_/i;;; | ) !! (
| i. | ::. .:: ::l / || ! `ー‐'" / ゞ:l つ (⌒
,-‐‐! ::;: ::|i_.,-||、 ! " ̄ ,,,. /,; ミi |l
. i, `';:〉 ....;:::::.. ..:::゙ |.|i ヾ二--;‐' ,;; ,; ミ ||i i|
\.i'´゙゙"' ;:: '''゙゙"'; ,,l | _|彡" ,' ; /' ̄^ ̄''''\||
ヾ_,;;;i!、._ _,;..-' .-'" 〈 ; /
テクスチャ1枚だけのデータだったら表示できた。 でも地形など複数のテクスチャを使ったデータでは無理だった。 QD3は2Pカラー仕様だったんだね。 普通に答えてくれる人がいなくて残念だ。 ソースいじるよりXファイルを普通に扱いたいんでdelphiとQD3を捨てる事にした。
849 :
名前は開発中のものです。 :2006/05/05(金) 13:19:34 ID:uVTEszea
定期的に変な奴が現れるな
850 :
名前は開発中のものです。 :2006/05/05(金) 17:48:57 ID:9YveBbzB
定期的に知能障害
>>848 pro以上ならそのDelphi欲しいんだけど。
捨てる前にくれ!
つか、QD3くらい使えないやつが、他の言語とDirectXを使えこなせるとは到底思えんwwwww
853 :
名前は開発中のものです。 :2006/05/07(日) 15:02:21 ID:M5fzGaSF
つーか、おもしろいゲームが作れなさそう
おまえら布教さぼんな
855 :
名前は開発中のものです。 :2006/05/07(日) 16:18:35 ID:M5fzGaSF
>>854 vipのスレで、新参にC#を薦める人が張り付いてるんだけど助けて
レーザーディスクを進めてるようなもんだな
857 :
名前は開発中のものです。 :2006/05/07(日) 22:09:42 ID:M5fzGaSF
あっちで聞いても全然分からないんだよ C#ってのは、どういう特徴があるの??
知らんがな
.netframeworkとかいうのが無いと動かないソフトを作るための言語だお
Delphiを設計した人が作った言語ですよ!
861 :
857 :2006/05/08(月) 00:49:01 ID:i+FpNsmh
>>859 やっぱ.NETの仮想マシン用実行ファイルを出すのが主目的?
そうだとしたら、なんで自信たっぷりに宣伝してるのか謎ー
>>860 そういう事を聞きたいんじゃなくってさー みんなそればっかり言う
Delphiの人が作ったから、結果どういう特徴なのか、とかおしえてよ
>>861 Micro$ostはいつでもどんな酷いものでも自信たっぷりに宣伝するお
特徴とか知りたければリファレンスでも読めばいいと思うお
なんでここで質問してるのか謎ー
だね。すれ違いor場所違い
すんません、マァって無くなっちゃたんですか? あそこにあった袋文字のコード間違って消しちゃって困ってるんですが・・・・・
865 :
名前は開発中のものです。 :2006/05/09(火) 19:15:08 ID:P0sICzap
マァも微妙に何をやりたいのかよくわからないサイトだったな 末期にはシェアウェアも作ってたけど、あれじゃ売れないだろうなあ
866 :
名前は開発中のものです。 :2006/05/09(火) 20:11:10 ID:S4Y9zZ7Q
袋文字って単に9回書いて中に1回じゃないのか?
>>866 9回書いて中に1回、、ってするとフチの太さを変えたいとき困るんス
あそこおにあったのは文字の縁の太さを好きに変えられるコードだったんすよ
>>861 ・GUIが楽に作れる
・将来性がある(?
・開発会社に信頼性がある(?
一方Delphiは、終わっている。
Delphiは僕らの心の中でいつまでも生き続けます
870 :
名前は開発中のものです。 :2006/05/10(水) 20:26:15 ID:69MwsGoR
>>868 将来性かぁ〜
Vistaが普及したら、
「ドットねっとフレームワークいれないと動かないとかウンコー」
って言わなくなるんだろうなぁ・・・
マイクロソフトはドンドン侵略するな
871 :
名前は開発中のものです。 :2006/05/13(土) 00:38:26 ID:OqxroPQB
>>867 一文字ずつ書いて、
スプライトとして拡大と、ちょい小さくスプライトとして拡大
文字と文字の間隔はこの処理を計算して補正
874 :
名前は開発中のものです。 :2006/05/13(土) 07:54:11 ID:GAeAvJcp
全ドットチェックして、現在地が空白ドットで隣が空白ドット以外なら輪郭ドットに変更。 を、欲しい太さだけ繰り返したらいんじゃね?
procedure TextOutPlus(Str: String; Canvas: TCanvas; TX, TY: Integer; OutLine: Integer); var i: Integer; j: Integer; o: Integer; begin o := OutLine * 2; for i := 0 to o do begin for j := 0 to o do begin Canvas.TextOut(TX+j, TY+i, Str); end; end; Canvas.Font.Color := clWhite; Canvas.TextOut(TX +OutLine, TY+OutLine, Str); end; 最悪こんなんでよくね? 超格好悪いけど
876 :
名前は開発中のものです。 :2006/05/13(土) 21:03:44 ID:OqxroPQB
>>873 その、白い部分と同じ大きさの黒いのを8個配置すればいいんじゃないのか?
877 :
名前は開発中のものです。 :2006/05/13(土) 21:22:56 ID:X6ZmgAGD
マインスイーパの簡単なソースはありませんか? セルと爆弾の配置だけでいいです。 ゲームを載せているサイトにソースが載ってることがあるけれど、 余計な機能が満載でイマイチよくわかんない。
>>877 とりあえず、何をしたいのかを言ってみて方がよくない?
わざわざマインスイーパー探すのめんどいし、助言だけなら出来るかもしれないし。
てゆーかマインスイーパ程度のコード、ある程度想像できるだろうに。
880 :
877 :2006/05/14(日) 02:21:45 ID:zrXSphTj
>>878 最低限の機能がついたマインスイーパを作りたいです。
>>879 初心者なうえにアホなんでよくわかりません。
パーツごとのロジックは理解できる(例えばセルの配置、爆弾の検索等)のですが、
ソースを書いてもおかしいいらしく動かないです。
実際に動いているものを参考にしようと思ったのですが、
余計な機能が多くわかりずらいです。
アドバイスお願い致します。
883 :
877 :2006/05/14(日) 02:32:55 ID:zrXSphTj
>>881 ありがとうございます。参考にさせていただきます。
884 :
名前は開発中のものです。 :2006/05/14(日) 15:01:28 ID:Lsf7SKPq
そのままだと使えないだろ ソース読んでみたけど、やってることはソートしてDrawPrimitive呼んでるだけなんで TSXScene使うのと大差ないなぁというのが感想 それにDDDDにはDirect3D用のレンダラもあるしわざわざ使おうとは思わんな
良くあるクリゲーみたいにマウスクリックした場所ににキャラを移動したいのですが、 クリック位置の3D座標ってどうやって取得すればいいのでしょう?
2Dポインターデバイスであるマウスから3D座標を取得するのですか そうですか GetCursorPos や Mouse.CursorPos でグローバル座標(ディスプレイの左上が0,0)がとれる。 それを ScreenToClient でクライアント座標(コントロールの左上が0,0)に変換。 もしくは OnMouseDown イベントのハンドラに渡される X, Y がクリックされた座標。 こちらはクライアント座標なので変換は不要。 もちろんX,Y軸だけ。Direct3D だと便利な関数があるのかも。知らないけど。
888 :
名前は開発中のものです。 :2006/05/15(月) 19:12:52 ID:g5S1zZsm
スクリーン中のマウスの座標とカメラの視野の矩形を対応させた位置と カメラ座標からのベクトルをとって、 何かに接触するまで直進すればいいんじゃない?
889 :
名前は開発中のものです。 :2006/05/16(火) 10:52:53 ID:nzZBeKuy
グラフィックス関係はこちらが詳しいと思うので教えてください。 Delphiで株価チャートを簡単に表示できるようなコンポーネントがありましたら 教えてもらえないでしょうか。 今はD7Proを使っています。 あと、参考になるソースなどありましたらぜひお願いします。
>>890 いや、株式トレードのゲーム作りたいんじゃね?
それだったら板違いじゃない。
892 :
889 :2006/05/16(火) 13:50:32 ID:SUvNFOdB
バーチャル株式トレードゲームです。 すみませんが、どなたか回答をお願いします。。。
参考となるソースってことで <a href=
894 :
893 :2006/05/16(火) 14:15:28 ID:NiVebEPe
895 :
889 :2006/05/16(火) 16:54:23 ID:RP4CI60w
う〜ん、やっぱり無いですか。。。orz
http://junki.main.jp/kako01.html こちらのサイトにグラフィック関係のソースが大量においてあったのですけど、
ボックスとかラインとかを簡単に描けるコンポとかは無いんですよね。
どちらかと言うと画像の色を加工したり反転させるなどの画像編集系が多い。
ML検索しても無いですしやっぱり1から作るしか無いのでしょうかねえ。。。
paintbox,image,TeeChart,TChart,TDBChart,Canvasってあるけどどれが適切なのかも
分からないもんで。
できたらTDBCHARTを使えたら、dbのデータを直接放り込めるから便利なんだけど。
896 :
889 :2006/05/16(火) 17:20:10 ID:RP4CI60w
>>895 TImageのCanvasに自力で描画するのが手取りばやいとおもう
あまりにも基本過ぎて誰も質問しなかっただけ。
つまり、そういった基本的なことがネット上には不足してると?
>>899 聞かないと困る人が居ないので、
ネット上に解答も存在していない
素直に教えてあげればいいのに、何故そんなに排他的なのか理解できない
>>897 が妥当だと思うよ
ヘルプでCanvasを調べたらメソッドの解説も載ってたと思う
うん。 Delphiは、とりあえう、画面に画像だすのは簡単なんだけど、 ゲーム用に使おうとするとどれ使っていいかわかんなかったりする。 ゲーム用にってのは、高速に、だったり、ちらつかない、だったりする。 しかも、TImageだったり、TPaintBoxだったり、TBitmapがあったりして、 結局どれ使うのよ? という疑問は最初はあると思う。 Delphiでゲーム作るときは誰しも通る道だと思う。
904 :
名前は開発中のものです。 :2006/05/27(土) 03:47:07 ID:DbCpqm4N
で、手段はいくつかある。 まず、用語解説。一般的じゃないかもしれんが、勘弁してくれ。 バックバッファ: ちらつかないようにするための裏画面 表示バッファ: 画面に見える その1、TImageを利用する方法 ・表示バッファ用のTImage VisibleをTrueにしとく ・バックバッファ用のTImage VisibleをFalseにしとく ・キャラクタ画像用のTImage複数 VisibleをFalse、TransparentをTrue、 あらかじめ適当な画像を読み込んでおく あとは、 ・バックバッファを適当に消去 Canvas.FillRectあたりを使う ・キャラ画像をバックバッファにコピー TImage.Canvas.Drawを使う ・バックバッファを表示バッファにコピー 上と同じ これで、キャラ画像の背景を透過して、 ちらつかないで画像が表示できる(はず) 速度はちと遅い(でも数年前の話)けど、慣れたら簡単
905 :
名前は開発中のものです。 :2006/05/27(土) 03:57:04 ID:DbCpqm4N
↑ウマくいかんだら、聞いてね。昔やった方法だから、忘れてるかも その2、TBitmapを使う方法 ・表示用のTImageを用意する ・バックバッファ用のTBitmapを用意する ・キャラクタ画像用のTBitmapを用意する LoadFromFileとかで、実行時に画像を読み込む TBitmapはFormCreateとかで、Createするのをお忘れなく。 あとは、 ・バックバッファを消去 ・キャラ画像をバックバッファにコピー Canvas.Drawとか、 ScanLineとか使って、コピー ・バックバッファを表示バッファにコピー Canvas.Drawでいいか?
906 :
名前は開発中のものです。 :2006/05/27(土) 03:58:18 ID:DbCpqm4N
その3、DirectXを使う方法 DirectXでも、DirectDrawとかDirect3Dがある。 これは、SDKとか落としてきて、CとかC++の資料を見ればわかる。 グラフィックカードにもよるが、一番これが速度が速い。
907 :
名前は開発中のものです。 :2006/05/27(土) 04:03:09 ID:DbCpqm4N
って、ここまで書いて、元の質問が、ローソク足描くだけのことだと気づいた。 俺の苦労はいったい・・・ orz
>>907 (´・ω・)カワイソス
きっと君の書いたチュートリアルに感謝する初心者もいるはずさ・・・!
>>905 解説するのはいいがTBitmapを解放することも教えてやれよ
いま気付いた。マグロ漁船
>903-907 補足しておく。 TForm(TWinControl)のDoubleBufferedプロパティをTrueにすれば同じ効果が得られる。 後、画面がちらつくのは一度画面クリアしてから描画を行っているからなので、ダブルバッファを使わなくても画面クリアを行わないようにすればちらつかない。 del6で確認した所procedure Paint;時に画面クリアしているので、overrideして内部でinheritedを呼ばないようにすればOK。 ゲーム用ならTFormのprocedure Paintをoverrideして直接Canvasに描画するやり方が楽かも。
へぇ、それでPaintイベントを止めるってわけか
通りすがりだが参考になったよ サンクスコ
914 :
ぬ :2006/05/29(月) 08:43:50 ID:EScKESZS
画面クリアって再描画するときクライアントカラーで塗りつぶすことを言ってるんでしょ
それやってるのって Paint じゃなくて WM_ERASEBKGND のメッセージメソッドじゃないの?
TCustomForm.Paint は Assigned(FOnPaint) をチェックしてるだけだし
TForm1 = class(TForm)
private
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
end;
procedure TForm1.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
//なーんもしない
Message.Result := 1;
end;
あ、これだったら TForm.Brush.Style := bsClear; でも同じかな
>>910 マグロよりカニのほうが儲かるらしいよ( ̄ー ̄)ニヤリッ
915 :
911 :2006/05/29(月) 09:52:15 ID:t6UaTX2i
>procedure Paint;時に画面クリアしているので 俺は何を書いてるんだ。寝ぼけてんのか。 >914の言うとおりPaintはFOnPaintを呼び出してるだけだ。inheritedしても多少実行速度が速くなるだけでちらつきは止まらない。 >914 フォローサンクス。ところで名前欄に妙な文字が入ってるみたいだぞ。
×inheritedしても ○inherited止めても 本気で寝ぼけてんな。
「マァの人」で検索したらわかった。コテハンだったんだな。妙な文字なんつってスマン。 >917もわざわざスマンな。
919 :
名前は開発中のものです。 :2006/05/30(火) 12:53:26 ID:JUitY34u
ポインタ操作ってどうやるの? p,v: Pointer; vにpからある一定の大きさだけ後ろのアドレスを指定したい v := p; Inc(PBYTE(v),ある一定の大きさ); これをやるとpのアドレスまで変わってしまう?
v = pointer(integer(p)+100); スマートじゃないなあ・・・
>これをやるとpのアドレスまで変わってしまう? 変わらない。
922 :
名前は開発中のものです。 :2006/05/30(火) 14:21:37 ID:G3qDWiPC
>>919 ので間違いではない
v:=pやっても別にpのアドレスはかわらん
だが、Pascalでは、
v := @( PByteArray(p)[ n ] );
ってな書き方をする方が多いと思う。
そういうわけで、Pointer型なんかよりは、PByteArrayを多用すると楽ちん
923 :
名前は開発中のものです。 :2006/05/30(火) 18:29:57 ID:2UT4+Oju
俺もほとんど生ポインタ使わんな
>>922 みたいに、バイト配列にキャストしてIndexでアクセスする
924 :
名前は開発中のものです。 :2006/05/30(火) 18:40:41 ID:Dsd2Lvyv
>>922 PByteArrayなんてあったんだー
これは便利だ!!
925 :
名前は開発中のものです。 :2006/05/30(火) 20:38:51 ID:G3qDWiPC
>>924 sysutilsにて定義されている
自分で定義するなら、
type
PByteArray=^TByteArray ;
TByteArray=array[0..1023] of byte ;
ってなとこ
DirectXの頂点バッファってロックしてポインタで取得するでしょ あれを取得するときに使えるワザだなと PByteArrayで取得して40バイトずつずらしてユーザー定義の構造体に キャストする
927 :
名前は開発中のものです。 :2006/05/31(水) 13:57:33 ID:Ka6gjiAS
それだったら、最初からユーザー定義の構造体の配列とそのポインタ作った方がよくね?
このスレ最近知って読んでるんだが。 スクリプトエンジン作ってる言う人が結構いたけど Delphiでパーサージェネレーターってあるの?
>>928 yacc/lex Delphi でぐぐる
930 :
名前は開発中のものです。 :2006/06/02(金) 01:05:48 ID:Dy3JqRf/
俺は再帰下降構文解析でやってるが、デバッグしねる。 コンパイラコンパイラ使ったほうがいいよ・・・
v := @( PByteArray(p)[ n ] ); だと要素のアドレスだから嫌い。 V := Pointer(Integer(P) + 40); だな。
932 :
名前は開発中のものです。 :2006/06/02(金) 02:12:19 ID:aIT54UI1
>>931 おれはポインタを整数型にする方が気持ち悪いが、
まあ、人それぞれだろ。
マイナスにならないならIntegerよりByteかWordを使うべきだよね forのループカウンタとかも、Integerにすべきじゃないよね
934 :
名前は開発中のものです。 :2006/06/02(金) 04:14:32 ID:aIT54UI1
そう言えば、Integer型とポインタ型に互換性が無くなると問題になりますね。 でもコンパイラエラーが出るのかな。
いや待てよ、MaxInt + 40 でオーバーフローが出るのか。 データは2G以下のアドレスにあるから偶々出ていないだけで 問題のあるコードかもしれない。 LongWordでキャストするべきなのかな。
Integerがオーバーフローするとマイナス値になって、しかもエラーを 吐かない、難しいバグになるでしょ なんでもかんでもIntegerを使うのは危険かもしれない
938 :
名前は開発中のものです。 :2006/06/02(金) 20:08:38 ID:Qv1KmChy
>>937 だからByteかWord使えってのかwww?
LongWordでもCardinalでもいいけどさ
>>937 {$R+, Q+}
ならちゃんとEIntOverflowが出るよ。
{$R-,Q-}だと出ないけど、そもそもマイナス値になってもアドレスとしては正しいのでは?
ちなみに配列の大きさはMaxIntまでだから、Byte型配列の場合は
0..MaxInt-1まで有効。 範囲チェックを切った状態でMaxInt以上に
アクセスした時どうなるかは知らない。
941 :
名前は開発中のものです。 :2006/06/03(土) 01:57:53 ID:8lrmUmFG
>>941 その本のソース、全部ネットで落とせるから買うのはお勧めできない。
944 :
名前は開発中のものです。 :2006/06/11(日) 15:02:19 ID:YVDGxovv
QuadrupleD で、メタセコイアで作ったデータをそのまま表示するには どうするの? x→sx変換するとテクスチャが失われるんだけど
945 :
名前は開発中のものです。 :2006/06/11(日) 16:41:44 ID:hrsH9ihZ
なんか、他でもその質問出てたな フレームだったかメッシュだったかのテクスチャプロパティに放り込むんだよ
946 :
名前は開発中のものです。 :2006/06/12(月) 20:53:48 ID:j6OLm9qK
DELPHIオワタ
DELPHIハジマルー
DelphiでGetPixel関数に当たるものありませんかー??
あれ?GetPixel関数ってあるんですね・・・すまんです
もうひとつ質問です GetPixel(Application.Icon.Handle,0,0) アイコンの0,0座標の色を取るにはこれでいいんでしょうか?
952 :
名前は開発中のものです。 :2006/06/25(日) 19:01:17 ID:kpTFq30b
954 :
名前は開発中のものです。 :2006/06/26(月) 11:18:32 ID:i8RTjGMl
CanvasのPixelsは?
955 :
名前は開発中のものです。 :2006/06/29(木) 21:20:47 ID:7Elg7Vgb
Canvas.Pixels[x, y]
Canvasタン(;´Д`)ハァハァ
ロナウジーーーーにょ!
Canvas.Pixels[x, y] はビットマップからしか読み込めませんでした・・・
959 :
ぬ :2006/07/05(水) 00:33:06 ID:suHNhbLN
>>ぬーぬー どうもです
961 :
ぬーぬー ◆9fLecX9sq2 :2006/07/08(土) 00:43:59 ID:L586tE+t
文字の縁取りの描写で太さ柔軟に変えられるようにするんだったら
文字のアウトラインを1文字ずつ取得して、そのアウトラインに沿ってペンの太さを変えて描写する
多分
>>864 が見たのってそんな感じじゃないかな
965 :
ぬ :2006/07/09(日) 22:33:33 ID:XOA6mg0W
(;; @u@)ノシ <アウトラインでもいいけどパス使ったほうが簡単ビーム
966 :
名前は開発中のものです。 :2006/07/09(日) 22:40:25 ID:aSjtkPwz
あ
967 :
名前は開発中のものです。 :2006/07/09(日) 23:08:50 ID:TOVG50/H
メインループにOnIdle使うと、メニュー表示とかで停止しちゃうじゃない ネットワーク対応とかだと停止しちゃ困る。 キー降下イベントから、 ALTキーとF10の時に回避処理書けばなんとかなるけど、 それで本当にIdleの安定性が保障されてるのかなあ アーキテクチャ的にキモイ気がするんだけど、 でもやっぱOnIdle?
968 :
名前は開発中のものです。 :2006/07/09(日) 23:19:50 ID:31k7KRE7
じゃあ、自分でプライオリティを上げたスレッド立ててループ回せばいいじゃん
969 :
名前は開発中のものです。 :2006/07/09(日) 23:27:33 ID:TOVG50/H
>>968 なるほど!
スレッド使った経験無いけどそれでやってみようかな
970 :
名前は開発中のものです。 :2006/07/10(月) 23:07:00 ID:suZvZ9dr
971 :
名前は開発中のものです。 :2006/07/10(月) 23:29:31 ID:i37BpqZG
あのサイトはあんまり信じるな。妙な記述がなんぼかあるし、いろいろ怪しい。 しかも、中の人はアマゲニュースの中の人とほぼ同一人物(アマゾンアフィリエイトのIDが同一だった)のくせに, ジサクジエンでサイトを宣伝して広告料を稼いでいるという話もちらほら聞く。 で、スプライトだけど、できるよ。 Pushspriteで、UVを指定してやるわけね。 左あるいは上が0.0 右あるいは下が1.0ね。 Pushspriteで四角を指定する順番は、「左上、右上、左下、右下」の順 あるいは、それを回転したものにするということも気を付けてね。 それでもよくわからんかったらまた書いてくれ。 サンプルをどこぞにアップしてあげるから。
>>970 //左上のこまを出す
SXScene.PushSprite(
Vector2D(100,100),//スプライトの中心が来る座標
[
SXVertexSP(-80 ,-80, $FFFFFFFF, 0/Texture.TotalWidth ,0/Texture.TotalHeight),
SXVertexSP(+80, -80, $FFFFFFFF, 159/Texture.TotalWidth,0/Texture.TotalHeight),
SXVertexSP(-80 ,+80, $FFFFFFFF, 0/Texture.TotalWidth,159/Texture.TotalHeight),
SXVertexSP(+80,+80, $FFFFFFFF, 159/Texture.TotalWidth,159/Texture.TotalHeight)
],
DGTexture,
);
//その右下のコマを出す
上のやつの tu tvを
160/Texture.TotalWidth,160/Texture.TotalWidth
319/Texture.TotalWidth,160/Texture.TotalWidth
160/Texture.TotalWidth,319/Texture.TotalWidth
319/Texture.TotalWidth,319/Texture.TotalWidth
SXScene.Render(nil);
こんな感じ
973 :
ぬーぬー ◆9fLecX9sq2 :2006/07/11(火) 00:34:27 ID:oEWvmZeI
159じゃなくて160か???
974 :
970 :2006/07/11(火) 17:52:34 ID:4lZkiSOW
>>971 なるほど…
肝に命じておきます
>>972 わざわざサンプルソースまで用意していただいてありがとうございます。
できました!
とりあえず、出来ると言う事がわかったので、微妙にわからない事もありますが、
用意してくれたソースを理解して行けるように頑張ります。
本当にありがとうございました!
975 :
ぬーぬー ◆9fLecX9sq2 :2006/07/11(火) 21:06:35 ID:oEWvmZeI
160でした
>>974 >微妙にわからない事
どしたの
976 :
970 :
2006/07/11(火) 22:39:06 ID:4lZkiSOW >>975 ぶっちゃけ、SXVertexSP関数の仕様とか、
いままでがなぜだめでこれならおkなのかわからない程度なので、
自分で頑張ってみます。
わからなかったらまた聞きに来るかも知れませんが、その時はよろしくお願いします。
丁寧にありがとうございました。