背景をななめに

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

背景をななめに

#1

投稿記事 by » 16年前

通常背景を右上から左下にスクロールさせてななめに
流れるようにしたいのですがうまくいきません。どうしたらできますか?
void graph_back00(){//通常背景
SetDrawArea( 32 , 16 , 416 , 464 ) ;//描画可能エリアを設定
DrawGraphFd(0,count%700-700,img_back[0],FALSE);
DrawGraphFd(0,count%700 ,img_back[0],FALSE);
SetDrawArea( 0, 0, 640, 480);//エリアを戻す
}


ねこ

Re:背景をななめに

#3

投稿記事 by ねこ » 16年前

DrawGraphFd関数の中がわかんないけど第一引数を-(count%300)にしたらそれっぽい動きになるんじゃないでしょうか。
多分縦横4枚表示になるよ。

kazuoni

Re:背景をななめに

#4

投稿記事 by kazuoni » 16年前

暇だったんで、作ってみました。
とりあえず、自分で点p(x1,y1) , 点Q(x2,y2)を指定します。
(x2>x1 && y2>y1が条件です。)
すると、用意した背景が(x2,y1)から(x1,y2)に向かって移動します。
(希望していた右上から左下にスクロール)
とりあえず、角を中心に画像がスクロールすることに重きを置いたので、
座標指定によってはぶるってしまう時があります。
まぁ、仕様ってことでw

条件以外の動作は未定義です。っというか、かならず止まります。
気を付けてください。

あとは、自分で工夫してみてください。
(※かなり汚く書かれてます。あくまで参考に・・・)

#追記
draw_areaシリーズが指定座標です

kazuoni

Re:背景をななめに

#5

投稿記事 by kazuoni » 16年前

さらに暇だったので、関数化して、不具合をいろいろ修正しました。

int DrawBackScroll(int x1 , int y1 , int x2 , int y2 , int ghandle , int mode , int bc_bc_color=0 )

(x1,y1)と(x2,y2)の間で指定したモードで背景がスクロールする。
また、スクロール背景の背景も指定できる。

[引数]

int x1 , int y1 , int x2 , int y2 … 座標
(x1,y1)と(x2,y2)で四角形をなせば、その四角形の範囲でスクロールする。
四角形をなさない場合は、デフォルトで、
(0,0) , (W_SIZEX,W_SIZEY)の四角形で行う。なので、
const int W_SIZEX = 640;
const int W_SIZEY = 480;
などの宣言が関数内もしくはグローバルで宣言が必要

int ghandle … 画像ハンドル

int mode … スクロールする向き
0=右上から左下
1=右下から左上
2=左上から右下
3=左下から右上
(自分のプログラムでは、列挙体で管理しています。)

int bc_bc_color=0 … スクロール背景の背景の色
(デフォルトでなしです)

[戻り値]
意味なし

int DrawColorFrame(int X1,int Y1,int X2,int Y2,int color)
(x1,y1)と(x2,y2)の範囲外の領域をcolorで塗りつぶす


[引数]

int X1,int Y1,int X2 int Y2 … スクロール背景の範囲
主な詳細はDrawBackScrollと同じ

int color … 塗りつぶす色

[戻り値]
意味なし

っとこんな仕様です。(もちろん、DXライブラリ使用)
あとは、自分で角度とか調節できるようにすれば、
もう少し使いやすくなるかも。今回はこれで^^;

っというか、質問内容が龍神っぽかった(?)ので、
質問回答にはなってません。。失礼しました。。

#補足
DrawBackScrollで、背景のつなぎをかなりアバウトに行っていて、
背景を管理人さんの配布している龍神の背景を用いると、
結構つなぎ目が気になります。これは各自調節してください。
(ドット補完のあたり)
自分の組み方だと、時々刻々微妙に背景が揺れていますので、
なかなか完璧につなぐのは難しいかもです・・・

Re:背景をななめに

#6

投稿記事 by » 16年前

ありがとうございます。
さっそく試してみたいと思います。

閉鎖

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