タマの誘惑
(表示されるデータが違っている場合は「init all」としてください)
メモリージャグラーをお持ちの方は、ここで使用しているソースをダウンロードして使用できます。
あまりサブタイトルには意味ありませんので気にしないでください。
何となく思いつきで、「壁打ち」を作ってみました。しかも犬。
- wall.bas:ソース・画面図
左スティックで犬を前後左右に操作し、○ボタンでボールを画面奥の方向に打ち返します。
一番手前までボールが来るとミスとなり、3回ミスで終了します。
なんでまた犬かというと、これもあまり意味はありません。しかもラケットも持ってないのに何故打ち返せるかも謎だったり。とりあえず気合いで打ち返しているとでも解釈してください(苦しい)。まあ「?」マークをラケットに見立てるとかその他モデルを組み合わせるとかいう手もありますが。
壁のラインは、3D空間の座標を決めてからgetsposで画面上座標を取得し、lineで描いています(150行以降)。場合によってはコート全体をモデル作成してそことの当たり判定でボールの跳ね返りを判断するという手もありますが、ここではただlineを引いているだけなので自力で当たり判定をしています(1140行以降)。
またボールの影は、楕円を描くことができないので矩形になっています。これもボールの真下位置座標からgetsposで画面上の座標を取得、tileを描画しています(1430行以降)。
ボール打ち返しの可否は、ボールと犬との距離により判断しています(990行以降)。またボールが奥から手前に向かっているときしか打ち返せないようにもしています(1010行)。
例によってというか、2人プレイモードを追加してみました。今度は猫。
- wall2.bas:ソース・画面図
左スティックで前後左右に操作し、○×△ボタンでボールを画面奥の方向に打ち返します。○で通常、×で弱め、△で強めに打ちます。
2人プレイの場合は1P側が犬、2P側が猫を操作します。
1人プレイでは一番手前までボールが来るとミスとなり、3回ミスで終了します。
2人プレイでは交互に打ち、自分が打つときに一番手前までボールが来るとミスとなり、相手にポイントが入ります。5ポイント取ったほうが勝ちです。画面左上の表示で「*」がついているのが、打たなければいけない側です。
ボタン3つで強弱を使い分けられますが、あまり極端な差はついていません。速くしすぎると本当に必殺技になってしまい、それはそれで問題なので。660行あたりで各速度を定義、1310行以降で区別代入していますのでこのあたりをいじると速度が変わります。ちなみに△は打てる範囲が狭くなっています(1410行以降)。
トップへ