カーソルの移動について

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

カーソルの移動について

#1

投稿記事 by ryo » 17年前

c言語を初めて3か月ほど やっとゲームのプログラムまでこぎつけました

いつもなら1週間くらい悩んで解決策を見つけられたのですが、まだ動きのあるc言語に慣れていないためtどこが間違いなのか見つけられません

wakuをキーボードの方向入力で一マスずつ動くようにしたいのですが、wakuがどうしても出力されてくれません

どこがいけないのか、もしよければみてください
//othello
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
char Key[256];

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
{      
int i,j;
int White,Red,Green,Blue,Black;
White=GetColor(255,255,255);
Red=GetColor(255,0,0);
Green=GetColor(0,255,0);
Blue=GetColor(0,0,255);
Black=GetColor(0,0,0);
DrawBox(80,0,560,480,Green,TRUE);
for(i=0;i<8;i++)
for(j=0;j<8;j++)
DrawBox(i*60+80,j*60,i*60+140,j*60+60,Black,FALSE);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if((i+j)%2==0)
DrawCircle(i*120+200,j*120+120,3,Black,TRUE);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
if((i+j)%2==0)
DrawCircle(i*60+290,j*60+210,25,White,TRUE);
else
DrawCircle(i*60+290,j*60+210,25,Black,TRUE);
}// 表示完了
SetDrawScreen( DX_SCREEN_BACK ) ;
while(!ProcessMessage() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE])
{
int i,j=0;
int Red;
Red=GetColor(255,0,0);

if ( Key[ KEY_INPUT_UP ] == 1 )
j--;
DrawBox(i*60+500,i*60+420,i*60+560,i*60+480,Red,FALSE);
ScreenFlip();
}
DxLib_End();
return 0;
}

シュバ

Re:カーソルの移動について

#2

投稿記事 by シュバ » 17年前

#include "DxLib.h" 

void Glaph();

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

	char Key[256];
	int x1=0;
	int y1=0;
	int x2 = 0;
	int y2 = 0;
	
	SetDrawScreen( DX_SCREEN_BACK ) ;

	if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;  
 
	while(!ProcessMessage() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]) {

		int Red;
		Red=GetColor(255,0,0);

		if ( Key[ KEY_INPUT_UP ] == 1 ) {
			y1--;
			y2--;
		}

		Glaph(); 
		DrawBox(x1*60+500,y1*60+420,x2*60+560,y2*60+480,Red,TRUE);

		ScreenFlip();

	}
	
	DxLib_End(); 
	return 0; 

}

//表示するだけの関数
void Glaph(){
	
	ClearDrawScreen();

	int i,j;
	int White,Green,Blue,Black; 
	White=GetColor(255,255,255);  
	Green=GetColor(0,255,0); 
	Blue=GetColor(0,0,255); 
	Black=GetColor(0,0,0);  

	DrawBox(80,0,560,480,Green,TRUE); 

	for(i=0;i<8;i++){ 
		for(j=0;j<8;j++){ 
			DrawBox(i*60+80,j*60,i*60+140,j*60+60,Black,FALSE);
		}
	}

	for(i=0;i<3;i++){ 
		for(j=0;j<3;j++){ 
			if((i+j)%2==0){ 
				DrawCircle(i*120+200,j*120+120,3,Black,TRUE);
			}
		}
	}

	for(i=0;i<2;i++){ 
		for(j=0;j<2;j++){ 
			if((i+j)%2==0){ 
				DrawCircle(i*60+290,j*60+210,25,White,TRUE); 
			}else{ 
				DrawCircle(i*60+290,j*60+210,25,Black,TRUE); 
			}
		}
	}

}


こんな感じで如何ですか?

確認し易いように枠は塗りつぶしにしてあります。

DrawBox(x1*60+500,y1*60+420,x2*60+560,y2*60+480,Red,False);

にすれば枠だけが赤くなるハズです。

やそ

Re:カーソルの移動について

#3

投稿記事 by やそ » 17年前

中の処理はまだ追ってないので分かりませんが・・・
最初の
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
{      
int i,~

ですが、{の前にelseが抜けてませんか?
また、
if ( Key[ KEY_INPUT_UP ] == 1 )
j--;
DrawBox(i*60+500,i*60+420,i*60+560,i*60+480,Red,FALSE);
ScreenFlip();
ですが、j--したのにDrawBoxで使用していないですよね??
その辺確認されましたか?

閉鎖

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