ページ 1 / 1
落ち物ゲーム"コラムス"を作っています。質問があるので、まずは遊んでみてください。
Posted: 2008年9月20日(土) 05:19
by こめかみ
プロジェクトはこちらになります。
http://cid-d72819af3901253a.skydrive.li ... C%E9%96%8B
ルールはこちら。
http://vc.sega.jp/vc_columns/
消したプロックの数をカウントして、GameOverしたら1000倍で得点表示する簡単なものです。
操作方法は
キーボードの
左(←)で左へ移動
右(→)で右へ移動
下(↓)で下へ移動(押しっぱなし有効)
Zキーで一方通行でブロックが入れ替わります
エスケープキーでいつでも強制終了できます
やってみれば何が問題かスグわかると思いますが説明が足りませんでしたらいくらでも補足いたします。
よろしくお願いします。
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 10:17
by toyo
ダウンロードしたので今からビルドしてみます。
あと添付するプロジェクトファイルは.slnと.vcprojだけでいいですよ。
.ncbはインテリセンスの情報なので自動で作成されますし容量もかなり大きくなるので配布時には削除したほうがアップロードやダウンロードが楽になります。
.userはユーザー毎に違うファイルが作成されるので他人のファイルは不要です。
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 10:53
by toyo
BlockColor[ 0 ] の橙色が0なのでないものとして扱われています
graph.cppで
int BlockColor[ 8 ][ 3 ] =
{
{ 0 , 0 , 0 } ,//ダミーを追加
{ 255 , 174 , 38 } ,//橙
{ 255 , 255 , 255 } ,//白
{ 255 , 255 , 0 } ,//黄色
{ 200 , 0 , 255 } ,//紫
{ 0 , 255 , 255 } ,//水色
{ 58 , 138 , 44 } ,//緑
{ 0 , 0 , 255 } //青
} ;
にして
product.cppで
// 初回のみランダムに3つブロックをセット
if( FlugNewBlock != 0 )
{
for( i = 0 ; i < 3 ; i ++ )
{
//ActiveBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) ;
ActiveBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) + 1;
}
FlugNewBlock = 0;
}
for( i = 0 ; i < 3 ; i ++ )
{
//NextBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) ;
NextBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) + 1 ;
m[ i ] = NextBlock[ i ] ;
}
にしたらどうでしょう。
Debugフォルダも10MBあるので配布時には削除したほうがいいかも
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 11:58
by こめかみ
ありがとうございます。ちょっと今忙しいのでこれからよく見てみます。
個人情報やっちまいましたね。
ちょっとすぐ消して上げなおします。
これからダウンされる方は少々お待ちを。
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 12:15
by こめかみ
toyoさんありがとうございます。
ご指摘の方法で確かにオレンジのブロックが消えなくなったのですが、
理屈がどうしてもわかりません。
>BlockColor[ 0 ] の橙色が0なのでないものとして扱われています
どういうことでしょうか。
//ActiveBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) ;
ActiveBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) + 1;
GetRamd()関数で0~6を返して、それを代入することの何がいけないんでしょうか。
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 13:07
by こめかみ
これからバイトなので返信は遅くなってしまいます。
プロジェクトアップし直しました、コードはそのままです。
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 13:54
by 雷
多分背景用のブロックの番号が「0」でオレンジも「0」
って事じゃないかな?
// 空きを積める
あたりで、消されているのではないかな?って思いますが^^;
ブロックが無い状態を「-1」で処理するようにすれば解決可能じゃないかな~と思ってますが、
先に示された方法のほうがお手軽ですね~・・・
※背景用のブロックは無いかもですが、何も無いブロックということで・・・(゜Д゜;A
まちがってたらごめんなさい^^;
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 14:02
by こめかみ
バイトのシフトが急に変わって夜になりました。
夜の方が急に辞めてしまわれたそうです。
迷惑なことです( ̄ー ̄ )
雷さんありがとうございます。
意味がすぐには飲み込めないのでこれからじっくり考えてみます。
Re:落ち物ゲーム
Posted: 2008年9月20日(土) 14:21
by toyo
// もしブロックがない場合は次に移る
if( Block[ j ][ i ] == 0 ) continue ;
とか
if( Block[ j ][ i ] != 0 )
を見るとBlock[ ][ ]が0の場合ブロックがないという処理をしています
オレンジのブロックは0になるのでブロックと認識されていないのです
別の方法として盤面を-1で初期化する方法もあります
消去や移動、終了処理で盤面データを0と比較している部分を-1との比較に変えればバグは取れるとおもいます。
Re:落ち物ゲーム
Posted: 2008年9月21日(日) 05:41
by こめかみ
ふー、理解した後の実装がけっこう大変でした。
修正版です、リンクはこれでいいのかな。
http://cid-d72819af3901253a.skydrive.li ... %82%b9.zip
完璧です。ご指導ありがとうございました。
Re:落ち物ゲーム
Posted: 2008年9月21日(日) 08:18
by こめかみ
解決にし忘れてました、すみません。