見出し画像

Qt学習 第4回 Qtでゲームを作りますが何か? オフセットの導入 Qtの場合は超簡単!?そう簡単なのさ!


はじめに



こんにちは。いつもお世話になっております。純一思想家です。

前回はパーティを作りました。1人ではあまりにも寂しすぎますからね。

今回は、マップが画面を超えるときはどうすればいいの?というお話です。

Qtの場合、マップが画面を超えるということは、第1回で学習したシーンレクトがその分だけ広がるということです。そして、QGraphicsViewはスクロールバーを出現させますから、大きな問題になることはありません。

これが、pygameだと、スクロールバーなんていうものが当然のようには出てきてはくれません。(今のバージョンはどうなっているのかわかりませんけど・・・。)

なので、Qtの場合は画面外に出たら、それ以降勇者がどこに行ったのかわからなくなる・・・ということは避けられます。

しかし、実際に動かしてみた所、画面がカクカクするし、一時的に見えなくなってしまうことがあります。また、シーンレクトはあらかじめ設定しておくのがリファレンスの要求でしたから、やっぱり画面サイズは決まっていたほうがいいのです。

(0, 0, 640, 512)でシーンレクトをセットします。

こうすると、シーンレクトはこの範囲で固定されるため、スクロールバーも出現しなくなります。何言ってんだこの人っていう方は第一回を読んで、QGraphicsSceneのシーンレクトについて学んでくださいね。

ですから、ドラゴンクエストでおなじみの、常に勇者が中心にいるような状態を作りたいと思います。

こちらが以前までの動き

そして今回実装する動きがこちらになります。

こうなります。マップも結構広げております。

この状態にするにはどうすればいいでしょうか。

pygameの話はもういいかもしれませんが、pygameだとオフセットという仕組みを導入します。pygameは常にマップチップを無限ループの関数の中で描き続けます。そのオフセットを加えることで、主人公が常に中心となるような動きが実現できます。

pygameだとここが一つの難関なのですが、Qtだと、これが恐ろしいほど簡単にできます。簡単なのですが、思いつくまでが時間がかかるかもしれない。基礎が大切です。今回はその手法をご紹介して終わりにします。今回は、アイデアを売るつもりです。

ここから先は

5,807字
この記事のみ ¥ 150

この記事が参加している募集

この記事が気に入ったらチップで応援してみませんか?