プチコン講座

プチコン講座

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

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

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

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

プチコン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号本体...
プチコン講座

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

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

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

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

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

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