DXライブラリの横スクロールの方法について助けてください!

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

DXライブラリの横スクロールの方法について助けてください!

#1

投稿記事 by kenshin » 4年前

現在、横スクロールゲームを作っているのですが、肝心の横スクロールのやり方がわかりません。
以下がソースなのですが、どのようにいじればいいでしょうか。ご教授いただけると助かります!
ちなみに、マップは別ファイル(.txt)から読み込みます!

コード:

#include "DxLib.h"

/*定義*/
#define WINDOW_HEIGHT 450
#define WINDOW_WIDTH 600
#define MAP_HEIGHT 15
#define MAP_WIDTH 40
#define WINDOW_MAP_WIDTH 500
#define MAP_CHIP 30
#define CHAR 30

#define PI 3.141592654f

/*関数宣言*/
int Get_key(void);
void Load_img(void);//画像読み込み関数宣言
void Draw_stage(void);
void Stage_init(void);
void Draw_player(void);
void Move_player(void);
//void draw_map

/*グローバル変数*/
int key[256];
int gamecount;
int map;
int p1;
int scroll_x=MAP_CHIP;
float p1x=0,p1y=WINDOW_HEIGHT-90;
char map_data[MAP_HEIGHT][MAP_WIDTH];

int Color_White = GetColor(255,255,255);
int count;

/*メイン*/

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
	ChangeWindowMode(TRUE);
	SetGraphMode(600,450, 32); //ウィンドウサイズ変更
	DxLib_Init();
	SetDrawScreen(DX_SCREEN_BACK);
	/*ここは最初の一度だけ実行されるので*/
	/*変数の初期化などを書く*/

	Load_img();

	while (ScreenFlip()==0 && ProcessMessage()==0
		 && ClearDrawScreen()==0 && Get_key()==0){


		/*ここにメインプログラムを書く*/
			 
			 Stage_init();
			 Draw_stage();
			 Draw_player();
			 Move_player();
		

			 count++;

		
	}
	DxLib_End();
	return 0;
}
	
int Get_key(){
	char keys[256];
	GetHitKeyStateAll(keys);
	for (int i = 0; i < 256; i++){
		if (keys[i] != 0){
			key[i]++;
		}
		else{
			key[i] = 0;
		}
	}
	return 0;
}

void Load_img(void){

	map = LoadGraph( "images/map.png" ) ;
	p1 = LoadGraph( "images/c1.png" ) ;

}

void Stage_init(void){

	char buf[256];
	sprintf_s(buf,256,"media/map.txt");
	int map_file=FileRead_open(buf);
	for(int y=0; y<MAP_HEIGHT;y++){
		FileRead_gets(map_data[y],256,map_file);
	}
	FileRead_close(map_file);


}

void Draw_stage(void){

	for(int y=0;y<MAP_HEIGHT;y++){
		for(int x=0;x<WINDOW_MAP_WIDTH+1;x++){
		
			if (map_data[y][x] == '1'){
				DrawGraph((x) * MAP_CHIP,y*MAP_CHIP,map,true);
			
			}

			
		}
	
	
	}


}

void Draw_player(void){

	DrawGraph(p1x,p1y,p1,true);
	
}

void Move_player(void){

	if (key[KEY_INPUT_RIGHT]>=1){
		p1x+=3;
	}
	if (key[KEY_INPUT_LEFT]>=1){
		p1x-=3;
	}


}

アバター
ookami
記事: 214
登録日時: 9年前
住所: 東京都

Re: DXライブラリの横スクロールの方法について助けてください!

#2

投稿記事 by ookami » 4年前

例えば画面に描画するすべてのx座標を -10 すると、右に10スクロールしたように見えます。

閉鎖

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