- 1 名前:名前は開発中のものです。 [2009/03/31(火) 01:14:36 ID:IgyJcgap]
- Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリの詳細ついては homepage2.nifty.com/natupaji/DxLib/ を参照して頂きたい。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 過去スレ:DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/
- 738 名前:名前は開発中のものです。 mailto:sage [2009/07/17(金) 23:36:29 ID:iPNwCeP8]
- FPSはそれ自体で意味がわかるから使うけどScrは無いわ
- 739 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 00:03:32 ID:pCmtYAM2]
- class A があって xが public なメンバの場合 A.xでアクセスするのと
private の場合 getx(){return x;} でアクセスするのと速度変わらんのか
- 740 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:04:35 ID:QevxnE5g]
- >>739
詳しい事はしらんが、常識的な範囲でコンパイルを考えれば、 最適化が普通だったら遅くなる理由は無いと思う。 最適化をしないなら、クラスから関数のアドレスに飛んで、 そこで値:xを取得して、それをどっかに格納な分 遅くなるんだろうけど・・・。
- 741 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:54:43 ID:UXbVEGUE]
- >>740
ちょっと違う getx(){return x;} がクラスの中に書かれ、そのクラスがヘッダーファイルなら。 インライン展開されるので aa = getx(){return x;} || aa = A.x と同じ 最適化は関係ない
- 742 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 08:56:36 ID:UXbVEGUE]
- あ、ちょっとまて、C++のみの話な、他の言語は知らん
- 743 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 10:41:55 ID:PwgwIsF1]
- それはヘッダに直接定義書いてるからinline付いてるだけじゃね
ソース側で定義でもinlineつけて展開できるなら同じじゃないっけか 後、クラス内での処理はインラインしてくれるのが普通だったきがする メンバ関数内で別のメンバ関数呼び出して処理とか まー、>>736か
- 744 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 14:09:33 ID:xlxZEQtn]
- インスタンスが確保されてる状態なら、参照を返せばいい。
class Foo { Pos pos_; public: Pos& GetPos() { return pos_; } const Pos& GetPos() const { return pos_; } }; スコープの外側にインスタンスを返すなら、参照渡しじゃ無理なので、コンパイラの NRVOに期待して、例えば以下のように書くことになる。 inline Pos GetPos() { Pos result; /* code */ return result; } NRVO非対応でRVOだけ対応のコンパイラだと、 inline Pos GetPos() { /* code */ return Pos( /* code */ ); } こういうコードじゃないと>>741の言うような最適化は掛からない。 コンパイラーメーカーもC++標準化委員会もNRVOが掛かるように頑張ってるはずだが、 実装状況はコンパイラによってまちまちなんで調べてくれ。多分検索すればすぐ分かる。 VC++なら2005からNRVO行けるっぽい。/O1くらいでもNRVOは掛かる模様。 プロファイラで後から最適化ってのも常道だけど、I/F設計段階の話はそうもいかないし なぁ。 まぁ、俺なら基本的には参照渡し、リターンで解体される自動変数なら値渡しで返して、 後者がボトルネックになるならインライン化でたぶんNRVO発動でおk、って書く。で、 「この設計だと遅そうだしポインタ渡そう」って言われたら、実際どうなるか興味ある んでベンチでも書いたり、ついでに↓みたいなのも一緒に見たりしながら相談する。 msdn.microsoft.com/en-us/library/ms364057(VS.80).aspx
- 745 名前:名前は開発中のものです。 mailto:sage [2009/07/18(土) 14:20:17 ID:xlxZEQtn]
- >>744補足
スコープの外に「自動」インスタンスを返すなら、だな。 つーか、二つめと三つめは最初の質問のシチュエーションから逸脱してるな。すまん。 まぁでも、メンバ関数でもNRVOは重要なんで、仕組みは知っておいた方が。
- 746 名前:名前は開発中のものです。 [2009/07/19(日) 05:29:35 ID:TXlg+NUw]
- //●ジャンぷ
if(key & PAD_INPUT_B){ for(double t=0; t<10; t=t+0.1){ int vo = -60; int ay=10; jikidata.y = vo * t + 1/2 * ay * t*t + jikidata.y; WaitTimer( 1000 ); jikidata.ghandle = LoadGraph("media\\imgbb4792ea7ec6f3d_frame_0009.bmp"); } } DXライブラリを使ってアクションゲームのジャンプをプログラムしたいんですが これで実行すると、キャラが止まったり、動かなくなってしまうんですが、どこを改変すればいいんでしょうか?
- 747 名前:名前は開発中のものです。 mailto:sage [2009/07/19(日) 05:51:18 ID:EpiDWLJN]
- >>746
正直どこにつっこめばいいかわからないので 公式のサンプルを参考にすればいいとだけ言っておく homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N2
- 748 名前:名前は開発中のものです。 mailto:sage [2009/07/19(日) 11:01:02 ID:7iXtFi1U]
- WaitTimerは使っちゃだめれす><
- 749 名前:名前は開発中のものです。 [2009/07/19(日) 21:11:12 ID:mJh1WCZZ]
- フラッシュマン
- 750 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 01:05:51 ID:pleKhZHB]
- >>748
リアルタイム処理で使うのは駄目に決まってるな フェードアウト後の待ち時間とかに使うのが正しい でも個人的にはウェイト系の関数やら処理体系作って、それを使えばいいと思う while(……){ //ここにwaitから切り放したい処理を書く //例えば、ゲームは止まっても風景は動かしたい //処理ごとにwaitを分ければさらに色々なことができる if(waitFlag==FALSE){ //ここにwait前にやりたい処理を書く //waitTime、waitFlagは本来条件式で設定するのが望ましい waitTime=1500;//1500ミリ秒=1.5秒 waitFlag=TRUE; }else{ if(1ミリ秒経過したら){ waitTime--; } if(waitTime==0){//1.5秒経った waitFlag==FALSE; }else{ //waitTime=0未満;を描いたな?と怒る //エラーフラグを大量に埋めるのは開発の最適化とアンチートに役立つ } } } こんな
- 751 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 01:09:47 ID:pleKhZHB]
- 最後のとこはelse if(waitTime<0)だた
- 752 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 18:56:48 ID:u2THICPq]
- ジャンプするたびに画像をロードしまくってどうする
- 753 名前:名前は開発中のものです。 mailto:sage [2009/07/20(月) 23:05:51 ID:hrqPLvNB]
- >>750
これならどの環境でもキッチリ結果が出るね カウンタ回すしかやったことないから参考になるわ だけどアクションとかだと遅延おきてカクカクにならないかな
- 754 名前:名前は開発中のものです。 mailto:sage [2009/07/22(水) 14:20:11 ID:23EfZ5Te]
- 同じフォルダ内にあるTTFフォントを使って文字列描画したいんですけどそれはDXライブラリでできますか?
フォントのファイル名を指定して読み込みするような関数が見つからなくてどうすればいいか困ってるんですが
- 755 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 01:22:02 ID:w7s2/iav]
- なんかソレっぽいサンプルどっかで見かけたような気が……
- 756 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 01:49:57 ID:w7s2/iav]
- ごめん適当なこと言った
DXライブラリでは出来ないような気がする でもフォントファイルを一時的に開くプログラムがあれば通常のフォントと同じように 名前の指定だけで使えるはず……
- 757 名前:754 mailto:sage [2009/07/23(木) 02:35:05 ID:M1f3xhTA]
- ありがとう!!探してみて解決したよ!!
結果はWin32APIのAddFontResourceEx関数を使えば一時的にTTFファイルからフォントリストに登録できるみたい 第二引数に0x10(FR_PRIVATE)を渡せばそのプロセスだけで使えるようになるぽ 使い終えたらRemoveFontResourceExで開放する必要もあるみたい。登録時とまったく同じ引数で呼び出す必要あり AddFontResourceEx("hoge.ttf", 0x10, 0); // これでhogeフォントを登録。DxLibのEnumFontNameでも表示されるはず。 RemoveFontResourceEx("hoge.ttf", 0x10, 0); // 削除。引数を↑と同じにしないといけないらしい いくらDxLib関係でググっても見つからなかったので少々冗長気味に解説してみたよ 正直この機能はDxLibにラップされてても違和感無いと思うんだけど
- 758 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 03:39:18 ID:8ujD6dNo]
- 確かに自動対応してもいいレベルではある
- 759 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 21:34:58 ID:PImKyCUU]
- 暗転ってどうやってやってる?
- 760 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 21:51:01 ID:tLjhSV6z]
- 普通に画像を表示して、その上にかぶせるように真っ黒な画像を少しずつ濃くしながら表示。
完全に濃くなったら、表示する画像を切り替える。 真っ黒な画像を少しずつ薄くしながら表示する。完全に薄くなったら、以後、真っ黒な画像は表示しない。 これでいいと思う。
- 761 名前:名前は開発中のものです。 mailto:sage [2009/07/23(木) 23:37:10 ID:JVsH2uDi]
- SetDrawBlendModeとDrawBoxでやってるな。
- 762 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 02:52:41 ID:sonMl0Vt]
- これ一旦止めた音楽止めた場所から再開させることできないのか
- 763 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 03:42:20 ID:nwWosEk7]
- できるけど
Dxlib.h内を、サウンドハンドルの再生位置で検索
- 764 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 04:08:03 ID:sonMl0Vt]
- ありがとうございます
やってみました PlaySoundMem でやってるときは GetSoundCurrentPosition で取得すればいいのかな でやってみましたが GetSoundCurrentPosition がいくら再生してるときでも0しか返ってこないのですが ちゃんと引数に正しい SoundHandle 入れてますよ
- 765 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 04:20:10 ID:nwWosEk7]
- ごめん、検証してなかった
PlaySoundMemのTopPositionFlagを0にすれば 取りあえずは途中から再生できるはず
- 766 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 06:13:08 ID:sonMl0Vt]
- ありがとうございました、できました
- 767 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 08:59:47 ID:5C3gkZxn]
- DXライブラリ卒でD3D9使ってるけど、久々にDXライブラリ時代のソース引っ張り出して
ちょっと懐かしかった。pchも使ってなかったんだなぁとか。 つーかpch使ってない奴も多そうだから勝手に手順説明するぜ。 1. プロジェクト→新しい項目の追加→ヘッダーファイルでstdafx.hをプロジェクトに追加 2. プロジェクト→新しい項目の追加→C++ファイルでstdafx.cppをプロジェクトに追加 3. DxLib.hや標準ライブラリなど、自作でない巨大ヘッダのinclude文を*.cppから全部削除して、 代わりにstdafx.hの中に全部突っ込む(自作ヘッダは普通に*.cppで各自includeする方がいい) /* stdafx.hの例 */ #pragma once #include <DxLib.h> #include <string> using std::string; /* ここまで */ 4. 全ての*.cppの最初に#include "stdafx.h"を書く(コメントは前に入れてもおk) ちなみにstdafx.cppは、#include "stdafx.h"の一行だけでおk 5. ソリューションエクスプローラでプロジェクト名を右クリックしてプロパティを開き、左上の 構成を「すべての構成」にして、構成プロパティ→C/C++→プリコンパイル済みヘッダー→ プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーファイルを使用する (/Yu)」に変更する 6. ソリューションエクスプローラで「stdafx.cpp」を右クリックしてプロパティを開き、左上の 構成を「すべての構成」にして、構成プロパティ→C/C++→プリコンパイル済みヘッダー→ プリコンパイル済みヘッダーの作成/使用を「プリコンパイル済みヘッダーファイルを作成する (/Yc)」に変更する これで、stdafx.hを変更する時以外は、ビルド速度がかなり劇的に上がるはず。 大した作業にはならないはずだから一度試すといい。
- 768 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 09:09:49 ID:5C3gkZxn]
- ああ、気付きにくいかもしれないことを補足。
自作ヘッダから<string>とか<math.h>とか使いたい場合も、「必ず全ての*.cppの最初で stdafx.hがインクルードされる」という規則だから、結局は自作ヘッダがインクルードされる 時点ではstdafx.hが既に読み込み済みになってる。 なので、自作ヘッダに#include <string>とか書く必要も無し。自作ヘッダで使いたい標準の ライブラリなんかのincludeも、全部stdafx.hに逃がせばおk。
- 769 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 17:40:08 ID:JWiEj2kH]
- これは便利そうですね
デメリットとかはありますか?
- 770 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 18:12:52 ID:HmqJ54co]
- 今の俺には何のことだかさっぱりだがメモっておく
- 771 名前:名前は開発中のものです。 mailto:sage [2009/07/24(金) 19:26:36 ID:5C3gkZxn]
- デメリットは思い当たらないなぁ。
「使いたい外部ライブラリのヘッダを全部何も考えずにstdafx.hに入れまくれ」 「全てのcppファイルの頭でstdafx.hをインクルードしろ」 ってルールが縛りといえば縛りだけど、むしろ楽になるだけだと思う。コンパイルも 別次元に速くなるし。 原理的には、stdafx.hの中身をコンパイルし終わったとこでいったん止めちゃって、 中間情報として拡張子pchのファイルに保存しておき、*.cppをコンパイルする時に その情報を使い回して、#include "stdafx.h"まで読み飛ばして、それ以降のソース だけコンパイルするイメージ。実際に内部がどう動いてるかは知らないけど。 なので、cppの頭で#include "stdafx.h"を入れ忘れると、 「プリコンパイル済みヘッダーの検索中に予期せぬ EOF を検出しました」 とか言われる。 stdafx.hの中には、C++のソースなら何書いても多分平気だから、大抵の使い方には 対応できると思われ。あまり頻繁に書き換えると、そのたびにpch作り直しで効果が 薄まるけど、自作ヘッダでも「更新少ない」「かなり色々なソースから参照される」 みたいな奴はstdafx.hに入れちゃってもいいと思う。
- 772 名前:名前は開発中のものです。 [2009/07/25(土) 15:25:58 ID:3qZ+q5uI]
- 当たり判定はこうすればいい。
プレイヤーキャラクターを移動させたければこうすればいい。 といった部品部品は作れるけど、いざゲーム自体を作ろうとなったら全然作れないんだ。 いったいどうしたらいいのかな・・・?
- 773 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 15:36:28 ID:hVdocGyY]
- その部品を組み立てればゲームになるはずなんだが
一体何が問題なんだ? それを言わずして質問されてもわかるはずがない。
- 774 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 15:37:45 ID:tEWYFYw5]
- >>772
とりあえず目標を決めてはどうか。 ただし、あまり大作でも作れなきゃ意味がないので、 初期の携帯電話用ゲームや、初期のファミコン、インベーダゲーム、倉庫番あたりを目指す。 矢印キーだけ、せいぜいそこにボタン1個くらいで遊べるゲームが楽でいい。 目標が決まったら、それを「部品」に分解する。 うまく部品単位になればお前さんの勝利。
- 775 名前:名前は開発中のものです。 mailto:sage [2009/07/25(土) 17:05:50 ID:OnXN/lFa]
- 綺麗な部品作りの楽しさとゲーム作りの楽しさは、何というかちょうど90度くらい
ずれた方向性がある。両方うまい人はすごくいい。 最初の一歩はとにかく単純に、ゲーム内容どうでもいいから一本のゲームとして 成り立ってる物を作る、つーこと。極端な話、全部WinMain()に入ってても一向に 構わない。(綺麗な部品作りに慣れてるならそうはならないだろうが) 部品は必要性を実感してから作る方が最適になりやすい。いわゆるシーズじゃなく ニーズで作る。先に需要を予測して部品を作る、ってのはほどほどにすべき。 で、「クソゲー作ってもなぁ」と思うなら、いっそ最初から真面目に本気ゲーを 作り始めてしまっても全然問題ない。
- 776 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 08:48:42 ID:Hw5xOpYa]
- 個々の部品の作り方が分かっていても、それらを全部組み合わせて、うまく動くようにするのは結構大変。
特にシーンやリソースの管理が入ってくるとかなり面倒になる。 そういう点ではやっぱり最初は1面のみの単純なゲームから始めた方がいいね。 プログラムが大きくなればなるほどバグ取りも大変になるから、最初は小規模から始めた方がいい。 自分はいつも最初からあれこれ入れようとして墓穴を掘ってる。
- 777 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 11:40:31 ID:AWfgbmGQ]
- プログラムを書く能力とゲームを組み立てる能力は、全くの別物
紙にステータスを書いて遊ぶとか、人形をいじって遊ぶとか そういうアナログな手法でイメージを立てて設計する 何も考えずにプログラムを先に書くのは意味がない。 ゲームを考える(妄想する)、ゲームを作る、ゲームを遊ぶ この3つのどれが欠けてもうまくいかない まず面白いシステムや世界観を考える 次にプログラム、シナリオ、絵、音楽などで形にする 最後に完成品を遊び倒して面白いゲームに近付ける ゲームは工業製品だから、作り手の職人気質がもろに出るよ
- 778 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 11:57:44 ID:aBNM0ylQ]
- >>772は単に大枠の設計が分からないとかそういうことなんじゃね?
>>776のいうシーン管理とかそういう骨組みの構造とか
- 779 名前:名前は開発中のものです。 mailto:sage [2009/07/26(日) 23:48:51 ID:AGlm2m1e]
- stdafx.hにいれた上で、そのソースに必要なヘッダはあえて書くソースに書くようにしてる
- 780 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:01:10 ID:GCep4g8b]
- 俺は何も考えずにいきなりプログラム作るぞ。
特に最初のうちは、あんまり考えないほうがいいと思うんだけどな。 緻密に設計していくのは、ミニゲームを何本か完成させた後のほうがいいと思う。
- 781 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:11:13 ID:bEbQPsi9]
- 俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに
肥大化してゲームになってる。
- 782 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:16:38 ID:VenKtjMK]
- 俺は「これできるかな? ……できた。んじゃこれはできるかな……? よしできた」とかやってるうちに
肥大化してまとまらなくなってやめる。
- 783 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 00:30:42 ID:aQ/IFL1X]
- 俺は「これできるかな? ……できない。んじゃこれはできるかな……? できない……」とかやってるうちに
肥大化することなく寝る。
- 784 名前:名前は開発中のものです。 [2009/07/27(月) 01:20:08 ID:VJq6W4rL]
- >>781-783
フイタwwwww
- 785 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 01:49:38 ID:pfTBKVpb]
- >>781-783がそれぞれ昔の俺、少し昔の俺、今の俺な件
- 786 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 04:39:26 ID:GaH2TMCV]
- 昔はコードが汚いだとか構造が嫌だとかの細かいことが気にならなかった
今はゲームが完成しない
- 787 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 04:44:35 ID:aJcGKYvD]
- 習作はできるが完成はできん
- 788 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 08:01:02 ID:sP35fefq]
- > 「○ ○の作り方」という本を読んで「この本に××が足りない」と考え、
> そこで今度は××に冠する解説をよみ「これには△△が抜けている」という印象をもち、 > そしてなかなか自分のゲームが完成しない、というパターンに陥った人は少なくないでしょう。 > さまざまな技術書や解説書、入門書を読みつくし、最先端技術に精通しているはずなのに > 自作アプリケーションがほとんど作れないというのは、決して珍しくありません。
- 789 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 08:53:03 ID:CBwVvngl]
- そういうのを「頭でっかち」というんだな。
- 790 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 13:31:26 ID:1REfJ+es]
- どこの引用なんだ
- 791 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 17:02:26 ID:cEG3tUqV]
- 本を読めば作れると考えるのが間違い
- 792 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 21:15:32 ID:C0govEpu]
- 昔どっかのゲームクリエイターが「やってみるのが一番勉強になる」的なこと言ってたから
俺はそれを胸に頑張ったよ…。
- 793 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 23:14:17 ID:aJcGKYvD]
- 男は度胸
何でも試してみるもんさ
- 794 名前:名前は開発中のものです。 mailto:sage [2009/07/27(月) 23:41:51 ID:1REfJ+es]
- 女は豊胸?
- 795 名前:名前は開発中のものです。 [2009/07/28(火) 02:18:15 ID:0RhUYUoP]
- 股だな
- 796 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 05:12:13 ID:uYQPfFdp]
- DXライブラリPortable、次のバージョン来ないかな
3Dポリゴン描画したいです……
- 797 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 12:23:42 ID:YL4nqTsX]
- そういやDX3Dってどれくらいできたのかな?
- 798 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 13:20:14 ID:aQj264s2]
- >>797
逃げたんじゃないか? 大学中退するやつだし
- 799 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 19:50:25 ID:lbcOkIrb]
- DX3DってD3DXと紛らわしいな。
3D描画をDXライブラリみたいに単純化するのは無理。3D描画のフレームワークは D3DXで十分。それ以上やるとライブラリの独自色が付く。 2DもD3DXSpriteで構わないし、ちょっと調べればテクスチャにαの付いた板ポリを D3DXで描画する方法はいくらでも出てくるけど。 DirectX6はDreamcast向け、DirectX8はXbox向けに作り直されてる訳で、そのまま でも十分行けるライブラリ。DXライブラリの最大の意義は、WinMainのすっきり感 だと思う。
- 800 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 20:50:59 ID:LTJXvZ7v]
- 本家の名前の紛らわしさに比べたら…
DXライブラリでも使えよ!って言われて固有名詞だとは夢にも思わず なかなか存在に気付けなかった俺
- 801 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 20:52:30 ID:bkreYxYW]
- 3Dなんかいくら敷居を下げたところでDXライブラリしか使えないような子には扱えないよ
ゲームフレームワークみたいな方向に簡単にするなら別だけども
- 802 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:36:50 ID:C3k1GCCB]
- あの・・・
流れを断ち切った横レスなんですが、 C言語+dxlibで作ったプログラムをC++のクラスってのを使って まとめようと思い、メインループを書いてみたんですが、 書き方があっているのかすごく不安なのでお聞きしたいと思いました。 もし、スレチならいいスレ教えて・・・ よし!見せてみろ!ならソース張る。
- 803 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:37:39 ID:lZJGMEL/]
- DXライブラリに親でも殺されたのか
- 804 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 21:43:58 ID:LTJXvZ7v]
- >>802
ヨシみせてみろ
- 805 名前:802 mailto:sage [2009/07/28(火) 21:52:18 ID:C3k1GCCB]
- ワーイ ID GCCってw
#include "GV.h" int WINAPI WinMain( HINSTANCE hI,HINSTANCE hP, LPSTR lpC,int nC ) { ChangeWindowMode(TRUE); if(DxLib_Init() == -1) return -1; //↓このあたりがめっちゃ不安なのですが。 Flame* T = new Flame; // SetDrawScreen(DX_SCREEN_BACK); //MainLoop()内で処理を書いてます while(!(ProcessMessage()) && !(CheckHitKey(KEY_INPUT_ESCAPE)) && (T -> MainLoop()) && !(ScreenFlip()) && !(ClsDrawScreen())); // DxLib_End(); return 0; } ヘッダファイルも見てもらえるのなら・・・・☆彡ってレスしてくらさい
- 806 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:00:28 ID:bkreYxYW]
-
それだけならそんなにおかしいところはないと思う 細かいどうでもいいことを突っ込ませてもらうと, FlameじゃなくてFrame あと大文字一字の変数名はやめてくれ紛らわしい
- 807 名前:801 mailto:sage [2009/07/28(火) 22:09:21 ID:C3k1GCCB]
- フレイム・・・フレーム・・・
一文字違いが大違いでした・・・ 参考にした本(セガ本?)にそういう記述があったのでつい (Tの件は) T* <=この変数を使う場合 T->A T->B とか、 for(int i=0;i<1000;i++){ T-> X[i] } みたいに変数の中身をwhileの中で更新しまくっても問題ないですか?
- 808 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:10:29 ID:YL4nqTsX]
- ゲームプログラマーになる前に〜ってタイトルの本か
- 809 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:14:47 ID:C3k1GCCB]
- そうです。
ちなみに2章を読み始めてから進まないまま二ヶ月目
- 810 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:16:24 ID:bkreYxYW]
- >>807
ダメダメ それならCの構造体と変わらない クラスの外からメンバ変数にアクセスするのは避ける クラスっていうのは,外からはボタンを押すだけで中で勝手に処理してくれる 便利な機械みたいな感じ(そういう風に作るのが理想)
- 811 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:19:08 ID:TfpzHMPf]
- 先にEffectiveC++とデザインパターンの本読むべき
- 812 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:26:10 ID:bkreYxYW]
- クラスを利用したこともないのにいきなり作れるわけがない
ためしに他の人が作ったC++のクラスライブラリを触ってみればいいんじゃない ゲームエンジンならSeleneとか 英語大丈夫ならIrrlichtなんかも簡潔でおすすめ どういう風にクラスを使えばいいのかわかるよ
- 813 名前:802 mailto:sage [2009/07/28(火) 22:29:42 ID:C3k1GCCB]
- なるほど。。
本高い・・・。 すでに 14才から・・・、 OS自作・・・ やさしいC・・・ よくわかるC・・・ IP! Cプログラミング講座、 アルゴリズムマニアックス、 はじめてのアルゴリズム入門、 とかの本を買っては進めないところがあって止まるを繰り返してもう資金が・・・ 来月余裕があったら買ってみます。
- 814 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:31:58 ID:TfpzHMPf]
- 買う前に一冊読みきれwww
それか図書館だな
- 815 名前:801 mailto:sage [2009/07/28(火) 22:35:44 ID:C3k1GCCB]
- これだけ本読んだらもしかしたらオレゲーム作れるんじゃね?
と勘違いして作り始めたのさ! もう・・・タイムリミットがちかずいている・・・・・・ やつが・・・・来る!
- 816 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:36:54 ID:LTJXvZ7v]
- マクドに注文する側がバイトのシフトとかパンズの在庫を気にしちゃ駄目だぜ
- 817 名前:802 mailto:sage [2009/07/28(火) 22:41:24 ID:C3k1GCCB]
- >>815
そういうことなのか! なんかよくわかった気がしました。 クラスの中で処理を完結すればいい感じになれるってことですね♪ アレ?ッてことは今書いるプログラムは・・・・
- 818 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:50:21 ID:lbcOkIrb]
- スタックフレームとヒープとスタティック領域が分かってないとC/C++は辛い。
どっかに親切な解説ねーかな。ここじゃ正直めんどい。 とりあえず今から風呂→ネトゲでギルド潜りするんで、一分でそれっぽいとこ探して おいた。 ttp://gihyo.jp/dev/serial/01/antique_assembler 初心者に分かるかはシラネ。でもこれが分かればCのメモリでつまづくことはたぶん 無くなりそうな記事に見えた。15秒くらいしか読んでないけど。
- 819 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:55:24 ID:lbcOkIrb]
- すまん、面白そうなんで↑の記事をちょっと読んでみたが、初心者でWindows環境だと
素直に読めるもんじゃないかも。 ある程度「ふんふんそんなもんか」って飛ばし読みするには悪くないとは思うけど、 真面目にサンプルコードを走らせたりするタイプだと微妙にきつそう。
- 820 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:57:31 ID:bkreYxYW]
- あんまり低レベルなことは気にしなくていいと思うよ
オブジェクト指向をちゃんとやりたかったらJavaのような 思いっきり抽象的な世界でリフレッシュした方がいいかもしれない ゲーム作るのだって簡単
- 821 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 22:58:28 ID:C3k1GCCB]
- えっと・・・
関数を呼び出したときには元の場所に帰ってくるための情報が どこかよくわからないない場所に スタックの構造をした形でつまれているんだよ、ってこと?
- 822 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:11:05 ID:lZJGMEL/]
- しかしゲームを作るのにそれほど必要ない知識なのであった
- 823 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:14:09 ID:C3k1GCCB]
- java・・・・
とりあえずおいらゲームを作って見るよ! クラスの中でクラスを宣言したりnewする方法がまったく理解出来ないけど。 時間切れなので・・・ノシ ご指導ありがとうございました!
- 824 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:29:31 ID:0RhUYUoP]
- さて、そろそろD言語に手を出そうか…
- 825 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:32:38 ID:LTJXvZ7v]
- そして一向にゲームが完成しない罠
勉強もいいけど取り敢えずサクッと作った方がよいかも
- 826 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:40:38 ID:gMpP2gLw]
- 上から降ってくる「モノ」を、ただひたすら画面下部で避けるだけのゲームとか、そういうの?
- 827 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:45:05 ID:C3k1GCCB]
- あら??
ニコニコ動画にうpしたのならあるけど・・・・ それよりヘッダファイル見る?
- 828 名前:名前は開発中のものです。 mailto:sage [2009/07/28(火) 23:53:41 ID:KFmBMjPZ]
- 見てあげないこともない
- 829 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:07:48 ID:6Y8+8XuP]
- ttp://www.nicovideo.jp/watch/sm7736340
とりあえず張ってみる。 これ以上スレすると荒らしになってしまいそうな気ガスる
- 830 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:22:10 ID:sFXJxN65]
- つーか、やろうとしてることから考えると、ちゃんとメモリの意味が分かってないと
トンチンカンになる。 余計なことやろうとせず、意味の分かってる仕様だけ使っていればいい。いわゆる better CとしてのC++。newとか罠満載なものにやたらと触らない。
- 831 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:37:52 ID:1WJmBm/8]
- 俺は昔アセンブラかじったことあったからメモリの意味はある程度わかってるつもりだったが、
最近までポインタが理解できずに使えなかった……。 どっかのサイトで「int *p」は「int* p」だって書いてあるのを読んでやっと少しだけわかった気がした。 「なんで *p で宣言してるのに使うのは p なんだ???」とずっと疑問だった。 Cって俺にはわかりづら過ぎる……。わかる奴凄い。
- 832 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 00:46:49 ID:e3ckjdq+]
- >>831
68系のアセンブラを知っていればポインタを知っているとおもう。 ここを読んでみなさい。C++について詳しく解説してある。 www.asahi-net.or.jp/~yf8k-kbys/
- 833 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 02:17:12 ID:IM9p+Dbm]
- ポインタなんて最初あまり分からずに大分年月経ったらやっと分かり始めた
いろいろ試行錯誤とか苦労しないと分からないのでは 話変わるがちょっと上のレスに関連することだが俺結構メンバ公開にして外からアクセスしてた 何かアクセサ使うとその分遅くなるような気がしてしまうんだよなあ
- 834 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 04:42:03 ID:sFXJxN65]
- ぶっちゃけアセンブラが分かってれば、ソフトウェアレベルの出来事なら一番下の構造
から透けて見えるから、ポインタなんかは概念も挙動も一発で飲み込める。 下の構造が見えないと、どんな処理が速いとか遅いとか効率いいとか悪いとかは経験の 繰り返しで飲み込むしか無いけど、下から見えていれば論理的に自然に飲み込める。 だが、アセンブラを理解する段階での苦労が大きいし、今のご時世でどんだけ報われる かは自信ないからお勧めもしない。 とは言っても、昔は「まずアセンブラで」とか「BASICかアセンブラしか開発環境は ありません」とかが普通だったから、そこまで難しいもんでも何でもないけどな。
- 835 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 05:06:48 ID:KJv9oy2N]
- アセンブリ言語自体はそらもう単純なもんだからな
ただ今のプログラミング環境に慣れ親しんでると、ちょっとした事すら書くのが面倒ってだけで
- 836 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 06:22:35 ID:gEGcx4CR]
- newとかdeleteとか
必要性がよくわからなくて結局殆ど使っていない。 使った方がカッコいいんだろうけど
- 837 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 07:15:08 ID:cb/+Lg0n]
- 動的に確保するときだけ使ってる
- 838 名前:名前は開発中のものです。 mailto:sage [2009/07/29(水) 09:17:36 ID:IM9p+Dbm]
- 俺も必要性よく分らなかった時は使わずにやってた
使い方覚えたら結構便利だ すぐでなくともそのうち覚えればいいんじゃないか
|

|