侵入不可の領域について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Qloeh
記事: 35
登録日時: 10年前

侵入不可の領域について

#1

投稿記事 by Qloeh » 10年前

度々すみません。マップにキャラクターを描画し、そのキャラがいるところには
入れないようにしたいのですが、実行すると、キャラに重なれる上にそこから出る事が出来ません。
コードは下の通りです。

コード:

map.h
void draw_map(void){
	for (i = 0; i < 15; i++){
		for (j = 0; j < 20; j++){
			DrawGraph(j * 32, i * 32, map_chip[0][map[now_map - 1][i][j]], FALSE);
			block[i][j] = 0;
		}
	}
		
		
	for (i = 0; i < chara_all; i++){
		if (chara_eve[i].map == now_map&&chara_eve[i].flag == 1){
			DrawGraph(chara_eve[i].pos_x * 32, chara_eve[i].pos_y * 32, chara[chara_eve[i].chara_no].chip[chara_eve[i].chip_vector], TRUE);
			block[chara_eve[i].pos_y][chara_eve[i].pos_x] = 1;
		}
	}
}
Main
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
	fileload();
	while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll(key) == 0){
		draw_map();
		DrawGraph(s_pos_x * 32, s_pos_y * 32, chara_chip[0][s_vector], TRUE);
		if (key[KEY_INPUT_RETURN] == 1){
			while (CheckHitKey(KEY_INPUT_RETURN) == 1);
			event_check();
		}
		else{
		if (key[KEY_INPUT_UP] == 1){
			if (s_pos_y > 0&&block[s_pos_y][s_pos_x]!=1){
				s_pos_y -= 1;
				vector_up();
			}
			else{
				vector_up();
				map_check();
			}
		}
		if (key[KEY_INPUT_DOWN] == 1){
			if (s_pos_y < 14&&block[s_pos_y][s_pos_x]!=1){
				s_pos_y += 1;
				vector_down();
			}
			else{
				vector_down();
				map_check();
			}
		}
		if (key[KEY_INPUT_RIGHT] == 1){
			if (s_pos_x < 19&&block[s_pos_y][s_pos_x]!=1){
				s_pos_x += 1;
				vector_right();
			}
			else{
				vector_right();
				map_check();
			}
		}
		if (key[KEY_INPUT_LEFT] == 1){
			if (s_pos_x > 0&&block[s_pos_y][s_pos_x]!=1){
				s_pos_x -= 1;
				vector_left();
			}
			else{
				vector_left();
				map_check();
			}
		}
		WaitTimer(40);
	}
}
		DxLib_End();
		return 0;
	}
多分、移動するときの計算が問題だと推測しています。

Qloeh
記事: 35
登録日時: 10年前

Re: 侵入不可の領域について

#2

投稿記事 by Qloeh » 10年前

連投すみません。自己解決しました。
足し引きする座標を間違えていましたね

閉鎖

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