http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N5 のHSP版です。DxLib.as は http://tkooler.moe.hm/hsp/img/DxLib.as から入手可能。
http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N5 のHSP版です。DxLib.as は http://tkooler.moe.hm/hsp/img/DxLib.as から入手可能。
#runtime "hsp3cl"#include "DxLib.as"// ショットの最大数#define MAX_SHOT 4dim ShotValid, MAX_SHOT // ショットが存在するか、フラグdim ShotX, MAX_SHOTdim ShotY, MAX_SHOT // ショットの位置Key = 0OldKey = 0 // 前のキー入力状態i = 0 : j = 0SetGraphMode 640, 480, 16DxLib_Initif( stat == -1 ){ // DXライブラリ初期化処理dialog "エラー" : end // エラーが起きたら直ちに終了}// 描画先画面を裏画面にセットSetDrawScreen DX_SCREEN_BACK// プレイヤーの初期位置をセットPlayerX = 320PlayerY = 400// ループrepeatProcessMessageif stat != 0 : breakCheckHitKey KEY_INPUT_ESCAPEif stat != 0 : break// キー入力取得OldKey = KeyGetJoypadInputState DX_INPUT_KEY_PAD1Key = statif( Key & PAD_INPUT_RIGHT ) : PlayerX += 3 // 右を押していたら右に進むif( Key & PAD_INPUT_LEFT ) : PlayerX -= 3 // 左を押していたら左に進む// ショットの移動処理for j, 0, MAX_SHOT, 1// ショットデータが無効だったらスキップif( ShotValid(j) == 0 ) : _continue// 位置を上にずらすShotY(j) -= 8// 画面外に出ていたらショットデータを無効にするif( ShotY(j) < -32 ) : ShotValid(j) = 0next// ショットボタンを押していたらショットを出す// 一つ前のループでショットボタンを押していたらショットは出さない// Zキーを押すとショット// C言語では// if( ( Key & ~OldKey ) & PAD_INPUT_A )// となっているが、~OldKey の ~ チルダは NOT演算子である。// HSPではNOT演算子がないので、OldKey^0xFFFFFFFF// とすることで対処している。// 詳しくは// http://hspdev-wiki.net/?HSP%B9%D6%BA%C2%2F%A5%D3%A5%C3%A5%C8%B1%E9%BB%BB#md54eaf4if( (Key&(OldKey^0xFFFFFFFF)) & PAD_INPUT_A ){// 使われていないショットデータを探すfor j, 0, MAX_SHOT, 1if( ShotValid(j) == 0 ) : _breaknext// もし使われていないショットデータがあったらショットを出すif( j != MAX_SHOT ){// ショットの位置を設定ShotX(j) = PlayerX + 16ShotY(j) = PlayerY// ショットデータを使用中にセットShotValid(j) = 1}}// 背景を黒でつぶすGetColor 0, 0, 0DrawBox 0, 0, 640, 480, stat, TRUE// プレイヤーを描画するGetColor 255, 0, 0DrawBox PlayerX, PlayerY, PlayerX + 48, PlayerY + 48, stat, TRUE// ショットを描画するfor j, 0, MAX_SHOT, 1// ショットデータが有効な時のみ描画if( ShotValid(j) == 1 ){GetColor 255, 255, 255DrawBox ShotX(j), ShotY(j), ShotX(j) + 16, ShotY(j) + 16, stat, TRUE}next// 裏画面の内容を表画面に反映させるScreenFliploopDxLib_End // DXライブラリ使用の終了処理end