プチコン講座

プチコン講座

プチコン3号 32日目 球を描く(2)

今回は、前回の続きで、上の画面のような前回よりもリアルな球を描いてみます。 前回は球を正面から光で照らした場合の陰影を描画しました。 しかし、球を正面から光で照らすシーンは、日常ではあまり出会いません。 もっとも一般的なのは、満月でしょう...
プチコン講座

プチコン3号 31日目 球を描く(1)

前回紹介したレイトレーシングの手法は、時間がかかりすぎるのでゲームの画像表示に使うには向いていません。 今回は、球を一つだけ、レイトレーシングよりも高速に描画するプログラムを作ってみます。 上の画面が実行結果で、直径170ピクセルの球を0...
プチコン講座

プチコン3号 30日目 レイトレーシングでCGを描いてみる

今回は、コンピュータグラフィックスの古典的な手法であるレイトレーシング法のプログラムを紹介します。 これは、下記のリンク先にある、"Tiny Raytracer"というJavaScriptで書かれたプログラムをプチコン3号用に書き直したも...
プチコン講座

プチコン3号 29日目 擬似3D(6) 迷路の中を動く敵を隠面消去つきで描画する

前回は隠面消去のアルゴリズムを使って迷路の壁を表示しました。 しかし、表示できるものが壁だけでは寂しいですね。 今回は前回のプログラムを拡張して、3D迷路の中に敵を表示しました。 これで、11日目の迷路探検ゲームの3D版ができます。 今回...
プチコン講座

プチコン3号 28日目 擬似3D(5) 隠面消去

前回、ワイヤーフレームで3D空間を表現しましたが、今回からは11日目で作成した迷路探検ゲームの3D版を作ってみます。 プチコン3号 11日目 当たり判定を追加して迷路探検ゲーム完成!: 楽しくやろう。 前回のプログラムでは、線画で碁盤目状...
プチコン講座

プチコン3号 27日目 擬似3D(4) 背景をワイヤーフレームで描く

前回、前々回とスプライトを使った擬似3D表示のプログラムを作ってきました。 しかし2Dのゲームと比べると背景が簡素になってしまいます。 2DではBGやスプライトを使用することができますが、どちらも回転と拡大しか行えません。 擬似3D表示で...
プチコン講座

プチコン3号 26日目 擬似3D(3) 一人称視点・三人称視点

今回は前回のプログラムのバリエーションとして、視点がスクリーンより手前にある場合、およびスクリーンより奥にある場合のプログラムを作ってみます。 前者はいわゆるFPS(First Person Shooting)ゲーム、後者はRPGなどキャ...
プチコン講座

プチコン3号 25日目 擬似3D(2) 視点の移動

今回は、3次元の空間の中を視点が動くプログラムを作ってみます。 上の画面が今回の最終形です。 視点をスライドパッドで前後左右に移動し、十字キー上下で上下に移動し、L・Rボタンで左右に回転します。 物体のほうは水平面上に格子状に等間隔に並べ...
プチコン講座

プチコン3号 24日目 擬似3D(1) 遠近感の表現

今回からオブジェクト指向はいったんお休みにして、3次元グラフィックスを扱います。 といっても、まずは映画のCGのような本格的なものではなく、スプライトの拡大・縮小を使った疑似3Dについて考えます。 プチコン3号では、スプライトの拡大・縮小を...
プチコン講座

プチコン3号 23日目 シューティングゲームの当たり判定とマスク値設定

前回までに、自機と自機の弾、敵機と敵の弾をそれぞれ生成・更新できるようになりました。 今回は当たり判定を追加します。 当たり判定はSPHITSP命令で行えます。 この命令は以前にも11日目に迷路ゲームで使用しました。 このときは、2つのスプ...
プチコン講座

プチコン3号 22日目 SmileBASICでOOP(5)クラスオブジェクトの使い方

前回のサンプルで、シューティングゲームにおける自機、および自機の弾の処理をOOP風に記述してみました。 今回は同じシューティングゲームでの敵機と敵の弾の処理をOOP風に記述してみます。 敵機の動作は、 ・画面上端にランダムに出現 ・真下へ...
プチコン講座

プチコン3号 21日目 SmileBASICでOOP(4)サンプル

前回までで、オブジェクト指向(風)プログラミングに必要な関数は一通りそろいましたので、使い方をサンプルでお見せします。 例題は ・スライドパッドで自機移動 ・Aボタンで弾発射 という、作りかけのシューティングゲームみたいなものです。 プチ...
プチコン講座

プチコン3号 20日目 SmileBASICでOOP(3)コンストラクタ・デストラクタ

18日目で関数SP_NEWCLASSを作成し、クラスを生成すると同時にインスタンスのリソースも確保しました。 今回は、インスタンスの管理(生成と廃棄)を扱います。 インスタンスの個数が状況に応じて増えたり減ったりする場合、確保したリソースを...
プチコン講座

プチコン3号 19日目 SmileBASICでOOP(2)ポリモーフィズム

ゲームプログラムでは、例えばシューティングなら自機、敵機、自分の弾、敵の弾など、さまざまなオブジェクトが登場します。 各オブジェクトは挙動が異なりますが、一方で画面上での位置などの更新、ゲーム開始時の初期化、イベント発生時の処理(たとえば自...
プチコン講座

プチコン3号 18日目 SmileBASICでOOP(1)スプライトをオブジェクトと見なす

今回からしばらく初心者向けに詳しく書くのはお休みして、通常運転で行きたいと思います。(内容が、あまり初心者向けではありませんので・・・) これまで1ヶ月あまりSmileBASICを使ってきましたが、やはりBASICはプログラミング言語として...