落ち物ゲーム"コラムス"を作っています。質問があるので、まずは遊んでみてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
こめかみ

落ち物ゲーム"コラムス"を作っています。質問があるので、まずは遊んでみてください。

#1

投稿記事 by こめかみ » 17年前

プロジェクトはこちらになります。
http://cid-d72819af3901253a.skydrive.li ... C%E9%96%8B

ルールはこちら。
http://vc.sega.jp/vc_columns/

消したプロックの数をカウントして、GameOverしたら1000倍で得点表示する簡単なものです。

操作方法は

キーボードの
左(←)で左へ移動

右(→)で右へ移動

下(↓)で下へ移動(押しっぱなし有効)

Zキーで一方通行でブロックが入れ替わります

エスケープキーでいつでも強制終了できます


やってみれば何が問題かスグわかると思いますが説明が足りませんでしたらいくらでも補足いたします。

よろしくお願いします。

toyo

Re:落ち物ゲーム

#2

投稿記事 by toyo » 17年前

ダウンロードしたので今からビルドしてみます。
あと添付するプロジェクトファイルは.slnと.vcprojだけでいいですよ。
.ncbはインテリセンスの情報なので自動で作成されますし容量もかなり大きくなるので配布時には削除したほうがアップロードやダウンロードが楽になります。
.userはユーザー毎に違うファイルが作成されるので他人のファイルは不要です。

toyo

Re:落ち物ゲーム

#3

投稿記事 by toyo » 17年前

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:落ち物ゲーム

#4

投稿記事 by こめかみ » 17年前

ありがとうございます。ちょっと今忙しいのでこれからよく見てみます。

個人情報やっちまいましたね。
ちょっとすぐ消して上げなおします。

これからダウンされる方は少々お待ちを。

こめかみ

Re:落ち物ゲーム

#5

投稿記事 by こめかみ » 17年前

toyoさんありがとうございます。

ご指摘の方法で確かにオレンジのブロックが消えなくなったのですが、
理屈がどうしてもわかりません。

>BlockColor[ 0 ] の橙色が0なのでないものとして扱われています

どういうことでしょうか。


//ActiveBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) ;

ActiveBlock[ i ] = GetRand( BLOCKTYPE_NUM -1) + 1;


GetRamd()関数で0~6を返して、それを代入することの何がいけないんでしょうか。

こめかみ

Re:落ち物ゲーム

#6

投稿記事 by こめかみ » 17年前

これからバイトなので返信は遅くなってしまいます。

プロジェクトアップし直しました、コードはそのままです。

Re:落ち物ゲーム

#7

投稿記事 by » 17年前

多分背景用のブロックの番号が「0」でオレンジも「0」
って事じゃないかな?

// 空きを積める

あたりで、消されているのではないかな?って思いますが^^;

ブロックが無い状態を「-1」で処理するようにすれば解決可能じゃないかな~と思ってますが、
先に示された方法のほうがお手軽ですね~・・・

※背景用のブロックは無いかもですが、何も無いブロックということで・・・(゜Д゜;A

まちがってたらごめんなさい^^;

こめかみ

Re:落ち物ゲーム

#8

投稿記事 by こめかみ » 17年前

バイトのシフトが急に変わって夜になりました。
夜の方が急に辞めてしまわれたそうです。
迷惑なことです( ̄ー ̄ )


雷さんありがとうございます。


意味がすぐには飲み込めないのでこれからじっくり考えてみます。

toyo

Re:落ち物ゲーム

#9

投稿記事 by toyo » 17年前

// もしブロックがない場合は次に移る
				if( Block[ j ][ i ] == 0 ) continue ;
とか
				if( Block[ j ][ i ] != 0 )
を見るとBlock[ ][ ]が0の場合ブロックがないという処理をしています
オレンジのブロックは0になるのでブロックと認識されていないのです
別の方法として盤面を-1で初期化する方法もあります
消去や移動、終了処理で盤面データを0と比較している部分を-1との比較に変えればバグは取れるとおもいます。

こめかみ

Re:落ち物ゲーム

#10

投稿記事 by こめかみ » 17年前

ふー、理解した後の実装がけっこう大変でした。

修正版です、リンクはこれでいいのかな。
http://cid-d72819af3901253a.skydrive.li ... %82%b9.zip

完璧です。ご指導ありがとうございました。

こめかみ

Re:落ち物ゲーム

#11

投稿記事 by こめかみ » 17年前

解決にし忘れてました、すみません。

閉鎖

“C言語何でも質問掲示板” へ戻る