Delphiでアクションゲームが作りたい!!

このエントリーをはてなブックマークに追加
203当たって砕けろ:02/06/01 03:49
>>202
案内どうもです。
しかし俺製作技術以前の問題。鬱。
まあ、てきとうにやってみれば?
2ケ月くらいDelphi参考書と寝食を共にすると、並のゲームくらいつくれるだろうからさ。
うひひひ
>>204
まぢ!?
俺、もう少しで2ヶ月だけど、まだゲーム作るレヴェルじゃない…鬱…
>>205
遊びのレシピ買ってこい。
Delphiで各種ゲームの作り方が載ってる。
207205:02/06/01 11:12
>>206
一応言うと、>>203>>205なので。(笑)
俺、あんまりゲーム志向じゃないし、本まで買うのは遠慮しておきまふ。
ゲームも作ってみたいけど、素材集めるのが面倒そうで、やる気が起きませぬ。
>>207
>素材集めるのが面倒そうで、やる気が起きませぬ。
うん、是非やめてくれ。
209205:02/06/01 17:39
>>208
ま、お前には関係無いけどな。
210当たって砕けろ:02/06/01 18:27
ゲームを作りたい!
と思ったものの、何をすれば良いのかわからず、
オンラインの講座とかをちょこちょこやってるだけの現実。鬱。
>210
貴方は私ですか?(鬱
212当たって砕けろ:02/06/02 00:47
>>211
同志ですか。鬱。

なーにをやればいいのやらです。まず画像表示したい。
ゲーム作るのに、クラスなどのオブジェクト指向の概念って勉強する必要はありますか
>>213
しなくても作れるけど、やると楽に作れるようになります。
Delphiと書かれているスレのツアーをお勧めします。この板とゲ技板。
 あと入門本手に入れる。ぬるかったらゲーム制作系の入門本。
そして、検索検索検索ぅ!

202で待ち伏せ失敗したことは秘密だよ。
216当たって砕けろ:02/06/03 15:54
小遣いはたいて参考書買いました!無一文!鬱。
Delphiオフィシャルコースウェア基礎編。
なかなかわかりやすくていいです。これみて頑張ります。
>>216
ヘルプだけで十分だ!と叫んでみる。
カーソルが指してるアイテムを著癖いつ引けるシステムは感動したけど。
218デフォルトの名無しさん:02/06/03 16:57
>>1は、宮崎県民だよな!
219当たって砕けろ:02/06/03 17:07
>>217
すいません、ヘルプ&講座サイトじゃ理解できませんでした。鬱。
Delphiのヘルプは難しいから〜
>>216
漏れはWinHelpだけで勉強したぞーー!鬱!
ポイントは「目次の順に読む」、これ最強!鬱!

なんか当たって砕けろ君の口癖が鬱っちゃったぞ!鬱!
>>221
おんなじ。おんなじ。
なぜかあの時言語仕様の図(名前失念、授業で習ったのに・・・)読めてた。
今読めない。鬱。
よくわからんが、鬱!
224当たって砕けろ:02/06/04 16:46
caseとEdit1.Text使ってランダムにメッセージが表示されるものを作成。
すっげえ単純でくだらないけど初Delphi作品!うれしい!けど鬱。
>>221
ヘルプもちゃんと読んでみます。鬱。
>>223
俺もよくわかりませんが、鬱!
>>224
そうだ!がんばれ!
試行錯誤によって得られるノウハウこそあなたの最高の栄養です。

(俺の履歴書より)
質問です.
MIDI音源を純音を出すにはどうすればよいですか?
midioutshortmsgを使って音は出せるよになりました
しかし音色がピアノとかなんたらばっかりで,
昔のPCのようなピーという機械音チックなのが出せません
何か手段があるでしょうか?
227当たって砕けろ:02/06/04 20:51
>>225
ありがとう!がんばるよ!
栄養取らないとな。鬱。ニホンジンハカルシウムブソク。
>>226
アンタはMIDIをFM音源かなにかと勘違いしてる
229821:02/06/04 23:20
226>>
MIDIでは純音をだせないのですか??
FM音源をコードで扱うことはできますか?
音の長さ,音程を操作できるのでしょうか?
それができるならMIDIでもFMでもかまわないのですが・・・
>>229
アンタ>226?
純音ってのは正弦波のことでいいのか?
とりあえずGMの音色にはないぞ
GSやXGならあるだろうが(GSはあるのを確認した)
シンセ系の音色をソレっぽく加工しても正弦波は出せないと思うが・・・
>>229-230
とりあえずsin関数で正弦波発生させてwaveOut系のAPIに流せば?
一応「ぽーーーーー」ていう音叉みたいな音が出せるよ。
いわゆる「ぴーーーーー」っていう電子音は方形波の音に近いと思われ。
さらにFFT処理とかすると面白いけど、まぁ難しいんで割愛。

ゲーム作るんならDirectSound使ったほうがいいのかな?
漏れゲームは作った事無いからDirectX知らないんだな・・・
232226:02/06/05 11:29
230>>
231>>
なるほど
ありがちょう
正弦波つくってwaveoutでやってみます
ごいけんさんくすこ
まぁ、squareと各種パラメータを駆使すればなんとか・・・。
激しく機種依存だけど。
234デフォルトの名無しさん:02/06/06 15:59
あg3え
235藪から棒:02/06/06 17:14
今さらVB.NET(VB6ユーザも)やるくらいならC#ですね。
でも今までVBで適当なプログラム書いていた人は性根入れ直してからにしないと。
初めて簡単なゲームを作ろうと思い、まず背景を白くしようと思ったのですが、
Form1のpaintイベントで

with Canvas do
begin
 Brush.Color := clWhite;
 FillRect(0, 0, Form1.ClientWidth, Form1.ClientHeight);
end;

ってやったらダメなんすけど、何でですか?
FillRectって引数がTRectでもInteger * 4でオーバーロードしてると思うんですが…。
237当たって砕けろ:02/06/07 00:00
ボタンをクリックするだけの、RPG風擬似戦闘ver1ができました!
でも内容的に見て戦闘にすらなってない罠。鬱。
これをもとにいろいろコマンドとか増やしてみよう・・・。
>>236
with Canvas do begin
 Brush.Color := clWhite;
 FillRect(Rect(0, 0, ClientWidth, ClientHeight));
end;

で出来たが、、、

>FillRectって引数がTRectでもInteger * 4でオーバーロードしてると思うんですが…。
Pascalではこーゆーいーかげんな事は許されません。
それが面倒と感じるか、律儀とかんじるかは貴方次第。

あと"Form1"ってのはDelphiが便宜上使ってるグローバル変数なんで、余程の事が
無い限り直接参照する必要は無い。
どうせPaintイベントハンドラもTForm1のクラスメソッドなんだから、何も書かな
けりゃ、そのTForm1のインスタンスの ClientWidth が参照される。

>>237
がむばれ!!鬱!
>>238
サンクス。
>FillRectって引数がTRectでもInteger * 4でオーバーロードしてると思うんですが…。
どこにも書いてなかった、誤爆スマソ!

最初はClientHeightとかだけにしてたんだけど、それでできなかったからForm1付けてみたんだよねー。
>>239
>最初はClientHeightとかだけにしてたんだけど、それでできなかったからForm1付けてみたんだよねー。
なるほど。
でも明示的に、「そのフォームのClientHeightが使いたい!」と書くなら、
Self.ClientHeight
って書くべきですな。

あれ、でもWith do ... の中でSelf使うとCanvasと誤認されて、
「ClientHeightなんてproperty無ぇぞゴルァ」ってコンパイラエラーでるかも。

var
 Form: TForm1;
begin
 Form := Self;
 with Canvas do begin
  Brush.Color := clWhite;
  FillRect(Rect(0, 0, Form.ClientWidth, Form.ClientHeight));
 end;
end;

って書くのが一番正当なやりかたなのかな?
>>240
そのメソッドをそのクラスでしか使わないから、「Form1.ClientWidth」でいいかなと思いまして。←言い訳かも…(;´Д`)
Selfってオブジェクトしか参照しないのでは?
だからわざわざクラス型変数Formは使わなくて良いのでは?

ゲーム作るっていっても、何から勉強していいのかわからないなぁ。
とりあえずTCanvasとTStreemをまず勉強しようと思ってますが…。
>>241
んー、まぁTForm1のインスタンスを2個以上作るってことは多分無いと
思うから、99.99%それで問題はないんだけど・・・
(もちろん2個以上のインスタンスを作りうる場合だと大問題!)
ま、教科書通り厳密にやるか、スッキリしたソースがいいか、のトレードオフですな。

>Selfってオブジェクトしか参照しないのでは?
TObject-TPersistent-TComponent-TControl-TWinControl-TScrollingWinControl-TCustonForm-TForm-TForm1
ってな具合で継承してるので、TForm1も元を辿ればTObject型、もちろんSelfも使えます。

>TStreem
一応TStreamといっておく。
>>241
言い方おかしかったですかね?
Selfにはそれの属するメソッド(今回の場合Form1のpaintイベント)を使用したオブジェクトが参照されるから、
with do...の中でCanvasと誤認することは有り得ないのでは?
ってことだったんですが。

スペル間違えてましたか。
なかなかTStreamが難しくて困ってるんですよね。

>>237
もうRPG作ってるんですか、早いですね。
どんなことから勉強はじめましたか?
参考に教えてもらいたいのですが。
>>243
がーーーーーーーーーーーーーーーーーーん。

今までずっとSelfって、TObject型の読み出し専用プロパティで、
そのインスタンスのアドレスを指すものだと思ってた。。。。。

今ヘルプ引いてみたら・・・・違ってるやん。

今晩はLANケーブルで首吊って寝ます。
245当たって砕けろ:02/06/07 02:55
>>243
いや、RPG作ってるわけじゃないです。そんな高度なことできません。鬱。
ただ攻撃ボタン置いたりEditに文章表示させるだけです。鬱。

>どんなことから
変数からやりました・・・。
ひとまずこれだけは押さえておこうと思い。
>>245
そうでしたか。
俺もゲーム作りたいのでお互い頑張りましょう。

マジで何からやればいいんじゃー!?( T▽T)
247無責任だが:02/06/07 11:54
ShellLinkの件、もしかして VB のようにやりたいという事なら
procedure TForm1.Button1Click(Sender: TObject);
var guid:TGUID;
var objShell : OLEVariant;
var objFolder : OLEVariant;
var objFolderItems: OLEVariant;
var objFolderItem : OLEVariant;
var lk:OLEVariant;
var LNKpath,LNKname:WideString;
begin
LNKpath:='C:\Documents and Settings\Administrator\SendTo';
LNKname:='K2Grep.LNK';
guid:=ProgIDToClassID('Shell.Application');
objShell := CreateComObject(guid) as IDispatch;
objFolder := objShell.NameSpace( OLEVariant(LNKpath)) ;
objFolderItems:= objFolder.Items ;
objFolderItem := objFolderItems.Item(OLEVariant(LNKname));
lk:= objFolderItem.GetLink;
Caption:=lk.Path;
end;

とOleVariantを使って IShellLinkではなくShellLinkObjectを使えばいいのでは?

IDispatchでは遅いという事なら、 ActiveXの取り込みで Shell32.dll を取り込んでおいて

procedure TForm1.Button2Click(Sender: TObject);
var guid:TGUID;
var objShell : IShellDispatch;
var objFolder : Folder;
var objFolderItem: FolderItem;
var lk:IShellLinkDual2 ;
var path,LNKname:WideString;
begin
path:='C:\Documents and Settings\Administrator\SendTo';
LNKname:='K2Grep.LNK';
guid:=ProgIDToClassID('Shell.Application');
objShell := CreateComObject(guid) as IShellDispatch ;
objFolder := objShell.NameSpace(path);
objFolderItem:=(objFolder.Items as FolderItems).Item(LNKname);
lk:= objFolderItem.GetLink as IShellLinkDual2;
Caption:=lk.Path;
end;
とすれば、良いと思う
248無責任だが:02/06/07 11:56
あっとゴメン ミス
249当たって砕けろ:02/06/15 20:41
方向キーでImageに画像出してTopとLeftの値をいじって動かしてます。鬱。
こ、これがゲームへの第一歩なのかあぁあ?!鬱!
>>249
勿論本格的なゲームなら、描画速度とかいろいろ問題になるかも知れんけど
第一歩としてはそれでいいんじゃない。

DirectX使わなきゃ駄目なんだー、なんて思い込んでるといつまでたっても
完成しないからね。
その方法で出来るところまでやってみて、描画速度がボトルネックになってるな、
と感じたらそこを改良して、そのうちソースがぐちゃぐちゃになって、鬱になって
最初から書き直して・・・

そんなこと繰り返してる間に上達して、ゲームも完成していくよ。
ガムバレ、鬱!!!
貴様ら!ブロック崩し作るので見てください
http://pc.2ch.net/test/read.cgi/tech/1004855513/
を参考に(上記スレはVBだが)、Delphiでブロック崩し頑張って作ってたりする。
ちなみに、Delphi使い始めて2週間程度。

とりあえず今はブロックを表示して、ボールがパドルと壁で跳ね返るとこ。
DrawRectでブロック、Shapeで玉+パドルのショボーンなグラフィックだけど。
お互い頑張りませう>同士
252デフォルトの名無しさん