ページ 11

マップとプレイヤーのスクロールについて

Posted: 2010年11月03日(水) 17:50
by 磁石
こんにちは。
ゲームプログラミングの館を、一通り基本編までは勉強して、以下のサンプルプログラムを
読み解いているのですが、わからないことがあります。
http://homepage2.nifty.com/natupaji/DxL ... am.html#N4

このプログラムでは、プレイヤーである白い四角が常に画面の中心あたりに来るようなっていますが
例えば、画面右までスクロールして、描画している白いマップの終点まで来たら画面はスクロールせず、
プレイヤーが移動するようにしたいのですが、どのように組めばいいのでしょうか?
(描画されていないところ、つまり外の黒い画面を表示しないようにしたいのです)

考えたのですが、良いアルゴリズムが浮かばず、お手上げ状態です。

C言語の勉強は「やさしいC」という本を見ながら、独学で勉強をしていて、
今はポインタを少し理解しているところです。

初心者ですが、皆様の知恵をお貸しください。

Re:マップとプレイヤーのスクロールについて

Posted: 2010年11月03日(水) 18:54
by みけCAT
携帯からなので詳しいことは書けませんが、
条件演算子「?」を使うといいかもしれません。
x:キャラクターのx座標
gx:画面(ウィンドウ)の横の大きさ
sx:表示範囲の左上
mx:マップの横の大きさ
とすると
sx=(x+gx/2<=mx)?(x-gx/2):(mx-gx);
if(sx<0)sx=0;
のような感じです。
y座標についても同様にします。

Re:マップとプレイヤーのスクロールについて

Posted: 2010年11月03日(水) 19:00
by みけCAT
補足
上のxはキャラクターの中心のx座標です。
xがキャラクターの左上の場合は、キャラクターの幅をcxとして
上のサンプルのxを(x+cx/2)に置き換えてください。