【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無事に / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
前スレの成果一覧とか、誰か作ってくれたら嬉しい。
1〜:=1登場→後、失踪 124〜:=124登場→後、失踪 151〜:=151登場→後、退却 197〜:=197登場→後、失踪 210〜:=210登場→後、失踪 330〜:=330登場→後、失踪 419〜:=419登場→後、行方不明 490〜:=490登場→後、退却 751〜:=751登場→現在行方不明
Z!
8 :
既に次スレあったのね・・ :03/04/24 15:46 ID:4G/krSng
l50が必要ない人は後で全部表示を押せばいいだけだが、 l50が最初からないと、一度レイプされてからってことになる。 ゲームを作るうえでも「気配り」って大切なんじゃないかな? 他の仕様と合わせることは良いことかもしれないけど、 それが正解とは限らないと思う。
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
>>8 逆にいえばl50がないなら
アドレスをコピペしてl50くっつければいいだけだろう?
くだらんことをグチグチ言わない
λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... このスレ、終了だって カエロッカ…
13 :
8 :03/04/24 18:36 ID:W7s1PVGN
>>10 今の貴方には他人を楽しませるようなものは創れないでしょう。
新スレおめでとうございま〜す。
もう飽きちゃったんで、俺も行方不明ってことにしておいて下さい。
>>5 RPG限定じゃなくなったようなので、気が向いたら戻ってくるかも
しれないですが・・・スレはいつも楽しみに見ています。
>>8 この板は専用ビュワーを使用している人が多いでしょうから、その辺の
気配りにはさほどこだわらなくても良いかと思います。
この板で数少ない、せっかくの現在進行スレですからマターリいきまっしょい。
‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/終 ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖\/‖ ‖ ‖ \_/\_/\_/\_/\_/\_/\_/\_/\_/ _________________________ /| |\ \だからさぁクソスレ立てんなって言っただろ/ パチパチ パチパチ  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄パチパチ ∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ ( ´∀`)∧_∧∧_∧∧_∧ _∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧ ∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧∧_∧ ( ) ( ) ( ) ( )
>>13 君、何様のつもりだい?
君にそんなこと言われる筋合いはないが。
気配りが大事なのは分かるが
あまり神経質にならんでもいいだろう
ってことを言ったんだが。
そんなんで人を簡単に判断しないでもらいたいね。
それと前スレにも同じもの張ったみたいだが
それはマルチになるからやめておけ。
∧_∧ /⌒ヽ ) i三 ∪ |三 | (/~∪ 三三 三三 三三 〜糸冬〜
前スレに貼ってから、こっちに貼り直したんです。
っていうか、自分勝手かもしれませんが
>>14 の書き込み見てどうでも良くなりました。
「どうでもいい」と思いながら、しかしわざわざ「どうでもいい」と書き込んでしまうという矛盾。 まぁどうでもいいことだが。
∧ ∧ シュー (,,゚Д゚) リョー 〜( ) ||| (__)_) 【糸冬】
つまらない論争は終わったかい? マップエディタ作ってた人達はどうしてるんですかね? 結構苦労してんのかね。
折角の名スレがl50が降臨してから散々だな。
よし↓の奴は話題を変えろ
. __ ‖ ~"ー 、,,_ | ‖ 終 .了 ,> \ | / ‖ _,:-−'´ ‖/~ ヽ | / ‖ , )) ,、 ,、 /'ll__/ ヽ / ヽ__/ ヽ/ _‖ _ ヽ. ∧___∧ / / ´ ‖ー/ ` l ロ. / _ _ / ´ 、__, ` |. ‖∨ ,! || | l--l ` _l ∨ ヽ/ ̄)( ̄ ̄`"::::ノ (⌒ヽ, ..ヽノ , ( ヽ_ / /ll `'ー、....::ノ ∀\/ー- /`l ヽ ヽ、 ,ヽ:..:ノ ‖ '::::|⊃ iー- l (_〕i__ l : :::Y ‖ ::| |"|ー-,| |(
>>25 OK!
じゃ、夜勤病棟の話をしようぜ!アニメのほう。
Delphiでゲームを作りたいのですが、まず何から入れば良いのか判りません… 激しく厨な質問で恐縮ですが、どなたかご教授してくれないでしょうか…
>>28 前スレでアップされてるソースを手に入れて
自分なりに勉強してみるといいと思う
神キターーーー!! 生贄キターーーー!! 貴方のような人が次から次へと現れては討ち死にしてゆく事でこのスッドレは成り立っているのです。
>>28 まずは、初心者向けの勉強サイトでお勉強かな。
問題は、初心者向けの勉強サイトが1つも存在しないって事だけだな。 どんなゲーム作りたいのか知らないけど、適当な課題決めて作りつつupすれば助言も集まると思われ
33 :
28 :03/04/26 00:16 ID:TTpJ+e9C
とりあえず、ほんの少しだけ基本をかじった程度なのだが このまま画像表示やらに進んでも大丈夫なのかな… 右も左も判らないのだが…
ゼルダみたいなアクションゲーム作ろうと思ってる人いませんか?
蒸し返すようで悪いが一言だけ
>>8 >>13 俺は同感だ
みなまで言うな、わかってる
お節介やきなところが俺にそっくりだ
どちらが正しいか証明してやろうじゃぁないか
スレ汚しすまんね。スルーしてください
>>34 ゼルダといってもいろいろ有るけど、
初代ゼルダならDelphiの標準コンポでかなり近づけそうね。
o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無事に / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
>>28 >>33 敬語から、いきなり語り口調
こんなやつにしたのはいったい誰だよ(w
40 :
28 :03/04/26 03:01 ID:TTpJ+e9C
あぁ、頭から湯気が出そうだ。 ダブルバッファてこんなにもだるいものだったのね… しかし本当に作者さん達はすごいね。 面白いゲーム作れるようになるまで時間かかるだろうけど頑張って見るよ。 挫折しない事が大事だよね。 ジリジリ作れるようになっていきたいなぁ。
いつのまにやら次スレに。いまさらながら乙。 アイテムエディタを作って、メニュー画面を作ってるところですが、 インターフェイス考えるのが思ったより難しい…… 変に凝ろうとしてるのがいけないのかなあ。 自分で画像作れないからへっぽこな画面になりそう。
>>36 >>39 カマ口調からいきなり煽り
句読点の打ち方も理解出来ない低脳だね(w
キャラ1つ動かすにしても大変だし、他にもやる事たくさんあるし… 何から始めたらいいか本当迷う。 みなさんはどういう所から始めました? 質問厨ですいません…
λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... このスレ、終了だって カエロッカ…
おいおい、またつまらない論争する機会?
やるなら別スレ立ててそっちでやってくれ。
>>35 何を証明したいのかよく分からんがこのスレではご遠慮願いたい。
つーかすんな。
「定期的に蒸し返し厨が出現しそうな悪寒」と書いておく俺
お前ら少しはもちつけ
>>43 俺はある程度文法勉強してから
マップ表示→キャラ表示→・・・
って段階的に進んでいった。
前スレが1000逝った模様 ついでに、ADVRUNも逝った模様 あーあ
* THE END * ⊂二 ̄⌒∈二二 ΞΞゝ ノ) . )\ \ 0)´Д`) /ヽ\ /__ )〓Φ〓 _ / /^\) //// /丿 ο ο |⌒ ̄_|/ * / / / // ̄\ ο ο | ̄ ̄ / / / (/ \=(◎=___ ((/ ( / _ ) * / ̄/ ̄ ̄/ / ( ノ / / / / . ,'´ ●ヽ / / ( / //~´∀`) シュウリョウー / ̄/ ) / `ヽ⊃ つ / / し′ し‐、ノ ( / ) / ...::::::..:::...:...:.. :::...:...:. し′ .....:::::::::::::::::::::::::::.:::::: :::::::::.:::::: ..::::.::::::::::::::::::::::..::::::::::::::' 【糸冬】
>>49 レスサンクス
俺も少しずつ頑張ろう
なんか荒れてるみたいですけどマターリします
まあ、sageまくればそのうち荒らしはどっか逝くでしょ。
前スレはマターリしてたもんねー
あげてやる
アドベンチャーはスレ違い?
どんとこい!
59 :
57 :03/05/01 14:32 ID:CbPqnknr
>>58 ありがとう!
とりあえず今は画像表示させて文字を表示させたい。
ラベル考えたんだけど・・・カッコワルイからビットマップにしてみる
また一人・・・・・・修羅の門を叩く漢が現れた 格好を気にしていると本質を見失う、努々忘れるなYO
61 :
57 :03/05/02 06:23 ID:jSdw37Yt
>>60 うん。最初はなりふり構わないでがんばる。
だからどんなにクダラナイ質問でも答えて欲しい。
やさしく、とは言わない。
とか言ってみるテスト。
画像の表示とか文章の表示とかフェードアウトとか、
RPGに使えそうなモノがたくさんあることに気づいた。
62 :
57 :03/05/02 06:25 ID:jSdw37Yt
途中進行をうpしたいけど、まだあるサイトのサンプル使ってるから・・・ そのうちちゃんと自分の絵で作ってうpします。
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
ガンガレ
∧∧ ミ _ ドスッ ( ,,)┌─┴┴─┐ / つ. 終 了 │ 〜′ /´ └─┬┬─┘ ∪ ∪ ││ _ε3 ゛゛'゛'゛
66 :
57 :03/05/03 16:30 ID:e99s1sMd
すんません ちょと忙しくてDelphi触れませんでした; 今日バイト終わったら再開します。
いしだ小屋のゲームもフリーのDelphiだよね。
∧∧ ミ _ ドスッ ( ,,)┌─┴┴─┐ / つ. 終 了 │ 〜′ /´ └─┬┬─┘ ∪ ∪ ││ _ε3 ゛゛'゛'゛
70 :
69 :03/05/04 14:15 ID:8497xc7F
あー、BMPファイルだから、グラフィックない人間は、 とりあえずこれで作ってみるといいかもしんない。 (もちろん一般公開はできないけどねー) 戦闘シーンだけでも。つーかオリジナルは思考ルーチンひどすぎ。
ケルナグールなら知ってるんだが
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
前スレでマップエディタ作ってたものです。 不具合の原因がわからなくて投げてたんですが 久々に開いてみたら原因がわかりました。 またちょっとずつ作ります。
時間おいてからだと案外バグ見つかったりするもんだよね。 やっぱり休憩は大事だよ( ´∀`)
やたらDelphiがフリーズするようになった。 アップデートさせたのが原因かな?とか思ったら、 一部のオブジェクト解放を忘れて、メモリリーク起こしてるだけだった・・・ みなさんはそんな経験ありませんか?俺だけ?
>>75 よくある話でしょう。
オブジェクトが無数にできるようなとか、オブジェクトの中でオブジェクトとかの
仕様だと、消し忘れとかありますよー
あと、消す必要のないオブジェクトを無駄に消しちゃったりとか、 あ、これは関係ないか。
マップエディタガンガレ
77 :
57 :03/05/08 18:46 ID:UjRzxfkT
講座とかある程度読んだんで、 一から自分なりに作ってみる事にしますた わかんないことあったら教えてね。 自分でも調べるけど
80 :
名前は開発中のものです。 :03/05/09 15:33 ID:k+iBlQm4
>>79 俺も持ってる。
確かにゲーム作成についてわかりやすく?書いてあるけど、
肝心のキャラクターの移動とか当たり判定とか無かった・・・ショボーン
俺が初心者だったのが悪いのかな・・・
この本だけじゃゲームは作れないと言ってみるテスト
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
>>80 言っちゃ悪いが、その本に書いてあることにちょっと付け足せばどっちもできるような。
ゲーム作成の基本は大体その本でそろうでしょ。
>>80 初心者とかは、どうでもいい、ageるな。 と
∧ ∧ シュー (,,゚Д゚) リョー 〜( ) ||| (__)_) 【糸冬】
85 :
80 :03/05/09 22:28 ID:zxbcVcgR
>>82 いや、そうなんだけどさ。
あン時はネットも通じて無くて、
なにを付けたせばいいのかも調べられなくてさ。
いい方悪かった。ごめんよ。
>>85 ああ、そういう意味だったのね。ちと言い方がきつかったよ。スマソ
87 :
{} :03/05/09 22:42 ID:T1SdHyAC
つーかCUIから先に進めません そしてPascal系にどうも馴染めません Cにどっぷり浸かった悲しい恋人達のラブEメールフロムビーナスなんて素敵ね
ゲームプログラミング遊びのレシピなんてどう?
C++BuilderとDelphi両方に対応してるし。
あと処理の流れだけ知りたいなら、HSPゲームプログラミングブックとか・・・
HSPだからあんま役に立たないかもしれないけど。
>>87 アポロ?
o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無事に / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
本買うまでもなくネットで調べがつくしそれ以上を求めるならGemsとか買えばいいと思われ ソース見たいだけならQuadrupleDのとこに置いてるシューティングとかもあるしそれ以外にも…… Cで慣れたらC++とかDelphiに頭を切り替えるのは大変かもね
俺としては、ネットもいいけど書籍のほうが好き。 軽くて小さい電子辞書より、重くて分厚い広辞苑のほうが不思議と馴染むように、 ネットよりも書籍の方が目を通す頻度が高いのよね。 アナログでスマソ
オレは、辞書は電子辞書のほうがいいが、入門書はやっぱり紙じゃないと駄目だな。 ネットの情報は、リファレンスさえ見れば全て事足りるようになってから(てのは極端な意見だが・・・)。
ドンドドッド、ドッドドッド、ドンドドッド、ドッドドッド、 オワリガ チカヅイテマイリマシター!!!! ∧ ∧ ,,──,−、 ♪ (,,゚Д゚) / (: :( ) )) |つ/つ `ー─``ー' 〜| | ┣━━┫┨ U U ┠┤ ┣┫ クソスレダ クソスレダ ∧_∧ ∧_∧ (__・∀) (__´∀) /|_(完)_|ヽ /|_(終)_|]つ
っていうか新スレになってから終了厨が妙に多いのはなぜ?
なるほどじゃあsage進行で
LinuxサーバーだとDelphiでネトゲーは不可能だというのが難だな
Kylix?
100
ここも廃れたな
だってこの板で作品完成したためしないじゃん
完成させるのが目的じゃないでしょ。
ゆっくりやってけばいいじゃん
こんちにわ ぼくはしょうがくろくねんさえです とりわえずガエムかんせいしました
>>102 ここは技術情報交換だから、完成とは関係ないね。
>>102 君はクソスレにしか出会ったことがないようだな。可哀想に。
>>107 ベタベタな煽りで返すおまえは0点ってところか。かっこわる。
110 :
57 :03/05/12 01:22 ID:M5iLAonw
質問。 画像をTBitmapに読ませるとき、 ファイルの指定で C:MyDocuments\〜って書くと、他の人が別のPCでプレイしたとき、 ちゃんと読み込ませることができないですよね 自動的に読み込むファイルがあるところを指定できないですか?
111 :
57 :03/05/12 02:11 ID:M5iLAonw
すんません 相対パスっちゅうものすごく便利なものありますた
Delphiの場合、 Application.ExeNameに実行ファイルのパスが入ってるから、 ExtractFilePath(Application.ExeName) で実行ファイルのあるディレクトリを取得できるよ。 ビットマップなどを一つのディレクトリにまとめて置いておいて、 そのパスを取得したい場合は BmpPath:=ExtractFilePath(Application.ExeName)+'Bmp\'; みたいにするといいと思う。詳しくはヘルプ参照。
実行ファイルと同じフォルダ内ならファイルネームだけで読めるね
114 :
57 :03/05/12 18:55 ID:Ikh8+Cyx
>>112 ありがとうございますー
かなり柔軟性が増した気がします。
>>113 そうでつね
でも、ファイル数が多くなったとき(画像とか)整頓するのがめんどそうでsy
次はテキストファイルを読み込んでそこに書いてあるスクリプトどうりに実行させてみます
どうやろうかな。
×どうやろうかな。
○どうやればいいのかわかんねえな
確か前スレにヒントが書いてあったぞ。
>>114 ファイル管理に関しては、実行ファイルのあるフォルダに
画像用(とかスクリプト用)のフォルダを作ればOKじゃない?
117 :
57 :03/05/12 20:58 ID:Ikh8+Cyx
>>115 前スレ845にヒント、ていうか解答がありました。
さっそく試してみます。
これだけできるようになれば基本的な構造はできるかな?
>>116 うん、そうしてます、
だからパス指定にちょっと迷ったわけです。
118 :
57 :03/05/12 22:28 ID:Ikh8+Cyx
スクリプト読み込みのテストとして、 TStringListのScriptLineに入っている数値の行に書かれている 画像を表示することに成功(文が変) やっとこさADVらしくなってきた。 次は新たにプロシャージャ作って、 スクリプト別の処理を作ります
119 :
57 :03/05/12 22:31 ID:Ikh8+Cyx
一応、 スクリプトファイルのテキストには #BgChange,Bg01.bmp とか書いてあって、カンマ以降のファイルを開く仕組み。 こういう書き方なら柔軟性が沸くかな? ほんとうに基本的過ぎてハァ?当然じゃん?みたいなコトだけど まともにプログラムしたことない俺からすれば 「俺って天才?!」みたいな気分。 がんがれ、俺
がんがれ、お前
>>119 プログラミングってそんな感じですよね。
俺も何かアイデアがひらめいた時
「これって結構スゴイんじゃない?」とか思っちゃったりするけど
その後サンプルとか見てみると同じ事やっててショボーン
でもそのひらめきは大事ですよね。
がんがれ、俺ら
122 :
57 :03/05/13 14:33 ID:bJsaxW4h
(中略) type TForm1 = class(TForm) Image: TImage; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private 宣言 } procedure ScriptAnalysis; procedure CharaDraw; (中略) implementation const //背景etcで使う定数の設定 image_H : Integer = 480;//はいけいたて image_W : Integer = 640;//はいけいよこ //変数・ビットマップの宣言 var BackBmp : TBitmap;//背景画ビットマップ CharaBmp : TBitmap;//キャラクタ用ビットマップ NowSFile : string;//今読み込んでいるシナリオファイル名 LoadChara : String;//読み込むキャラ画像 LoadBg : string;//読み込む背景画像 AppliPath : string;//アプリのパス ScrList : TStringList;//スクリプト読み込み用 Script : string;//ScrLineで読み込んだ行を保存 ScrLine : integer;//読み込むスクリプトの位置 MessPos : integer;//文字列検索用 ScrNum : integer;//スクリプトの種類
123 :
57 :03/05/13 14:34 ID:bJsaxW4h
procedure TForm1.FormCreate(Sender: TObject); begin CharaBmp := TBitmap.Create; BackBmp := TBitmap.create; //各変数初期化 NowSFile := 'sinario'; ScrLine := 1;//読み込む行の初期値 //下準備 AppliPath := ExtractFilePath(Application.ExeName);//アプリのあるパスを取得 //スクリプト解析 while ScrLine < 2 do begin ScriptAnalysis;//関数呼び出し inc(Scrline); end; end;
124 :
57 :03/05/13 14:35 ID:bJsaxW4h
procedure TForm1.ScriptAnalysis; begin ScrList := TStringList.Create;//文字列リストの作成 ScrList.LoadFromFile(AppliPath + NowSFile +'.txt');//スクリプトファイルを読み込む Script := ScrList[ScrLine];//スクリプトファイルから指定の行を読み込む messpos := pos('#',Script);//読み込んだ行のスクリプトを判別 if messpos <> 0 then//messposが0以外の時 begin Script := copy(Script,pos('#',Script)+1,pos(',',Script)-2);//スクリプトの内容をコピる if Script = 'charadraw' then ScrNum := 1//スクリプトがcharadrawの場合 else if Script = 'bgdraw' then ScrNum := 2;//スクリプトがbgdrawの場合 end; case ScrNum of 1 : begin//スクリプトがcharadrawの場合 //キャラクター表示 Script := ScrList[ScrLine];//スクリプトが書いてある行の読み込み LoadChara := copy(Script, pos(',',Script) + 1, Length(script));//表示する画像の名前を取得 CharaDraw; end; 2 : begin//スクリプトがbgdrawの場合 //背景表示 Script := ScrList[ScrLine];//スクリプトが書いてある行の読み込み LoadBg := copy(Script, pos(',',Script) + 1, Length(script));//表示する画像の名前を取得 Backbmp.LoadFromFile(applipath+'date\' + LoadBg); image.canvas.Draw(0,0,BackBmp); end; end; end;
125 :
57 :03/05/13 14:35 ID:bJsaxW4h
procedure TForm1.CharaDraw; begin LoadChara := copy(Script, pos(',',Script) + 1, Length(script));//表示する画像の名前を取得 CharaBmp.LoadFromFile(AppliPath + 'date\' + LoadChara);//画像読み込み CharaBmp.Transparent := true; image.Canvas.Draw(0,0,CharaBmp); end;
126 :
57 :03/05/13 14:40 ID:hnx35s14
で
127 :
57 :03/05/13 14:43 ID:pw8vWeqV
スクリプトであるテキストには #bgdraw,bg01.bmp #charadraw,chara01.bmp とだけ書かれているんですが・・・、 なぜかキャラクタ画像が表示されないです・・・。 なぜなにどうして。 いろいろいじってみたんですけどだめですた・・・ どっかおかしいとこあったら教えてください。
背景画像にビットマップファイルなんて使えるわけ無いだろ・・・
130 :
57 :03/05/13 16:06 ID:pw8vWeqV
>>129 はい、ちゃんと表示されます。
絵画順が背景が先だから、キャラ表示のあたりがアヤシイ・・・んだけど・・・
>>128 (゜∀゜)
>>127 > ScrLine := 1;//読み込む行の初期値
になってるけど、
ScrLine := 0;//読み込む行の初期値
では?( StringList の頭は0)
でも修正前だと、 chara01.bmp しか表示されないとおもうが…。
それから、procedure TForm1.ScriptAnalysis; で
ScrList := TStringList.Create;//文字列リストの作成
しているから、プロシージャ終わる前に ScrList.Free; した方が
ええと思う。
あと細かいことだけど、”シナリオ”の綴りは "scenario" ね。
132 :
57 :03/05/13 16:36 ID:pw8vWeqV
>>131 >StringListの頭は0
ガーーー(´Д`;)ーーーン!!
そんな初歩的なことを・・・鬱
>プロシージャ終わる前にScrList.free;
ありがとうございます。
解析行うごとにCreateするとこですた;;
>シナリオ
・・・ウツダシノウ エイゴ ワカンナイ
テキストアウトで調べた結果、
CharaDrawまでは実行しているようでつ。
CharaDrawの内容が悪そう・・・
133 :
57 :03/05/13 16:39 ID:pw8vWeqV
>>125 を
procedure TForm1.CharaDraw;
begin
CharaBmp.LoadFromFile(applipath+'date\' + LoadChara);
CharaBmp.Transparent := true;
image.Canvas.Draw(0,0,CharaBmp);
end;
にしてみたら表示できました。
たぶん
>>125 でLoadCharaのcopyが原因だった模様・・・鬱
134 :
131 :03/05/13 16:48 ID:3RxbYdnz
>>132 退屈だったので走らせてみますた。
ウチだとちゃんと表示されますけど。
> そんな初歩的なことを・・・鬱
まあ…、慣れててもよくあることですから。
> 綴り
あ、あまり気にしないで下さい。 (^^;
> テキストアウトで調べた結果、
> CharaDrawまでは実行しているようでつ。
…としたら、 bmp データの方がアヤシイかも。
bg01.bmp と chara01.bmp が256色だった場合、パレットを合わせないと
chara01.bmp が透明人間になることがあります。
とりあえず、 bg01.bmp だけでも 32bit カラーにして試してみては?
135 :
131 :03/05/13 16:54 ID:3RxbYdnz
>>133 あらら、入れ違いだったか。
動いたようで何より。
盛り上がってきましたな。
137 :
57 :03/05/13 17:01 ID:bJsaxW4h
>>131 えっと、
bmpデータはサイトのサンプルなんで(w、パレットはあってます。
ほんと世話になります。
とりあえず動いてはっぷぃー。
次はスクリプトテキストの内容を逆にしたときの処理を考えます。
・・いや、どちらかの画像が変更された場合の
処理を考えたほうが柔軟性高いかな?
とにかく、拡張しやすいように作りたいです。
138 :
57 :03/05/13 17:16 ID:bJsaxW4h
いんや、最初から背景とキャラを合成して表示したほうがはやいな・・・ ああもうどうしよう
139 :
131 :03/05/13 18:12 ID:3RxbYdnz
>>137 > bmpデータはサイトのサンプルなんで(w、パレットはあってます。
そうでしたか。(笑)
> 次はスクリプトテキストの内容を逆にしたときの処理を考えます。
一番簡単なのは、BGとキャラを別の TBitmap に保持しておいて、
どちらかが変更されるたびに合成する、という方法かな。
頑張ってね。
140 :
57 :03/05/13 20:27 ID:pw8vWeqV
困ったにゃあ。 クリックしたら背景画像が変わる。という風にしたいけど、 while ScrLine <> ScrList.Count do じゃあスクリプト一気に実行しちゃうし・・・ どっかでクリック待ちスクリプトでも書いてループを中断させて、 その後ScrLineの続きから実行すればいいのかな? それならまた新しくプロシージャ作ったほうが呼び出せて便利かな こんなつまらないレスいらんね、ほんと・・・
57氏ががんばってて盛り上がってる中、水差して悪いんだけど、質問。 DelphiXのスプライト操作に関することが書いてあるHP無い? InsideDelphiXはどこ探してももう無いし・・・
bmpだけなら実用性は無いね
143 :
57 :03/05/13 23:22 ID:pw8vWeqV
procedure TForm1.MainRoutine; begin Script := ScrList[ScrLine]; while ScrLine <> ScrList.Count - 1 do begin ScriptAnalysis;//スクリプト解析 CharaDraw; inc(ScrLine); end;
144 :
57 :03/05/13 23:23 ID:pw8vWeqV
procedure TForm1.ScriptAnalysis; begin Script := ScrList[ScrLine]; messpos := pos('#',Script); Script := copy(Script,pos('#',Script)+1,pos(',',Script)-2);//スクリプトの内容をコピる if messpos <> 0 then//messposが0以外の時 begin if Script = 'charadraw' then ScrNum := 1 //スクリプトがcharadrawの場合 else if Script = 'bgdraw' then ScrNum := 2 //スクリプトがbgdrawの場合 end; case ScrNum of 1 : begin//スクリプトがcharadrawの場合 Script := ScrList[ScrLine];//スクリプトが書いてある行の読み込み LoadChara := copy(Script, pos(',',Script) + 1, Length(script));//表示する画像の名前を取得 CharaBmp.LoadFromFile(applipath+'date\chara\' + LoadChara); CharaBmp.Transparent := true; end; 2 : begin//スクリプトがbgdrawの場合 Script := ',bg01.bmp'; LoadBg := copy(Script, pos(',',Script) + 1, Length(script));//表示する画像の名前を取得 BackBmp.LoadFromFile(AppliPath+'date\back\'+LoadBg); end; end; end;
146 :
57 :03/05/13 23:23 ID:pw8vWeqV
procedure TForm1.CharaDraw; begin BackBmp.Canvas.Draw(0,0,BackBmp); BackBmp.Canvas.Draw(0,0,CharaBmp); image.Canvas.Draw(0,0,BackBmp); end;
147 :
57 :03/05/13 23:26 ID:vA9LmBr3
と、上のプログラムをいろいろいじくったわけですが、 いざ実行すると ファイル中略date\chara\は開けません とでまつ・・・ 多分CharaBmpにロードするファイル名取得のあたりが間違ってるぽいんですが、 どこがおかしいのかわかりませぬ
148 :
57 :03/05/13 23:34 ID:bJsaxW4h
ちなみに CharaBmp.LoadFromFile(applipath+'date\chara\' + LoadChara); を CharaBmp.LoadFromFile(applipath+'date\chara\' + 'chara01.bmp'); にするとちゃんと表示されますた
149 :
57 :03/05/13 23:36 ID:bJsaxW4h
あうあう ソースぐちゃぎちゃになってきた・・・
150 :
57 :03/05/13 23:41 ID:bJsaxW4h
考えられる原因としては Scriptが正常にScrListから文字列を読み取っていない がある・・・ けどちゃんと読み込んでるはずなのに・・・ もうだめぽーーー
>>150 ScrList := TStringList.Create;//文字列リストの作成
ScrList.LoadFromFile(AppliPath + NowSFile +'.txt');//スクリプトファイルを読み込む
スクリプトファイルを読んでいるところが無いんだけど、MainRoutine や
FormCreate あたりで、ちゃんと読み込めていますか?
ブレークポイント設定して、変数の中身を確認してみて。
152 :
57 :03/05/14 00:09 ID:XbNTIv8I
>>151 そこの処理はformcreateでやってまつ。
ブレーク設定してloadcharaにマウス当ててポップアップみたけど、ちゃんとloadchara='chara01.bmp'
になってる…
なぜだ、なぜなんだ…
>>152 うーん。 上のソースをコピペしてちょいと走らせてみたけど、
ウチではしっかり動きますね…。
あとはこのソースだけでは、判らないッス。
この際、PCの電源落としてから再起動してやってみるとか。(笑)
154 :
57 :03/05/14 15:30 ID:s4KZH5mr
http://july.s31.xrea.com/file/adv2.zip ちょこっとできました。
ソースとかつけてるんで、何かアブナイところあったら教えてください。
文字表示のことなんですが、
今はスクリプトファイルから文字をStringに読み込んで、
それをImageにTextOutしてるんですが、
それだと複数行表示できませんです。
ADVの場合、どうやって文章を表示させるのがセオリーなんでしょうか?
155 :
57 :03/05/14 15:48 ID:s4KZH5mr
っと スンマセン 解決しますた ちょっと勘違いしてたみたい。
(いつまでスレ違いするつもりなんだろう・・・) (ゲーム作るスレなのに・・・)
まあいいではないの
158 :
57 :03/05/14 16:20 ID:s4KZH5mr
なんかjpegが使えるみたいなのでそっちにしてみるテスト・
>>156 ADVってゲームじゃないの?
そりゃまだまだゲームにはほど遠いけども。
↑ガキくさい反論するなよ。 誰が見ても今はツール作ってるようにしか見えない。 ノベルツール作成スレでやって、ゲーム部分を作り始めたらこっちのスレ。 ただし、ノベル形式のゲームはゲーム性が薄くて話にならない。
っていうか、前スレでRPG作ってた人でてこなくなっちゃったな。
161 :
57 :03/05/14 16:38 ID:s4KZH5mr
>>159 ・・・ハッ!!!(゜Д゜)
シマタ ツールジャン オレッテバカジャン ゲームチガウジャン スレチガイジャン キチガイジャン
ノベルツールスレあるし・・・止まってるけど
ツール(?)が完成してゲームが出来たらまた来ます・・・
みなさんありがとうございました。
俺は別にいてもいいと思うけどな。どうせネタ少ない状態なんだし。
>>159 ???別にこのスレでもかまわないと思いますけど。
>>161 実行してみますた。 おお、動いていますな。
変数が全部グローバル変数なのは、ちょと気になりましたが。
(あとまた細かいことですけど、「データ」の綴りは "data" でつ…)
> それだと複数行表示できませんです。
自分で文章を桁数に「切って」から StringList にでも叩き込みましょう。
そして StringList の最初の行から、表示させる、と。
それができたら、後は「選択」と「フラグ処理」、「条件分岐」かな。
このスレから消えるも消えないも 57 さん次第だけど、このまま頑張ってください。
ゲーム作るにはまずツールが必要ですが何か。
別に57氏がこのスレで続けてもいいんじゃない?
ただ自分で調べようとせずなんでもやたらと聞くのはやめてください。
>>159-160 君の理論のほうがよっぽどガキくさいと思うけどな。
ゲーム特有の話をしていない(=ツール作ってるようにしか見えない)って 言ってるんだから、ゲームを作るためのツールの話をするなとは 言っていないんじゃないかな。 とはいえ、ゲーム特有の話題が混じって無くても、別にここに書いて かまわないと思うけどね、ゲームを作っているなら。 そのうちゲームの話題になるだろうし、アドバイスだって、ゲーム作りを 前提としたものと、そうでないものでは異なる場合もあるだろうし。
こんな寂れたレスで喧嘩してもしょーがないだろー
まあな。
170 :
引用改変 :03/05/14 22:31 ID:7v6hAG9Q
だから
>>57 よ、バカはほっとけw
オマエが本当に識者になったとき、そんなバカはコメ粒くらいちっちゃくみえるようになるぞ。きっと。
ということですな。
どうぞ。
↓
>>165 確かに、も少し試行錯誤してからソースをアップする方が良いかもしれません。
Delphi Personal をDLして挑戦してみて資料が少ないのかもしれないけど。
>>166 ソースを拝見した限りでは、”ゲームを作ろう”という気概は感じられたのですが。
>>169 ちょと感動。
しまっつ。 「どうぞ。」の後だったか。(笑)
173 :
57 :03/05/14 22:51 ID:/OQH2cku
復活\(´〜`)ノ
みんな、暖かい言葉ありがとう。
俺、思わず涙こぼしちゃったよ。がんばるよ。
>>163 いつどこで使いまわすかわからなくて怖いから、グローバルなものばっかり・・・
ローカルにすると、処理が早くなったりするんですか?
「選択」を実装するとなると、並行的に条件分岐も作っといたほうがいいかなー
>>165 いちおー、大半のことは自分で調べてるつもりなんだけどね。
------------------------------------
ちなみに、作ろうとしているのは「ゲーム」でつ。
シナリオを全部プログラムに入れると、行がメチャクチャになりそうなんで
外部読み込みにしよう、とか思ってたらツールまがいのモノを作っている罠
ちょっと簡単なこと聞きすぎたかな?スマソ。
むしろ遅くなるけど どこでもつかえるからへんなことが おこったときに原因がわかりにくくなるとか 変更に対応しにくいとか
175 :
57 :03/05/15 00:11 ID:mpqY550c
なるほど! ソース見直して、ローカルにまわせそうなモノは移して、 あっちゃこっちゃで代入とかしまくるような変数は分けて使うようにします。
176 :
57 :03/05/15 00:19 ID:mpqY550c
ソース書く上で 「バカな俺にも見やすく!」 と意気張ってるワケですが、すでに危ない罠。 「ノベルツール作っちゃうぞ」スレ(初代)の1さんのツールみて愕然。 ソースほすぃ… 今メッセージウィンドウの表示&半透明化を実装しようと格闘中。 ぐぐっても、らしいモノがヒットしない… 半透明は後回しにしようかな…
>>176 半透明にしたいんならAlphaBitmapとかのコンポライブラリ使えば?
それが一番手っ取り早いよ。
他人のライブラリなんぞ使いたくねぇ!!っていうなら別だけど。
専用のスレがあるから彼のためと思って勧めてあげただけなのに
>>176 AlphaBitmapはいいよ。 結構便利
てか、こいつさえあれば単一画像の処理は無問題でつ
まぁ、DirectX系のコンポの機能には敵わないかもだが、方向性も違うしな
初心者のお前さんには丁度いいと思います
Delphi使いは、他人のライブラリを使って(使えて)なんぼだとおもうぞ
がんがれ。
180 :
163 :03/05/15 16:35 ID:hHfWnYiK
>>173 復活おめでトン。
> ローカルにすると、処理が早くなったりするんですか?
うーん、速くはならないけど、 174 さんも書かれたように、自分でもソースが
読みやすくなりますねー。グローバル変数が減れば、変数の管理も簡単になりますし。
例えば、 procedure TForm1.ScriptAnalysis; の中で使用される Script1 や
Script2 変数のような一時的なものは、ローカル変数にしちゃってかまわないと
思います。
> 「選択」を実装するとなると、並行的に条件分岐も作っといたほうがいいかなー
そうですね。 「メニュー(選択)」「条件分岐」「ジャンプ」を作れば、途端に
ゲームらしくなりますよ。 地味〜な部分ですけど。(笑)
> 半透明
TBitmap の Scanline でラインを取得して、ピクセルごとにBGとキャラの色を
混ぜ合わせる計算をしていけば……
と、思ったのですが、 AlphaBitmap という便利なライブラリがあるんですね。
シミュレーションロールプレイングアクションという新しいジャンルを切り開こうと模索しているのですが
>>181 せっかくのアイデアなら洩らさずに温めなきゃ。
183 :
57 :03/05/15 22:49 ID:tjFyllG2
改行がうまくいかない・・・(´・ω・`)
>>181 何だかよくわからんけど頑張れ。
鉛筆のラフ・スケッチでもいいから、イメージしているゲーム画面を
描いてみると、何から始めるかわかることもあるぞ。
>>183 どう上手く行かないか判らないのだが…。
186 :
57 :03/05/16 00:02 ID:9pNu0U+j
repeat MessPos := pos('\',Script2);//改行があるかどうか if MessPos <> 0 then//改行があれば begin MessList[MessCou] := copy(script2,0,pos('\',script2)*2+2); MessBmp.Canvas.TextOut(MesX,MesY*(MessCou + 1),MessList[MessCou]); delete(Script2,1,pos('\',script2)*2+3); inc(messcou); end else//改行がなければそのまま表示 begin MessList[MessCou] := Script2; MessBmp.Canvas.TextOut(MesX,MesY*(MessCou + 1),MessList[MessCou]); break; end; until (MessCou = MessList.Count); スクリプトには文字表示テスト\改行してみた。\どうだろう・・・ と書いてあるんですが、 実際動かしてみると 文字表示テスト 改行してみた。\どうだろう・・・ と、2行目が改行されてないのでつ・・・ ううーん・・・
改行をしたいところで、改行\n(#13#10)を挿入してみたらどうよ。 TStringListは、Textを呼ぶとAdd行ごとに\nを挿入してくれるので、SL.Textで出力。 まぁインスタンスの生成・破棄が面倒といえば面倒か? var SL: TStringList; myRect: TRect; begin SL := TStringList.Create; myRect := Rect(0,0,400,300); SL.Add('「プログラム経験無 '); SL.Add('しかしRPGを作りたいのだ。 '); SL.Add('叩き煽りにめげず己が道を突き進みたい。 '); SL.Add('何故あせるのか。 '); SL.Add('そこには一つの目標が在るから。 '); SL.Add('とりあえずは本との睨めっこ。 '); SL.Add('やる気は12分にあるので、駄スレと言わず付き合っていただきたい。」 '); DrawText(Canvas.Handle,PChar(SL.Text),Length(SL.Text),myRect,DT_LEFT + DT_TOP); SL.Free; SL := nil; end; あー、でもスクリプトを随時読み込むんだったら、TStringList生成・破棄はだめかー スマソ
188 :
57 :03/05/16 00:04 ID:9pNu0U+j
deleteでちゃんと消されてないのが原因なんだろうけど・・・ あうあう
189 :
187 :03/05/16 00:05 ID:5TQjv6sF
勘違いもはなはだしかったようだな。(´Д`)
190 :
57 :03/05/16 00:17 ID:9pNu0U+j
>>187 な、なんかすごげなソースが。
よくわからないけど、分析してみます。
191 :
185 :03/05/16 00:19 ID:wTzvDQAd
>>186 せっかく MessPos に改行文字の位置が入っているんだから、
この数値を使えばヨロシ。
delete じゃなくて Script2 := Copy( Script2 , MessPos+1 );
にしちゃうとかね。(改行文字'\'の1つ先から終わりまでをコピー)
192 :
57 :03/05/16 00:24 ID:0Pke/TPC
>>191 最初はそうしてたんですが、
スクリプトに
改行\うまくいかない\どうにかしてくれ
とか書かれてると、
改行
うまくいかない\どうにかしてくれ
となってちまいます。。。
193 :
57 :03/05/16 00:31 ID:0Pke/TPC
あれ? 調べたら、最初に\の位置を読み取って、 deleteで最初の\から前を消して、 またposかけると、 最初の\の前を消さない状態から次の\の位置を読んでる・・・
194 :
187 :03/05/16 00:46 ID:5TQjv6sF
>>193 そんなこと言ってる場合じゃない。
藻前さんのソースだと MessList: TStringList; を使う意味が無い
script2: String;だけで十分だよ。
あと、変数の定義は書いてくれ。お願いだ(w
195 :
57 :03/05/16 01:17 ID:Os6GVIpK
>StringListを使う意味が無い あぅ・・・確かに・・・ちょっと一から考え直してみます
196 :
185 :03/05/16 01:34 ID:L5jbSBsq
>>192 スマン、なめてかかっていて、ちょと手間取った。(笑)
まず、
until (MessCou = MessList.Count);
だと、まだ最初の頃は MessList は一行しか出来ていないので、
一回で終わってしまう。
MessPos を上手く使って
MessPos := Pos('\',Script2); //改行があるかどうか
while (MessPos>0) do //改行があれば
begin
MessList[MessCou] := copy(script2,1,MessPos-1);
Script2 := copy(Script2,MessPos+1,Length(Script2)-MessPos);
inc(messcou);
end;
みたいにすればいいんでない?
TextOut は、全部 StringList に入れてから、後でまとめて表示するとか。
197 :
185 :03/05/16 01:43 ID:L5jbSBsq
> あと、変数の定義は書いてくれ。お願いだ(w 同意。 テキトーに定義したらページ違反食らったもんで手間取ったのよ。(笑)
198 :
187 :03/05/16 01:57 ID:1xwMlp+B
>>196 > なめてかかっていて
同意
ちなみに、藻前さんもuntilは嫌いなようだな(藁
199 :
57 :03/05/16 06:09 ID:Os6GVIpK
文字改行できますた。 今までは\とかで区切って表示したかったんだけど、 妥協して#が付いていなければそのまま表示することにしました。 あうあう。徹夜した結果がこれ・・・ちょっとかなすぃ。 けど、改行できたんだからいいか♪
>>199 とっとと、成果をアップ汁!
お願いします
ちなみに折れだったら、こんな感じにしたと思う。
−−−−−スクリプトBOF
>>TEXTOUT
改行
うまくいかない
どうにかしてくれ
TEXTOUT
−−−−−スクリプトEOF
でTStringListに一気に読み込んで>>TEXTOUT をキーにしてTEXTOUTまで表示する。
で、音を出すとか、改ページとかいろんな処理をやっちまう。
と、引っ掻き回してみるぺスト
徹夜お疲れ
201 :
185 :03/05/16 15:08 ID:dpNn7piN
>>196 に自己レス。
後で読み返したら、これじゃダメじゃん…。 52 さん、申し訳ない。
while (Length(Script2)>0) do
begin
MessPos := Pos('\',Script2); //改行があるかどうか
if MessPos=0 then MessPos:=Length(Script2)+1;
Tmp:=copy(script2,1,MessPos-1);
MessList.Add( Tmp );
// Image1.Canvas.TextOut(MesX,MesY+MessCou*(Form1.Font.Height+1),Tmp);
Script2 := copy(Script2,MessPos+1,Length(Script2)-MessPos); //delete(Script2,1,pos('/',script2)*2+3);
inc(MessCou);
end;
こんな風にしないと最後の行まで改行&表示しないよね。
202 :
185 :03/05/16 15:14 ID:dpNn7piN
>>198 > ちなみに、藻前さんもuntilは嫌いなようだな(藁
ビンゴ。(笑) つい、無意識のうちに排除する。
While (True) do begin 〜 end; で無限ループにして、中から
if 〜 then break; で飛び出す方が多いな。
203 :
185 :03/05/16 15:22 ID:dpNn7piN
連続カキコ、すまん。
>>199 徹夜おつかれ。
私も、うまく動かないルーチンがあると、動くまで格闘しちゃいますな。
>>200 長い文章なら、その方法がいいかも。
簡単に作れるジャンル教えて! ゲームはまだ作ったこと無いです!
205 :
185 :03/05/16 18:34 ID:dpNn7piN
>>204 そうさねえ…。
”簡単に作れるジャンル”よりも、”自分の好きなジャンルを簡単にしたもの”
に挑戦したほうが、意思も持続すると思うよ。
>>205 あぶね、おんなじもん書き込むところだった(w
>>204 で、手抜きの方法は、ココで聞け。
ちなみに、折れらはDelphiマンセーなんで、そこんとこよろしく
>>207 ハイ!先生! 私も手抜きする為の苦労は厭いません! (笑)
210 :
57 :03/05/16 22:24 ID:5mwIsjzX
なかなか(・∀・)イイ!! ガンガレYO!
212 :
57 :03/05/16 22:30 ID:5mwIsjzX
今実行可能なスクリプト ・#charadraw,ファイル名 キャラクターの表示、背景より前に表示されるはず ・#bgdarw,ファイル名 背景の表示、透過無しのはず ・#charaerase,キャラクターを消す ・#end,プログラムの終了 ・メッセージは文頭に#が無いものをそのまま表示。 ・・・これだけかよ!
213 :
57 :03/05/16 22:30 ID:5mwIsjzX
>>211 がんがるYO!
はやくシナリオ書いて、ちゃんとしたゲームにしたいYO
214 :
204 :03/05/16 23:01 ID:CmXcWyVb
パックマソできそうな気がしたので、まずパックマソ作ってみることにしました
215 :
57 :03/05/16 23:04 ID:9pNu0U+j
あっさり指定ラベルへ飛ぶことに成功。
>>204 がんがれ!
俺もゲームなんて作ったことないけど、なんとかやってってるYO!
>>210 おお、出来てきましたな。 このまま頑張れ〜。
お節介な情報。
procedure MessDraw 内で、
MessBmp.Canvas.Font.Name := 'MS 明朝'; // フォント名
MessBmp.Canvas.Font.Height := 16; // ピクセル
MessBmp.Canvas.Font.Style := [fsBold]; // フォント修飾
などとやると、フォントが換えられるよん。
ちなみに Font.Size でフォントの大きさを変えると、システムによって
サイズがまちまちになるので Font.Height がオススメでつ。
>>210 (・∀・)イイ!
あと、Delphiの作法だと、タブは、2だ
「エディタオプション」−「ソースオプション」−「タブ位置」を2にするんだ!
と、どうでもよいことを言ってみる
218 :
57 :03/05/17 05:09 ID:bFXuGAWf
>>216 フォントも設定できるようになればいいなあ・・・
実はまだADV形式にしようかビジュアルノベル形式にしようか迷ってます。
ADVだと、絵を全面的に使えるけど、シナリオを深く読ませるのは難しいと思って。
>>217 あうあう、タブはそのうち修正します(´Д`;)
とりあえず本格的なスクリプトの追加はちょっとお休みして、
音楽の再生をいじってますた。
音楽がないとゲームらしさが無くなるw
深く読んでくれるかどうかはシナリオの面白さだと思う
>>218 > 実はまだADV形式にしようかビジュアルノベル形式にしようか迷ってます。
うーん、それは物語と演出によりますよね。
登場人物のビジュアルを前面に出したかったり、風景に手掛かりがあったりする
ゲームだったらグラフィックの多い方が良いですし。
ここらへんは「楽しい悩み」なので、悩んで下さい。(笑)
Delphiで3Dゲームとか作った人っているのかな? 2DだったらDelphiにするんだけど、3Dのゲーム作りたいからCにしようか迷ってる。 あんまりDelphiで3Dって聞かないし。
やらないか
ウホッいいDelphi
224 :
169 :03/05/18 23:23 ID:sAh+HZd4
>>170 違う
君にも言ってるの
>>57 とりあえずあうあうとか言ってブリっ子ぶるのやめてくれないか・・・
レ ス 遅 す ぎ .
ワラタ
いじめ、カッコ悪い。
おれカッコ(・∀・)イイ!
>>221 Delphiですと、やっぱりDDDD
ここで発表していただけるとありがたがる人多数いることうけあい
だって直にAPI叩くのって好きじゃないし
231 :
57 :03/05/19 20:43 ID:hS75zkve
選択肢の処理、どうすればいいのかまったくわからない(;´Д`)−0フウ マウスで選択するなら、フォームのイベントを使うのはわかるけど・・・ うーむ
>>231 以前こんなやり方でやったよ。
http://pc2.2ch.net/test/read.cgi/gamedev/1006249204/ つか、この質問誰もレスくれなかったけど、大丈夫なのかな。
このコンポーネントはどっかでフリーウェアとして公開されてますた。
マウスカーソル重なってる時に強調表示されなくてもいいなら
デフォのラベルコンポーネントでもいけるんじゃない。
コンポーネント使わないとか、Formのクリックイベントでマウスカーソル
座標拾いたい場合なら
TFormのScreenToClientメッソドと
GetCursorPosのAPIを検索すると道は開かれる。と思う。
233 :
232 :03/05/19 23:01 ID:WdGKNEg3
まちがったー。 リンク先のURLの45番のレスです。
234 :
57 :03/05/19 23:37 ID:hS75zkve
>>232 ラベル使う手が
あった━━━(゜∀゜)━━━!!!
ラベルのクリックイベントとか使えば結構楽にいけそうです。
普通のラベルでもカーソルの位置を取得すれば背景色変えられるかな?
これでやってみます。光がみえた・・・
>>231 私は、 Image コントロールの OnMouseMove イベントで、マウスの座標から
選択されているユニットを算出させ、色を変えたり、カーソルの形を指の形に
変えたりした。 そんで OnMouseDown イベントで”決定”、と。
ちなみに FindComponent を使うと、配置したラベルなどのコントロールを、
配列などに割り付けることもできますよん。
目に見える形でメニューを作れるので、結構便利。
{ 前略 }
var
Lb0 : TLabel;
Number : array[0..9] of TLabel;
i : Integer;
s : String;
begin
for i:=0 to 9 do
begin
s := IntToStr(i+1);
// 'Number0'
Lbl0 := TLabel(FindComponent('Number'+s));
Lbl0.Tag := i+1;
{ 中略 }
Number[i] := Lbl0;
end;
end;
{ 後略 }
そういう方法じゃDirectX使えないね・・・
>>236 ADVの画像表示でわざわざDirectX使うn
音は、関係ないしー (゚ワ゚)
Labelの背景を透明にしればいいじゃん
フリップは使っちゃ駄目ですよ
Quadruple DとDelphiXってどっちが使いやすいの?
>>240 人によって変わるだろ。自分で使って見れ。
242 :
235 :03/05/20 22:35 ID:ivFxQu1u
>>236 メニューに Label を使うという方法だったらその通り、 Direct-X 使った
ゲームには使えないと思うけどね。(笑)
でも Direct-X 使わなきゃゲームを作れない、というわけでもない。
>>241 個人的には Delphi-X の方が使いやすいと思うのだけれど、 Direct-3D IM
における d3dframe や d3dfile のようなライブラリがないので、3Dは
ちょいと苦労するかもしれない。
Quadruple は "SX-Lib" があるから、少しは楽かもね。
(やはり、241 さんの言うとおり使ってみるしかないだろうなぁ…)
確かに2Dゲームなら確実にDelphiXのほうがラクだと思う。
244 :
57 :03/05/21 17:12 ID:wYuhMRUq
245 :
57 :03/05/21 17:51 ID:wYuhMRUq
DelphiX、Delphi6じゃ使えないんですね(´・ω・`)
>>245 みんな、やってなかったようだなー
まぁ、DDDDでがんがれよ
Del6でDelphiXインストールしようとしたら、
エラーが多すぎて中断しやがった(;´Д`)サスガニ ナオスキニナレソ
へー、じゃあ、DDDDの方が将来性あると言うことで
Delphi6対応版のDelphiXあるで。 ちょっと前にどっか外国のHPで拾った。場所は忘れた。
>>244 なんかクリックする位置によってエラーが発生するのですが・・・
「リストのインデックスが範囲を超えています」って。
選択肢用のラベルがなんか悪さしてない?
>>244 メニューが出ていない時に、メッセージウィンドウをクリックすると、
エラーが出ますにゃ。
ソースが無いのでわかりまへんが、メニューが無いときも OnClick イベント
が生きているとか。
>>245 一応、使えますよん。 付属のインストーラーでは駄目なだけで。
252 :
57 :03/05/21 22:58 ID:zrNo0iNe
>>249 >>251 ガ━━━━(´Д`;)━━━ン
ラベルのEnabledの設定ミス&OnClickの条件ミスでした・・・
もうだめぽ・・・(´・ω・`)
次回アップ時にはそこらへんも修正したのをうpします。
>>251 そっか、Delphiから直接つっこめばいいのか。
>>252 > そっか、Delphiから直接つっこめばいいのか。
メンドいので、
>>250 に上げた url にある、 Delphi-X6 をおすすめ
しまっす。
254 :
253 :03/05/22 00:40 ID:EuzHbTF7
(゚Д゚) 誰もカキコしてないぞゴルァ!!
257 :
57 :03/05/23 15:34 ID:gD+lmxCD
258 :
57 :03/05/23 15:35 ID:gD+lmxCD
いちおう、ソースでおかしいところがあったらいってください。
(・∀・)イイ!!よぅ。このままガンガレ。 ついでに文句ってわけじゃないんだが、質問を。 まだ、テスト的なものなのに、BMPとかで7M近くあるよね。 これって何とかならないのかな? これからボリュームが増したときにサイズもっとでかくなるかもしれんし。
260 :
57 :03/05/23 15:48 ID:gD+lmxCD
しまたーーー、余計なもの消すの忘れてたー。
>>259 うぅぅん、今俺にはBMPを使うしか脳がないんです。
JPGに変えたいんだけど、まだ試してなくて。
ごめんなさい。
キャラ絵1枚だけなら1Mで・・・てキャラ絵だけで1Mかよ・・・
そういえばまだキャラの立ち位置とか実装してませんでした・・・鬱
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
262 :
57 :03/05/23 15:56 ID:ukg05tp5
余計なグラフィック消したのを再うpしますた・・・。 259さん、面目ない。
263 :
57 :03/05/23 16:02 ID:ukg05tp5
あ、それと前に指摘されたタブのやつ、修正しますた。 連投スマソ
264 :
185 :03/05/23 17:42 ID:ZlHuQXdY
>>257 おお〜、良いですな。 これから楽しみ、ワクワク。
ところで、 ScanLine を使ったフェードイン/アウトの所ですが、
while X < image1.Width*4 do
でなくて、
while X < image1.Width*3 do
ではないでしょーか? (幅*(B,G,R))
あと、 X:=0; をループの外に持ってくれば、
X:=0;
while X < image1.Width*3 do
begin
P[X] := P[X] * 2;
inc(X);
end;
途中の if と break; は要らないと思いまっす。
お節介スマソ。
>>260 一通り出来るまでは、とりあえず BMP でいいと思いますよ。
キャラクターは 640x480 の一枚画面ではなく、 160x480 くらいの
短冊形にして、表示するときには座標を指定するようにすれば、
少しはファイルサイズが小さくなるのでは。
265 :
185 :03/05/23 17:51 ID:ZlHuQXdY
>>264 に追記。
160x480 じゃ細長すぎて、この立ち姿が入りませんね。(笑)
BMPってTrueカラーとかHighカラーにしなければサイズ減らなかったっけ?
描画のちらつきがひどいな 描画の際に背景消去してないか?
圧縮ファイルにしといて読みこめばいいじゃん
短冊形の画像ってどうやって分けて使うの?
270 :
185 :03/05/24 02:38 ID:6gQPkyYA
>>269 あー、やはり「短冊形」という言い方で誤解されちゃったか。
57 さんのキャラの立ち姿グラフィックは 640x480 。
背景になる「透明」色のバックの方が広いから、ペイントツール
などで立ち姿が入るくらいまでの大きさに切ればいいんじゃないかな…、と。
真ん中に表示するには座標を指定せにゃなりませんが、複数のキャラを
表示するのにもいいのでは。
>>267 そんなにひどいか?
あまり気にならんが。
272 :
57 :03/05/25 03:50 ID:7Y+0XvWv
キャラクター画像の表示位置を指定できるようにしますた。
おかげでファイルサイズ削減ヽ(´ー`)ノ
次は複数キャラの表示に移ります。
>>264 なぜか知らないけどWidgth*3だと、暗くし損ねる部分が出てきます。
*4でぴったし、なぜだ。
>>267 特に消去している部分は無いです。
なんかしてるといえばフェードの時にRePaintぐらいしか。
273 :
57 :03/05/25 05:34 ID:oO7kKjCu
スクリプトって便利なんだね。まあそれだけだが。
ダブルバッファっていうのが、ちらつき抑えるやつだったと思う
TImage使うからちらつきが起こるんだよ。 TPaintBoxとかで、自前でバッファを管理して転送しないとちらつきを抑えるのは無理だよ。
57は日高の「Delphiゲームプログラミングの応用50例」を読むといい 基本的なことが色々載ってるから参考になると思うよ 「応用」ってタイトルは嘘臭いんだけどね
278 :
185 :03/05/25 18:22 ID:ll42N4KR
>>264 実はウチ、 Delphi5 でコンパイルしている。
Scanline の仕様で、24bit と 32bit の違いがあるのかもしれません。
(スマン、わからん)
>>273 おお、イイ感じですな。
「ちらつき」は TImage を頻繁に描き換えているから、 Form の再描画が
見えちゃうからだと思います。
( Delphi 5 でコンパイルするとちらつきは無いんですが…)
FormCreate の所で Form1.DoubleBuffered := True; としてダブルバッファ
を有効にすると、ちらつきは抑えられます。 メモリ食うけど。
もしくは、ハンドルつかまえて Form の再描画を抑えるとか。
( Delphi のヘルプ、 TBitmap 「例」参照)
private
{ Private 宣言 }
procedure WMEraseBkgnd(var m: TWMEraseBkgnd); message WM_ERASEBKGND;
// フォーム全体を描画する際の明滅を防ぐ。
procedure TForm1.WMEraseBkgnd(var m: TWMEraseBkgnd);
begin
m.Result := LRESULT(False);
end;
頑張ってね。
279 :
57 :03/05/25 22:15 ID:oO7kKjCu
TWMEraseBkgnd を追加して、ちらつきを抑えられました。 みなさん貴重な情報ありがd。
280 :
57 :03/05/26 04:12 ID:UysYWigS
セーブ実装できねえよヽ(`Д´)ノ ウワァァァン
281 :
57 :03/05/26 04:43 ID:UysYWigS
あ・・・ レコード型にString入ってても、 BlockReadで入力できないのね・・・ shortstringでやったらうまくいきました。
ふと気づくとこの板でまともに稼動してるDelスレってここぐらいじゃん。 おまいら気合入れてくぞ( ゚Д゚)
100以下のレス数のスレってつぶして欲しいけど、防御壁なんだよな。
>>273 (・∀・)イイ!
286 :
57 :03/05/28 00:47 ID:pL/rE7WJ
287 :
57 :03/05/28 00:50 ID:pL/rE7WJ
288 :
57 :03/05/28 04:12 ID:pL/rE7WJ
ちょこっとしたバグ ・なんかメッセージウィンドウが綺麗に半透明化されてまへん・・・
289 :
57 :03/05/28 04:31 ID:pL/rE7WJ
なおったヽ(´ー`)ノ
291 :
185 :03/05/28 16:13 ID:pMjtpdfm
>>286 >>287 おー、イイですね。 特に、熱唱する主人公!(笑)
ちらつきは無くなって綺麗に表示され、clickwait の所で何か印でも
出たらいいのに、と思ってたらちゃんと「▼」印が。
ただ、キャラ絵を jpeg 圧縮したため、キレイに表示されませんが…。
jpeg は今使っている背景のような写真には効果ありですが、このキャラ絵
のように主線と背景(透明色)がハッキリと分かれた絵には向いていません。
292 :
185 :03/05/28 16:23 ID:pMjtpdfm
>>291 あっと、すいません。 ちゃんとキレイに圧縮・表示されてますね。
メ ノ ケンサニ イッテコヨウ・・・
57タソ、俺の脳内師匠にしていいですか?
294 :
57 :03/05/28 19:29 ID:11imRhfk
好評でなにより!ヽ(´ー`)ノハゲミニナリマ
>>290 えがったえがった。ちょっと無理やり修正したけど。
>>291 たぶんキャラ画像まわりの透過残しかな?あれは謎・・・。
グラフィックエディタが関係してそう。
▼・・・まだ文章内でのクリック待ちが実装されてないので
あまり意味なかったりしますw
実装したいけど、文章表示を全部作り直さないと無理そう。
過去にも実装しようとして、知識が足りなかったせいか見事失敗(過去ログ
>>293 むしろあなたを師匠にしてもいいですか?
>>294 JPEGは透過グラフィックには向かないですよ。
圧縮率を低くしてみると分かると思うけど、輪郭がだんだん滲んできます。
PNGかBMPがいいでしょうね。
透過のいらない背景とかはJPEGでいいと思います。
296 :
57 :03/05/28 19:41 ID:11imRhfk
>>295 ふむふむ。
じゃあキャラはBMPでいきます。
PNGの使い方も勉強しておきます。
すこしソース手直しして簡単なゲームでも作ってみよう。
297 :
57 :03/05/28 20:03 ID:11imRhfk
GLDPNGというPNGを扱えるクラスがあったので それを使って対処することにしますた。
298 :
295 :03/05/28 21:40 ID:8s7hN/y0
今更気付いたけど、
>>295 の「圧縮率を低く」ってとこは「圧縮率を高く」の間違いだね。
意味は通じたみたいだけど。
>>297 氏がんがれ。
299 :
57 :03/05/28 22:19 ID:g8oZIZn+
MIDIをMediaPlayerで再生させてるんだけど・・・ かなり遅い。 どうにかして解決しないと、これは痛い・・・。
300 :
185 :03/05/28 22:48 ID:pMjtpdfm
>>299 音色がセットされる(再生する)まで”ワンテンポ”ある、とゆーことですか?
したらばトラック数の少ない、軽い MIDI データにしてみては。
301 :
57 :03/05/28 22:57 ID:g8oZIZn+
>>300 あう・・・MIDI側の問題だったんですね
軽いMIDIにしたら速攻で再生されました。
>>298 背景はjpeg、キャラはpngでいきます。
実はpngに対応してるのって少なかったり?
がんばりまし。
302 :
57 :03/05/29 03:08 ID:/9uS6hA+
音楽周りのセーブを実装・・・しんどかった(´Д`;)
303 :
57 :03/05/30 15:33 ID:I/KCuDMA
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
307 :
185 :03/05/30 18:18 ID:B2XOpC/0
>>303 お、イイですな。 (「カサカサカサ」は、笑ったよ)
上手く言葉が見つからんのだけど、カッチリとした作りになった感じ。
このまま突き進んじゃってください。
308 :
57 :03/06/06 06:37 ID:pcG5fnoY
http://gamdev.org/up/img/004.zip ノベルゲーム作りました。
超短編です。
ADVじゃないんでキャラ絵とか全然使ってない罠。
ほんとにしょぼいけど、結構がんばった俺。えらい。
バグとか感想聞かせてね。
なんとかここまで来ることが出来ました。
名無しのみんな、ありがとう。これからもよろしくね。
309 :
185 :03/06/06 17:25 ID:udCDnEcH
>>308 うーん、いいなぁ…。
選択肢やウェイト待ちに関しては、ちょいと見直した方がいいと思うよん。
(細かいところは避難所にて)
でも、よくゼロからここまで作ったな。 これからも精進いたせ。
保守
RTL60.BPLがない。。。
デルファイ6を買いましょう
>>311 その話は出て 57 さんがランタイム無しでも走るバージョンにコンパイル
し直したはずですが…。 gamedev.org/up の方は直ってない?
314 :
57 :03/06/08 22:46 ID:DOWcFqZ0
315 :
311 :03/06/09 00:19 ID:V2VjI+tp
314のでできたよん 初めて作ったもの(?)としてはよくできてると思うよ。 次は文章をすべてまとめて表示するのではなく 変化をつけて表示してみては? それをハードコーディングではなくて スクリプトから設定できるようにする(RPGツクール2000とかやってるなら分かると思うが
316 :
57 :03/06/12 07:52 ID:Nj+IWPl4
317 :
57 :03/06/12 07:53 ID:Nj+IWPl4
>>315 やっぱり、速度変化はつけた方がいいですかねぇ・・・
いったいどうやればいいのやら。
一文字ずつやるのか・・・
なんかイライラしそう。
>>316 順調に更新してますな。見習わなくては。
最近忙しくてぜんぜんいじれない。
319 :
57 :03/06/13 20:02 ID:BHhIIQGw
どうせならこっちと避難所どっちかに書き込み統一しようよ。
321 :
57 :03/06/15 23:22 ID:r69cS94M
320は無視か
hosyu
324 :
名前は開発中のものです。 :03/07/18 05:45 ID:Vk87g3Kc
325 :
名前は開発中のものです。 :03/07/18 09:13 ID:yoSYRHd2
326 :
名前は開発中のものです。 :03/07/18 11:44 ID:yoSYRHd2
>>324 悪くないと思います。
一つのファイルにステージ1、2、3…と
複数のマップを記述できるようにすると
ゲーム的にグーかと。
あとステージクリアした後は
キャラを操作不可にしてはどうでしょうか。
329 :
名前は開発中のものです。 :03/07/18 23:23 ID:yR+TVNt+
>>328 レスありがとうございます!
ご指摘の点を改善していと思います。ありがとうございました。
330 :
名前は開発中のものです。 :03/07/18 23:29 ID:OKZunyzB
331 :
名前は開発中のものです。 :03/07/18 23:31 ID:5t6aPPbD
>>329 がんがれ。
でも、メール欄に半角で"sage"って入れないとスレが上がって
>>330-331 みたいのがやって来るから、今度から気を付けてね。
335 :
名前は開発中のものです。 :03/07/19 11:05 ID:T8UP/Q/B
広告は無視リストに登録しる
>>333 FormCreate時に
DoubleBuffered := True;
を入れるとちらつきが無くなる。
337 :
名前は開発中のものです。 :03/07/19 13:22 ID:fvZSsvJT
だれかDelphiでBMSプレイヤー書いてくれ。 グラフィックは漏れ描くから。
339 :
名前は開発中のものです。 :03/07/26 01:33 ID:KH0DjBL5
ひさびさにage
>>338 既存の物ではいけない理由を述べよ。
君がプログラムを組むんじゅ無ければ、Delphiで作る理由も無いし
341 :
338 :03/07/26 11:58 ID:CGI3H5+1
>>340 今使っているBMSプレイヤーが不満だから。
つっても、実際俺プログラミングなんてあまりできないし、どうこう言える立場じゃないんだけど。
ユーザのカスタマイズに柔軟なBMSプレイヤーってあったら面白そうって思ったから
誰か作ってくれ、と言ったんだ。
ちなみに、nazoBMplayやDDR、MixWaverとか探せるもの探したけどカスタマイズ可能な
BMSプレイヤーってほとんどないな。マジで。
自分で作れ
343 :
名前は開発中のものです。 :03/07/26 13:54 ID:BKYulKcx
BMSってなんだっけ? 俺が中3の時に流行ってたやねうらおのBM98だっけ?
345 :
名前は開発中のものです。 :03/07/26 18:39 ID:l0Hr1pxi
過激な恋愛板の「痛いメールを晒すスレ」で、女子高生に食いついた、おじさんの 顔写真公開したバカ女がいます。 通報してください。
346 :
名前は開発中のものです。 :03/07/26 19:18 ID:bgX7jdW5
どうせなら書き込みを避難所に統一しようぜ 広告がウザイ
あそこ2chじゃないし
関係あんのか?
350 :
コヨーテ :03/07/26 20:51 ID:XiPpl8HL
単なる2chマニアじゃねーか
「DelphiでWindowsゲームを作ろう!」 青山学 ピアソン ISBN:4-89471-130-3 3400円 「Delphi オブジェクト指向プログラミング」 塚越一雄 技術評論社 ISBN:4-7741-0427-2 1980円 絶版 「Delphi ゲームプログラミングのエッセンス」 日高徹 ソフトバンク ISBN:4-7973-1883-X 3400円
ゲームって付くと大体高くなるよな
全部持ってる。 上から順に、並、紙、塵。
一番下しか持ってない。 俺はまあまあだと思うけどな。
356 :
名前は開発中のものです。 :03/07/28 22:17 ID:e44mbkoU
上が一番ダメダメだと思うんだけど・・・
一番下のって、以前上下巻に分かれてたのを一冊にまとめた本だよね。
以前の本から削られた10個のTipsが何なのか気になる。
削られたってことは大したもんじゃないんだろうけど、ないならないで
逆に気になってしまう。
>>356 マジですか。オクでもけっこう高くなるし、古本屋にもないし、入手はもう
あきらめてたところですよ。
オブジェクト指向本は、復刊.ドットコムへの投票の結果、 8月上旬に復刊予定になりましたです。 日高さんのは、BASIC時代のテクというか、小手先だけなので 最初はいいけど、すぐにやくにたたなくなります。 DirectX何それ?な初心者には、いいかもしれませんが。 おいらは、上下巻のを持ってます。 買うのなら、 「ゲームプログラミング遊びのレシピ―アルゴリズムとデータ構造」 C magazine 有馬 元嗣 ソフトバンクパブリッシング ; ISBN: 4797316535 ; 改訂第2版 版 (2001/06) の方がまだまし。これはこれで内容薄いけど・・・
Delphiマガジンで連載されていた「ゲームが作れる」が単行本化されて、 来月発売されるそうだ。
内容的にはどうなの?
361 :
名前は開発中のものです。 :03/08/30 00:51 ID:BWp7GPoO
Quadruple D更新キタ━━━━━━(゚∀゚)━━━━━━ !!!!! >Version2.13(2.12 + バグフィクス版) これかな QD3じゃないのか(´・ω・`)
連投スマソ QD3を使ってるアプリだとタスクマネージャを立ち上げたらエラーがでるけど なにが原因でしょ? 過去ログにもあったけど解決してないみたいなので改めて質問です
>>362 OSは?
タスクマネージャ立ち上げただけってのがよくわからん
避難所のスレに回避するコードがあった。 もし消えてたらうpってやる
>避難所のスレに回避するコード 見つけました ありがとうございましたm(__)m
age
ゲームとか作ってみたいと思っているんですが
最近Delphiの超初心者スレでデルファイをDLして
C言語じゃなかったことに凹みつつも地道に学んでいます
ぶっちゃけ、ゲーム作るのには何がいいと思いますか?
(できるものなら最終的には3DMMOとかも作ってみたいですね・・・)
1万出してVisual C++ .Net Standard と C言語の入門書を買って
↓いった方がいいですか・・・?
今日から必死で1から全て学んでゲーム作成します
http://pc2.2ch.net/test/read.cgi/gamedev/1044534510/ ちなみに、Cかじりたての情報学科1回生です。
>>367 作る前にあれこれ考えて言語すら決まらない奴は
上達しないから安心しろ
まぁ、お前みたいな奴はCでもやっててください
>>368 とりあえず、デルファイを地道にやってみています
>>30 の
>神キターーーー!!
>生贄キターーーー!!
>
>貴方のような人が次から次へと現れては討ち死にしてゆく事でこのスッドレは成り立っているのです。
・・・てのが気になったのでデルファイで大丈夫なのかと質問してみました・・・
>>369 結局お前は何で作りたいわけよ?
それすら決まってないなら、とにかく言語にかかわらずなんでもいいから作ってみろ。
それで普通に作れたならそのままいけばいいし、
不満点があるならほかの言語に移ればいい。
とにかくデルファイでがんばって見ます。(まだ始めたてですが・・・) >結局お前は何で作りたいわけよ? 一応、系統としては定番のRPGかな 壮大な理想のMMORPGを長々と語ってもいいのですが、特にジャンルにはこだわってません とりあえずテキトーにショボイRPGか何か作って、出来たら晒して見ます てか、それまでこのスレが残ってることを祈ります・・・
とりあえずC言語とC++がごっちゃになってるくらいの知識なんだったら Delphiでもなんでも関係ないよ。Delphiに限界を感じたらVisualC++やれば いいし。でももしDelphiですら挫折するようならVisualC++はありえないって ことだけは覚えておいてくれ。
>>372 とりあえず、ごもっともC言語とC++がごっちゃになってるくらいの知識です
ただ、学校でCを習ってるからC系の方が有利かなぁと思ってみたり
(とりあえずCはC系の基本として一応一通り通じるみたいに聞いたし)
学校でデルファイも出てきたりするのかな・・・?
デルファイってC習ったときよりも簡単というかやり易く感じました、
思ったよりCに似てましたし(かえってややこしいかも)あと、いろんなことができますね
Cやるよりはゲーム作るには近そうです。
オブジェクトパスカル(パスカルとは別物なのかな・・・?)はオブジェクトに対応してるとかってどっかで見たけど
C系はオブジェクトに対応してますか?学校でオブジェクトがいいとかって聞いたような・・・
てか、オブジェクトが何なのかイマイチよく分かってませんがw(フォルダの中にフォルダがあって〜みたいな感じのものなのかな)
う〜ん、スレ違いだがマジメにやろうとしてるっぽいので答えとくと、 オブジェクトに対応しているというか、オブジェクト指向に対応している。 オブジェクト指向対応 オブジェクト指向非対応 ------------------------------------------------------- C系 C++ C ------------------------------------------------------- Pascal系 ObjectPascal Pascal だな。多分ずれると思うが勘弁。オブジェクト指向って何?とかは 専用スレがあるからそっちに行ってくれ。でも質問する前にログを 読んでくれ。というか何でも2chで勉強しようと思うのはどうかと。 ちなみに昔は学校で教える言語としてはPascalが流行ってたよ。 漏れは大学でPascal習った。
だめなやつはなにをやってもだめ
>>375 そうですね。
でも、やるきのあるだめなやつは大丈夫だと思います。
本当のだめなやつは「諦める、投げ槍、人のせい」をスローガンとするやつです
何か作れる奴は少なくとも駄目ではない
プログラムの勉強には、Delphiはもってこいなんじゃない。文法がキッチリしていて理解しやすいし。他人のソースも見やすいし。Delphiが身に付けば、C++もそれほど難しくなく理解できるでしょ。
このスレみたいな雰囲気でDelphiに限定しないスレが欲しいね ここも実際は言語や環境を問わずやってるけど ・・・次スレからDelphiっての外す?w とりあえずDelで通信ソフトを作る方法がちょっとわかってきたのでネトゲ作るぞゴルァ
>>379 前もそういう話でたけどCとかに占拠されそうだからって
やめたような記憶が
素人がMMO作るのは草野球で活躍してる程度の人が、 メジャーリーグに挑戦してるようなもんだから、やめとけ。 憶えないかんことが山ほどありすぎる。 まずは単体で遊べる物、次に1対1でネット対戦。 1対1物なら、素人でもなんとななるかもしれんが、 それを超えるととたんにしんどいぞ。 たとえば4人でネット対戦の双六をどう作るか。 プロコトルはどうする?検討するには把握しないとダメだなぁ。 とりあえず、IPで逝くとしても、ゲーム鯖はいるの? そんなかんじで、ゲーム1本分じゃ効かないぐらいの労力は必要。 とか、偉そうに言ってる漏れはネットゲー開発とん挫中w<モチ不足
マイナーだから、こんな感じでやれてるだけだろ
>素人がMMO作るのは草野球で活躍してる程度の人が、 >メジャーリーグに挑戦してるようなもんだから、やめとけ。 そんなことはない。 個人でやってるところもそれなりにあるし。 純技術的にはそんなに高度な知識は必要ない(あたりまえのゲームの知識と ネットワークの知識くらいだ)。むしろ、最新グラフィック技術や物理演算なんかを 網羅したゲームを作る方が難しいだろう。 とか言ってみる。 まぁ本当はデータを作るのが大変なんだろうけど、それは他のゲームも同じ。
385 :
名前は開発中のものです。 :03/09/12 18:38 ID:sISyH23H
通信系の便利なコンポーネントってありませんか?(もちろんゲームで使います) QDは新しいDirectXを入れると(?)DirectPlayが使えないようなので
んーとね避難所のスレの方にあるけど DelphiJEDIとかのDirectXライブラリでいけるんじゃないかな? DirectPlayに興味無いから確認して無いけど
387 :
:03/09/12 20:43 ID:0E4to/qo
十分日本語だと思うが
>>389 え?英語のサイトしか見つかりませんでした
リンクお願いします
DelphiJEDIのやつは普通のDirectXライブラリと同じように使えるわけ だから、市販のDirectX本をDelphi風に読みかえればOK
393 :
385 :03/09/13 09:57 ID:CBrzBQ5l
日本語、Delphiで解説されたものをお願いします
>>393 ないよマジで
おれもさがしてるけど全然見つからん
英語がだめな奴が使いこなせるとは思えね〜
本当はレスつけたらダメなのかもしれませんが
>>395 さん、マジウザいんで永遠に退場してもらえませんか?
あなたのような無責任で的はずれなレスを繰り返されると気分を害します
>本当はレスつけたらダメなのかもしれませんが ダメです。 特にそういうレスは。 2chにはいろんな人がくるので、脳内あぼーん機能が必須です。 それを持ち得ない人には2chは向いていません。 そもそも2chには気分を害すようなところが多いのもまた事実なので、 この程度で怒っておられるようでは2ch適正「不良」と言わざるを得ません。 ちなみに、英語ぐらいは根気さえあればなんとでもなります。 395にしたって英語ができるようなことを言っていますが、 そもそも資料を読むだけなら辞書さえあれば何も問題ありません。 というわけで、385さんもがんばってください。 以上、マジレス。
マジレス返し はじめの質問の答えになってません(^^; あなたは英語より日本語にもっと慣れ親しんだほうがよくないですか? 英語を読めと言っているわりに有益なページにリンクを貼るわけでもなし・・・・ 基本的にこのスレはソースをアップした者同士の交流の場です JEDIのヘッダを利用したソースは過去にアップされていません あなたのは机上の空論じゃないかと邪推するところです 繰り返しますが >通信系の便利なコンポーネント をお願いします ヘッダは所望しておりません
まあまあ落ち着いて Indyとかじゃだめなの? 俺は使ったことないし何が出来るのかもわからないけど、 通信系の話題じゃよく出るような気がする。
>398 よく397を読んでください。 最初から質問に答えていないでしょう? 私は396を見てあなたがかなり怒っているようだったので、 2chで396みたいなこと言っても無駄だし、 腹立てるだけ損するよ、って言いたかっただけです。 ちなみに私自身はC/C++を使ってるので、 Delphiはよくわかりません。
>>398 自分でサーチエンジンで探せ。無かったら作れ。
いろいろあるのに無茶言うな。
特にDelを叩こうとかいう意図もないのにどうしてこう過剰反応するんだか・・・・
よほどそういったコンポーネントがないことにプライドが傷ついたんだな
ごめんよ、答えられない質問をしてしまって
それともパーソナル版ユーザーには冷たいだけなんだろうか
英語、フランス語、中国語(特にオススメなものならスペイン、イタリアでも可)ぐらいならなんとか読むから
マジで日本語以外で存在するならリンクしてよ
>>400 ご忠告ありがとうございます
C/C++のスレでまたお会いしましょう
>>399 レスありがとうございます
確かに便利なコンポーネント群なのですがゲームには向いてないようです
ClientSocket、ServerSocketより便利と思えるものはありませんでした
>>394 さん、あなたと同じ結論になりそうです
DirectX使わないで格ゲー風味なアクションゲームってやっぱしんどいのかな・・・(´・ω・`) やれるとこまでやってみよう。
>>403 グラフィックより入力がDX使わないとめんどくさ過ぎだと思うよ
406 :
名前は開発中のものです。 :03/09/20 04:11 ID:zXU3Cprq
407 :
名前は開発中のものです。 :03/09/20 06:48 ID:G/FXicXl
>>406 DelphixがDirectX9対応でバージョンアップするからだよ
410 :
a :03/10/04 09:35 ID:kpYwUts/
a
そもそもIndyがゲームに向いてないんじゃなくて、 通信ゲームのシステムが判ってないので勉強・調査すべし。 過去に出版された雑誌には色々と概要が載っていたので それを探してみれば???
>>411 盛り下がるだけの身のないことを言うなよ
オレモナー
>>412 もしわけない。。。
でも本当の事だし。
取り合えず人様のコンポーネントに頼るよりAPIなり
DirectXをべたで使ってみるなりするのが先なんじゃないのかな?
と思ったりするがね。。。だめぽですか?
取り合えずDelphiJEDIでガンガンテストしろー
本当のことでもやわらかくかきなさい
>>413 それを言い出したら、そもそもDelphi+VCLではなくC+APIに(略・・・。
>>415 いやいや、、、言いたいのは色んな意味で基本を知った方がいいのでは?
って事が言いたいだけです。
基本が判ってないで、問題が発生した場合の切り分けが出来ないと思うんですよ。
そういった事が判っているレベルで、人が作ったVCLを使うと良い所悪い所が
明確になって使う事が出来るのかな?と思うんですよ。
逆にVCLの中をじっくり分析するのも良いのかもしれませんが・・・
さて、我々はコミュニティの崩壊を目撃しているわけだが
>>417 コミュニティが壊れたメーラーなら知ってるが…
>>416 おまえは Delphi を否定する気か
>>419 否定はしてないでしょ?
自分で勉強する努力もしないで物を作ろうとしている人が嫌いなだけ
ちなみに私はDelphiβから使ってますが何か?
あのー、この前からこのスレ潰そうとしてません? 過去ログみればわかると思いますが初心者の互助会的な所で お互いのソースをパクりあうという裏テーマもあるわけですし 誰かの言いぐさではありませんが「ソースで語れ」を実践しましょうよ (質問するほうも質問に答えるほうも第三者から見れば荒らしですよ 専用スレ使ってください)
>>420 嫌いだからってわけのわからん持論を押し付けないでください
嫌いだったら無視しときゃいいのに
∩∩ (・д・) .。oO(妄想が多いですね ∪ ∪ ∪∪
>>420 社員や元開発者も見てるところで、βとか言われても自慢にもクソにもならん
あー、ゴメン、マ板と勘違いしてた。勘弁して・・・
>>421-422 確かに頭に書いてあるね。ごめんね。
別に荒らそうと思っている訳じゃなく老婆心って感じなので、、、
>>424-425 そうとったかー
いやいや自分なんかよりDelphi使いこなしている人なんて沢山いるしね。
これは、
>>419 に対しての返事だったので、どちらかと言うと
Delphi好きなんだって言う意味ね。
書き方が悪かったね。m(_ _)m
427 :
名前は開発中のものです。 :03/10/14 12:51 ID:l3iXWb8D
こんな質問をここでして良いのか分からないんですが、お許し下さい。 ゲーム(シューティングとか)をデルファイで作るにあたって、 キーボードからの入力を拾う方法や、メインループをどう回すのか という基本的な処理を教えて下さい。 または、そのような事に詳しいHPをご紹介下さい。 例えば、現在、キーボードからの入力はOnKeyDownでやっているのですが、 押しっぱなしにするとキーボード特有の、テンポでイベントが発生する 為、実用に耐えません。 また、敵キャラや弾の動きをTTimerのタイマーイベント内で処理しているのですが こんな方法で良い分けがない気がします。 宜しくお願いします。
ドラゴンボール作っている人頑張れ
431 :
427 :03/10/14 21:31 ID:SOCmhqBN
おおお!!
すごいすごい。すごいっす!!
>>428 行って来ました。
ソースコードを理解できるまでには
時間がかかりそうですが、これが分かれば
ゲーム作成の基本が習得できそうな気がしました。
>>429 サンプル、すごく参考になりました。
こんなに少ないコードでこれだけ出来るとは、感動しました。
QuadrupleDを使うと、こんなに簡単にDirectXが利用できるんですね。
これから使い方を勉強します。
ありがとうございました。
これからもちょくちょく質問させて頂くと思いますので
宜しくお願いしますm(_ _)m
432 :
429 :03/10/14 22:12 ID:1LwfNQ8u
433 :
名前は開発中のものです。 :03/10/18 12:21 ID:qB3cDJVw
435 :
名前は開発中のものです。 :03/10/18 15:10 ID:qB3cDJVw
Quadruple Dを使用した3DゲームなどのソースもあるHPを教えて下さい。 宜しくお願いします。
>>435 QD公式サイトにサンプリュがあるじゃないか!
437 :
名前は開発中のものです。 :03/10/18 16:19 ID:qB3cDJVw
>>436 他にも、これを利用したゲーム等のサンプルがあればぜひ
参考にしたいんです。
(それにExtreme Shootersって最新のやつじゃコンパイルできないし・・・)
さっきから探しているのですが、見当たりません(TT)
新しい方は誰も使ってない予感(古い方がメンテされてるし・・・・) うぷろだに3D使ったソースなかったっけ?(よそと勘違いしてたらスマソ) とりあえずQD3に添付されてるサンプル以上のものは見たこと無い
440 :
名前は開発中のものです。 :03/10/21 10:56 ID:sLPbLbFy
ポマイラ沈み過ぎです。
D3DDevice.SetTexture このメソッドの二つ目の引数が、 DirectX9のマニュアルではIDirect3DBaseTexture9のポインタ型を 渡すのに、QuadrupleDのVer3ではIDirect3DBaseTexture9型をそのまま 渡しています。 そして、そのままIDirect3DBaseTexture9型で渡しても テクスチャは表示されません。 どのように記述すれば良いのでしょうか?
>441 本家で聞いたほうが早いと思うが・・・・・・
今、ゲームを作っているんですが、当たり判断とかは if でいいんでしょうか? それとも他になにかあるんでしょうか?
>>444 ifを使わないやり方は、ちょっと難しいぞ。
挑戦してみる価値はあるかもしれん!
過疎化してるので揚げ
Quadruple D Version2.13をインストしようとしたら'DDraw.dcu'が見つかりません と怒られます。 DDraw.dcuなんてどこにもないよ・゚・(ノД`)・゚・。 どうすればいいの?
DDRAW.PASから作られるものでDDRAW.PASは添付されてます インスコ失敗してるんじゃないかと 確認はしてませんがたぶんパスの設定あたり
DDRAW.PASをコンパイルしなければいけなかったのね。
DelphiでWindowsゲームを作ろう!(青山 学 著)は、Delphi7でも問題なくテキストとして使えますか?
>451 それ、持ってるけど参考資料としてあまりふさわしくない。
参考になるいい本ありますか?
454 :
444 :03/11/01 15:11 ID:VW9tuYGW
455 :
名前は開発中のものです。 :03/11/04 09:07 ID:CMviRQzL
最近動きないけど水面下で作ってる人いる?
昨日完成したばっかり。
457 :
名前は開発中のものです。 :03/11/06 08:36 ID:BjFKrJSy
おまいら買いましたか? ちょっと興味あるけど立ち読みした奴レポきぼん >お待たせいたしました、「ゲームが作れる」の出荷を順次開始しております。 >日本橋J&Pテクノランドでは、11/2から。秋葉原、書泉・ラオックス等では、11/6 >から。インターネット Cbook24.com は11/4から。その他の書店さまでは、今週末 >頃から順次店頭に並びます。 >ゲームが作れる: >名称 Delphiならゲームが作れる!! ゲーム作りのエッセンス >ISBN 4-939049-57-4 C3004 A5判カバーつき。p264 >著者 みっちょ(田上暢顕:たがみのぶあき) >発行日 平成15年11月4日 >定価 ¥2310(本体¥2000+税)
デルマガの連載の奴だろ。想像してるのとは多分違う。
459 :
名前は開発中のものです。 :03/11/07 17:58 ID:ETasku/X
>定価 ¥2310(本体¥2000+税) 税金なんぼ取るねん
15.5%ワロタ
マップスクロールがうまくできない・゚・(ノД`)・゚・。 何処かのHPにのってないですか?
結構のせてるとこあるとおもうが
ソースならうぷろだに
どのアプロダにあるんだろぅ_| ̄|○
やべっ、油断してた うぷろだのミラー取ってる人いないですか? 参考にしたいソースまだまだあったのに
Delphiのコンポーネントだけで、画像の拡大縮小、回転はできますか?
>>467 ○拡大縮小
×回転(実装方法はFDelphiなど)
どちらも遅い
>>466 今年の3月末分までならある。
って、それじゃ駄目かw
>>467 QuadrapleDとか、DelphiXを使えば可能
Delphi標準コンポーネントだけでってことで言えば、
コンポーネントを使わず、自分で作れば可能。
いつもQuadrupleD3をありがたく使わせて貰ってます チュートリアルを終了して一つ疑問が沸きました QD2のチュートリアルのように三角ポリゴンを一つ表示させるにはどうしたらいいのでしょうか? Xファイルから読み込んで表示させる方法はチュートリアルからわかったのですが その方法がわからないのでマップ生成などどうすればいいのか悩んでいます できればポツンと三角ポリゴンを表示するサンプルなどウプしていただけるとありがたいです 初歩的な質問で申し訳ありませんが教えていただければ幸いです
久しぶりにゲーム作り始めたんだが、もう誰もいないのか。
-) < モウ ダレモ イナイヨ....
ミンナニハ ナイショダヨ I
480 :
名前は開発中のものです。 :03/12/09 02:59 ID:eU48E2u/
文字にアンチエイリアスをかけるにはどうすればいいんだよ 速度重視で そこらへんに転がってるBitmapを拡大縮小とかってのは遅いからノベルゲーとかで使えないぞ
文字の大きさも背景がどうとかも全然わからんからなんとも言えないが 白文字黒背景として超速度重視スタイルで考えてみる。 上に1ドットずらした灰色の文字を貼る。 下に1ドットずらした灰色の文字を貼る。 左右にも同じくずらした灰色文字を貼る。 最後に白で本体の文字を貼る。 単に灰色で縁取りしただけと言われればそれまでだが。 2倍ビットマップ縮小すらダメならこんなもんだ。 ところでなんでそんなにケンカ腰なんだ?
> 速度重視 αつきBitmapフォントを3Dハードウェア使って描画
483 :
480 :03/12/09 17:32 ID:eU48E2u/
>>481 単に灰色で縁取りしただけじゃんw
> ケンカ腰
いろいろなサイトを回ってみても有効策が見つからない漏れの憤りを感じるだろう?
>>482 自分でフォントを作るの?
文字が綺麗なだけでも、ゲームとしての見栄えが違うよな。
みんなどうやってDelphiでアンチエイリアス文字って実装してるんだ?
実際的なコードが落ちてないし本も出てないから、漏れみたいな趣味グラマは困っちゃうさ・・・・
アンチエイリアスのソース出してみれば?>480 遅い部分を改良できるかもしれんぞ。 今の状況では、どの程度のマシンで文字の大きさがどのくらいで などの具体的なことが何も判らないから答えようが無いしな。
485 :
名前は開発中のものです。 :03/12/09 19:30 ID:eU48E2u/
486 :
480 :03/12/09 19:31 ID:eU48E2u/
>>485 は漏れです
いままでsageるの忘れてたスマソ
488 :
480 :03/12/09 22:01 ID:eU48E2u/
>>487 Cを勉強してきます・・・
うーん、みんな興味のない話題なんかな?
わりと使えそうな技術だと思うんだけど・・
うちのところは、2Dのシューティングだし、いまのところやる必要ない 速度重視なら、大抵Bitmapフォントで十分だし
493 :
480 :03/12/10 17:56 ID:6L8lU9k8
>>490-492 そんなにいじめないで(;´Д`) 書き方が悪かった。
正しくは、「ほんとうにつかえるんかな(漏れはつかえなかったんだけど)」だ。
それらのサイトはすでに読んで実践したりしてるのだ・・。
CreateFontのfdwQualityってやつも試したけど環境依存(要Plus!!インスコ)があるらしいし、
http://www.systemyou.co.jp/tips/delphi/tips2.htm のも試したけどCreateBitmapってのがモノクロのBitmapを返すらしくてGetGlyphOutlineの第三引数を
GGO_GRAY2_BITMAPにしてもなんか変になったのでカラーを返すCreateCompatibleBitmapってのも使ってみようとしたけど
意味わかんなくてうああああん
おう、すまんかったな。何をどこまで試したのかまったく情報が なかったからこっちも意地悪になってた。俺のほうでも色々試してみる。
496 :
480 :03/12/10 21:07 ID:6L8lU9k8
プログラム提出サンクス。うちの環境だと上から S 0.00107 C 0.00105 B 0.06479 A 0.01143 こうだった。この速さで十分だと思うんだが、これだと遅いのか? 考えてみれば、ノベルゲーなんだから他に重い処理なんかしてないんだよな? それで遅いというなら、何か根本的な部分から見直したほうがいいかと思われ。 表示前に0.5秒待たせてその間に次の▼まで全文字計算しておくとか 読み飛ばされる文字にはアンチエイリアスしないとか いっそ作品内で使われる文字を起動時に全部計算してBITMAPにしておくとかw
498 :
480 :03/12/11 23:01 ID:8TqMcc0q
>>497 漏れよか6-7倍くらい速いな!
Bitmap拡大縮小なんか0.39158ぐらいかかるぞ
> 何か根本的な部分から見直したほうがいいかと
うーむ、一文字づつアンチエイリアスしてるから遅いのかなあ。
> 読み飛ばされる文字にはアンチエイリアスしないとか
市販ソフトはガンガン飛ばせるんだからやってやれないことはないと思うんだけど。
やっぱDirectX使わなくちゃダメか・・・QD使うと動かない人が出るんだよな・・・
使い方もいまいちわかんねぇし
1回書いた文字はキャッシュしとくとかすればOK?
ネトゲ作ってる人いる?
作りたいけど技術が無い。 ネットゲーだからどうしても凝ったものが作りたい、という気持ちが足かせに。
503 :
名前は開発中のものです。 :03/12/21 21:01 ID:D0lYGLFU
INDYのインスコに失敗しちゃったみたいなんだけどアンインスコってどうやるの?
>>500 作ってもテスト環境がない_| ̄|○
一応ローカルでは動くけどツマンネ
凄い初心者なんですけど、 OnFormCreateイベントの時にFormにDrawできないのは何故なんでしょう? これで3日も悩んでたよ…
>>506 あー、なるほど。
どうもありがとうございまつ。
>>508 確かに、軌道遅い・・・かも
逆走しても白丸に戻るとタイム戻るー
動作はなめらかで(・∀・)イイ!がんがれ
・・・ツクーノレの素材って試作に丁度いいのなんでだろー
510 :
名前は開発中のものです。 :03/12/27 15:40 ID:gF9wZmUc
ネトゲ作ろうかと思ってるんだけど・・・ データ送信・受信で Tclient・Tserver使ってるんですけど、 キャラ移動に関する受信がうまくいきません; 受信すると、以前送ったデータとダブってしまい 例: 0.5秒単位でキーを押すと・・・ send('123:45') receive('123:45') 送受信できますが、 キーおしっぱなで0.00・・秒単位で送ると・・・ send('123:45') receive('4523:14') ・・・;(ォィ ってな感じになります; 受信側の対応が悪いと思うんですけど それ以前に、コンポーネントを使っては無理なのでしょうか?
>>510 送るデータの先頭に一文字入れて区切ったらどう?
>>510 再現できない
どうやったらそんなことになるの?
514 :
510 :03/12/28 23:34 ID:xcBqPhIP
PCスペックの問題かもしてません; 自分で作ったサンプルUPするんでやってみてください。
515 :
510 :03/12/29 00:25 ID:17l+Fm7M
>>515 確かに不具合はでるがソースがないとツッコミの入れようがないですよ?
517 :
510 :03/12/29 01:31 ID:17l+Fm7M
改善したらできるようになりました。 以前のソース: n:integer; poss:tpoint; n:=inttostr(receive)//受信データをnへ case n of 1:poss.x:=poss.x-10; 2:poss.y:=poss.y-10; 3:poss.x:=poss.x+10; 4:poss.y:=poss.y+10; end; な感じで、受け取ったデータを直にnに 入れてました;
518 :
510 :03/12/29 01:34 ID:17l+Fm7M
改善後ソース:
n,i:integer;
poss:tpoint;
log:array[0..2]of string
n:=inttostr(receive)//受信データをnへ
log[0]:=copy(s,0,1);
log[1]:=copy(s,2,1);
log[2]:=copy(s,3,1);
for i:=0 to 2 do begin
if log[i]='' then
log[i]:='0';
n:=strtoint(log[i]);
case n of
1:poss.x:=poss.x-10;
2:poss.y:=poss.y-10;
3:poss.x:=poss.x+10;
4:poss.y:=poss.y+10;
end;
end;
初歩的なミスです。すみません;
再・うp
http://popup8.tok2.com/home2/aoiruri/movetest.zip
519 :
516 :03/12/29 01:44 ID:I4aXvZ/p
ごめん、勘違いだ 不具合はでてない ちゃんと動いてるよ
520 :
516 :03/12/29 01:47 ID:I4aXvZ/p
ああ、10分も差があったのに入れ違いカキコしてしまった_| ̄|○ なんにせよ不具合ハケーンおめ
521 :
510 :03/12/29 02:00 ID:17l+Fm7M
どもです。 これでまたonline_rpgに少し近づける 第一歩を踏み出しました。
18禁なのでよろしく 調教ゲーム 拉致監禁しても、職場で調教してもいいから、バレずにうまく性奴隷にする。 ターゲットの女が、他の男の子供を妊娠するまでがタイムリミット 全員のタイムリミットまでにいかにバレずにこなせるかが勝負 奴隷にした女は↓ 1.性奴隷として販売して金にする。 2.妊娠させ赤ん坊を生ませる。(娘として育てること可能) 3.手術を施して、一生性奴隷として飼う。
523 :
名前は開発中のものです。 :04/01/10 00:00 ID:El7JXJNj
Delphiが本格的に終了するみたいだけど 次は何に移ります? 今のバージョンが使えなくなるわけじゃないから問題ないといえばそうなんだけど・・・
524 :
名前は開発中のものです。 :04/01/10 00:24 ID:QkKg+uaW
ささやかな疑問なんだが
>>522 みたいなのを作ろうと思う人は女の子といっぱい戯れてるわけ?
>>525 えっ?
お前ゲームの中の女と現実の女が同じ(似たもの)に見えるわけ?
俺にはまったく別次元の生物にしか見えんのだが...
528 :
名前は開発中のものです。 :04/01/10 09:26 ID:El7JXJNj
>>527 ゲーム中の女も生物として認識してたのですね(笑
女は架空の生物かと思ってました
>>529 は?
思うも何も架空の生物だろ。
今まで触ったこと無いし
531 :
525 :04/01/10 14:55 ID:RB28J2OF
>>527-530 やっぱり悲しい人たちなんですね。
僕は実物と戯れるのが好きなので、その手のは良く分からないから聞いてみました
キモヲタが書いた絵に萌えるってのは間接的にキモヲタに萌えてるわけで悲しくなりませんか?
まぁセックルする相手がいてもオナしてしまう、みたいなもんかな
>>531 そんなことないだろ。実物に萌えるのは
実はその父と母に萌えてるってことなのか?
↑明日の夜は二次元でセックルするそうです
535 :
名前は開発中のものです。 :04/01/27 17:08 ID:mR65kvQF
Quadruple D の使い方がいまいち分からないんですが。 よいサイトか本か知りませんか?
>>535 チュートリアルとマニュアルとサンプルとメーリングリスト
QuadrupleD のメーリングリストの過去ログ2003/05以降はあります?
DelphiX\Sourceにパス通さないと動かないのね(;;;´Д`) インストールの説明でこんなの書いてないし…… Indyの時もそうだったんだけどうちの環境が特殊なのか それとも常識なので書いてないのかどっちなんでしょう?
>>538 , .. . + 。 ’‘ :: . .. ::::
, ,:‘. 。 + ,..
’‘ + ,.. . ..; ', ,:‘ :::::::’’ 。...::::’’
::::: : + :::
::
: 今はわからなくてもいいんだ ..; ',
. いつか君にも、常識の範囲内だって判る日が来るよ ,:‘
.::.... ..;....
,:‘. ..::.. 。 ... .....
____ , ,:‘. ....
,:‘. 。 .. . . ゞ' \ , .. .
:::::::’’ 。...::::’’ / 人 \ , ,:‘. ..’
...... |/|/- ヽヾヾヾヾ | ’‘ ....... ::::::
..::: | ≡ ≡\ | 。 .. . . ::: ' ,:‘.
; ', . . : ,:‘. | //// //// |/6) ,:‘. 。 ..
| ヽ |/ ,:‘. 。 ..
,:‘. . _| 、__, | . .. ..; ', . .
... :: \\ | ̄ ̄| . .. ..; ', . .
::::: | \___/| | ...::.. ......
, ,:‘. ├──/  ̄ ,:‘. 。 .. 。...::::
540 :
名前は開発中のものです。 :04/02/11 05:42 ID:LaA39y51
scanfで「わたしは無知です」って入力して『わたし』を『オレ』に変換 『です』を『だ』に変換するようなプログラムって作成可能か? 教えてえらい人 ************************* わたし は無知 です (一人称) (語尾) ↓ 変換 オレ は無知 だ (一人称) (語尾) ************************* こんな風に
可能だ!
Delphiにscanfはない
procedure scanf; begin end;
配列を因数として渡すのは type TBordArray = array[0..3, 0..12] of integer; とやってから var MyBord :TBordArray; とすれば procedure CpuAI(CopyBord: TBordArray); のように渡せるのまでは判ったのですが これを別UNIT間で渡す方法はありますか? メインのUNITからサブのCpuUNITへ配列を渡して計算させたいのですが 何もしないと宣言が無いエラー。 同じように宣言しても共有できないエラー。 サブユニットでもメインの型式宣言が使えるよう、サブのUSEにメインUNITを入れると循環エラー。 サブの型式宣言をメインにもってくるのは可能でしたが、複数CPUでサブを作る場合アウトですし。 まさか配列宣言用だけに共有の孫UNITを作るのも変な話ですし・・・
>>540 //scanf使ってないけど
procedure TForm1.Button1Click(Sender: TObject);
const
NUM=1;
transBefore: array[0..NUM] of string = ('わたし','です');
transAfter : array[0..NUM] of string = ('オレ','だ');
var
str: String;
transed: Boolean;
i: Integer;
begin
str:=Words.Text;
repeat
transed:=False;
for i:=0 to NUM do begin
if Pos(transBefore[i], str)>0 then begin
Insert(transAfter[i], str, Pos(transBefore[i], str));
Delete(str, Pos(transBefore[i], str), Length(transBefore[i]));
transed:=True;
end;
end;
until (not transed);
Words.Text:=str;
end;
>>544 ヘルプ「ユニットの循環参照」
546 :
544 :04/02/11 22:12 ID:T4hG/qq5
おお、そうだったのか。 すばやい回答サンクスです。
自分のやり方ではうまくいかないことが判明。 循環参照にしてもサブUNITに渡す引数の定義でTBordArrayの宣言ができない。 メインの構造にサブが支配される形での外部ユニット化は考えが合わないようだ。 やはり共通の参照元UNITを作った方がいいのだろうか? そこのUNITで、共通のCONSTやら配列型やらを宣言してやれば 配列の変更が一箇所ですむようになるし。
答えもらえました。 >548 サンクスです。
>>551 アンチエイリアスの部分 (コメント以下7行) を
削除してコンパイルすれば爆速
スムースシェーディングからフラットシェーディングに
変えればさらに速い
遅いとか速いとかよくわからんのでFPS表示をつけた
ポット3つがグルグル回ります
ti4200で85FPSぐらい
今回の問題点は2つ
・ポットの表示がおかしい
ポリゴンの表側が透明になってる?
試しに板ポリ一枚を横に表示させてみたけど
こちらはちゃんと表示される
・Doxygenが出力するドキュメントがおかしい
3dと関係ないけどドキュメント生成ツールを使ってみた
元々C++用らしくPAS2DOXという専用の変換ツールが必要になった
出力されたドキュメントの一部にソースが埋め込まれるんだけど
そこにPAS2DOXが生成する中間コードが表示される
http://gamdev.org/up/img/238.lzh
おひさですー。固定パズルも一段落したので ただ今落ちゲーを作ってみている最中。 とは言っても今はブロック一個を淡々と積むだけのプログラムw 落ちゲーの基礎はこれで一応完成。
OpenGLでTeapotの表示がおかしい原因がわかりました glEnable(GL_DEPTH_TEST); //各多角形の前後関係を決定する 初期化部でコレが抜けてただけ(;´Д`)
最近、OpenGLをいじっていたらなぜか実際にエラーがある行と コンパイラが指摘するエラーの行がズレるなと思っていたら 文字コードが違うとダメらしい_| ̄|○ もしやと思ってSJISで保存し直したら直った 表示はちゃんとできるのになんてイジワルなんだ。・゚・(ノД`)・゚・。 海外のソースをパク……参考にするときは気をつけねば
DirectXのヘッダを替えたらQD3のDDPDが動くようになったのなんでだろう
>558 がんばれ、
>>562 メインルーチンだけれども
時間が余ってるときは sleep せず抜けるだけにしといた方が
他の処理できていいんじゃねぇかなぁ
>>563 CPU使用率を100%にしないためだろ
Sleep(1)じゃないと意味ないけど
今思い出したけど避難所で色々とやってた
http://bbs.gamdev.org/test/read.cgi/gamedev/1054282821/489-n リンク先のスレではたぶん話題になってないけど
OnIdleはメッセージキューが空になるまで呼ばれないので
Sleep(0)はいらないと思う
>>562 ではFPSを60にするためにSleep(1)ではなくSleep(0)にしているようだけど
CPU使用率と60FPSを両立するにはメインルーチンを
呼ぶまでの残り時間を計算しておいてSleep(1)を発行するには
短すぎる場合はSleep(1)をパスすればいいと思う
または同期をフレームの頭で合わせるんじゃなく尻のほうで合わせるなら
Sleepに渡す時間が計算できるので7ms消費した場合はSleep(16-7)などとして
ぐっすり休めていいんじゃなかろうか
半端な分はビジーループにしてもCPU使用率にそれほど影響を与えないはず
視点グルグルでポット移動
http://gamdev.org/up/img/276.lzh 操作:カーソル上下左右、Z、X
ジョイパッド上下左右、ボタン1、ボタン2
マップのデータ構造どうしようかと悩みまくりましたが
結局、bmpファイルにしました
赤色の濃淡で地面がデコボコします
メリットはグラフィックソフトでお手軽に編集できること
でも地形とは別に小屋や木の配置をしないといけないから
結局エディタは作ることになるかも
2Dの汎用マップエディタで間に合う気もする
それとも簡単にテキストファイルに座標等を記述するのもいいかも
何かいい方法ないかな
今回からZ、Xキーで視点を回転できるようにしてみました
視点を回転するとX軸Z軸の場所が変わるわけで
いままで上(奥)に進みたい場合はZ(+)方向へ進んでいけばいいだけなのに
X軸とZ軸両方をうまく加減してやらないといけなくなってコレが結構悩みました
2Dの問題ではあるんだけれど気づくまでちょっと混乱
ちなみにこのソフトのメインループは描画と操作が非同期
描画はたぶん垂直同期とってる気がします
操作はTimerコンポーネント
あ、そういえばウィンドウモードでは垂直同期は取れないんだっけ
>>566 >それとも簡単にテキストファイルに座標等を記述するのもいいかも
>何かいい方法ないかな
3Dモデラー使えば?メタセコイアとか
>>568 モデラー使うと一発勝負になっちゃってあとから編集できなくなる気がします
レイヤーや階層構造があるモデラーならいいのかな
オブジェクトの形状とマップの構造を混ぜてしまうのは
二次元のRPGでいえば一枚絵をマップにしてしまうようで
上手い方法ではないと思うのです
なにか良い実装方法があれば教えてください
>>569 3Dモデラーで地形を作ります。100x100の正方形を敷き詰めた感じ。
Z座標で地形の高低を表す。
まずこの時点ですでにビットマップより視覚的で作りやすいのではないかと思います。
オブジェクトの配置はいろいろ方法がありますが、
例えば面に対する属性(材質)で、オブジェクト形状ではなくオブジェクト属性
(そこにあるオブジェクトは何か、など)だけを指定するというやりかたもあります。
>>570 >指定するというやりかた
というのは3Dモデラーからできるのでしょうか?
色々調べてみたのですがよくわかりません
それとこの手のオブジェクトの配置などの作業はモデラーより
いわゆるレイアウトなどと呼ばれるソフトの役割だと思ったのですが
(3D動画作成時と違い)あえて3Dモデラーを使うメリットはなんでしょう?
質問ばかりですみません
>>571 >いわゆるレイアウトなどと呼ばれるソフトの役割だと思ったのですが
そういうソフトがあるならそれを使えばよい。
>というのは3Dモデラーからできるのでしょうか?
モデラーでは頂点の色や面の色など多くのの属性値が編集できます。
ゲーム用としてはせいぜいテクスチャーを貼るだけで色情報とかは使わないと思うので
これらの属性値をオブジェクト配置情報に転用しては?、という意味です。
オブジェクトがまんまモデラー上に表示されるわけではないので
配置しにくいのかもしれませんが、そうだとしても
モデラーの吐いたファイルを読んで地面とオブジェクトを表示する
マップ確認ソフトを組めばほぼリアルタイムで確認できるので
編集機能まで備えたマップエディタを作るよりはかなり楽できると思うのです。
573 :
名前は開発中のものです。 :04/03/22 15:24 ID:NlgOvoDT
あげ
575 :
名前は開発中のものです。 :04/04/24 13:51 ID:KLY8pn3x
>>574 Sleep(0)だと90%台になってほとんど意味ないけど?
>562 答えはNO。返事送れてすまんす。 いきあたりばったりなページなら自分ですけど。 最近、進めば進むほど自分のやりかたで正しいのかどうか心配になってきた。 自分は進化の袋小路に入っていっているのではないのか?って感じ。 オブジェクト指向の全体的な組み方や具体的な使い方が いまいち判ってないから、独自の方式で進んでいってます。 落ちゲーで2プレイヤー化するために、1プレイヤーぶんの構造全部を 外部でオブジェクト化するってのはありなのかなぁ? 動かすのはPlayer[1].pLay(Joyin)みたいにジョイスティック入力させて 表示は内部のメモリPlayer[1].MainBord(x,y)なんかを参考に盤面表示させてます。 落とすものとか、積んだもの単位でオブジェクト化したほうが良かったのかもしれないけど やり方がよく判ってないからこうなっちゃいました。
577 :
名前は開発中のものです。 :04/04/27 11:31 ID:JZLBG0tE
最新バージョンのQuadruple Dで動くサンプルとかソースがあるところってないですかねぇ。 ついてくるマニュアルとかサンプルだけじゃよくわからん(つД`) Delphiゲーム製作講座は一通り見てみたんだけど、そこから先が・・・_| ̄|○
581 :
579 :04/05/07 05:11 ID:N0LMlXDZ
ヴィジュアルノベルとかアドベンチャーゲームっぽいイベントありのアクションゲームを想定してました。 アクション周りは、オフィシャルのサンプルを参考にすれば応用で何とかなりそうだったんだけど、 テキスト不要時周りが全然見えなかったんで。
583 :
579 :04/05/09 05:44 ID:7Vjj+KZi
>>582 ありがとうございます。
そこだけマニュアル見てませんでした_| ̄|○
アフォですね、俺(つД`)
あ、よく見たら1998年の記事だ。今のDELにもあてはまっているのだろうか?
色々やってみた。 320*240の画像を1万回描画してみた結果 IMAGEにDROWで描画 IMAGE>IMAGE 4641ms PAINTBOXにDROWで描画 IMAGE>PAINT 7343ms 逆に増えてたよ。ショボーン。 PAINT>PAINTだと変わるかもしれんけどね。 でもPAINTは扱いにくいんでBITMAPに手を出してみる。 IMAGEにBITMAPからコピーで描画 62ms ガ━━━(゚Д゚;)━━━ソ! コピーすげぇ! このへん、もちっと勉強してみるよ。
レポート発表。なんか本来の目的とは別に違う成果が判明。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 FORM全体にイメージを貼り付けた状態でそれをコンマ数秒感覚で描画しなおす場合 手動ダブルバッファリングをしても、チラついてしまう。 原因は、イメージが書き換えられる時、一旦灰色で塗りつぶしてから再描画するから。 その場合、自動のダブルバッファリングを入れるとちらつかなくなる。 これは考えると凄く無駄。ちらつかないための手動バッファのせいで 自動的に灰色に塗られる工程が発生し、そのせいで自動バッファリングが必要になってしまう。 ここで考え直す。手動ダブルバッファリングでもチラつくのは 自動的に灰色に塗る工程が発生するから。 ならば灰色で塗らなければその問題は無くなるし 手動バッファがあるんだから自動バッファリングもいらないのでより軽くなる。 つまり問題の原因は、イメージに描画してしまうから。 ゲームのような高速描画をする場合、手動でバッファリングしておいて 表示の際には FORM1.canvas.drow(0,0,UraBitmap); としたほうが、ちらつかないしCPUの負担も減らせる。
間違いはないかな?あったら指摘よろすく。 しかし画像表示のためのIMAGEなのに ゲームの描画には使わないほうがいいとは・・・
あと、本来の成果の方。 BITBLTを使ってもIAMGE>IMAGEの描画は同じくらいの遅さでした。 DROWよりは多少速いけど無視できる程度の違い。 BITMAPからIMAGEへはコピーでもDROWでも速度は同じ。速いです。 IMAGEからFORMへ直接も遅いです。IAMGE>IMAGEより遅い。 IMAGELISTからの場合、送り先がIMAGEでもBITMAPでも速度は同じ。 結論。描画速度はコピー元がIMAGEだと遅くなる。 そしてもう一つの上とあわせた結論。 裏画面はBITMAPで持つべし。表画面はFORMに直接描画すべし。 今日はこのへんで。長々と占領失礼しました。
590 :
名前は開発中のものです。 :04/05/12 05:31 ID:Qd1PRADp
↑読みにくい でも言いたいことはなんとなくわかるage
591 :
名前は開発中のものです。 :04/05/12 09:52 ID:/AYz4CUC
592 :
名前は開発中のものです。 :04/05/12 14:40 ID:p+VBxvdd
_,,. -−- ,,_ ,.-‐'''" ヽ ノ ヽ / ,,,_,_ ヽ { ,vリjh!リjh!( ヽ, } } / ,; ニ= =ニミ;、i { { j ,.ェュ , { rtェ 、 i ノ { Y ミ Yリ !| y.-,_-)、 |ノ '! ノ _, u 、ヽ ! ! ''ニ' ' ! <体制を崩壊させるには、著作権侵害を蔓延させるしかない ト、 _,,,,,, イ /| −-- −' |ヽ, Winny製作者47氏(金子勇) ー'''{ | ノ .| /''ー
サンプル解析しろ
これまでにサンプル、解説を求めた人は、解決したときに何らかの資料を作成しているだろうか。
そしてそれを公開したりするだろうか。内容が薄いとかそういうのは自分で判断するものではない。
もしかすると、その初心者がまとめたからこそ、初心者に分かりやすい資料になっている可能性もある。
誰もが求めるだけでは、いつまでたっても資料が少ないままになってしまう。
少しでも簡単なところから、自分だけの参考資料を作ってみるのもいいかも知れない。
そしてそれを公開してほしい。ほんの少しでいいから。
>>595 ならお前がやれ
…ごめんなさい。
>>595 言ってる事はもっともだがスレ違いを擁護する形では説得力ない
>>595 氏に共感する所もあるのでマニュアルの一部をchm化してみた
htmlより閲覧しやすくしたつもりだ
いつものアップローダにあげてある
passはqd3
このスレ的にはこういった行為はどう評価されるのか興味がある
>>597 こっちのほうが見やすい。
みんなで欠けてる部分を補完できたりしたらいいかもね
追加の基準でちょっと質問を
>>598 のはDelphiのTipsを作る感じで役に立ちそうなものとか
良く聞かれたり調べたりするものを追加するの?
それとも、Delphiでゲームを作る時に役たちそうなものを追加?
603 :
598 :04/05/18 12:53 ID:CSI4UYAL
>>602 「ゲーム製作技術板らしく」
と個人的には思ってますがあのwikiを見る人が興味を惹くような
ものであればなんでもいいと思います
なるほど 応用が利くとか使い方次第では行けそう よく調べれば出てくるけど見つけにくい等を追加という感じでokですかね 質問BBSみたいなのを付け、有志の人にQ&ATipsみたいなのを 纏められるようにするといっそうの充実を図れそうな気がします。 というわけで、使えそうなネタ見つけたら追加しますね。
>>587 ダブルバッファリングはイメージを入れるのを二つ用意し
visble設定を交互に変えるという手法でも灰色ちらつきを防げるかも
と、いってみるテスト(ただしエフェクトとかは厳しいですね)
>605 サンクス。なるほど、そんな方法もあったか。 ついでに追記。 Image1.Transparent := True; で透過設定すると、しない時に比べて約2倍遅いが BITMAP1.Transparent := True; だと、なんとIMAGEより10倍以上遅くなりました。 手動で透過処理したものなら、どうにかIMAGE>IMAGEの速度まで 速くできました。でもIMAGELIST使った時とほぼ同速度。 うちの環境だとでっかいIMAGELIST使うとDELが暴走して止まるので でっかい画像の透過が必要になったら手動透過処理することにします。
手動透過処理であるBITBLTでのマスクと Image1.Transparent := True;を 実際のゲームに試してみたが BITBLTの方がCPU負荷率が高かったよ(´・ω・`)ショボーン 遅いはずのBITMAP1.Transparent := True; よりも負荷が高い。 なんで〜〜? 画像転送は何が早くて何が遅いのか判らなくなってきた・・・
先生、追加しようとしたらリンク先に書いてありました。 というか、参考にしたサイトがリンク先にあった(;´Д`) この場合 1.内容を書いてリンクを貼る 2.追加して、参考先としてリンクを貼る。 3.今回は諦める のどれが良いでしょうか(´・ω・`)
>>608 何を言っているのか分からん
Wikiなら好きなように汁
もし何か不都合があるようなら誰かが修正するだろうて
BITMAPを半透明に表示する よい方法はないですか?
"Delphi" "半透明" "ビットマップ"でぐぐれ
615 :
名前は開発中のものです。 :04/05/26 21:37 ID:Ngy9wTG7
3dシューティングはじめました
メッシュの表示はQuadrupleDのおかげで意外と楽
マニュアル読んだら一目瞭然だと思っていた
NowPointInBox 点pが箱型boxに含まれているならTrueを返します。
NowBoxInBox 箱型 a が箱型 b に含まれているならTrueを返します。
NowIntersectLineBox 線分segが、箱型boxと交わるなら、Trueを返します。
NowIntersectCapsule カブセル a, b が交わるならTrueを返します。
の使い方わからずorz
NowDistance以外のNow〜系がうまくいかない
当たり判定に使えばすごく便利そうなのに……
操作方法
キーボードかジョイパッドの上下左右
弾はオート(操作不要)
敵は手前、中、奥の3種類いて弾があたるのは中だけ
撃った弾が敵に当たるだけの段階
とりあえず当たり判定を解決しないと先に進めないorz
せっかくだから箱型かカプセル型の当たり判定したい……
開発環境:Delphi6,QuadrupleD3.00,DogaL1
ttp://gamdev.org/up/img/618.zip
616 :
615 :04/05/26 23:55 ID:Ngy9wTG7
3Dの意味がいまいち分からなかったんだけど、しばらく遊んでいて理解できた。 何より先に、自機が遠い未来へ旅立てるのを回避したほうが良いと思う。 変に操作していると、現実へ戻ってこれなくなった…
618 :
615 :04/05/28 03:56 ID:paEuQN5d
おもしろい。超期待sage。
海外のゲーム開発のウェブとか見てたら偶然、Truevision3Dなるものを見つけました
早速インスコしてサンプルを実行してみましたが結構短いコードで
FPSっぽいことをしました
他にもランドスケープや3Dキャラが動き回ったりしてました
おもしろそうなのでリンクしときます
誰か使ってる人いませんか?
いくつかのサンプルとチュートリアルでDBCtrls.pas、TDBImageがないと言われてしまいました
ひょっとしてPersonal版には入ってない?
ライブラリを使うために必要、というわけではなさそうでしたが
ランセンスを斜め読みしましたがフリーソフトに使うには無料のようです
販売する場合は150$か500$のライセンスが必要っぽい
http://www.truevision3d.com/
622 :
615 :04/05/29 15:17 ID:9OtmEhOD
影は濃淡いらないかも?(暗い画面のとき、敵と見間違った) あと、終了時、読み込み違反が起きちゃった。 5分x3セットくらい遊んでみたけど、こういうのは好きです。
前からやりたかった物理ネタに挑戦
重力加速度9.8、反射係数0.3となっております
画面中央あたりを適当にクリックするとそこからパーティクルがわーっっと噴き出します
……それだけです
ポリゴンを使ったり色の加算をしてみたりすれば綺麗なんでしょうが
QD3でポイントを指定してポリゴンを描画ってのがどうにもわかりません
一応、sxファイルを読み込んで表示というのは何とかわかるのですけど
なんとかしてDirectXサンプルみたいに綺麗に作ってみたいのですが難しいもんですね
ところで重力加速度とか検索してたら習うのは中学みたいです
すっかり忘れてました
ひょっとして物理じゃなくて理科!?
http://gamdev.org/up/img/650.zip
628 :
名前は開発中のものです。 :04/06/05 07:56 ID:sy+ovgju
Dedeにかけてみな
>>629 ありがとうございます
QuadrupleDでした
TSXLandscapeが実装されているなど公開されてるものとは
全然違うようですけど
Dedeってどこでおとせるの?
634 :
615 :04/06/06 10:08 ID:uRhgKWO6
635 :
615 :04/06/09 07:47 ID:dS+m1a5k
636 :
名前は開発中のものです。 :04/06/11 05:04 ID:o5HQQ5F/
Delphiをはじめたばかりのものです まずテキストアドベンチャーを作ろうと思ってチマチマやってるのですが 超初心者な質問をここでしていいですか??
ヘルプを読破して、検索をかけてからならいいと思う
638 :
名前は開発中のものです。 :04/06/11 07:50 ID:o5HQQ5F/
怒られる質問かもなのでドキドキしてます で その超初心者な質問内容なんですが リストボックスにテキストを表示させたのですが 改行キーが分かりません あるところに#13#10で改行できるよと書かれていたのですが 打ち込んでみても テキストにまんま#13#10と表示されるだけで 全然うまくいきません いまのところ ListBox1.Items.Add(''); を行ごとに書いている状態なんです どうすればすっきり書けますか?? スレ違いなら移動します。
くだすれ12の517に書いてあるよ
640 :
名前は開発中のものです。 :04/06/11 09:58 ID:o5HQQ5F/
くだすれ12 html化待ち中ですね・・・orz とりあえず またりと返答待ち
641 :
名前は開発中のものです。 :04/06/11 10:10 ID:o5HQQ5F/
同じような初心者の方がいたら いろいろと一緒にお勉強していきたいです 今はいないかなぁ?
'#13#10' としてたというオチだろ絶対
643 :
名前は開発中のものです。 :04/06/11 10:54 ID:o5HQQ5F/
えっと もっと自分が勘違いしてるぽいです ListBox1.Items.Add('あなたは干上がった井戸の底にいる。'); これを二行にするとしたら ListBox1.Items.Add('あなたは'+#13#10+'干上がった井戸の底にいる。'); とか 書いてるんです かなり大馬鹿な勘違いしてますか?
644 :
名前は開発中のものです。 :04/06/11 10:57 ID:X1M76EQY
>>642 あり得ますね、それ。
とりあえず
>>638 さんは改行キーをクォテーションで囲ってしまっていないかの確認を。
囲っていたら文字列扱いなので、そのまま表示されます。
ついでにメッセージを表示するのであれば、ListBoxを使わないで、
一度Bitmapに描画してから合成するやり方の方が見栄えが良くてグッドです。
では、頑張ってください
645 :
名前は開発中のものです。 :04/06/11 10:58 ID:X1M76EQY
ってListBoxで改行キーなんか効きませんよ・・・たぶん
646 :
名前は開発中のものです。 :04/06/11 11:12 ID:o5HQQ5F/
・・・orz アドベンチャーゲームを作ろうというお題目のHPやソースを見て ビットマップへの描画は確かに美しかったのですが 自分にはまだ全然どうやっていいのかも分からない状態だったので 手をつけやすそうなリストボックス表示でやってみようと思ったのですが・・・ 慣れてるみなさんからすると 激しくパーな事をしてそうなのですね・・・
647 :
名前は開発中のものです。 :04/06/11 11:19 ID:o5HQQ5F/
procedure TForm1.clickClick(Sender: TObject); var i: integer; begin i := 0 ; //ここでiに0を代入してるつもり if i = 0 then //すぐ下のbeginから一つ目のエンドまで読ませる処理がしたい begin ListBox1.Items.clear; ListBox1.Items.Add('この冒険の舞台となるのは、はるかな昔、貴族たちや王子たちがおとずれ'); ListBox1.Items.Add('金貨を投げ入れれては願い事をとなえたといわれる'); ListBox1.Items.Add('古い古い干上がった井戸の底である。'); ListBox1.Items.Add('投げ入れられた金貨はすべて井戸の底にたまった。') ;; ListBox1.Items.Add('やがて井戸が干上がると'); ListBox1.Items.Add('近隣から遠方から一攫千金を夢見る大勢の宝探し屋たちが集まってきた。'); ListBox1.Items.Add('しかし、井戸にたどりついた男たちは'); ListBox1.Items.Add('井戸の底には予想以上の危険が待ちかまえているのを'); ListBox1.Items.Add('知ることになるのだった・・・・・・'); end; i:= i+1; //上と同じく1を代入してるつもり if i = 1 then //ここで判定処理させてるつもり begin ListBox1.Items.clear; ListBox1.Items.Add('あなたは干上がった井戸の底にいる。'); ListBox1.Items.Add('壁は乾燥した土で塗られ、足元はぬかるんでいる。'); ListBox1.Items.Add('井戸の底から北のほうに向かって細い通路が伸びている。'); end; end; 初心者すぎですか??
648 :
名前は開発中のものです。 :04/06/11 11:20 ID:o5HQQ5F/
上のような書き方しております 上のテキストをリストボックス表示→リストボックスクリア→下のテキストをリストボックス表示 と やりたいのですが テキストの切り替えも満足に出来てません
× ListBox1.Items.Add('てすと'#13#10'てすと'); ○ Memo1.Text:='てすと'#13#10'てすと'; 試しにやってみた結果は改行されない気がする 他に方法があるかはわからんが・・・・ 単にListBoxの内容を消すだけなら LisBbox1.Items.Clear; で消えるけど勘違い???
ありがとうございます メモでやるんですね! 試してきます えとですね ListBox1.Items.clear; で消える事は消えるんですが 上のテキストすっとばして いきなり下のテキストが表示されちゃうんです ここは ListBox1.Items.clear; がどうこうというよりは 自分がまだ全然分かってないゆえの大間違いだと思いますw
改行されました! ありがとうございます!! 次はテキストの改ページをさせるべく彷徨ってきます!
改ページ? 印刷じゃないんだから・・・・
簡単な文字列表示ならImageに直接書けばいいのではないでしょうか Imageをフォームに貼り付けておいてください procedure TForm1.FormCreate(Sender: TObject); begin Image1.Canvas.Font := Form1.Canvas.Font; Image1.Canvas.TextOut(10,10,'文字列を表示します'); end; procedure TForm1.Image1Click(Sender: TObject); begin Image1.Canvas.Brush.Color := ClWhite; Image1.Canvas.TextOut(10,10,'別の文字列を表示します'); end;
訂正です 簡単な→簡単に
ご教授ありがとうございます! 早速その方法をやってみます
#13#10 は、マジックナンバーっぽくてイヤンと思う人は、sLineBreak 使うよろし
658 :
名前は開発中のものです。 :04/06/17 09:38 ID:gyW9IQUR
>>657 なにをするものか、記事を読んでも判らない漏れは言ってよしでつか?( ´Α`)
OpenGLじゃなくてQuadrupleDでハイトフィールドやってるサンプルって無いですか?
661 :
657 :04/06/18 20:27 ID:FSomQZ/I
>658 いろんな用途に使えると思うけど 私はlスクリプトでキャラの動きなどを書こうかと思ってます。 >659 DMonkeyかぁー ヘルプしか見てないけど、アプリと同期して連携するの難しいっていうか 出来ないように見えたんだけどどうなんだろう
普通に音を鳴らしてみた。簡単だった。 同時に複数鳴らそうとした・・・・・・・・・・・・できねぇ。 これができないとゲーム音楽できないっつーのに。 ダイレクトX使わないとかなり難しいようですね。
MMSystemだよなぁ
666 :
名前は開発中のものです。 :04/06/19 21:34 ID:YFedOTiV
おおすげー。 Luaって、t.kumagaiさんのとこのDLLいれたら動いた。 DMonkeyの方は、Delphiからマジ使いやすそうでいいね 問題は、 Application.ProcessMessages; sleep(10); この辺をどうするか・・・
あー、いやそうでなく、ゲームのメインルーチンに組み込む方法。 Luaだと、付属の似非スレッド(ファイバー)使えばよさげか?
ゴメン、コルーチンのことでした
>>669 複数のスクリプトの並行処理をどうするかってこと?
672 :
657 :04/06/20 23:11 ID:VjIK3+MS
書き込み規制くらってますた(´д`) お、Luaいいかも DMonkeyはスクリプト側でインスタンス生成するのか(見落としてた) >667 試しに(PascalScriptだけど)スレッドでスクリプト複数処理させてみたけど すんごい動きがぎこちなかったです。当たり前か・・・ 私はとりあえず、描画毎にアプリからスクリプトのメソッド呼ぶようにしました。 とりあえずこれでなめらかに動いてるから問題ないかな
うん、結局毎フレームごとに特定のルーチンを呼び出すのが手っ取り早いね なんか、Luaのコルーチン使おうとしたけど扱い方ムズイや・・・
674 :
名前は開発中のものです。 :04/06/21 16:58 ID:8Xx3uQUF
lua.dllってosのパスの通ったフォルダに置くんですよね?
↑プログラマー失格
そもそもプログラマーじゃありませぬ なにはともあれレスありがとう
679 :
名前は開発中のものです。 :04/06/22 18:45 ID:ewReYt/R
fiberと言えばKo-Ta氏のところ(過去日記)にいいサンプルあったんだけど ログ消しちゃったみたいだね。残念。 メタセコ形式をD3のSX形式で読めるようにしたサンプルもあったりして 便利だったんだよなー。
>683 Unproject あったっけ?
TSXFrame.WorldToLocal ではいけませんか
686 :
685 :04/07/03 19:54 ID:K8jUvbWM
LocalToWorldじゃん・・・
調べてみたのですが・・ >フレーム内での向きベクトルを、ワールド座標での向きベクトルに変換します(LocalToWorldRot) どうもこれではなさそうです。。 NowHomoginize >3次元非同次ベクトルに、W要素 = 1を付けて、3次元同次ベクトルに代入します。 NowHeteroginize >3次元同次ベクトルを、3次元非同次ベクトルに変換します。 >_div = Trueの時、X,Y,Z要素をWで割った値を返しますが、Falseの時は、X,Y,Z要素をそのまま返します。 NowLVToTLV >D3DLVERTEX型の頂点lvを、transMatによって変換し、D3DTLVERTEXにして返します >transMatは、ワールド座標系からスクリーン座標系までの変換行列です。 この辺の関数が使える気がするのですが、どうなんだろう・・
689 :
名前は開発中のものです。 :04/07/10 02:18 ID:92/QQvh8
delphiをめちゃくちゃ基礎から解説しているサイトって御存じないですか? 皆さんは何を使って勉強されました?やはり市販の参考書を買ったほうがよいでしょうか。 だとしたら、どこのものが良いでしょうか。全くのプログラム初心者だと仮定して。
検索とかしねーの?
>>690 Googleで何日も粘った結果です。プ板の人に聞いたところ、ネット上の解説サイトとかって
ほとんどが使い物にならないレベルばかりだということで、どうやら徒労に終わったようです。
>>691 見てきます。御親切にありがとうございました。
> プ板の人に聞いたところ、ネット上の解説サイトとかって > ほとんどが使い物にならないレベルばかりだということでどうやら徒労に終わったようです。 ナンでも人任せか
掲示板での質問も『人任せ』に該当するのか・・ そりゃ大変だ(w
人任せでオナニー
サイトで基礎解説なんてやってるとこ多いけど、大体にして断片的情報の羅列であって 体系とは程遠いわけで、ほとんどっつーか100%使い物にならないから変な癖覚えを避け るためにもハナっから期待せず本買え。注意点としては、秀和から出てるのだけはやめとけ。
del暦1年の若輩ですが del本色々買ったけど秀和のが一番見やすかったし 使いやすい、ラミネートインデックス付けてボロボロになるまで 使い込んでるよ。 アマゾンでdel関係の本を検索して、レビューを参考に するのがいいのではないかな?
Delphiを使い始めての3ヶ月の若輩ですが
一番最初に基本的なことを学んだHPが
ttp://www.wakhok.ac.jp/~tetsuo/delphi/text/ ↑ここで基礎的なことを理解しつつ、自分なりに覚えたことを
テキスト形式で、Delphi勉強というフォルダつくって忘れないように
保存して、忘れたらそこ見て思い出して、という流れで基礎を覚えました。
Delphi本は適当に3冊買ったけど、一番よかったのが秀和システムの
はじめてのObjectPascalプログラミング Delphi6・7 Kylix3対応 真田薫 著
ってやつでした。
体系的に学ぶ本ではなくて、〜を使ってみたいけどどう使うんだろ?
っていうときに、この本を参考にすると、すごくわかりやすかったです。
で、体系的に学ぶのに秀逸な本というのは、696さんとしてはどれがお勧めですか?
699 :
697 :04/07/17 05:25 ID:FsRXEdPA
実は俺がお勧めしてたのも はじめてのObjectPascalプログラミング Delphi6・7 Kylix3対応 真田薫 著 です。 これ一冊でゲーム作れると思います。
前回と今回の「Delphi買ったけど」おもしろいねぇ 他にもこういうDLLあるんだろうか
DLL?
702 :
700 :04/07/21 15:29 ID:Qhtpg/2T
>>701 DelけどにDLLを使ったおもしろいTipsが書いてあった
メルマガ読んでないと意味わからなかったと思うけど(^^;
703 :
名前は開発中のものです。 :04/07/28 08:49 ID:8E6nL/Ia
誰かdelphiで作った面白いゲームがあったら教えて。 なんかしょぼいのばっかりじゃない?その辺のdelphiゲーム。人口が少ないからか?
ADVRUNで作られたゲームは必然的にDelphiで作られたことになるのか?
今Delで作ってる。 [ジャンル] アクション [スペック] 俺のPCで動くこと [グラフィック] 気にしない [特徴] お手軽、スピーディー、爽快感を目標に。パクれるネタはパクる。 が、実際納得いくものになるかはわからん。 俺の誕生日sage
ガンガレ
707 :
名前は開発中のものです。 :04/07/30 00:13 ID:8w6U7C/W
708 :
名前は開発中のものです。 :04/07/31 02:12 ID:uE+XN7dW
TrueVision3D SDKのチュートリアルに日本語コメントつけてみました。
元のコメントを参考に多少削ったり付け加えています。
A01 シンプルなForm
http://gamdev.org/up/img/936.zip A02 シンプルなティーポット
http://gamdev.org/up/img/937.zip A03 複雑なティーポット
http://gamdev.org/up/img/938.zip 英語なのでとっつきが悪いですがちょっと触ってみた感じでは好感触
ただ、フリー版だと右下にロゴが出るのはちょっとなぁ
商用を無償で使わせてくれるんだからそれぐらい仕方ないけど
3DS, X, MDL, MD2, MD3やランドスケープ、影の描画、入力、3D当たり判定など
3DRPGやFPSゲーム向けという印象
モーション付Xファイルが扱えるのがうれしい
QDでもモーション付のファイルが扱えるけどファイル形式の都合で
モデラーが六角大王に限定されるのが痛かった
まだ色々と物色してる段階なので他にも良さそうなライブラリがあったら教えてください
710 :
名前は開発中のものです。 :04/07/31 11:17 ID:SEEsBAgx
>>708 というかモーション付Xファイルなんて
DirectXの関数だけで普通に使えるやん。
711 :
名前は開発中のものです。 :04/07/31 11:59 ID:uE+XN7dW
>>710 QDには無かったのでうれしかったんです……
ひょっとしてTV3DってSDKインストールしないと作ったソフトは起動できない?
配付の記述がライセンスぐらいしか見つからなかったので試してみた。
TV3D.DLL、TVUTIL63.DLLに加えてさらにTV3SDK以下のフォルダに
入ってるDLL全部試してもダメだった。
ライト版SDKをチェックを全部はずしてインストールしても
ソフトは動くのだけど一体何がインストールされてるのだろう。
http://www.truevision3d.com/download.php
>>714 えらーがでて起動しない
デルフォーイのゲームのソース晒してるサイトがあれば教えれ
教えてください。
718 :
名前は開発中のものです。 :04/08/11 06:26 ID:R1FDJ1jl
すみません、質問があります。 シューティングゲームを作っていて、画像を回転させたいと思ったんですけどやり方がわかりません。 どのようにやればいいのか、知っている方いませんか?
そういや普段EL使ってるから分からないな。。。 DELに関係ないか。。。
>>718 フォトショップで画像開く
↓
回転させる
↓
保存する
>>718 sin、cosで座標を置換する
リアルタイムでやると時間がかかりすぎるからゲーム開始前に全通りの画像を用意する
透過処理も必要なので注意
>>716 このスレと前スレにイパーイある
>>708 GLScene
>>705 誕生日乙&がんがれ
>>704 Excelで作られたテトリスは必然的にVC++で作られたことに……なるかいっ!!
>>689 滅茶苦茶基礎ならマニュアルがいい
でも初心者には発見できない(デフォルトだとC:\Program Files\Borland Delphi Personal Installer\documentation)
レス乙
Quadruple Dを使ってブロック崩しを作っています。 マウスを使ってパドルを動かそうと思っているのですが、 マウスのX座標を、そのままパドルのX座標にする方法がわかりません。 フリーのDelphi6使用です。 どなたかよろしくお願いします。
726 :
724 :04/08/13 11:28 ID:d+BhuHhM
>>725 なるほど。
うまく出来ました。
厨な質問にありがとうございました。
727 :
入院中 :04/08/13 12:15 ID:y25szJtr
ちなみにグローバルな座標をコントロール上の座標へ変換する方法。 var pt : TPoint; X : Integer; begin GetCursorPos(pt); //pt := Mouse.CursorPos; X := (HogeHoge as TControl).ScreenToClient(pt); end; QDには使えないのでsage
728 :
名前は開発中のものです。 :04/08/13 23:50 ID:0HSGQtMV
730 :
名前は開発中のものです。 :04/08/14 14:56 ID:C+lbnG9P
QD3で頂点変換ってどうすればよいのでしょうか? QuadrupleD3.0でハイトフィールドを作りたいのですがポリゴン表示の方法がわかりません。 頂点変換済みでの表示方法は過去ログにあったのでわかりました。 Meshクラスに頂点のデータを渡せればベストなのですがリードオンリーのようです。 DirectXを調べてみてもDirect3DXライブラリを使う方法しか出てきませんでした。 QD3には行列を扱う関数があるのでそれを使い頂点変換してみたのですが 何も表示されなくなるだけでした。 Delphi/OpenGLでのハイトフィールド表示はうまくいっています。 また、C++/D3DXを使った表示もうまくいきました。 Delphi/QD3でぜひやりたいのでよろしくお願いします。
久方ぶりにSANDMAN氏復活。 QDもアップデートしてくれるかな。
プログラムをいじったことのない者がDelphiでゲームを作ろうと思うのですが 近所にDelphiの本が売ってなくて注文しようと思います 最低限必読の本とゲーム作りに役立つ本それぞれおすすめの一冊を教えてください つくろうと思うのはカードゲームです
736 :
名前は開発中のものです。 :04/08/20 15:50 ID:hPbRtLJP
2004-0820更新 Quadruple D Ver. 3.01 + DirectX9ヘッダ QuadrupleD_301.zip(1.46M) Ver. 3.00 → Ver. 3.01 TSXTextwriterにフォントキャッシュ・アンチエイリアシング描画機能追加 TDDSDWave3Dのコンストラクタのうち一部の引数に、IsStereoが指定できなくなった。また、TDDDSDWave3DにステレオのWaveファイルが読み込ませられなくなった。 TDDSDCaptureの初期化ロジックの見直し DDIDEXにて、JoyStickNamesが正常に得られていないバグを退治 TDDIDEX.DeadZoneプロパティの初期値を30に上昇。デジタルジョイパッドではDeadZoneがかなり広くないと誤動作する物が多いため。 その他バグフィクス キタ━━━━━━(゚∀゚)━━━━━━ !!
737 :
名前は開発中のものです。 :04/08/20 22:27 ID:3rnbXr2E
738 :
入院中 :04/08/20 22:58 ID:uSwxkFck
GetGlyphOutLine使ってるのか・・・ あれ重いとかいう話なんだがどうなんだろう
739 :
名前は開発中のものです。 :04/08/21 14:22 ID:KCIXGpTq
ひさしぶりに差し替えてみて思い出したんだけど、 デバッグメッセージをONにしてるとI/Oエラーで止まるんだよね。>QD 俺だけ? あと、新しいTextWriterだと空文字で描いたテクスチャ内容クリア出来ないのね。
TextWriterからBrushが無くなったしなぁ。 文字を書き込むのに必要最低限の矩形しか更新しないっぽい。 漏れのとこだとDel6だけどデバッグメッセージ入れてもI/Oエラーでてないよ?
741 :
名前は開発中のものです。 :04/08/22 21:37 ID:8nhHO49g
Ver. 3.01 → Ver. 3.01a
s_mathpack内、NowPointInBox関数の修正
TSXLight.SetRangeメソッドの修正
等、GamDevPukiWiki掲載の正誤表を元に、マニュアルなどの訂正。GameDevPukiWiki有志のみなさんに感謝します。
http://www-fu.magma.ne.jp/~hayase/ キタ━━━━━━(゚∀゚)━━━━━━ !!
QDの更新は今月やってまたしばらく停止するっぽい 掲示板に書いてあった 要望するならいまのうち
743 :
名前は開発中のものです。 :04/08/24 04:46 ID:ETmFlfFn
爆裂氏がいろいろツール公開してくれるみたいね。 ありがたや。
>>742 Clootieヘッダにしてくれ、なんていうのはだめな要望かな?
QD3.01でTDGTextureをレンダーターゲットとして 使おうとすると飛ぶのが治ってるね。 (前はD3DPOOL_DEFAULTを指定すると動かなかった) 要望はプロジェクションに正射影の追加くらいかなぁ。 正射影自体は簡単に追加できるけど、 ライブラリに元からあったほうが使い勝手はいい気がする。
QD2.13使ってる人って、もういないのかな? Ko-ta氏のAlpLib32(俺カスタム)とセットでかなりいいかんじで DX7だから型落ちマシンでも結構動くんだけどね。
QDのマニュアル見ながらいろいろ試してるんだが。 TDGTexture#LoadFromFileで読み込める形式の 32ビット画像 … 上位8ビットをα値として、下位8ビットずつをRGBの順と解釈します この32ビットアルファ付きビットマップって、どう作るんだー?
752 :
名前は開発中のものです。 :04/08/27 17:09 ID:RmCOC2BC
よし! RPG・・・というか戦闘があるアドベンチャー作るぞ! リハビリかねてゆっくり亀アタマでやろう。 夏休み中に思い立てばよかったけどん・・・('A`)
753 :
752 :04/08/29 20:35 ID:dyvwqaa1
ゲームらしいゲームを作るならアクション・シューティングが簡単 ていう理由がわかった気がするorz キー入力ひとつとっても、画面により処理わけたり色々大変だコリャ・・・ (lll´Д`)フゥ
何度も挫折して、少したって一念発起して、また挫折して すごいゲーム見てまた復活して、飽きて、復活して、力尽きて でも蘇って、6年ぐらいたつとそれなりのものができるわけよ。 昇六の時から始めて今だ何にもできてないもん。全然へいき。
漏れもプログラミング始めてから人様に見せられるようなゲームが作れるようになるまで 10年はかかったなぁ。意地でもプロになって、ゲーム作りで生活するとかならもっと ガツガツやらないといけないんだろうけど、趣味だしまぁいいか。
俺は小五から初めて、今や三十路の職業ゲームプログラマー。 やる気と論理的に考えることができればなんとかなるってもんよー(´Д`)
757 :
752 :04/08/30 23:09 ID:AU1d+QMD
だーーんだん、ちょっとずーーーーつだけど戦闘っぽくなってきた、かも。 とりあえず味方一人と敵ひとりだして、交互に攻撃させようとしとる。
こんばんは初めまして。 ここでゆっくり地道にdelphi勉強していこうとおもいます よろしくおねがいします
Delphi6Personal以外だったらフリーソフトとして公開していいんだよね
760 :
752 :04/08/31 16:21 ID:CalRYCHm
Delphi6Personalはフリーとしか公開しちゃいけないんじゃなかったっけ?
761 :
752 :04/08/31 16:22 ID:CalRYCHm
うぅだんだんソースがごっちゃになってきた
>>758 がんばろうね。
764 :
名前は開発中のものです。 :04/08/31 16:59 ID:2dkXKjIM
>>760 フリーならPersonalでもいいよ。
765 :
752 :04/08/31 17:26 ID:CalRYCHm
>>763 マラソンスレのひとだよね。Delphiでやってるの?何作ってるんだろ
戦闘シーンのプログラムがこんなに大変だとは思わなかったZE・・・
1 コマンド選択・決定
2 攻撃モーション実行
3 攻撃ダメージ計算実行
4 次のキャラへ 最後のキャラだったら1へ
たった、たったコレだけのはずなのに… 2、3がちょっとやっかいだ
ここらへんの細い処理のサンプルどっかに転がってないかなぁ 事Delphiだとサンプルが少ない。。。
俺が作るか
おーぷんそーすできぼんぬ
とりあえず動きゃ書き方どうでもいいって考えで 簡単なタイピングゲム作りに取り掛かります でば。
1日目 問題集ファイルの読み込みと問題の表示まで完成。 また明日 では。
>>765 2はグラフィックライブラリとのやりとりだし
3はただの数値計算だし
どれもDelphiだから難しいわけではないじゃないか
そのへんはC++で書かれたサンプルとかから引っ張ってこれるようにならないと
そんなサンプル落ちてないし
771 :
752 :04/09/01 17:40 ID:Dm7yIpL0
規制解けたー(仮)
>>769 内容の問題じゃなくて、メインルーチン上でどのタイミングでイベントを呼び出すか…
そこらへんにちょっと手間取ってました。すいません。
他言語での処理を参考に、ってのは今がんばってます。
最初はちんぷんかんぷんだったけど、結構なんとかなるもんですね
>>770 思ったよりもサンプル少ないと思いました
マップ表示、移動くらいならゴロゴロ転がってるんだけどね。
とりあえず上記の問題はおいといて、素早さ順に行動順をソートするトコロを作ってる。
昇順でソートするサンプルみっけたから、とりあえず昇順でソートして後ろから実行すればいいや。
そんなこと言わんと せっかく降順まで教えないでくれてるんだから、 ひねって自分でソートすれー
昇順は降順のマイナ(ry
774 :
752 :04/09/01 19:16 ID:Dm7yIpL0
・・・あっ!Σ(゚Д゚) ∧||∧ アータシサクランボー
2日目 なにかがおかしいみたいで思うようにいかなかった。 講座やってるサイトで勉強することにした。できている部分はファイルをTMemoに読み込み」まで また明日 では。
776 :
752 :04/09/01 21:35 ID:bVyghI9O
6日目 四苦八苦して味方ターンのコマンド選択部分の基礎システムが出来た。 基礎中の基礎だけど。 とりあえず簡単なダメージ計算も入れてみた。次は敵。 昇順降順の問題で幼稚園児以下の思考能力をさらしてしまった。もうお嫁にいけない。 また明日 では。
くじけず頑張ります。
>762 サンクス!なんか、いやっほぉぉぉぉぉぉうジャンパイヤ!って気分です。クマー!
女性だったの?
780 :
752 :04/09/02 22:24 ID:gUzVQjXl
乙です。いい感じだと思います。 3日目 タイプ成功でスコアアップ、タイプ終了までの時間が短ければボーナスでスコアアップ タイプミスでスコアダウン、みたいな感じの機能をとりあえず付けて完成。 また明日 では。
782 :
752 :04/09/03 17:27 ID:BFzSQ46/
>>781 プレイありがとう!
ところで何作ってるの?タイピングゲーム?
8日目
とりあえずキャラクター画像を試作。
キャラクターらしい画像になるだけでちょっとゲームっぽくなってきた。
コマンド選択あたりがもうちょっと気になるけど、簡単な画像の差し替えに入ることにした
ソースがぐちゃぐちゃだ。変数減らそう
783 :
758 :04/09/03 19:11 ID:eVk8s4A5
こんばんは
>>782 一応タイピングゲームのつもりで作りました。
今日からは何に取り掛かるかまだ決めてません。
784 :
752 :04/09/03 19:37 ID:Et9xRJFq
すっげー真面目な作りで感動ワラたますた
786 :
752 :04/09/04 05:27 ID:w06VF2qv
787 :
752 :04/09/04 05:29 ID:w06VF2qv
var→ver いくら英語できないからって・・・orz プログラム書いてるときの変数宣言も辞書必須!
DELじゃvarはよく使うからな。
789 :
758 :04/09/04 21:05 ID:ZIhc9Tao
5日目 テトリスを作ってみます。インベーダーゲームはその後にやってみます。 また明日 では。
カタカナ変換で英語出るようにしとけば安心。 とかいいつつ変数の大半は日本語なので人様には見せられません。
791 :
752 :04/09/05 02:54 ID:jKq1C1UW
>>788 そ、そう、そうなんだよ!ついつい手元が狂っちゃってさ〜あはは ('A`)
>>789 なんかテトリスの方が難しそうだな。ブロックの回転あたりが。
まあそこだけクリアすればなんとかなる、のかな?
>>790 mikata teki nurupo kougeki とか?
今日はいまいちはかどらないなぁ。
俺もカタカナが半分はあるな。自分が見やすければ良し。
IMEかAtokの辞書機能を使ってカタカナ変換すると辞書いらないですよ あとは法則を自分の中で完成させて、例外の無い変数命名ロジックを完成させてしまえば後々楽です。 それと、ソース公開するデメリットはほとんど無いのでソースも一緒に upしておくと助言を受けれたりデバッグしてくれたりといい事があるかもしれません。
794 :
752 :04/09/05 23:30 ID:R40JfaF/
今日こそノルマ達成せにゃーヽ(`Д´)ノ
>>793 >カタカナ
タイピングの訓練になるから別にいっかな、って思ってたり。
いや困るほど遅くはないけど。
>ソース
ちょっと・・・人様に見せられないほどごっちゃなんで○| ̄|_
795 :
752 :04/09/07 00:40 ID:8noeXjnC
あぁ… 付け焼刃で組んできたコマンド選択の部分がもうメチャクチャだ… ひとつコマンドが増えると30倍くらいごちゃごちゃに('A`) ある程度先を見越したプログラミングも大事だな
状態遷移図を描きな
状態遷移図は弱者の武器じゃないと思うよ、俺は。
書けない、書いても実装出来ない、書いたけど意味が無い、なんて事になりやすい。
もちろん、書いてうまく行く人は書くべきなんだろうけど。
それより、最初に俯瞰で3層構造にすると決めて、上から埋めてった方がいい。
>>786 のRPG戦闘なら、メインループが1層目。
コマンド入力処理、敵AI、戦闘処理、描画が2層目。
攻撃、防御、魔法、アイテム使用などが3層目。
コーディングする時は、全部MAINに書かずきちんと分けて管理する事だけを念頭に。
テトリスやインベーダーゲームを努力と根性で作るのは簡単だけど、
テトリスやインベーダーゲーム、RPGの戦闘にしか通用しない手法(力技)だと、それ以上のものを作るのに苦労する。
勉強用の小物でもきっちり階層化、構造化して規模の拡大に耐性をつけておいた方がいい。
最初に俯瞰で手続きや関数に分けてしまっておくと、
今日はこの手続きを完成させる、みたいにモチベーションも保ちやすい。
1層目、2層目は分岐のみを書き、コードをづらづら書くのは3層目のみにすると、エラーや仕様変更にも強い。
三階層以上になると、逆に流れを把握するのに苦労してしまうので効率が落ちやすい。
798 :
752 :04/09/09 22:31 ID:yKYyqWZk
799 :
752 :04/09/09 22:35 ID:yKYyqWZk
>>796 >>797 一応、3層構造を念頭にルーチン部分を再構成してみた。
1層目 メインループでゲームモード判断(今はバトルだけ)
2層目 キー入力処理、描画など
3層目 2層目で決めたパターンで各キャラクタークラス内のイベント呼び出し・実行
大体、こんな感じでいいのかな?
まだスッキリしてないけど、徐々に直してけばいいや。
戦闘の雛形が完成するのはいつの日や〜 戦闘以外も作れるようになるまでガンバルゾ
解像度デカッ
801 :
752 :04/09/09 23:05 ID:mF1fl5eI
もともと絵描くのが好きでどうせ作るなら目いっぱい好きに描けるように… て思ってるんだけど、やぱデカいかなぁ…さすがに
WindowsXPも最低800x600な昨今ですし、別に解像度は構わないんじゃないでしょうか。 それにしても、絵うまいですね〜。羨マスィ( ゚Д゚)
昔はデカイといえば誉め言葉だったのに_| ̄|○
う、そういうつもりだったんですか。申し訳ない_n○
805 :
752 :04/09/10 17:15:42 ID:TBP8wsKK
>>802 800*600ならフルスクリーンにしてもそんなにアラ目立たないんだよなー
俺のモニタが1024*764だからだろうけど。。。
>>803 う、そういう意味だったんですか。ありがとう_| ̄|O 素直に喜んどきます!
キー入力部分は書き直した方がいい気がする。 今のは、1秒間に60度チェックしてるだけなのでかなり漏れるし、押しっぱなしで固まる。 シンプルに行くなら↑↓←→ABで変数用意して、押されたらTrue、離されたらFalse で、ループ側では変数のみを読むとか・・・。いっその事オブジェクト(class)にしてしまうと後々キーコンフィグとか楽かも。 Sleep(0)はSleep(1)に書き換え。CPU占有される色々しんどい。
class内部の変数はprivateに置いて、手続きか関数でいじくるのがいいらしい。 private HP : Integer; public procedure SetHP(i : Integer);//HPに指定したHPを入れる procedure GetHP;//HPの値を返す。 自信無いので不安だけど、こんな感じ? これを発展させて、 procedure 攻撃された(攻撃してきた相手;Tcharacter); //ダメージ処理やらアニメーションやら死亡判定などを内内に処理する。 get攻撃してきた相手の行動 get攻撃した相手がとった行動の攻撃力 procedure ダメージ処理 procedure アニメーション procedure 死亡判定 みたいな感じで全部取ってきて処理する。 めちゃめちゃ自信無いので不安だけど、偉い人が補完してくれると思うのでそっちを参考に。
private fHP : Integer; public procedure SetHP(hitp: Integer); published property HP: Integer read fHP write SetHP;
809 :
752 :04/09/10 21:19:11 ID:TBP8wsKK
>>806 えっと、
キー入力処理はOnIdleのFPS調整用の記述中においといて、
常にチェックするようにしたほうがいい、ということですかねね?
Exitの前あたり。
元々InputKeyつう変数で判断してたんだけど、なんかあまり意味なさそうだったからDDIDEXStickにしちゃった。
オブジェクトにするの、いいかもしれないなぁ。キーコンフィグ楽そう。そのうちやってみます。Sleepは戻す。
>>807 かなり参考になります。こっちの方が おぶじぇくとしこう っぽいナ。
今はダメージ処理・表記とか、攻撃側で持たせちゃってた(手抜き)んで、そんな感じで内包させるようにします。
あぁあ、やっぱりソース見てもらってこういう指摘してもらえるてすっげ参考になるなぁあ。
810 :
752 :04/09/10 21:27:52 ID:TBP8wsKK
>>808 むむむ、ぱぶりっしゅなる単語が・・・。
ヘルプ読んでもイマイチワカンネ
HPにfHPの値を読み込んでHPでSetHPを実行?
例えば味方キャラが敵キャラ攻撃したとして、
味方キャラの内部で敵キャラのHPを読んだりと参照した場合、
パブリッシュ部分が自動的に実行される、というコト?
ううーん、なんか便利そうな感じがする。Let's Google!! サンキュー
>>808 ありがとうございます。
実はここんとこH(中略)Pしか触ってないので(ry
>>809 メインループで呼び出してるので、1秒間に60瞬間しか読み取れてません。
行動選択の場面や最初のplsZの所でチョンって押すと入力を受け取れない事があるので、
OnKeyDownに:=Trueを、OnKeyUpに:=Falseを書いて、
メインループ側では変数がTrueかFalseかを見るようにすると
いつ何時押されてもキー入力を読み取れます。
これがベストではないと思いますが、とりあえず。
812 :
752 :04/09/10 21:34:17 ID:TBP8wsKK
全然違うやン>俺
813 :
752 :04/09/10 21:36:51 ID:TBP8wsKK
>>811 あ、ありがとうございます。とりあえずそっちでやります。ベストでなくても今よりはいいハズ。
>>810 だいたいそんな感じ。
可視属性、変数のスコープってやつを勉強するといいかも。
>>807 の場合だと、外部からHP変数にアクセスするにはGetHPやSetHPを呼ばないといけないわけだが、
>>808 だと、ただ単に「TOreClass.HP := 10」みたいに代入できたりして値を扱いやすくなるような気分。
・・・どこか間違ってたら修正きぼん(//∀//)
おれも何か作ろうかな
815 :
752 :04/09/10 23:58:03 ID:TBP8wsKK
むぅぅー Sleep(1)にしても、CPU占有率が50%近い・・・ 戦闘画面にもなると90%!ウワ(AAry ビットマップ減らして云々・・・ なんかもっと根本的な部分で処理食ってるような希ガス・・・
816 :
752 :04/09/11 23:43:45 ID:C9Y+Rmhe
>>807 >>808 を参考にキャラクタークラス周辺をいじくる。
攻撃・ダメージ・魔法エフェクトを中心に。
はて、攻撃するキャラクターにはどこまで持たせて何を被攻撃キャラに渡せばいいのやら。
うーん、こういうのは苦手だに
818 :
752 :04/09/12 01:23:52 ID:6giDMfAq
sleep(2)にしたけどあんま変わらないなー。 解像度がでかすぎるのかな?ビットマップ結構作ってるしー いいや、とりあえず保留
Sleepは16msec以下単位ではまともに動かないのであまり意味ないっす。
そんなことは無い。
ちゃんと1mからまともに動くぞ
ただのSleep関数は分解能が悪くて1ms単位では動かない。 マルチメディアタイマーなら問題なく動くがCPU占有度に反映されにくい。
だとすればどうすればいいのか そこまで書いて欲しかった
「Sleep timeBeginPeriod」でぐぐると色々わかるよ。
だれかゲーム用の高精度でCPU使用率が低いTTimerコンポーネントつくってクレ!
1ループに何秒かかってるか調べたら良いと思う。
828 :
752 :04/09/13 04:09:07 ID:kLjTYWVL
戦闘ある程度いったんで、イベントシーン部分制作開始。 マップデータ読み込んで、そんなかのイベント読み込んで、云々… どうしたものやら
830 :
752 :04/09/13 05:52:28 ID:piMsmPAO
831 :
752 :04/09/13 05:58:34 ID:piMsmPAO
で、
>>808 のどこがおかしいか考えてみた。
プロシージャの名前が直接SetHPになってるとこかな
private
fHP : Integer;
public
procedure AHP(hitp: Integer);
published
property HP: Integer read fHP write SetAHP;
とりあえずこんなんになればいいのかな?
…なんかゲームどころか基礎中の基礎だな、コレ。次からチラシの裏に書くようにシマス スマン
832 :
752 :04/09/13 06:00:37 ID:piMsmPAO
う、なんか違うし…
propertyの読み書きは普通privateでやる、はず
普通にやるとこうなります。 FHitPoint が嫌なら、 FHp かな。 この辺は微妙。 private FHitPoint: Integer; procedure SetHitPoint(Value: Integer); public property HitPoint: Integer read FHitPoint write SetHitPoint;
835 :
752 :04/09/14 18:24:06 ID:BGXB6ba6
>>833 >>834 ああもう、みなさんありがとうございます
やっぱ行き成りRPGは苦しかったかな
しばらくはソースの書き換えに専念します。
未完成のままほっとく気は無いんで書き込みなくても地道に作業してると思ってください。
836 :
752 :04/09/16 01:29:08 ID:f9ZRIWAs
やたらプロパティが増える。 戦闘用キャラクラスひとつとってもMAXHP MAXMP HP MP AP DP SP X Y他もろもろ これら一つ一つにproperty設定するしかないのかな?30行くらい行きそう… property hoge: integer read integer write integer みたいに設定でき… あー、配列でもたせりゃ楽チンじゃーん('A`)
837 :
752 :04/09/16 02:26:11 ID:f9ZRIWAs
とりあえず解りやすいように THoge = (MAXHP, MAXMP, HP,MP); TChara = class private FStatus : array[0..3] of integer function GetStatus(index: integer): integer; procedure SetStatus(index: integer; const Value: integer); public property Status[index: integer]: integer read GetStatus write SetStatus; end; function Chara.GetStatus(index: integer): integer; begin Result := FStatus[index] end; procedure Chara.SetStatus(index: integer; const Value: integer); begin FStatus[index] := Value; end;
838 :
752 :04/09/16 02:28:09 ID:f9ZRIWAs
で、
Chara.Status[Ord(HP)] := 10;
みたいに出来るようにした。本当はChara.HP := 10としたいけどわかんない
>>834 他みなさん
プロパティってこんなでいいですかねー
一応変数系は全部プライベートに入れるようにしてます
SetStatusのconst、とっても動くけどみんなつけてるっぽいからつけてみたんだけど
ここにおけるconstってどういう意味?
「代入専用だからValueの値をいじくっちゃダメですお〜」という予防策?
ord使わなくても引数にTHogeでいいんじゃないでしょうかね? SetStatus(St:THoge;Val:integer); でSetStatusの中身でTHogeをcase文で分岐とか。 的はずれな事言ってたら申し訳ない。 自分もconst752さんと同じ意味だと思ってたけど やっぱ特別な意味あるんですかね?
>>837 それは逆に分かり難いと思います。
VCLソースを見れば解りますが、propertyだらけなのです。
怖がらずに property にしましょう。
>>838 const はちょっと説明が難しいです。 マニュアル読んでも解らないでしょう。
「ルーチン内で書き換えしない構造体と文字列を渡すときは const を付ける」
と覚えておけばよいかな。
procedure SetPosition(const Point: TPoint)
とかね。
あと、範囲チェックは実行速度が遅くなるので、通常はOFFにします。
片っ端から範囲チェックをしてしまいますからね。
で、通常はGetStatus内で自分で範囲チェックします。
これが property を使うメリットの一つです。
↓こんな感じ
function TChara.GetStatus(Index: Integer): Integer;
begin
if (Index < Low(FStatus)) or (Index > High(FStatus) then
raise Exception.CreateFmt('TChara.GetStatus: 範囲外ざます(%d)', [FStatus]);
Result := FStatus[index]
end;
いずれにしろ、こんな所で配列は使うべきではありません。
MAXHP MAXMP HP MP AP DP SP X Y のもろもろを property にし、
代入時に値がおかしくないかチェックするのです。
これは言わば、Delphi の哲学です。
因みに、const は実行速度と関わりが深いですよ。 以下のコードを実行し見てください。 速いPCは LoopCount を増やさないと分かり難いかもしれません。 var Start: DWORD; R: TRect; LoopCount: Integer = 3000000; procedure Test1(const Rect: TRect); begin end; procedure Test2(Rect: TRect); begin end;
procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin Start := GetTickCount; for I := 1 to LoopCount do Test1(R); Button1.Caption := IntToStr(GetTickCount - Start); end; procedure TForm1.Button2Click(Sender: TObject); var I: Integer; begin Start := GetTickCount; for I := 1 to LoopCount do Test2(R); Button2.Caption := IntToStr(GetTickCount - Start); end;
>VCLソースを見れば 見たいのはやまやまなんだけど(つ
>MAXHP MAXMP HP MP AP DP SP X Y のもろもろを property にし、 >代入時に値がおかしくないかチェックするのです。 と書きましたが実際には面倒なので、私は property HitPoint: Integer read FHitPoint; とし、代入は同一ユニット内でのみに限定してます。
>841 ? LoopCount: Integer = 900000000; でやってみたがどっちも同じ3109だったぞ??? 数回繰り返しても誤差範囲でどっちもわずかにばらつく程度。
もしかして最適化された結果、関数は呼び出されていないのかも…。 あるいはもっと大きな構造体でないと駄目かも。 TBitmapInfoHeaderでどぉ?
const(定数パラメータ)についてヘルプを調べてみた。 基本的にそのルーチン内では普通の定数と同様に扱われる。 しかし別のルーチンへ変数パラメータとして渡すことは出来ない。 ただしオブジェクトの参照を定数パラメータとして渡した場合は、 そのオブジェクトのプロパティに変更を加えることが出来る。 また、構造化型パラメータや文字列型パラメータに対して const を指定すると コンパイラはコードを最適化する。 ということらしい。 最適化と、関数や手続きに渡したパラメータが、内部で呼ばれる別の関数・手続きに 誤って参照渡しされるのを回避するために使うようだ。
848 :
752 :04/09/16 22:17:02 ID:IoHTZBPW
バイト中作業着に入れてたボールペンのインクが漏れちゃいました。 どーにかして落とせないっすかね
849 :
752 :04/09/16 22:18:10 ID:IoHTZBPW
すいません誤爆しました
850 :
752 :04/09/16 22:46:31 ID:IoHTZBPW
>>839 >>840 >>847 ありがとうございます。
大人しくpropertyにします。面倒だけど。
>const
かいつまんで言うと、
「constつーのは指定した引数をプロシージャとかで他の場所に渡さないようにしますよ。
いらないバグ増やさないようニね。ついでにDelphiさんが内部でわかりやすくなります早くなります」
ということか あれなんか違うような気がするまあいいか、
「ルーチン内で書き換えしない構造体と文字列を渡すときは const を付ける」で。
うん、またひとつ賢くなった。
851 :
名前は開発中のものです。 :04/09/18 08:46:58 ID:zqfxuOMV
852 :
752 :04/09/18 09:01:22 ID:4wMEwn6K
戦闘組むのちょっと疲れたから気分転換にイベントの部分組み立て中。
スクリプト判定は前作ったADVのソース使いまわし。
>>851 フォーラムにヨダレが出そうなソースが沢山…
英文わからなくてもなんとか読めるっぽ。
日本にもこういうトコないのかなぁ。
探せば日本でもゲームのソースはあるけど、 汚いので参考になりませんよ。
日本の中心はこのスレな飢餓する
>851 そのページになんかDelphi9がどーのこーの・・・って書いてあるが ただの戯言かな?
859 :
758 :04/09/19 22:09:58 ID:tx0ewoH4
6日目 インベーダー風ゲームの制作に取り掛かる 自機と敵機の表示まではなんとかやり遂げる
6日目 間違ったことをしていたようなので作り直すことにした。 自機の表示と移動まではやり遂げた。 自機移動の際、自機が画面両端からはみ出してしまう問題を 解決できません。どなたかアドバイスお願いします・・。
>>860 MyPos : TPoint; //自機の座標
MySizeX, MySizeY : Integer; //自機画像のサイズ
だと仮定して、入力判定のときに
if not PtInRect(Rect(0, 0, Form.ClientWidth-MySizeX, Form.ClientWidth-MySizeY), MyPos) then
begin
//ここで入力を無かったことにするコードを書く
end;
とか?
描画前に移動後の座標を計算して、はみ出るようなら移動後の座標を 画面端の座標に変えてから描画。
863 :
752 :04/09/20 05:37:25 ID:wNEgc/97
簡単なヤツでおおまかに書くと
if 自機X-移動数 < 画面 0 or 自機X+移動数 > 描画領域サイズ then
begin
自機X = 自機X+移動数;
end;
自機Xに機体のサイズ足したり引いたりしてね。
左右キー別に処理わけてたらif文を分解して。
ヘルプなりなんなり調べて
>>861 の意味が解ればそっち使ったほうがイイカモ
864 :
752 :04/09/20 05:50:45 ID:wNEgc/97
あれ、なんかヘンだ。 ちょこっとバイトで疲れたので昨日は作業してない。 自分でスクリプト処理作ってると、ツクールがどれだけ楽か身にしみるー ちょこっとノウハウあったから良かったものの、何も無かったらたぶん諦めてたな
確かに変だな。 判断の時に「自機X-移動数」と「自機X+移動数」の状態でチェックしてるのに 計算の方では「自機X+移動数」しかしてない。 移動数にはプラスもマイナスもあり。プラスで右、マイナスで左、としておいて if 自機X+移動数 < 画面 (以下略 が正解。
866 :
752 :04/09/20 07:04:09 ID:wNEgc/97
訂正アリガトネ スクリプトはどうやって組み込もう… *Evt001{ Move,Chara01,100,380 Message,Chara01,あああああ #Evt002 } とかやって、スクリプト名判定して、カンマテキストで切り出して… あーもう面倒くさい そういえば、文章表示するとき、一文字ずつ表示すんのはどうすりゃいいんだ? 等幅フォントにして、メッセージ一文字ずつコピって表示?他にいい手あるのかな
868 :
752 :04/09/20 13:25:06 ID:wNEgc/97
イベントスクリプトが波に乗ってきた。 プロパティで質問。 private部分の変数は、一切アクセスしないほうがいいのかな?そのクラス内のイベントだったらいじっても可? 例えばTCharaにFHogeという変数があったとして、プロシージャAAAで procedure TChara.AAA; begin FHoge := 111; end; というカンジで。もち他のクラスから参照するときはプロパティのHogeの方を・・・。 それともpropertyのHogeの方をいじったほうがいいのかな?
7日目 自機が画面からはみ出てしまう問題を解決しました。 次は弾を発射する処理に取り掛かろうと思います。では。
>868 手続きAAAのやってることはpropertyのwrite用手続きと同じ。 だからそんな手続き作るだけ無駄。 せっかくproperty用意してるんだからそっちで統一した方が可読性という点でも 好ましいし、仮にプロパティへの代入処理を変更したらAAAも書き換えないといけない。
privateなフィールドはそのユニット内からのみアクセス可能で、 ユニット内ならばいじっても良いですよ。
872 :
752 :04/09/21 16:53:33 ID:oPnfuIeo
>>870 >>871 ありがとうございます。
>AAA
例としてあげたんで、他にも色々やると仮定してでした。説明不足ごめん。
スクリプトの基本システム目処が立ちました。
マップとキャラクタの宣言(スクリプト側)を徐々に構築してって、戦闘の修正予定。
873 :
752 :04/09/21 22:07:02 ID:oPnfuIeo
マップデータからオブジェクト(キャラとかモノとか)の生成と、 イベントの実行が出来た。 まだキャラクタの自動移動とメッセージ表示しかできないケドね スクリプト通りにキャラクタが動くって、何度やっても感動するなやっぱ
752のゲームを遊んでみたい。
875 :
752 :04/09/22 07:02:06 ID:L/OcAB6m
>>874 なるたけ今週中に、自動実行イベントと、一部プレイヤー操作可能イベント、
ついでに戦闘再構成しちゃうんで、ちょっと待っててください。
876 :
752 :04/09/23 00:16:32 ID:wHw2Cb0k
とりあえずキャラクター移動の簡単な制御と、 キャラクターと重なってる状態でキー押すとイベントにジャンプできるようになった 後は応用だから重なった時点でイベント実行とかもできるはず でもまだどっか穴があるような気がしてならない 戦闘の再構築が思ったよりも難航、というかどっから手をつけていいのやら…('A`) とりあえずハードコーディングでゴリ押した部分をクラス化から始めよう。
8日目 自機が弾を発射できるようになりました。 当たり判定を考え中。 ちょっと質問です。 弾を発射したあとすぐにまた弾を発射させるキー(ここではスペースキーです)を押すと 最初に発射された弾の処理が無視されてしまうというか、元に戻ってしまいます。 弾が発射されて画面外に出るまで、スペースキーを無視するにはどう考えればいいのでしょうか。
878 :
752 :04/09/23 22:27:59 ID:XynxQ61t
「弾発射しちゃダメ」というフラグ(boolean)をつくる。 で、弾を発射したらtrue、弾が画面外に出たらfalse。 スペースを押したときにtrueかfalseか判断して、true(弾がまだある)なら無視。 とりあえずこんなんでどかな
現在飛んでる弾の数を記憶させておく 漏れは弾クラスを保存するTListで弾の数をチェックしてる 前回発射の時間を記憶させておいて一定時間以上たたないと発射しない等の処理を入れることもある if ボタン押した and 弾数<1 then begin   発射処理 //弾Listに追加するとか   Inc(弾数) end if 弾が画面外にでた then begin   弾消滅処理 //弾リストから削除とか   Dec(弾数) end
いつもどうもありがとうございます。 参考にさせていただきます。
8日目 弾を単発にすることができました。 クラスについて勉強しようと思います。使うのが便利だし当たり前らしいので^^; オブジェクト指向?の意味もあまり分からないのでその辺も知っておこうと思います では
882 :
752 :04/09/24 00:01:41 ID:4CmfOa6a
?日目 なんだかよくわからないバグが発生してワケワカメ しゃーないからふて寝。明日ゆっくりじっくりどこがおかしいか調べねば。
883 :
752 :04/09/24 23:27:46 ID:MaaIpIOc
バグ解消。 配列の要素数設定ミスという初歩的なモンだった。 安心して作業続行できっ。 戦闘直したら簡単なゲーム作ってアップします。
884 :
752 :04/09/24 23:59:09 ID:MaaIpIOc
しかしキャラクタ6体を描くだけでなぜCPU占有率が90パーもいくんだべが。。。 そんなにFPSいらないだろうからSleep(10)にしたら50パーぐらいになったケド。 同じ内容描いた時にQDとAlphaBitmapどっちが軽いか試してみよう。 ただ無駄な処理が多杉なだけな気もするけど。。。
おや、漏れも弾を発射するゲームを作り始めたところだ。固定砲台だけどな。
886 :
752 :04/09/26 01:02:04 ID:/3S2cz42
ちみは絵がうまいなぁ。まじで。
888 :
752 :04/09/26 13:17:32 ID:OVpX7/GL
>>887 お褒めの言葉ありがとう!幼稚園児の落書きみたいなCGしか用意して無いのにw
プログラムがしっかりしてきたらちゃんと描きます。
いまさっき生まれて初めて金縛りにあったんで製作再開
889 :
752 :04/09/27 22:42:02 ID:nfKU5Xws
一ヶ月目 最近ペースが落ちてる。 仕様(データ構造)の変化の対応に追われたり。 将来性を見越して柔軟なスクリプトにしようと欲が出てるかも。 今日はモーション関係をいじった。 もう少し修正して、次こそは戦闘に移りたいヨー アイテム・魔法ウィンドウあたり。 …もう一月たったのか。全然進んでね。
>>889 スクリプトはDMonkeyでいいんじゃね?
質問させていただきます TImageのxy座標を変数に代入するにはどのようなコードを書けばいいのでしょうか?
TImageのxy座標ってなに?
ないんですか・・・愚問失礼しました・
Image1.Top := ***; Image1.Left := ***; これでいいかな?
しまった逆だ。 X := Image1.Top; Y := Image1.Left;
何をしたいのか詳しく書いてくれると回答もしやすいんだがね。 TImageに描画されている画像のXY座標ならTImage.Canvas.Pixelsでアクセス可能。 詳細はヘルプを参照のこと。
897 :
752 :04/09/30 00:17:33 ID:r231rO+L
テスト期間中なんで進行ペースダウン。 一応1日1行はやってます 継続は力なり。 とりあえず簡単なモノ、ということでTStringListのaddobjectに目をつけてみた。 アイテムや魔法ウィンドウの項目を保持するのに便利そう。 概要みてると、なんとなくポインタっぽい気がしなくも無い
898 :
752 :04/10/01 00:50:18 ID:IpsvkX0Y
TStringListが滅茶苦茶便利なコトに気が付いた。 AddObjectで一々別々に魔法データ読み込ませなくていいし。 前スレにもあったけど、Delphiの強みの一つというのも納得。 あとWideStringもスクリプトに便利そう。 魔法選択ウィンドウをちょこっと作って今日は終了。
Object管理だけならTListでもいいとおもうけどね 正確に言うならTListから派生させて利用するObjectの型にあわせたListクラス 多少面倒だがSortを自前で複数用意できるのが強みかな
901 :
752 :04/10/01 21:42:16 ID:3GwFhSXY
>>899 うおぁ、TListなんつうそのまんまなモノがあったのか。
単純にリストアップしたいだけだから、こっち使おう。
902 :
752 :04/10/02 00:22:14 ID:p7oaBnZR
TObject(TList[i]).***とかって参照できて超便利>TList TStringList ソートはまたそのうちでいいや。 見やすいようにキー入力部分大雑把に分けちゃったら余計見づらくなって鬱。元に戻そう。 魔法ウィンドウをちょこっと作ってオワリ。
903 :
752 :04/10/02 02:14:16 ID:p7oaBnZR
魔法ウィンドウの基本部分が出来た。 ウィンドウ一個一個にカーソルオブジェクト持たせるのも何だけど、わかりやすいからいいや。 TListのおかげで取得部分も超スッキリ! コレをちょっといじくればアイテムウィンドウもすぐ出来るな。 ついでにキー入力周りがだいぶスッキリした。 前のヤツは同じコトを何回も書いたりしててやたら長かったから、ソコを頑張ってまとめた。 そろそろ要らない変数を減らさないと。
904 :
752 :04/10/03 00:36:46 ID:ealSLIdA
今日は微妙に進まなかった。 プロパティに配列持たせると、他のユニットでLength(Array, *)とかが使えないのが不便だ。 要素数記録するために変数一個持たせるのもアホらしい気がするし、どうにかできないかな。 うまく宣言すればできるのかな。
状況がよく分からんが、要素数が動的に変化する配列があって、 任意のタイミングでその要素数を知りたいのなら、配列じゃなくてTList使えばいい
906 :
752 :04/10/03 09:46:24 ID:PSbYmPs3
ちょいと独り言過ぎましたねすいません。 エフェクトを表示するクラスに表示する画像番号を格納した整数の1次配列を入れたかったんです。 でもproperty AAA[index: integer]: integer read...だと添え字かならずつけなきゃダメで、 他のユニットからだとLength(AAA)が参照できなかったんです。 参照できる位置に移動させりゃいいんだけどね。 整数型配列使いたいがために、TStringList使うのもアホらしーような気もするし。。。 がんばります。
添え字が無いからじゃネーノ? AAA[0]とか。いやよくわかんないけど。 おれも昨日にたようなことしたからちょっと気になる。 property Block[idx:Integer]: TBlock read getBlock write Put; default; ↑こんなの。 property AAA[index: integer]: integer read... の続きも書いとくれ
ごめんちゃんと読んでなかった 死ぬ
909 :
752 :04/10/03 10:15:15 ID:PSbYmPs3
とりあえず応急処置として変数一個用意しとく。 そのうち配列じゃなくてTListを使ったりして、まとめよう。 先進みたいし
910 :
752 :04/10/04 00:24:14 ID:OlL6IEfZ
911 :
752 :04/10/04 00:25:41 ID:OlL6IEfZ
付属のReadmeに書いたけど、主人公だけ魔法つかえます。威力不明。 操作法いつもどおり。攻撃と魔法しか選べません。 終わったらフォームアイコンで閉じてください。
912 :
752 :04/10/04 00:34:44 ID:OlL6IEfZ
次の予定 ・魔法ちゃんとつくる ・アイテムつくる ・画像関係の処理見直す ・クラスの親子関係しっかりする
>>906 property AAA[index: integer]: integer read
だから、AAAは整数型ですよ? Length(AAA) はできません。
個数が知りたければ、通常は
property AAACount: Integer read GetAAACount;
とやります。
さっと見ましたが、 CharaUnit.pas procedure TMotionUnit.MPChange(Pattern: TMotionPattern); で、S: TStringList を解放し忘れています。 普通はこうやります。 S := TStringList.Create; try // ここでSを使う。 finally S.Free; end; 全部直しましょう。
915 :
752 :04/10/05 06:28:34 ID:jtllK5qW
>>913 あ… なるほど! そういうコトですか、超納得。
つまるところ propertyAAAは 「FAAAという配列の要素を入れた整数型」で、
基本的にvar i: integer と同じモノ。だからFAAAの要素数は取得できない。配列じゃないから。
んだから要素数知りたいなら別途プロパティを用意しなきゃいけない、ってコトか。
朝早くありがとうございます。すいませんしょーもないコトばっかで悩んでてorz
ちょいと気になる部分があったんで、モーションクラスの見直し。
916 :
752 :04/10/05 06:32:29 ID:jtllK5qW
>>914 うぐっ、ごめんなさい。
try finallyのトコをヘルプで見てみたけど、
要するに「どんなことが起きても確実に開放する」ってコトかな?
どうせコレ使うならついでに例外処理も使えるようにしないとダメだな。
頑張って全部直します。
>>914 せっかく例外処理使うなら、てってーてきに安全にしようよ、
とステキプログラムの作者が言ってたよーな気がする。。
この場合なら、
S := TStringList.Create;
try
// ここでSを使う。
finally
if S<>nil then freeandnil( S );
end;
の方がいいってことね。
918 :
752 :04/10/05 23:49:21 ID:KIqeghM4
freeとfreeandnilってどぅ違うんだろうか。 開放するのとnilを代入するのは違うのかな? 以下独り言--------- せっかくMotionクラスを持ってるんだから、Motionにグラフィック持たせる。 更に言うと、データフォルダのモーションデータ(画像ファイル名、パターン等保持)を読み込んで、 それからモーションを生成しよう。画像ファイルまとめるの難しくなるけどそっちの方がわかりやすい。 通常待機などの沢山使うモーションなんかは、プログラム側から呼び出したキャラクタの画像を指定できるようにしちゃえ。 通常攻撃、魔法攻撃、ダメージ防御とかの基本モーションはシステム側で固定しちゃってもいいかな… EfectクラスはMotionクラスの派生だから、Motionさえ作れば代用できるな。
919 :
752 :04/10/06 00:00:09 ID:z5XnqlAA
プログラム側で固定するモーション ・待機、攻撃、魔法、アイテム、ダメージ、防御、死んでる途中 スクリプトで拡張するモーション ・移動、ジャンプ、その他主にイベントで使うモーション。 んで、スクリプトで拡張するとき、Jump(X,Y,Height,Time)とか入れると、動きながらモーション。 もう少しうまく考えてタイミングとかも合わせられるようにすると激しく便利な予感。 ヘルプみて見つけたDelimiterプロパティを上手く使えばなんとかなりそう。 ----------以上独り言 次からはチラシの裏に書くようにシマス('A`)
if S<>nil then freeandnil( S ); は、 if S is TObject then FreeAndNil(S); では?
前者だと、解放は全部freeandnilするか、自前でnilを入れなくちゃいけないのが前提 後者だと、前者より安全でベターだろう。速さはどっちの方が速いのか知らないけど。 実際の所、よそで作られたライブラリにオブジェクト渡すと、勝手に解放した上に変数に nilを入れてくれないものもあるから、後者の方がベターだろうな。 >752 Sがローカル変数以外(グローバル変数かクラスのメンバー)なら、直接freeするのはよくないらしい。 オライリーのDelphi本のクラスに関しての記述がソースなんだが、 マルチプロセッサで正常動作しない原因になりうるんだとさ。
922 :
921 :04/10/06 05:14:19 ID:E7ASXfVR
>752 freeandnilについて続き で、不具合を避けるには、ローカル変数をオブジェクトの別名とさせて、 オブジェクトの解放をそっちで行う前に、グローバル変数なりクラスの メンバーなりにnilを入れておかなくちゃいけないんだと。 Delphi7までのfreeandnilは、この作業を代行してくれる。 ちなみに、Delphi8.netのfreeandnilは、なぜか仕様が違う。 freeandnilの中で、直接解放してnilを入れている。理由は知らん。
923 :
752 :04/10/07 04:49:15 ID:VFyrI5qk
>>920-922 参考になります。
な、なんだか小難しいところに足踏み入れちゃった気がする…ちょっと戸惑い気味。
free全部freeandnilに置き換えた方が安全っぽいのかな。
モーションクラス、描くときにMotion_Nomal Motion_Atack Motion_Magic etcと処理分けていたの、
全部MotionDraw内で処理できるようにする。
Motion_Atackでターゲットのとこまで移動させてたのも、全部スクリプトで処理。
メリット:
コードすっきり、 モーションとアクションデータだけ用意すれば自由にモーソン作れる。
デメリット:
どうやって作ればいいのかワカラネー
とりあえずコレを実装するに必要なデータを考えるコトにする。
924 :
752 :04/10/07 05:55:56 ID:VFyrI5qk
欲張らないで 普通に 作ることにした ( 'A` ) なんとなく俺の「ヤバイレーダー」に反応。 コレに深く関わりすぎると完成しない恐れアリと判断。こいつは後回しだ。
>free全部freeandnilに置き換えた方が安全っぽいのかな。 実際やってみると意味がないことの方が多いと思うよ。
>free全部freeandnilに置き換えた方が安全っぽいのかな。 実際やってみるとやらないと困る事が結構多いと思うよ。 コードが大きくなってくると。
クラスのフィールドなんかだったらコンストラクタで生成してデストラクタで破棄すればFreeで構わんと思う。
グローバル変数なら初期化部で生成、終了処理部で破棄。
つまりは出来るだけ寿命を長く取って、最後にまとめて消しちゃおうという方針。
破棄するオブジェクトのデストラクタの内容によっては変になる可能性もあるが。
動的にオブジェクトを生成する場合はFreeAndNilを使って破棄するのがいいかも。
まあ、全部FreeAndNilにしておけば安心っちゃあ安心だ。
参考URL
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=075830 他にもDelphiMLの過去ログをFreeAndNilで検索すると色々見つかる。
928 :
921 :04/10/08 01:12:22 ID:NhfdlO9h
そういや、肝心なこと言ってなかったな。 freeandnilの利点っつーと、さっきいったマルチプロセッサ云々も あるらしいんだけど、それよりわかりやすいのが、 二重解放の例外の危険を減らせることだよ。 オブジェクトを解放するときは必ず、さっきの、 if S is TObject then FreeAndNil(S); のような形で行えば、どこで解放しようとも二重解放はなくなるでしょ。 複数人でコードを書くときとか、これ、大事だよ。
procedure TObject.Free; begin if Self <> nil then Destroy; end;
930 :
928 :04/10/08 04:09:48 ID:NhfdlO9h
もちろん、二重解放の恐れがあるのは、 オブジェクトを値渡しで他の名前作ってたときの話ね。 >929もわかってくれてると思うけど。
二重解放と言うより、解放後の無効なポインタへアクセスしないように
するためでしょ。
一般的に任意のアドレスが有効か無効かを判別する方法はありませんが、
nil は無効と判断できます。
だから、ローカル変数等 Free後にアクセスしない事が確実なら、
nil を代入しなくてもよい。
ただし、nilを代入するだけでは不十分。
その理由は、nilの逆参照はもちろん AV が出るけど、
メソッドの呼び出しだけでは何も出ないから。
つまり、メソッドの呼び出しによってフィールド
にアクセスしたときのみ AV が出るのである。
【Delphi初心者】今から始めるDelphi Part01
http://pc5.2ch.net/test/read.cgi/tech/1062422335/209-291
経験則で申し訳ないけど 細かいこと気にする奴に限ってプログラム完成できないね
自分でオブジェクトの寿命をちゃんと管理できてればどっちゃでもいいな ゲームも作らずここで細かいことうだうだ言ってても仕方あるめぇ
934 :
752 :04/10/08 16:08:43 ID:WITrKgo/
まとめ ・とりあえずFreeAndNilしておけば、色々安全というか予防ができる。 ・変数の寿命の管理(プログラムでいつまで使うか)はしっかり!
935 :
752 :04/10/08 16:11:48 ID:WITrKgo/
OSの挙動がぁゃιぃので、制作ペース落ちます。というか落ちてます。 必死にインストールディスク探してるんだけど、見つからない… でもバックアップはしっかり取るんで、少しでもコード吐けるようにします。
ただいざ完成した時には 細かいことを気にしている奴のゲームの方が面白い
ソースを公開しているのに、どうして「一緒に作ろう!」って人が現れないのですか?
938 :
752 :04/10/09 00:40:22 ID:WQHuOFtR
>>936 じゃあ作ってるときには深く考えないで完成させてから細かいこと気にすりゃいいんだな!
ジャンプってどうやりゃいいんだろう。
ま テキトーにやりゃいいか。
939 :
752 :04/10/09 00:41:51 ID:WQHuOFtR
>>937 一緒に作りましょう! ('A`)
俺の理想のジャンプ→ルドラの秘法
あんな感じにやりたいな。
940 :
752 :04/10/09 01:22:37 ID:WQHuOFtR
超手抜きだけどジャンプつけた。 モーションが少しはラクになるはず。
>>939 他にソースを公開してゲームを開発している人に言わないと駄目。
942 :
752 :04/10/09 01:32:09 ID:WQHuOFtR
943 :
752 :04/10/09 02:21:10 ID:WQHuOFtR
アイヤー 全然ジャンプになってない。 こういう処理すんげぇ苦手。
共同作業は仕様がちゃんと決まってて、しかも各部分が独立して作業可能になってないと 混乱するだけだぞ
そうそう、この前公開されてたソースを見て思ったんだが、クラスのコンストラクタで inherited が抜けてる。 TObject から直で派生させてる分には大丈夫かもしれないが、もう一段下のクラスを 作ったときには多分必要になるから気をつけた方がいい。
946 :
752 :04/10/09 02:58:46 ID:WQHuOFtR
えっと、派生クラス作ったらコンストラクたに constructor Create; begin inherited; end; とかやっておこう、ってコト? とりあえず意味はあとで調べる。 指定位置にジャンプ、難ιぃ…orzどうすりゃいいんだろ
こうこうこういう関数を作ってと言えば、誰かが作ってくれるのでは?
948 :
752 :04/10/09 05:27:11 ID:WQHuOFtR
言うだけ言ってみる 引数 X Y 高さ 速度 で放物線を描いてくれるヤツ。 こんだけわかっててなんで出来ないかな、俺。
速度で高さがきまるし、 高さで速度がきまるんじゃないでしょうか? 速度を引数にとるなら自分の座標も引数に加えて 相手との距離をとってそこから投射角度θ決めて 初速X=(速度*coxθ)みたいに決めればいいんじゃないかと。 で、毎フレーム重力分を初速Yから引いてやれば。 的はずれなこと言ってたらスマン
物理の教科書開けば分かると思うけど。 必要なの引数は ・初期座標 X,Y ・初速度(垂直方向) vy ・速度(水平方向) vx の三つ。 で、水平方向(X軸方向)に等速移動しつつ垂直方向(Y軸方向)は等加速度運動をさせればいい。 Δt 後の座標(X’,Y’)は X’ := X + vx*Δt Y’ := Y + 1/2*g*Δt^2 今回の場合、Δt は1フレーム。よって計算上は無視してもいい。 重力加速度 g は厳密にしてもいいし、面倒なら等速運動にしてもあんまり不自然には見えない。 あとは着地と同時に移動を停止するようにすればOK。 ただし地面にめり込まないようにだけは注意しよう。
>の三つ。 すまん、正しくは四つ(X Y vx vy)だな…_| ̄|○
うわぁ、また間違えてた。 X’ := X + vx*Δt Y’ := Y + vy*Δt - 1/2*g*Δt*(Δt+2t) t はジャンプ開始からの総フレーム数。Δt は1フレーム。 多分これでそれっぽくジャンプしてくれる。
しまった・・・ジャンプ開始からの総時間 t 使うんだったら X’ := X + vx*t Y’ := Y + vy*t - (1/2)*g*t^2 X,Y : ジャンプ開始時のキャラ座標 でいいじゃないか。何やってんだか・・・_| ̄|○
955 :
752 :04/10/09 20:10:42 ID:tGkVnHq2
うおおー みなさんありがとうございますーー わざわざサンプルまで作ってもらっちゃって…orz 今からがんばって作ります。バイトで疲れて寝ちまってたぃ。 個別レスはまた後でします。みんなほんとうにありがとう。
956 :
752 :04/10/09 20:56:28 ID:tGkVnHq2
>>954 vxとvyは、目標地点との位置を計算して割り出せばいいのん?
>>950 みたいなコトすりゃいいのかな。
うえー、わかんねー。
>>949 のテーブルも面白いな。最終奥義っぽい気もするけどw
ジャンプじゃなくて、他のモーション作る時に使いそう。
ツクールでいうトコの戦闘アニメ作るときに。
>951-954で書いたのはアクションゲーム的手法なので vx と vy は適当に設定すればいい。 RPGの演出に使うなら、テーブルの方が手っ取り早いかもしれない。 とはいえ、せっかくなので vx と vy の出し方も書いておこう。 以下ではジャンプして、同じ平面上に着地する場合を想定して書く (飛び乗ったり飛び降りたりしないってこと)。 まず決めておかなければならないのは、着地点のジャンプ開始点からの水平距離(相対座標) それから、ジャンプしている時間。 ここでは水平距離をΔx、ジャンプしている時間を Jt としよう。 vx は 等速直線運動なので簡単に vx := Δx / Jt でOK。 でvyはというと、着地点までのちょうど半分のところで最高点に達する=速度v=0 になるようにすればいい。 鉛直投げ上げ運動の速度の式は重力加速度を g 、時間を t とすると v = vy - g*t 最高点に達する時間は Jt/2 なので 0 = vy - g*(Jt/2) よって vy := g*(Jt/2) となる。
958 :
752 :04/10/09 23:23:26 ID:tGkVnHq2
>>957 詳しくありあとうございます!
とりあえずその式を理解するには鉛直投げ上げ運動とやらを学ぶ必要がありそうだ。
色々調べてるけどちんぷんかんぷんだぎゃ…
vyが高さで、現在時間<JT / 2の時はマイナスで、現在時間>JT / 2がプラスで… ありゃ?
…まあ、とっかかりが出来たから、なんとかやってけそう。がんばれ俺。
本当にわざわざありがとう>みんな
俺の半分はみんなでクリエイトされてる
テーブルの値はこっちの方が自然かも。 Y := X * X から差をとって2フレームに1回動くようにしたものです。 JumpLine: array[0..42] of Integer = (-19,0,-17,0,-15,0,-13,0,-11,0,-9,0,-7,0,-5,0,-3,0,-2,0, -1,0,1,0,2,0,3,0,5,0,7,0,9,0,11,0,13,0,15,0,17,0,19);
960 :
752 :04/10/10 00:33:00 ID:pz2k/KeD
ちょこっとづつだけど、鉛直投げ上げがわかってきた。まだ穴あるけど。
>>959 コイツをJumpIndexで拾って、Yに足せばいいんだよね。
for文でテーブル生成するようにすれば、初期値と着地点のセットも楽そうだし。
ぶっちゃけコッチの方が簡単そうだーorz
せっかく教えてもらったんだし、ノウハウ獲得のためにもう少し鉛直投げ上げ勉強しよう。
マウスを動かして、フレーム毎のカーソル位置の変位を求めて テーブルを作ると良いかもしれない。
>vyが高さで ちがう。vy は初速度。
964 :
752 :04/10/10 14:37:13 ID:4+SGGvxt
>>961 ツクールで戦闘アニメ作るとき、それと同じだね。
カーソル位置じゃなくてグラフィックの位置だけど。
簡単に作れるけど、決まった動きしか出来ないのが難点。
>>962 ゴメンナサイ… 今教科書とか講座サイト見て必死にがんばってます。
難しいけど少しずつ公式とか当てはめて理解しようとしとるます。
>>963 テーブル式だとアクション系は難しいのね…
>>957 を参考にして、Y軸変化に初期位置と着地地点の差分を時間で割ったのを足してみた。
とりあえず同じ平面上に着地しなくても止まるようになった。
多少のズレはあるけんど。
もう少し初速度の求め方と時間の求め方を勉強しないといかんデス。。。
次スレは990あたりでいいよね
965 :
752 :04/10/10 14:48:02 ID:4+SGGvxt
初期座標を(0,0) 重力加速度 g を約10として 横方向に100pixel の距離を 10フレームかけて移動するジャンプを考える。 初速度は>957に書いてある式から vx = 100 / 10 = 10 vy = 10*(10/2) = 50 これを>954の式に当てはめると、ジャンプ開始から t フレーム後の座標(X’ Y’)は X’ := 0 + 10*t Y’ := 0 + 50*t - (1/2)*10*t^2 これを t を変えて手計算してみるとそれっぽい軌道になっているはず。 着地する場合は、着地点の Y 座標と Y’ が一致(またはY’がYよりめり込んだ位置)に なったときに計算を止める。そうしないとどこまでも落ちていく。 着地点の X 座標は最初の計算で指定したもの(上の例なら100)より、 飛び乗りなら手前に、飛び降りなら先になる。
おっと>968は>752宛ね
970 :
752 :04/10/11 08:58:23 ID:1NvYAQdE
もぅ何がなんだか○| ̄|_
>>966 >>968 毎度毎度、ありがたいです。
かなり解りやすく書いてくれてるんだろうケド、まだイマイチわからん…
頭痛くなってきた。ていうか小学生からやり直したほうがいいかも('A`)
971 :
名前は開発中のものです。 :04/10/11 13:17:05 ID:SwVJig7g
質問があるんですけど、QuadrupleDでフェードインやアウトなどは、どのように書けばなりますか?
>>971 もし自分がその質問を受けたら、あなたは答えられますか?
投稿する前に、自分の書いた文章を2、3回読みなおすことをお勧めします。
QuadrupleDに限らず、現在の画像と次に表示したい画像を、徐々に比率を変えながら混ぜて表示すればいい。
>>971 ようは徐々に現れるようにすればいいと思う。アウトはその逆。
975 :
967 :04/10/12 05:23:51 ID:i5/KZM7k
LoopLandの方は浮動小数点を使って少しずつ動かし、 矩形が障害物と重なると止まるようになってるみたい。
整数型で画面幅を640×100で処理、 その値を100で割った値に描画としています。 未だに浮動小数点を使うのは邪道な気がして…
0.3移動する場合、小数点以下切り捨てだと、 0.3 + 0.3 + 0.3 + 0.3 = 1.2 で、4フレームで1ピクセル移動する しかし、次は 1.2 + 0.3 + 0.3 + 0.3 = 1.1 で、3フレームで移動する。 この変は気にならないのか、それとも何か手があるのか。
979 :
名前は開発中のものです。 :04/10/13 11:27:48 ID:T4B/tejA
これってdelphiXみたいなものですか?
>>980 ClootieはDirectX APIやライブラリを使えるようにしたものです。
DelphiでAPIを使うにはヘッダが必要なのですがDirectXのヘッダと
定数などの定義やD3DXライブラリなどの移植も含めたパッケージです。
(win32APIのヘッダはDelphiにはじめから入ってます)
簡単にいうとDirectX SDKの移植ですね。
DelphiではDelphiXやQuadrupleD、C++はLunaやDXライブラリが有名だけどこれらは
DirectX APIを使いやすいようにしたラッパーライブラリといわれるものです。
煽るわけではないのだが、 DelphiでDirextXを使う意義とは…教えてくれよっ!
俺はそのままDirctXを使えると思って Delphi買ったのだが・・・
DirectXなら垂直同期をとってちらつきを無くす事が出来るらしい。 あと、リセット無しで解像度と色深度を変えられる。
ジャンプだけど、 最高でどれだけの高さまでジャンプしたいか、 着地するまでにどれだけの距離を飛びたいか、 を考えてから、式やテーブルを考えないと駄目みたい。 320x240だと横方向へは1ピクセル/フレームで動かせばいいのかな。 2ピクセル/フレームだと速すぎるし。
>>982 コンポが使える。DirectX使うツール作りに大変便利。
次スレいらねえな
990 :
989 :04/10/15 06:26:11 ID:wcOjDqKn
あー、これは斜め下へ移動して横のブロックに衝突する場合、 横方向のみピタリとずらしていて、縦方向にはずらしていないんですね。 私は縦へもずらしていました。 見た目は変わらないし、細かい事を気にしない方が良さそう。
しかも、今重なっていて、次の瞬間も重なる場合にブロックの外へずらしている。 だから、見た目では多少重なるんですよね。 私のやり方は、今重なっておらず、次の瞬間に重なる場合は ブロックの隣へピタリと止める方法でした。
埋め
埋め
埋め
埋め
埋め
埋め
埋め
埋め
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。