ページ 11

サンプルがてら弾幕避けゲーム作ってみた

Posted: 2008年10月27日(月) 04:31
by 御津凪
サンプルプログラミングの館が開館されたこともあり、
急いでゲームとなるような状態まで持ってきたサンプルゲームです。

http://mitsunagistudio.a.orn.jp/?page=lib&sub=stelight

↑こちらにゲーム・ソースコードを上げております。

自作ライブラリのサンプル、という位置づけではありますが、
弾の動作や当り判定など、一通りの処理が出来ているます。
(ライブラリが担当しているのはあくまで基本部分です)

※このプログラムは C++ と DirectX で作られており、
ゲームをするには最新の DirectX ランタイムが必要です。

サンプルとしては…、ちょっとごちゃごちゃしてて適さないかもしれません。
そういうのも合わせて、☆8つくらいかな(汗

とりあえず、遊んでいただければとてもうれしいです。

ちなみに、遊べるだけでまだ音やハイスコアがないです。
これらはライブラリの増築とともに追加していく予定です。

Re:サンプルがてら弾幕避けゲーム作ってみた

Posted: 2008年10月27日(月) 07:09
by 管理人
おぉ~素晴らしい~♪
面白い弾幕ありますね^^
レーザーが回転しながら落ちてくるのは案外避けにくいw

しかしオーバークロックという言葉が何となくピンときたので、
意味もわからずそればかり選択してましたけど、難易度だったんですねw
難しいな~とか思ってやってたらSafeはずっと簡単でしたw

これは完成が楽しみです☆

Re:サンプルがてら弾幕避けゲーム作ってみた

Posted: 2008年10月27日(月) 08:35
by dic
起動しませんね

私のパソコンのスペックです
------------------
System Information
------------------
Time of this report: 10/27/2008, 08:27:24
Operating System: Windows XP Home Edition (5.1, Build 2600) Service Pack 3 (2600.xpsp_sp3_gdr.080814-1236)
Language: Japanese (Regional Setting: Japanese)
System Manufacturer: PCCHIPS
System Model: P25G
BIOS: Phoenix - AwardBIOS v6.00PG
Processor: Intel(R) Celeron(R) CPU 2.53GHz
Memory: 1246MB RAM
Page File: 438MB used, 2538MB available
Windows Dir: C:\WINDOWS
DirectX Version: DirectX 9.0c (4.09.0000.0904)
DX Setup Parameters: Not found
DxDiag Version: 5.03.2600.5512 32bit Unicode

Re:サンプルがてら弾幕避けゲーム作ってみた

Posted: 2008年10月27日(月) 10:30
by 御津凪
> 管理人さん
> しかしオーバークロックという言葉が何となくピンときたので、
> 意味もわからずそればかり選択してましたけど、難易度だったんですねw
> 難しいな~とか思ってやってたらSafeはずっと簡単でしたw

説明不足でした。
本当ならゲーム内で項目の説明文を入れるつもりでしたが、
突貫工事でそこまで手が回って無かったです><
難易度は、東方に例えると、
Safe Clock → Easy
Best Clock → Normal
Fast Clock → Hard
Over Clock → Lunatic
です。

> dic さん

パソコンのスペックまで提示して頂いてありがとうございます。
こちらも説明不足でした。

http://www.microsoft.com/downloads/deta ... laylang=ja
VC++ でコンパイルを マルチスレッド DLL で作成したゲームなので、
これが必要になります。
これを入れれば多分起動します。

・補足追記
スコアはどれだけ弾をかすったによって増加します。
ミスらずボムらずにいけばどんどん増加します。

ボムは右の Power が 100 (かすり100回)になった時に撃てます。
ミスると Power は 0 になります。

外部シンボルが未解決

Posted: 2008年11月09日(日) 20:36
by 山崎
毎度お世話になっております、山崎です。
基本的な事柄でしたら誠に申し訳ないのですが、
外部シンボルが未解決というエラーがどうしても解決できないので質問させて頂きます。

BCCディベロッパーを使っております。

グローバル変数も関数もクラスも、宣言と定義を同じファイルの中でしていたのを
別々のファイルで行おうと思い、コードをヘッダファイルとcppファイルに分ける作業をしています。

ヘッダファイルの先頭の方で

extern double PI;
extern bool AKey[3];
extern bool BKey[3];
extern Object obj;//自作したクラス
...

という風にグローバル変数を宣言し、
定義をcppファイルの関数の中で

if(AKey[0]==false && KeyState[KEY_INPUT_NUMPAD3]==true)
AKey[1]=true;
if(BKey[0]==true && KeyState[KEY_INPUT_NUMPAD2]==false)
BKey[2]=true;
...

というようにしています。
グローバル変数を宣言しているヘッダファイルは、複数のcppファイルで
インクルードされています。
これらのファイルをビルドすると、

Error: 外部シンボル '_Object' が未解決(...が参照)
Error: 外部シンボル '_BKey' が未解決(...が参照)
Error: 外部シンボル '_AKey' が未解決(...が参照)

といったようなエラーが発生してしまいます。

どのようにすればこのエラーを取り除くことができるのでしょうか。
皆様のお力におすがりしたく思います。

Re:外部シンボルが未解決

Posted: 2008年11月09日(日) 20:43
by 組木紙織
Borland C++ 5.5.1ということは、コマンドラインでコンパイルしているのかな。

file1.cpp
file2.cpp
と2つのファイルに分割しているのなら
bcc32 file1.cpp file2.cpp
のように分割したファイルを空白区切りでコマンドライン引数に渡してみてください。

Re:外部シンボルが未解決

Posted: 2008年11月09日(日) 20:45
by lbfuvab
先ず、AKeyとBKeyの実体が存在していません。
適当なcppファイル内で
bool AKey[3];
bool BKey[3];
と宣言してください。
また、問題のcppファイルからObjectクラスの定義が見えていないようです。

後、extern double PI;

#define PI 3.14159265
とでもした方がいいと思いますよ。

Re:外部シンボルが未解決

Posted: 2008年11月09日(日) 20:45
by 山崎
>組木紙織さん
ご返信まことにありがとうございます。
申し訳ないです、エディタではなくコンパイラの名前を貼り付けてしまいました。
正しくは、エディタはBCCディベロッパーです。
誤解を招いてしまい本当に申し訳ございません。

Re:外部シンボルが未解決

Posted: 2008年11月09日(日) 20:54
by 山崎
>lbfuvabさん
ご返信まことにありがとうございます。

おっしゃるとおりに適当なcppファイルの先頭付近で
グローバル変数の実態を宣言したところ、
見事にプログラムがファイル分割前と同様に動きました。

なお、
#define PI 3.14159265
についてもこちらの方法をとらせていただきました。
わざわざお教えいただき、本当にありがとうございます。

宣言と定義と実態のしくみがわかって本当に良かったです。
感謝のしようもございません。

Re:外部シンボルが未解決

Posted: 2008年11月09日(日) 21:46
by box
> #define PI 3.14159265

円周率の定義は、普通 math.h にあると思います。
自分で定義するより、既存の math.h をインクルードする方がよいと思います。
同じ結果を得るのであれば、なるべく自分で書くコードを
少なくする方がよいのではないかと思います。

Re:外部シンボルが未解決

Posted: 2008年11月09日(日) 21:54
by Justy
 BCCは math.hに M_PIという円周率の定義がありますね。
 MSVCは無かったり、インクルードしただけでは使えなかったりしますが・・・。