トップページgamedev
50コメント21KB

斜めスクロールが出来ないぞゴルァ!

■ このスレッドは過去ログ倉庫に格納されています
0001厨房似非PG01/11/16 15:46ID:???
//変数宣言
LPDIRECTDRAWSURFACE lpPrimary; //基本サーフェス(画面表示と同じもの)
LPDIRECTDRAWSURFACE lpBack; //バックバッファサーフェス(描画対象と同じもの)
LPDIRECTDRAWSURFACE lpSc;
DDCOLORKEY ddck;
LPDIRECTDRAW lpDDraw;

POINT ptBase; // スクロール基準点
void Draw(void) //メインルーチン
{
//変数宣言
static int i;
static int j; //アニメーションフラグ
static int x,y; //座標の設定
static int size=32; //拡大縮小用変数
static int sc,sc2;
RECT Scrrc={0,0,640,480}; //画面のサイズ
RECT Charrc[]={{0,0,64,64}, //BMPの座標を指定する
{64,0,128,64},
{128,0,192,64}};
// 左エリア
if( ptBase.x > 0){
// 左上
if( ptBase.y > 0){
SetRect( &Scrrc, 0, 0, ptBase.x, ptBase.y);
lpBack->BltFast(ptBase.x,ptBase.y,lpSc,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
// 左下
if( ptBase.y <= 640){
SetRect( &Scrrc, 0, ptBase.y, ptBase.x, 480);
lpBack->BltFast(ptBase.x,ptBase.y,lpSc,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
}
// 右エリア
if( ptBase.x <= 640){
// 右上
if( ptBase.y > 0){
SetRect( &Scrrc, ptBase.x, 0, 640, ptBase.y);
lpBack->BltFast(ptBase.x,ptBase.y,lpSc,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
// 右下
if( ptBase.y <= 480){
SetRect( &Scrrc, 0, ptBase.y, ptBase.x, 480);
lpBack->BltFast(ptBase.x,ptBase.y,lpSc,&Scrrc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
}
}
//ウェイト処理
static DWORD Nowtime,Prevtime;
Nowtime=timeGetTime();
if((Nowtime-Prevtime)<WAIT)return;
Prevtime=Nowtime;
lpPrimary->Flip(NULL,DDFLIP_WAIT);
}
0002名無しさん@お腹いっぱい。01/11/16 15:53ID:???
shine
0003名無しさん@お腹いっぱい。01/11/16 16:11ID:???

    .//      /)
    <_」     //             ,,-''ヽ、
       、-//            ,, -''"    \
        \イ           _,-'"        \
         .'          /\           \
              __   //\\           \
  _/          /|[]::::::|_ / \/\\         /
   ゙         ./| ̄ ̄ ̄ ̄ //\ \/  \      //    ___
         |  |:::「「「「「「 / \/\  /\\   /:::/   ./|    |__
       _..|  |:::LLLLL//\ \/  \/\\/::::::/  /  | ロ  .|lllllllllllll
      / llllll|  |:::「「「「 / \/\  /\ .\/ ./::::::::/  / ./ .|    |lllllllllllll
__     llllll|  |:::LLL.//\ \/  \/\  /::::::::/   | /  .| ロ  .|lllllllllllll
(666     llllll|  |:::「「「/ \/\  /\ \/ /::::::::/   | ||/ ..|    |lllllllllllll
         llllll|  |:::LL//\ \/  \/\ ./::::::::/    .| ||/ ..|
         |  |:::「./ .\/\  /\ \/ /::::::::/⌒ヽ、 .| ||/ ..|
         |  |:::l//\ \/  \/\_, -― 、  ''"⌒ヽ,_
                (⌒ヽ、_,ノ⌒Y"    Y     .....⌒)
            (⌒ヽー゙ ....::(   ..::.......  .__人.....::::::::::::::::::::
         _ノ⌒ヽ  Y⌒ヽ;;:::::"'::::::::::::::::::::::::::::: ___
     ___(   ゙   ....:::.....  Y"  ∧_∧   /
   // ll__ヽ_::::::::::::::::::::::::::::::ヽ....(  ´Д`)< 1の母です。
  「    ヽO≡≡O:::::::::::::::::::::::::::::::::::/ つ  _つ  \____
  ゙u─―u-――-u         人  Y
                     し'(_)
0004名無しさん@お腹いっぱい。01/11/16 16:27ID:???
まあ1は、シューティングツクールでも弄ってなさいってこった。
0005名無しさん@お腹いっぱい。01/11/16 16:29ID:???
まあ1は、RPGツクールでも弄ってなさいってこった
0006名無しさん@お腹いっぱい。01/11/16 17:24ID:???
>>3 なんかどんどん芸術的になってくるな、最近のAA。
0007名無しさん@お腹いっぱい。01/11/16 18:35ID:???
まあ1は、×××××でも弄ってなさいってこった
俺も弄るよ。えーと、エロ本エロ本・・・
0008名無しさん@お腹いっぱい。01/11/16 21:04ID:???
なんかめちゃくちゃっぽいなぁ。

左下のif は 480 と比較じゃないの?

0より上、640(480)以下という表記は正しい?
0以上640(480)未満ではないの?

そもそも、何をしようとしてるかがわからん。
時下げ位しろ、TABを入れろ。
回線切って首を吊れ。
0009名無しさん@お腹いっぱい。01/11/16 21:29ID:ChXOCnyR
>>1
とりあえず、どんなゲームでどのように使うのか教えてくれればマジレスするけど。
日本語でいいから。ちょっとこのソースだけだと難しい。
それとも斜めスクロールできれば、どの方法でもOK?
0010_01/11/16 21:38ID:MzjylXs9
デキン?
0011_01/11/16 22:24ID:MzjylXs9
つーか、
static変数嫌い
生数字嫌い
インデントしないの嫌い
0012名無しさん@お腹いっぱい。01/11/16 22:39ID:???
>基本サーフェス
>バックバッファサーフェス

微妙に変な気がするのは気のせいか
0013名無しさん@お腹いっぱい。01/11/16 22:52ID:???
>12
でも言いたい事は解る。
プライマリサーフェスとそのバックバッファ。3つ目は作業用サーフェスってとこか。
作業用サーフェスに描画した背景を少しずつずらしてバックバッファに転送して
フリップさせたいんだろう。まあ、>>1で来なけりゃ意味のない話だけど。
0014名無しさん@お腹いっぱい。01/11/16 23:08ID:???
この手のスレって前からあったけど、
もしかして半年くらい前から斜めスクロールで悩んでるの?>>1
0015名無しさん@お腹いっぱい。01/11/16 23:23ID:???
>>14
まじで、半年前にも見たぞこんなスレ
プログラム板で見た。

あと、DirectXスレでも同じ質問があったし、
したらばのゲ術板でも見た。

★DirectDrawで斜めスクロールの仕方
http://www.shitaraba.com/cgi-bin/read.cgi?key=1000542496_1&bbs=gamecreate&ls=100
0016名無しさん@お腹いっぱい。01/11/16 23:48ID:???
>>14
ワラタ。そのスレひどすぎ(w

というかソースを見る限り、>>1は斜めどころか普通にスクロールもできなさそう。
0017名無しさん@お腹いっぱい。01/11/17 00:37ID:???
>>1のソースを改良して斜めスクロールを実現させてし見ろ。貴様ら
0018名無しさん@お腹いっぱい。01/11/17 00:38ID:???
>>17
改良ですか?
全部作りなおしでは駄目ですか?
0019名無しさん@お腹いっぱい。01/11/17 00:57ID:???
>>14そうです。半年悩んでます。

みなさま糞スレ立ててすみません。ってか生きててすみません。
0020名無しさん@お腹いっぱい。01/11/17 00:58ID:???
多分斜めスクロールが完成するまで延々とこの手のスレが立つと思います。
00211501/11/17 01:04ID:???
というか、したらばでやり方散々書いたんだよ!
今見たら全部消されてるし・・・確かしたらばってスレ立てたやつがレス消せるんだよな・・・
っておい!
0022名無しさん@お腹いっぱい。01/11/17 01:14ID:???
仕方ないからもう一回書いてやれよ。
0023名無しさん@お腹いっぱい。01/11/17 01:50ID:???
つまりここの1はネタなわけですね
0024名無しさん@お腹いっぱい。01/11/17 02:28ID:B9jLKAU+
LPDIRECTDRAWSURFACE lpPrimary;
LPDIRECTDRAWSURFACE lpBack;
LPDIRECTDRAWSURFACE lpSc;

POINT pt;

void Scroll(void)
{
 RECT rect;

 if(pt.x<0){pt.x+=640;} else if(pt.x>639){pt.x-=640;}
 if(pt.y<0){pt.y+=480;} else if(pt.y>479){pt.y-=480;}

 if(pt.x!=0){
  SetRect(&rect, 0, 479-pt.x, 640-pt.x, 480);
  lpBack->BltFast(pt.x, 0, lpSc, &rect, DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT); }

 if(pt.y!=0){
  SetRect(&rect, 639-pt.x, 0, 640, 480-pt.y);
  lpBack->BltFast(0, pt.y, lpSc, &rect, DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT); }

 SetRect(&rect, 0, 0, 640-pt.x, 480-pt.y);
 lpBack->BltFast(pt.x, pt.y, lpSc, &rect, DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
 SetRect(&rect, 639-pt.x, 479-pt.y, 640, 480);
 lpBack->BltFast(0, 0, lpSc, &rect, DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);

 lpPrimary->Flip(NULL,DDFLIP_WAIT);

 pt.x++; pt.y++;
}
00252401/11/17 02:29ID:B9jLKAU+
ゲ制作技術板は何もしないと不評だから、一応書いてみた。
>>1がネタでもな。

やり方は、>>13が言ってるのと同じ。
作業用サーフェス全体に背景を置いておいてバックバッファにずらして転送。
ただし、背景絵が上下左右で繋がってないと変に見えるけど。
背景の(0, 0)が表示画面の(pt.x, pt.y)から表示されるてわけ。

関数Scrollを呼び出すたびに少しづつずれて表示される。
最後のpt.xとpt.yのインクメント/デクリメントをいじればスクロール方向や速度が変えられる。

メインループからでも適当な間隔で呼び出してもらえれば斜めスクロールすると
思うけど、実際試したわけではないのでサンプルね。俺も暇だな。
0026名無しさん@お腹いっぱい。01/11/17 09:30ID:???
ファミコンで高速スクロールさせる時って、やっぱり水平帰線中に画面
切り替えたりして見かけのVRAM増やしてやるんかね
00271 ◆NVkNXezo 01/11/17 16:04ID:???
みなさまどうやら遂に斜めスクロールができました。
これで心おきなく逝けます。

    あ り が と う ご ざ い ま し た。
0028名無しさん@お腹いっぱい。01/11/22 15:07ID:???
| \
   |Д`) ダレモイナイ・・スルナラ イマノウチ
   |⊂
   |


     ♪  Å
   ♪   / \   ランタ タン
      ヽ(´Д`;)ノ   ランタ タン
         (  へ)    ランタ ランタ
          く       タン



   ♪    Å
     ♪ / \   ランタ ランタ
      ヽ(;´Д`)ノ  ランタ タン
         (へ  )    ランタ タンタ
             >    タン
0029(ε・∀・) フクミミ ◆qepgf.W2 01/11/22 15:10ID:???
ミチャッタ...
0030名無しさん@お腹いっぱい。01/11/22 15:10ID:???
| \
   |Д`) ダレモイナイ・・センデンスルナラ イマノウチ
   |⊂
   |


     ♪  Å
   ♪   / \   ランタ タン
      ヽ(´Д`;)ノ   ランタ タン
         (  へ)    ランタ ランタ
          く       タン



   ♪    Å
     ♪ / \   ランタ ランタ
      ヽ(;´Д`)ノ  ランタ タン
         (へ  )    ランタ タンタ
             >    タン
■ このスレッドは過去ログ倉庫に格納されています