定義したマップのスクロール

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

定義したマップのスクロール

#1

投稿記事 by samusu0905 » 8年前

マップをスクロールさせたいんですが、
方法がわかりません。
教えてもらえないでしょうか?
具体的にはプレイヤーが中央を過ぎたらスクロールさせたいと思ってます。
マップデータなどのコードを載せておきます。

コード:

#include "DxLib.h"				//DXLib
#include "Player.h"				//プレイヤー
#include "Stage.h"				//ステージ
#include "Def.h"				//共通定義

//マップデータ//
	int MapData[MAP_HEIGHT * MAP_WIDTH]={

	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 2, 0, 2, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,  0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0,  0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0,  0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 2, 0, 0, 2, 1, 1, 1, 0, 0, 0,  0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0,  0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0,  0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,  0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,  0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	0, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,  0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	};


//ステージテーブル
StageData_t StageDataSelect[1] ={
	{MapData, MAP_WIDTH, MAP_HEIGHT},	//マップ
};

//マップ配列参照用
StageData_t StageData;


//グローバル変数宣言------------------------
int fx= -1130, fy=-800;						//フラッシュ
int i,j;									//座標用


//グローバル変数参照------------------------
extern int floor;					//ステージ
extern int SceneMode;			//シーンモード
extern int Key_Input[256];		//キーが押されているフレームを格納する
extern int kabe1;				//壁1
extern int kabe2;				//壁2
extern char Key[256];
extern int rousoku1;			//ロウソク1
extern int rousoku2;			//ロウソク2
extern PLAYER Player;			//プレイヤーの構造体
extern int os_BGM;				//ステージBGM
extern int t_BGM;				//タイトルBGM
extern int flash;				//フラッシュ


//初期化-------------------------------------------------------
void gsStart()
{
	//マップ配列参照用のデータと初期化
	StageData = StageDataSelect[0];
	gpStart();
}


//メイン-------------------------------------------------------
void gsMain()
{
	//Enterキーを押下したら
	if( Key_Input[KEY_INPUT_SPACE] >= 1 )
	{
		SceneMode = 1;				//タイトルに移行
		StopSoundMem(os_BGM);		//ステージBGMを停止
		//タイトルに移行したら
		if( SceneMode == 1)
		{
			PlaySoundMem(t_BGM, DX_PLAYTYPE_LOOP);	//再びタイトルBGMをループ再生
		}
	}
	gpMain();		//プレイヤーのメイン処理
	gsMove();
}


//描画----------------------------------------------------------
void gsDraw()
{
	//ステージのマップ表示
	if( StageData.stage == MapData)
	{
		//SetDrawBright(0,0,0);
		//縦
		for( i=0; i < MAP_HEIGHT; i++)
		{
			//横
			for( j = 0; j < MAP_WIDTH; j++)
			{
				if( STAGE_CHIP(i,j) == 0)	//0のとき床を表示
				{
					DrawGraph(CHIP_SIZE*j, CHIP_SIZE*i, floor, TRUE);
				}

				if( STAGE_CHIP(i,j) == 1)	//1のとき壁1を表示
				{
					DrawGraph(CHIP_SIZE*j, CHIP_SIZE*i, kabe1,TRUE);
				}

				if( STAGE_CHIP(i,j) == 2)	//2のとき壁2を表示
				{
					DrawGraph( CHIP_SIZE*j, CHIP_SIZE*i, kabe2,TRUE);
				}
			}
		}
		gpDraw();
		//DrawGraph(fx, fy, flash, TRUE);
	}
}


//移動----------------------------------------------------------
void gsMove()
{
	if( Key[KEY_INPUT_RIGHT] == 1)
	{
		//プレイヤーのX座標が100を超えたら
		if( Player.px > 100)
		{

		}
	}
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 定義したマップのスクロール

#2

投稿記事 by softya(ソフト屋) » 8年前

何度も書いて申し訳ないですが、過去ログの質問でスクロールを実装されているみたいですが、その仕組みでは問題があるのですか?
http://dixq.net/forum/viewtopic.php?f=3&t=16384
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

samusu0905
記事: 336
登録日時: 10年前

Re: 定義したマップのスクロール

#3

投稿記事 by samusu0905 » 8年前

過去のトピックと比べるとプログラムの書き方が違っているので、あの仕組みでは問題があります。
具体的な理由までは言えません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 定義したマップのスクロール

#4

投稿記事 by softya(ソフト屋) » 8年前

そのまま移植出来ないのは分かりますが、考え方を応用できない理由をお聞きしたいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

samusu0905
記事: 336
登録日時: 10年前

Re: 定義したマップのスクロール

#5

投稿記事 by samusu0905 » 8年前

応用するのが苦手だからです。それしか理由がありません。
申し訳ないです。
もちろん、自分でも考えることはしています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 定義したマップのスクロール

#6

投稿記事 by softya(ソフト屋) » 8年前

プロになるための学習中だったと記憶してますが、それを避けていたら何のための学習か意味が無いのです。
ゲームのお仕事は全て応用や発明だけと言って良いと思います。覚えたパターンやサンプルからのコピペだけでどうにかなるもんじゃありません。
スクロールはかなり簡単な部類の応用ですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

samusu0905
記事: 336
登録日時: 10年前

Re: 定義したマップのスクロール

#7

投稿記事 by samusu0905 » 8年前

そうですか。ではこの質問に答える意味がないと言いたいわけですね。
わかりました。質問してすみませんでした。
softyaさんのいう簡単がどれくらい簡単であることを言っているのかわかりませんが。
このトピックスはこれでおわりにします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 定義したマップのスクロール

#8

投稿記事 by softya(ソフト屋) » 8年前

間違っていてもスクロールを組み込んであるコードであれば、学習過程も見えますので答える人も出やすいですが、過去質問と同様な質問の上に今回が丸投げだと、今回も過去のように回答が役立ちそうにないと思われても仕方ありませんよ。

あと私はプロ志望の人には厳しいんです。ごめんなさい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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