DelphiでOLIONモドキ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGまだαバージョンですが。
http://zurubon.virtualave.net/source.cgi
上記の132.lzhに入ってます。
Delphiの環境を持っててOLIONを知ってるひとだけ落として
遊んでみて。
OOPは初めてなので、クラスの作り方がいいかげんです。
ひまな人に添削してもらえるとうれしい。
それにしても、下記の注意書きはどういうこと?
(消されるの、やだなぁ)
「※今後、2ちゃんねるに関係していると思われるファイルは見つけ次第削除します。」
なにか事件があったの?どんな基準で消されるの?
そこあたりのことも教えてクンです。
どうぞ、よろしく。
以上
0002デフォルトの名無しさん
NGNG「@プログラマ板」のアプロダなんだよ。
「厨房」も「ゴルァ」も「オマエモナー」もみんな「あやしぃ」
が最初。その上アプロダまで勝手に使われちゃぁな。
まぁ、「あやしぃ」と住人がかぶってるからしょうが無いけどな。
0003デフォルトの名無しさん
NGNGうむむむむ。
調べて見ます。
情報、ありがとうございました。
OLIONモドキはけっこうマジにつくったもんなんで、ちょっと煽りが
入っててもいいから感想が聞きたかったとこです。
それにしても、OOPって、私は旧来の関数分けをし終わってから
しぶしぶクラスを作りましたが、ほんとに最初からクラスをつかった
設計をしてる人なんて、どれくらいいるんでしょ???
いまのところ、クラスを作るメリットがいまいちわかりません。
0004デフォルトの名無しさん
NGNGDelphi 4 を使っているからコンパイルするのに苦労したよ。
OLIONって知らないんだけどサクサク動いて気持ちいいね。1600x1200の
フルスクリーンで動かしても非常にスムーズに動くのは感動したな。
ついでに難易度が俺には高すぎた…
ソースの事だけど FuncsUnit に Delphi の不満なところがだらだら綴ってあったね。
ハッキリって突っ込みどころ満載なんだけど。
0005デフォルトの名無しさん
NGNGしかし酷いソースだね。
メソッドの引数は値渡しばっかだし、
列挙型をIntegerにキャストしてるし、
イマドキ構造体だらけで全然クラスのありがたみがわかってないし・・・。
> いまのところ、クラスを作るメリットがいまいちわかりません。
って書いてあるとおりだね。OOPに関しては一から勉強してください。
ソースに書いてあるDelphiへの不満のほとんどはあなたの勉強不足から来ています。
もちろんDelphiが悪いところもあるけどね。
本当はね、動いてる中身を評価してあげたかったんだけど、ゴメンね。
00065
NGNGやってみたけど、どう評価していいかもわからないや。
00075
NGNG>メソッドの引数は値渡しばっかだし、
そんなことはなかったね。ゴメソ
0008デフォルトの名無しさん
NGNG一応彼のため、というかDelphiのためにつっこみを入れたほうがよいのでは
0010デフォルトの名無しさん
NGNG反:列挙型のまま使うべきです
まるで5年前のCのソースを見てるようです
>配列を初期化するとき、いちいち要素数を明示しなくちゃならんのが
反:初期化はコンポーネントにしてプロパティに埋め込みましょう
そしてプロパティエディタを作れればスマートにゆきますよ
あるいはスクリプト式のテキスト形式にしてTStrings型のプロパティ
にすればもっと綺麗です。
> 右詰入力域ひとつ作るのに裏技をつかわんといかん処理系
反:こういう場合は裏技ではなく正面突破を心がけるべし
VBは確かにもっと奥迄色々な仕掛けを勉強せずに入れますが、
だから少しでも壁にあたるとその手の裏技的方向に走る癖が
ついてしまいます。
1 ”フォーカスを受け取らないラジオボタン”
2 ”右詰入力が出来て、かつフォーカスを受け取らない入力域”
どちらもTGraphicControlから派生してコンポーネントを自作
すれば簡単です。具体的には 1はITems:TStringとItemIndex:integer
プロパティを持たせて Paintで描画するだけ
2 も同じで、単にフォームのキー入力を渡せば処理するように
少しコードを書けばOK
これらは少し慣れればVBのように広大な機能から必要な機能を探すよりも
自作した方が早い程度の機能だと思いますよ
0011デフォルトの名無しさん
NGNGこのスレ読んでてもさっぱりわからん。
00125
NGNG俺もOLIONはしらないけど、1がつくったやつは15年くらい前のゲームみたいだったよ
00134
NGNG>させて欲しいもんである。プログラムをトップダウンで書くことが出来なく
forward 宣言を使うことで前方参照出来ます。以下は使用例。
procedure test1(val: Integer); forward;
procedure test2;
begin
test(0, 1);
end;
procedure test1(val: Integer);
begin
何かやっている
end;
>同じ名前の関数があった場合、プロジェクト内の関数を優先的に使うのが
>普通だろ!!
スコープを勉強しましょう。複数のユニットで同名の識別子(この場合、関数)が
定義されていた場合、Uses 節で最後に宣言したユニットの関数が優先で使われます。
各ユニットの同名の関数を呼び出したい場合以下のようにします。
Windows.Sleep(560); とか Unit1.Sleep(560); とか。
>ウィンドウを最大化するとなぜかForm.WidthがScreen.Widthより
>大きくなってしまう
>こういう細かいところの挙動不審が目に余る
当たり前。Windowsは最大化をするとデフォルトでウィンドウの左上の位置を
-4,-4にセットし、右下も同様に+4,+4する。よってForm.WidthはScreen.Width+8になる。
Width,Heightプロパティはウィンドウの枠も含めた幅・高さを返すので枠を除いた
ウィンドウのサイズを知りたいときはClientWidth,ClientHeightプロパティを使うこと。
00144
NGNGprocedure test1(val: Integer); forward;
procedure test2;
begin
test1(1234);
end;
procedure test1(val: Integer);
begin
何かやっている
end;
00151
NGNGみなさん、ご指導ありがとうございます。
(もっとひどい煽りがあるかと思っていましたが、皆さん紳士的ですね)
大変勉強になりました。
ヒントをいろいろもらえましたので活用させていただきます。
0016デフォルトの名無しさん
NGNGあんまりそこに迷惑かけないようにね
こことか使ってみたら?
http://www.geocities.co.jp/SiliconValley-Oakland/8522/
まあ自分で適当な捨メールアドレス取って作った方がいいかもしれないけど
0017デフォルトの名無しさん
NGNGこんくらいのゲームには向かないかも。あとTFormのメソッドには
あまりロジックは書かないほうがいいよ。
0018デフォルトの名無しさん
NGNGなんだかほほえましかったよ…。
0019デフォルトの名無しさん
NGNGだが
>>5 ほどいう気はないが
>>13とか>>10とか
言う事をまじめに聞いたほうがいい。
>>1の多くのDelphi批判は完全にスジ違い。
DelphiMLで全部解決してきたことだ。
過去ログ検索して読め。
わからなかったらMLで聞け。
勘違い批判してると嫌われるけどな。
右寄せEditって、環境依存するVBならそりゃ簡単だろうて。
0020デフォルトの名無しさん
NGNGTFormに書かない方がいいっていうとどんな感じになるの?
綺麗に書かれてる、勉強になるソースとかあったら教えて。
0021デフォルトの名無しさん
NGNG>>13に引用されている部分は、ちと気になるな。
前方参照できるかどうかと、トップダウンと何の関係があるんだろ。
0022デフォルトの名無しさん
NGNGだからfowardを知らないから
関数の並び順が制限されていやだって
勘違いしてしまってるわけだ。
まさか全部interface部に記述するわけにいくまい?
ってか、記述してもいいんだけどね。
>>20ない。
>>17の言いたいのは"なるべくそうしたほうが"
って事だから意識してればいいだけ。
0023VBスレ出張
NGNGhttp://geocities.com/morning21uk/garally/otakara/nono02.jpg
0024デフォルトの名無しさん
NGNG3回抜いたよ。
0025デフォルトの名無しさん
NGNGブラクラ
002621ではないが
NGNG>関数の並び順が制限されていやだって
>勘違いしてしまってるわけだ。
これとトップダウンと何の関係があるんだ、
って21は言うておるのではないの。
そうだね、トップダウン/ボトムアップって、
記法じゃなくて設計の概念だものね。
00271
NGNG1です。
「トップダウンうんぬん」は記法のつもりで書きました。
main() 関数を一番てっぺんに書きたいくらいの意味です。
けっこう付き合ってくれる御仁がいらっしゃいましたので、ありがたく思ってます。
(単純に質問しても、なかなか教えてもらえないですから、ネタ振りとしては
結構効果がありました)
慣性の効いたゲームは好き嫌いが激しく出るもんなんで、今度はインベーダーでも
作りますか。
もっと煽られれば煽られたで、
「おまえ、そんなエラソーなこといって、口先ばかりだろ」
とやって、情報を引き出そうかと思ってましたが...
Delphiで作るWindowsGameとかいう本を買ったのですが、データの初期化
回りは、参考にする気にならないくらいイヤなコーディングだったので、
他の人は大量のデータを初期化するのに、どうやるのか知りたかったのです。
(大量のデータをプロパティで設定する...? やってみますが、
プロパティって、そんな使い方も出来るんだ...)
どれ、もうちょっとがんばってみますか。
皆さん、ご指導ありがとうございました。
0028デフォルトの名無しさん
NGNG外部データファイルの読み込みでやってる。
必要なら、データファイル生成用のツールも作る。
小さなゲームには向かない方法かもしれんが、
データロード部はライブラリ化しておけば次回からラクだよ。
0029デフォルトの名無しさん
NGNGしょうがないかもしれない。
でも、最低、ダブルバッファ(オフスクリーン描画)にするべきだろう
OffScreen: TBitmap;を作っておいて
OffScreen.Width とかを フォームと同じに設定
表示命令は OffScreenにする
画面に実際に出すのは Canvas.Draw(0, 0, OffScreen) で一度に行う
これでチラツキが無くなるから、まず試してくれ。 他の悪い点はまあそれからだ。
0030デフォルトの名無しさん
NGNGいや、よいことだ。
0031デフォルトの名無しさん
NGNG配列の大量初期化なら
型宣言してconstで定義しておいてそれを
普通の変数に代入が一番だと思うよ。>>意味わかるか?
あとね。>>27のあおりながら情報を得るっていう
やり方は関心せんな。
きみぐらいの煽り方ならまだいいが
エスカレートすると気分悪いからな。
Boland連中はうまくやれば強力な助っ人になってくれるんだから
雑談してるような雰囲気でもっと聞き出せよ。
ML過去ログのポインタでも教えてほしけりゃ
出してやるよ。
腰を低くしろって事がいいたいわけじゃないんだがな。
0032陰陽(5)
NGNG> こんくらいのゲームには向かないかも。
オブジェクト指向が万能技術だと言う気はないけど、
こんくらいのゲームに適用するのは、練習にもなってちょうどいいと思うぞ。
問題領域
自機クラス、敵機クラス、ミサイルクラス、宇宙クラス
アプリケーション領域
アプリケーションクラス(=画面クラス?),敵機コントロールクラス
くらいで、見やすいソースで開発できるでしょ。
0033陰陽
NGNG> ってか、記述してもいいんだけどね。
普通はinteface部にプロトタイプ宣言を全部書いておく。
クラスじゃなくて、unitに直に関数を列挙する場合でもそう。
forward宣言はクラスのinterface部で、ユニット内の別クラスを
参照するようなときに使う。
type
TClass1=class; forward; // TClass2のinterfaceの中でTClass1を使うため。
// TClass2のインターフェース定義
TClass2=class
class1: TClass1;
procedure ・・・・;
end;
// TClass1のインターフェース定義
TClass1=class
end;
0034陰陽
NGNGあと追加
> 普通はinteface部にプロトタイプ宣言を全部書いておく。
だから、関数の前方参照とかを気にしなきゃいけないことは
まずあり得ないってことね。
0035デフォルトの名無しさん
NGNGいいこというね。ただ>>33interface部に書くときはforwardはいらないよ。
003635
NGNG33のような場合でも。
0037陰陽
NGNG煽りで情報を引き出すっていうこと自体は、いい方法だと思うよ。
実際俺もひっかかってこうやって出てきてるわけだし。
でも相手の発言が、こっちの発言に難癖をつけてきたり、見下した発言だけで
中身が無い場合にとても有効なのであって、始めの発言者(この場合1)が
煽りから始めるのはよくない。話を聞いてくれるであろう人まで
引いちゃうから。
>>35
forwardの件その通りでした。サンクス。
003831
NGNG非常によいな。
00391
NGNGぁゃιぃソースアップから消されてしまいました。
(自分で消したんじゃないよ)
べつに、損したわけじゃないけど、ちょっとくやしい。
ま、もうちょっといじった後で他の場所で公開します。
(金なんか、とんねぇよ)
ジョイスティック対応と、初心者向けに慣性がなく、敵へのあたり判定を
大きくしたバージョンも用意しましょう。
(オプション画面作るの、結構メンドイな)
0040デフォルトの名無しさん
NGNGよし、とは思うが
だれもショーモなーイ
おまえのソフトで遊びたいとは思ってないよ(w
技術的なスキルアップとゲームクリエイタのセンス磨きな。
00411>40
NGNG事実に気づかせてくれて、ありがとう。
感謝しています。
わたしの精神状態はちょっと普通じゃありませんでしたね。
舞い上がってました。
(疲れていたのかもしれません)
ただ、他のことなら直しようもあるし、学びようもあるけど、
センスがないという事実はなかなか直すのが難しいところ
です。
とりあえずしばらくおとなしくしています。
ご縁があったらまた会いましょう。
さようなら。
0042デフォルトの名無しさん
NGNGセンスは磨ける。
作りつづけろ。
上で言われた変なコーディングはすべて改善したら
よりコーディングがうまくなるから
ゲームをおもしろくする改造も可能
0043デフォルトの名無しさん
NGNG00441
NGNG40さんのカキコで気づいた。(最初は正直ムカついたケド)
これ以上ここにいるとあやうい。
かまってくれた皆さん。ありがとう。
ちょっとヒキョーだけど、40さんに言われてイジけたふりしていなくなります。
(当初の目的は果したのだし、深みにはまった状態から足抜けするのに
渡りに船だったのだ)
ゴメソ(静かにsage)
■ このスレッドは過去ログ倉庫に格納されています