ページ 11

シューティングゲームで、自機を表示させたいです。

Posted: 2012年8月04日(土) 23:45
by うさこ
初めまして。私は、学校の課題で、シューティングゲームを作っています。
そのシューティングゲームで、自機を表示させたいのですが、なかなか表示させることができません。

今まで書いたプログラムは下記の通りです。

コード:

  int a;  // x
	int b; 
	int c = 1; // y方向
	int y = 0; //
	b = 0;
	
	clear ( );
	setCursor ( 0 );  
	
	

	for ( a = 0; ; ){
		
		locate ( a , y );
		printf ( "*" );
		_sleep ( 50 );
		locate ( a , y );
		printf ( " " );
	  
		///////////////////////////////元  縦
        
		if ( y >= 20 ){
			c = 0;   //上
		}
		if ( y <= 0 ){
			c = 1;
		}
		if ( c == 1 ){
			y++;
		}else{
			y--;
		}

		//////////////////////////////横

		if ( a >= 79 ){
			b = 0;
		}
		if ( a <= 0 ){
			b = 1;
		}
		if ( b == 1 ){
			a++;
		}else{
			a--;

		
		}

	}
 

上記のプログラムは、デバック画面の中でアスタリスクが永遠に動き続けるというプログラムです。
初め、printf ( " " )の下にまず自機を表示させるプログラムを書いたのですが、
デバックをすると、アスタリスクと一緒に自機も動くプログラムになってしまいました。
(上記のプログラムのintの変数ですが、大変わかりにくいと思います。すみません。)

この問題では、座標(40、21)というところに自機を表示させなければならなく、
自機を表示させること、さらにその自機を座標(40、21)に表示させるということが、どうしてもわかりません。
どうかご助力をお願いしたく思います。

環境は以下の通りです。  
OS        : Windows
コンパイラ名 : Microsoft Visual Studio  C++ 2008 (2010版もありますが、学校の環境が2008版なので、こちらを使用しております。)


C言語についての知識ですが、プログラマーを専攻とされている方よりは大分劣り、
関数の基本~分岐処理、繰り返し処理、ギリギリ文字列まではわかるかと思います。(ただ今復習中です。)

知識が浅く、申し訳ありませんが
どうぞよろしくお願いいたします。

Re: シューティングゲームで、自機を表示させたいです。

Posted: 2012年8月05日(日) 00:27
by softya(ソフト屋)
使われている関数が非標準なので推測ですが固定位置に表示ですよね?
こうすれば良いと思います。

コード:

        locate ( a , y );
        printf ( "*" );
        locate ( 40 , 21 );
        printf ( "A" );	//自機
ちなみにこうした場合に座標が重なった場合は*はAの下になります。

あとaとかbは止めてもう少しわかり易い名前を付けましょう。
アスタリスクx,yなのでax,ayの方がわかりやすいですよ。あとbとcはamx(アスタリスクムーブx),amyとかですね。

Re: シューティングゲームで、自機を表示させたいです。

Posted: 2012年8月05日(日) 00:45
by うさこ
返信ありがとうございますm(__)m
非標準の関数を使っていることなど露知らず、疑問が生じてしまいすみませんでした。
ご指摘の通り、関数の名前を変更いたしました。
そして、自機が無事、座標(40、21)の所に表示されました。
今まで悩んでいたことが嘘のように解決いたしました。
本当にありがとうございましたm(__)m