[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 09/28 23:53 / Filesize : 245 KB / Number-of Response : 908
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++でRPGゲームを作成する



1 名前:じっち [04/11/23 07:14:50 ID:CCsv+84e.net]
少し前まではHSPで作ろうと思っていたのですが、HSPでRPGゲームを作るのは難しいらしいので、C++で作ろうと思います。
C++のプログラミングは初めてですので、みんなの力が必要です。
お願いします。
あと質問ですが、C++ってMMORPGつくれますか?

709 名前:名前は開発中のものです。 mailto:sage [2006/05/04(木) 21:19:36 ID:5IsqMDd3.net]
static Item Item::CreateItem(int id)
{
case 0:...
}
みたいにやれば?

710 名前:名前は開発中のものです。 mailto:sage [2006/05/04(木) 21:43:38 ID:MIihhrBb.net]
アイテムを生成するクラスを使う。

その中で、switch〜caseの羅列になっても、外部からは
隠すことが出来るので、トリッキーなコードを書くより
ずっといい。


711 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 04:52:08 ID:kC2BXK6h.net]
case分の羅列でもいいけど、それよりはメソッドへのポインタでテーブルを作成しる。

712 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 09:52:19 ID:/fNbso43.net]
pc8.2ch.net/test/read.cgi/tech/1133286541/
次スレはここと合併すべきじゃない?

713 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 10:24:09 ID:1M0+6Jiy.net]
埋まったら合流で良し

714 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 12:18:33 ID:yx9WHGs4.net]
でも、あっちは板が違うしな。
さらに言えば、昔はあっちの方がこっちに行くように言われてたわけだし・・・。


715 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 21:43:00 ID:LicKzfcD.net]
>>711
ねぇねぇ、それってさ何か親クラスを作ってそのポインタに子クラスの参照先を入れて行くのと同じですか?


716 名前:名前は開発中のものです。 [2006/05/27(土) 23:42:11 ID:TAx3htqU.net]
がんばれ俺!今日明日で戦闘を作るんだ!
ここが踏ん張りどころだ!完成するぞ!完成するぞ!

717 名前:名前は開発中のものです。 mailto:sage [2006/05/28(日) 00:00:25 ID:SbFom2eu.net]
C++でっていうけど、ウインドウズで動作させようと思ったら
APIの勉強もいるんだよね?orz



718 名前:名前は開発中のものです。 [2006/05/28(日) 00:40:31 ID:lcSvizP1.net]
>>716 がんばれ、超がんばれ、世界がおまえを待ってるぞ!

719 名前:名前は開発中のものです。 mailto:sage [2006/05/29(月) 15:15:30 ID:eI7Wuh/Q.net]
>>717超いるよ

720 名前:名前は開発中のものです。 [2006/05/29(月) 19:45:46 ID:qsL/g3xF.net]
さて、716の見苦しい言い訳を聞こうか

721 名前:名前は開発中のものです。 mailto:sage [2006/05/29(月) 21:13:55 ID:zEiBbzn5.net]
二日っていうと五時間ずつやったとしても10時間だよね。
10時間で完成可能なことだったの?

722 名前:名前は開発中のものです。 mailto:sage [2006/05/29(月) 21:51:20 ID:mBWO4XJP.net]
で、まずは>>720-721よ。
この板に何しに来たのか説明してもらおうか。

723 名前:716 mailto:sage [2006/05/30(火) 14:31:56 ID:kpb46nhc.net]
(^^;
完成できなかったけど、だいぶ進んだ
摂のRPGはドラクエ3みたいな単純なシステムではなかったことが敗因

724 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 18:30:24 ID:/JTGRSEu.net]
単純・・・だとぉ!

725 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 18:35:27 ID:A1fjl0vL.net]
システムを単純化させるのがプログラマの腕

726 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 18:40:33 ID:XHx1vsq2.net]
やっぱ沢山RPGやったほうがいい?
FFとDQの典型しかした事無いけど

727 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 19:40:27 ID:hZJKdy+m.net]
>>726
どうせ最後はDQに集約されるんだから気にするな。
ただ、新しい(と思える)システムを作って『俺SUGEEE』ってやると、
後で絶対泣くことになる。ゲーム業界はすでに20年歩んでるんだからな。



728 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 19:44:19 ID:XHx1vsq2.net]
>>727
流石にもう出尽くしたのかな
あんまり新しいの作ろうとすると今度はRPGでなくなるかもね・・・
最初はDQみたいなの作るよ

729 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 20:06:53 ID:hZJKdy+m.net]
>>728
ああ、でもWizardryをやったことがないならやっておくのがいいよ。
和製RPGの原点だから。

730 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 20:18:52 ID:PgwMBF7v.net]
wizって洋ゲーじゃなかったっけ
ワードナは逆読みすると開発者の名前になるとか聞いたことあるんだが

731 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 20:20:15 ID:hZJKdy+m.net]
>>730
トレボーもワードナも開発者の名前をひっくり返したやつだな。
WizardryとUltimaはどちらも洋ゲーだけど、それを組み合わせたのがDQ
特に戦闘関係はWizardryから引っ張ってきてる。

732 名前:716 mailto:sage [2006/05/30(火) 21:00:58 ID:kpb46nhc.net]
摂のはアクションRPGだった(^^;
グラフィックは8方向分用意(^^;
グラフィックだけで死にそう(^^;;

733 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 21:41:22 ID:uSUZilj0.net]
>>732
とりあえず、ドラクエ(の簡易版)から始めた方がよさそう。

あの系統のゲームは、マップ処理やイベントシステムなんかの基礎を
実際に作ってみるのに好都合で、プログラムの難易度も低い。


734 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 22:09:25 ID:RATgowud.net]
ちょっとまてw
作り始めるまで戦闘がアクションなのかDQ風なのか判別できなかったのか?www

735 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 18:37:35 ID:kqnlPuDw.net]
いやそれは、アクションもDQ並に単純にできると思ったいたんじゃまいか。
DQを単純といえるほどの腕があるのかは知らないが。


736 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 18:41:52 ID:dXTIpZ6p.net]
ARPG作ってますが
当たり判定を人型にするにはどうしたらいいですか?

737 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 19:13:27 ID:fUZxD/GV.net]
厳密にやりたいならキャラクタ同士のテクセルが重なっているかどうかを一ドットずつ調べる
大雑把にやりたいなら頭、胴体、足、手それぞれの当たり判定を矩形や円で作る
もっと大雑把にやるなら胴体だけ矩形で作ればいい



738 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 19:17:20 ID:dXTIpZ6p.net]
1ドットずつやろうとしたら泣きたくなるほど膨大になりそうでした・・・

>頭、胴体、足、手それぞれの当たり判定を矩形や円で作る
これ参考に組みます!

739 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 20:53:14 ID:OyxnCHMf.net]
まあ、厳密に当たり判定とる労力を他の調整に回した方が
最終的には面白いゲームができるからなぁ。

プレイヤーは見た目が不自然じゃなければ、そこまで
厳密な部分は見ない。見るのは解析マニアが弾幕シューターだ。

740 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 21:37:10 ID:fvp1fd0u.net]
アクションRPGは単純な紙芝居RPGとは違うパフォーマンス上の配慮が必要で大変ですね(^^;
冗長なことやってるとパフォーマンスガタ落ちで手抜きができません(^^;;
普通のRPGでは通っていたことが通らなくなりました(^^;;;


741 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 23:54:17 ID:VkKcen7a.net]
たぶん>>736のARPGは8頭身モナーみたいのが入り乱れるんだろうな・・・

742 名前:名前は開発中のものです。 mailto:sage [2006/06/01(木) 01:26:31 ID:1wKUdWEf.net]
たぶん>>716は釣り師なんだろうなぁ

743 名前:名前は開発中のものです。 mailto:sage [2006/06/17(土) 01:55:24 ID:gghwP/lw.net]
>>716
参考にドウゾ。ただコードの構造化が糞だから気をつけたほうがいい。
ttp://www.geocities.jp/amazonium011001/page1.htm

744 名前:716 mailto:sage [2006/06/17(土) 12:45:56 ID:A7FmLv2E.net]
ありがとうございます・・・ってどれが参考になりますか?
forループをウェイトに使っているのには思わず吹いてしまいました(><)

アクションRPGできてきました(><)
PDAと互換性保つため自前DIB描画の拡縮やアルファブレンドなので激重です(><)
誰か下のやつ最適化してください(><)

途中で宣言なしに出現する変数は事前に計算されていて、意味は以下のようになっております。
unsigned char alpha・・・アルファ値。
float mag_x、 mag_y・・・X、Y軸の拡大幅
unsinged char* dest_buffer 、 src_buffer・・・転送先,転送元イメージのバッファ。
int dest_offset・・・転送先データのオフセット。
int src_offset・・転送元データのオフセット。
int max_x ,max_y ・・・ 書き込みする範囲の最大バイト数
int bufW、srcW・・・転送先、転送元画像の幅。

unsigned char t = 255-alpha ;
for(int i=0;i<max_w;i+=3)
{
for(int j = 0;j<max_y;j+=3)
{
base_dest = dest_offset + i + j * bufW;
base_src = src_offset + ((int)((i / 3) / mag_x) + (srcW * (int)((j/3) /mag_y )))*3 ;

dest_buffer[base_dest] = (( t * dest_buffer[base_dest] ) >> 8) + (( alpha * src_buffer[base_src] ) >> 8 );
dest_buffer[base_dest+1] = (( t *dest_buffer[base_dest+1] ) >> 8) + (( aplhal * src_buffer[base_src+1] ) >> 8 );
dest_buffer[base_dest+2] = (( t * dest_buffer[base_dest+2] ) >> 8) + (( alpha * src_buffer[base_src+2] ) >> 8 );
}
}

誤字脱字があるかもしれません(><)

745 名前:名前は開発中のものです。 [2006/06/17(土) 13:11:36 ID:MX8Yl6AK.net]
>>716
ループの中心で割り算などは極力控えるべき
ブレゼンハム使おう。
というかなぜ自前?

746 名前:名前は開発中のものです。 mailto:sage [2006/06/17(土) 13:12:23 ID:MX8Yl6AK.net]
PDAと互換性ってかいてあるな、すまん

747 名前:名前は開発中のものです。 mailto:sage [2006/06/18(日) 00:38:44 ID:kJEJ2x/f.net]
ブレセンハムが応用できるなんて知りませんでした(><)
改良してみます(^^)



748 名前:名前は開発中のものです。 [2006/06/18(日) 03:00:50 ID:DrGgvxn8.net]
>>744
それダウンロードしたの?俺も同じところで吹いたw
参考になりそうなのはvisiRPGとNew CUIRPGってやつだけだよ。

749 名前:名前は開発中のものです。 [2006/06/18(日) 09:52:01 ID:kWRvX99Z.net]
おいおい、初心者をミスリードするな。
visiRPGとNew CUIRPGも参考にならないだろう。
反面教師ならまだしも、作者の良識を疑う。


750 名前:名前は開発中のものです。 [2006/06/20(火) 05:44:49 ID:yRy3miB7.net]
鬼はどうなったん?

751 名前:名前は開発中のものです。 mailto:sage [2006/06/20(火) 11:04:29 ID:annU3c5h.net]
ステフが捨てました。

752 名前:名前は開発中のものです。 mailto:sage [2006/06/21(水) 17:03:09 ID:b0spWjUO.net]
>>749の作るゲームに期待

753 名前:名前は開発中のものです。 mailto:sage [2006/06/21(水) 18:05:51 ID:HFz2n3fa.net]
pc8.2ch.net/test/read.cgi/tech/1133286541/793-794

754 名前:名前は開発中のものです。 [2006/06/21(水) 18:07:40 ID:HFz2n3fa.net]
ヘッダに実装を書かない方法を知らないんジャマイカ

755 名前:名前は開発中のものです。 [2006/06/22(木) 19:56:56 ID:UpYDoT5s.net]
俺たちでドラクエ作ろうぜ
game10.2ch.net/test/read.cgi/ff/1149874021/

スタッフ募集!
シナリオ班・ツクール班・音楽班・ドット絵班


756 名前:名前は開発中のものです。 mailto:sage [2006/06/25(日) 17:33:37 ID:cfrlOTij.net]
ドラゴンクエストノスタルジア
とか創ったら略語がDQNにw

757 名前:名前は開発中のものです。 [2006/08/01(火) 04:11:10 ID:lqTlZ2D0.net]
きっと鬼ぃは喉を餅に詰まらせて診断だ



758 名前:名前は開発中のものです。 mailto:sage [2006/08/01(火) 16:04:04 ID:dyzvPv2P.net]
ですよねー

759 名前:名前は開発中のものです。 mailto:sage [2006/08/04(金) 18:42:33 ID:W6nuuaJ8.net]
うんうん ^^

760 名前:名前は開発中のものです。 [2006/10/14(土) 17:56:19 ID:TyTVrLwQ.net]
ワロタ

761 名前:名前は開発中のものです。 mailto:sage [2006/10/26(木) 21:13:09 ID:ssyUOzfl.net]
C++でRPGシステムを作ろうと思っています。
汎用性重視で描画処理はすべてフレームバッファ(Win32ではDIBとして表示。LinuxとかMacは知らんw)。
フォントも安心して使える固定サイズのフリーフォント内蔵で画面イメージも統一できます。
シナリオエディタも搭載、ツクール感覚でオリジナルのRPGを作ることが可能。







設計書書くんで、誰かプログラミングしてください。


762 名前:名前は開発中のものです。 mailto:sage [2006/10/26(木) 23:08:33 ID:5Uv1F1QJ.net]
クラス設計は人の書いたの見てみたいなあ

763 名前:名前は開発中のものです。 mailto:sage [2006/10/27(金) 15:19:29 ID:PMSzIrz+.net]
>>761
それは津クールXPやDxLib・SDLと何が違うんだ?
もし、おもしろそうなら、合間合間にcodingはしてもいいが。

764 名前:名前は開発中のものです。 mailto:sage [2007/01/28(日) 23:04:23 ID:LYBCO2KL.net]
自分のスキルあげるならどういうゲーム作ったら良いのさ

765 名前:名前は開発中のものです。 mailto:sage [2007/01/30(火) 11:53:29 ID:C4TtFAJ1.net]
一定の経験値でスキルあがるようにするとか。
……と微妙にボケてみる。

766 名前:名前は開発中のものです。 mailto:sage [2007/04/12(木) 17:49:52 ID:ZybyQoX6.net]
>>764
今のレベルによるが、
ある程度も組めないようなら、本買ってきてそれに載ってるコードを読めるようになるとか
AngBandなどオープンソースの奴を頑張って読む。
その後は、何か2週間で作れるゲームを自力で作る(設計も自分でする)。

ここまで、できれば、あとはだいたいどんなRPGでも時間や物理的障害を除いて出来るようになると思うよ。


767 名前:名前は開発中のものです。 [2007/04/12(木) 17:50:34 ID:bCgTq/qC.net]
盛りage



768 名前:名前は開発中のものです。 mailto:sage [2007/04/12(木) 18:43:46 ID:MaYb13RL.net]
>>764
作りたいゲーム作れば?

769 名前:名前は開発中のものです。 mailto:sage [2007/11/21(水) 16:03:51 ID:74vDcPF7.net]
>>764
ピアノと一緒で、練習曲を色々やるべき。
大曲を練習してもうまくならない。

770 名前:名前は開発中のものです。 mailto:sage [2007/11/26(月) 14:03:23 ID:uhzP5Hxh.net]
ドミノ10万個を見ても圧倒されない精神力

771 名前:名前は開発中のものです。 mailto:sage [2008/04/25(金) 07:51:24 ID:CbC63WhO.net]


772 名前:名前は開発中のものです。 mailto:sage [2008/06/04(水) 20:15:51 ID:xVETCOHb.net]
新しい gamedeve一応かきかき
TopPage - game-develop.com wiki
wiki.game-develop.com/

GameDevWikiを何とかするスレ
pc11.2ch.net/test/read.cgi/gamedev/1156117275/

773 名前:名前は開発中のものです。 [2008/10/04(土) 03:04:33 ID:6CC7noIJ.net]
world


774 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 13:58:56 ID:CM/VVTpv.net]
めんどいから紙芝居から練習するよ

775 名前:名前は開発中のものです。 [2009/03/04(水) 08:57:47 ID:BIR8YGwO.net]
RPGを作る前にミニゲームなどを作れるようにしたほうがいいよ。
ミニゲームで作った技術はRPGで応用できると思う
いきなり、 大作を作ろうとしても無理

776 名前:名前は開発中のものです。 mailto:sage [2009/03/04(水) 09:02:17 ID:WGe6HWau.net]
その通りではあるが
こんな過疎スレで言わんでも

777 名前:名前は開発中のものです。 mailto:sage [2009/04/08(水) 14:56:30 ID:3KQiReEr.net]
過疎ってるなー。




778 名前:名前は開発中のものです。 mailto:sage [2009/07/02(木) 02:09:35 ID:TZX2GARh.net]
とりあえず完成形が何かというを考え直した方がいいとレナは思うの

779 名前:名前は開発中のものです。 [2010/08/04(水) 16:06:44 ID:uZVXPzys.net]
>>107 のサイトにあったマップエディタって誰か持ってない?

うっかり消してしまったから誰かうp頼む

780 名前:名前は開発中のものです。 [2010/09/13(月) 20:52:54 ID:M+I9V0GA.net]
旧態依然としたコマンド&ターン戦闘が激しくつまらないと思う今日この頃


781 名前:名前は開発中のものです。 [2010/10/14(木) 12:24:18 ID:/y1Wbqlm.net]
JavaScriptでも作れそう?

ttp://www.programmingmat.jp/game_dev/webgame_dev/mapevt.html


782 名前:名前は開発中のものです。 mailto:sage [2010/10/23(土) 15:44:45 ID:A2QO4U5x.net]
>>781
HTML5の威力はこっちのが判りやすいよ
www.publickey1.jp/blog/10/html5javascriptakihabaraiphoneandroid.html

783 名前:名前は開発中のものです。 mailto:sage [2011/01/21(金) 23:01:50 ID:MHt2IGM0.net]
その通りではあるが
こんな過疎スレで言わんでも

784 名前:名前は開発中のものです。 [2011/03/09(水) 22:15:31.71 ID:hobFeZxC.net]
このスレもらっていいかな?

C++とDirectXでRPGを作りたいんだが
誰か一から作り方を教えてくれる奇特な人はいる?

785 名前:名前は開発中のものです。 mailto:sage [2011/03/09(水) 23:09:17.54 ID:gadIXpQZ.net]
>>784
一緒に考えるくらいでよければ協力しますよ。

786 名前:名前は開発中のものです。 mailto:sage [2011/03/09(水) 23:38:44.90 ID:hobFeZxC.net]
>>785
おお、ありがたいです

とりあえずDirectXの知識とか皆無なので
ドラクエ1-4程度の2DRPGを作ってみようと思う
ゲーム性とか関係なく、コンパクトな物を完成させることを目標に

787 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:15:24.30 ID:zj8b7q7C.net]
>>786
まったく一からと仮定して下記を試してみてください。

#include <windows.h>
#include <stdio.h>

class WINDOW {
public:
WINDOW();
};

WINDOW window;

WINDOW::WINDOW(){

AllocConsole();
freopen( "CONOUT$", "w", stdout );
freopen( "CONIN$", "r", stdin );
}

int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){

printf( "hello world\n" );

do {
;
} while ( 1 );

return 0;
}



788 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:23:55.03 ID:zj8b7q7C.net]
(787続き)
いろんなアプローチがあるかと思うのでいろんな意見を参考にされるとよいと思います。
わたしはまずはprintfから作るオールドタイプです。

あと、DirectXはver9しか知らないです。
VisualC++は使ったことないのでまったくわからないです。


789 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:26:00.17 ID:LV/Xv7hB.net]
>>787
はい、試しました

790 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:29:26.99 ID:LV/Xv7hB.net]
>>788
DirectXは9.0cで作ろうと思っているので、ちょうど良いです

自分はもっとオールドタイプですね
MSXの頃にプログラムしてたので、Windows環境はさっぱりです
まあVC++が吐き出すWin32APIの雛形くらいは理解できますが

791 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:36:07.62 ID:zj8b7q7C.net]
次はとりあえずWindowを作成してしまいましょう。
WINDOWクラスに下記のメンバーを追加してください。

private:
HWND handle;
MSG message;
bool sync;

struct {
unsigned int X,Y,W,H;
unsigned int x,y,w,h;
} screen;

変数名とか関数名は自分のポリシーにあわせて変更してください。

792 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:49:20.74 ID:zj8b7q7C.net]
メンバー関数を作成します。
public:
bool open( void );

ゲームの名称が決まっているならプロジェクト名をつけておくと愛着が湧きますよ。

#ifndef PROJECT
#define PROJECT "お好きな名前"
#endif

そろそろファイルを.hと.cppに分割したほうがよいかも知れません。

793 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:51:12.61 ID:zj8b7q7C.net]

bool WINDOW::open( void ){
HINSTANCE hi = GetModuleHandle( NULL );
WNDCLASSEX wc;

wc.cbSize = sizeof( wc );
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = Proc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hi;
wc.hIcon = ( HICON )LoadImage( NULL,IDI_APPLICATION,IMAGE_ICON, 0,0,LR_DEFAULTSIZE|LR_SHARED );
wc.hIconSm = wc.hIcon;
wc.hCursor = ( HCURSOR )LoadImage( NULL,IDC_ARROW, IMAGE_CURSOR,0,0,LR_DEFAULTSIZE|LR_SHARED );
wc.hbrBackground= ( HBRUSH )GetStockObject( BLACK_BRUSH );
wc.lpszMenuName = NULL;
wc.lpszClassName= _T( PROJECT );


794 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:52:43.01 ID:LV/Xv7hB.net]
>>791-792
できました

ちなみにどんな環境でコンパイルしてるんですか?
自分はVisual C++ Express 2010でやってます

795 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:55:08.70 ID:zj8b7q7C.net]
RegisterClassEx( &wc );

handle = CreateWindow(wc.lpszClassName,
wc.lpszClassName,
WS_OVERLAPPEDWINDOW,
screen.X = screen.x = ( GetSystemMetrics( SM_CXSCREEN ) - SCREEN_W )/ 2,
screen.Y = screen.y = ( GetSystemMetrics( SM_CYSCREEN ) - SCREEN_H )/ 2,
screen.W = screen.w = SCREEN_W + GetSystemMetrics( SM_CXFRAME ) * 2,
screen.H = screen.h = SCREEN_H + GetSystemMetrics( SM_CYFRAME ) * 2 + GetSystemMetrics( SM_CYCAPTION ),
NULL,NULL,hi,NULL);

ShowWindow( handle, SW_SHOW );
UpdateWindow( handle );

return true;
}
これでコンパイルしてみてください。
"Procという関数がないよ"でエラーになります。

796 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:57:21.06 ID:LV/Xv7hB.net]
>>795
そこまで出来ました

ProcとSCREEN_WとSCREEN_Hが定義されていないので
エラーになりますね

797 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:59:49.27 ID:n38lezle.net]
windows.hのインクルード前に
#define WIN32_LEAN_AND_MEAN
を入れておくとコンパイルが早くなったりとか
_WIN32_WINNTを定義しておかないと勝手にVistaとか7専用にされたりとか



798 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:00:15.45 ID:zj8b7q7C.net]
>>794
MinGW g++というコンパイラです。VCのような統合環境が苦手なんです。

静的メンバー関数としてProcを追加してください。
private:
static LRESULT CALLBACK Proc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp );

LRESULT CALLBACK WINDOW::Proc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp ){

switch ( msg ) {
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}

return DefWindowProc( hWnd, msg, wp, lp );
}



799 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:04:37.18 ID:zj8b7q7C.net]
>>796
スクリーン用の定数定義を忘れていました。
WINDOWクラスに下記の定義を追加してください。

private:
enum {
SCREEN_W = 800,
SCREEN_H = 600,
};

数値はお好みで変更ください。
ファイルや環境変数で外部から取り込む方法もあるかと思いますが、
面倒くさいんでやってないです。最後の方で対応すればよいかと。

800 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:14:43.71 ID:LV/Xv7hB.net]
>>798-799
できました
LRESULT CALLBACK WINDOW::Proc〜の行で
同じパラメーターの型で静的な、または動的なメンバー関数をオーバーロードできません。
とのエラー


801 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:21:28.74 ID:zj8b7q7C.net]
>>800
すいません原因よくわからないです。
ProcをWINDOWクラスのメンバーから外して、単なる外部関数にしてみてください。


802 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:25:17.77 ID:LV/Xv7hB.net]
>>801
できました

803 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:30:45.13 ID:zj8b7q7C.net]
>>802
そうですか。。。コンパイラの差異かも知れないです。
先々、この手の差異でどうにもわからない場合は、
申し訳ないですが自己解決か他に助言を求めてください。

下記の2つのメンバー関数を追加してください。

private:
bool peek( void ); //ウィンドウのメッセージを処理します
bool sync( void ); //タイマーの同期を取ります


804 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:36:52.24 ID:LV/Xv7hB.net]
>>803
syncが再定義でエラーになりますね
以前にbool変数として定義されていますが

805 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:39:12.81 ID:zj8b7q7C.net]
最終的に作成した3つのメンバー関数はWinMaiに以下のように組み込みます。

window.open();
do {
GameSystemInit();
while ( window.peek() ) {
if ( !window.sync() ) { continue; }
if ( !GameSystemMain()) { break; }
}
GameSystemFree();
} while ( window.sync() );

↓これらがゲームっぽいプログラムを入れるところです。

bool GameSystemInit( void ){ return true; }
bool GameSystemMain( void ){ return true; }
bool GamaSystemFree( void ){ return true; }

とりあえず空関数を適当に作成しておきます。

806 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:41:06.36 ID:zj8b7q7C.net]
>>804
あまり自分の色が出ないように自分のソースからそのまま名前を持ってこないようにしています。
すいませんが適宜お好みの命名規則で回避してください。

807 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:47:57.19 ID:zj8b7q7C.net]
(806続き)
混乱するので、以降はそのまま持ってくるようにします。
sync変数と関数は下記になります。

private:
bool sync;

public:
bool Sync( void ) const { return sync; }




808 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:51:46.72 ID:LV/Xv7hB.net]
>>807
そこまでできました

peekもpublicになりますか?
今のままだと静的関数なんでアクセスできないですけど

809 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:53:56.05 ID:zj8b7q7C.net]
Peek関数の中でタイマーを処理しているので、WINDOWクラスに下記のメンバーを追加してください。

struct {
unsigned int old;
unsigned int now;
} time;

コンストラクターで初期化します。

WINDOW::WINDOW() {
timeBeginPeriod( 1 );
time.old = timeGetTime();
}

で、デストラクターで後始末します。

WINDOW::~WINDOW(){
timeEndPeriod( 1 );
}







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<245KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef