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 4 dim ShotValid, MAX_SHOT // ショットが存在するか、フラグ dim ShotX, MAX_SHOT dim ShotY, MAX_SHOT // ショットの位置 Key = 0 OldKey = 0 // 前のキー入力状態 i = 0 : j = 0 SetGraphMode 640, 480, 16 DxLib_Init if( stat == -1 ){ // DXライブラリ初期化処理 dialog "エラー" : end // エラーが起きたら直ちに終了 } // 描画先画面を裏画面にセット SetDrawScreen DX_SCREEN_BACK // プレイヤーの初期位置をセット PlayerX = 320 PlayerY = 400 // ループ repeat ProcessMessage if stat != 0 : break CheckHitKey KEY_INPUT_ESCAPE if stat != 0 : break // キー入力取得 OldKey = Key GetJoypadInputState DX_INPUT_KEY_PAD1 Key = stat if( 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) = 0 next // ショットボタンを押していたらショットを出す // 一つ前のループでショットボタンを押していたらショットは出さない // 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#md54eaf4 if( (Key&(OldKey^0xFFFFFFFF)) & PAD_INPUT_A ){ // 使われていないショットデータを探す for j, 0, MAX_SHOT, 1 if( ShotValid(j) == 0 ) : _break next // もし使われていないショットデータがあったらショットを出す if( j != MAX_SHOT ){ // ショットの位置を設定 ShotX(j) = PlayerX + 16 ShotY(j) = PlayerY // ショットデータを使用中にセット ShotValid(j) = 1 } } // 背景を黒でつぶす GetColor 0, 0, 0 DrawBox 0, 0, 640, 480, stat, TRUE // プレイヤーを描画する GetColor 255, 0, 0 DrawBox PlayerX, PlayerY, PlayerX + 48, PlayerY + 48, stat, TRUE // ショットを描画する for j, 0, MAX_SHOT, 1 // ショットデータが有効な時のみ描画 if( ShotValid(j) == 1 ){ GetColor 255, 255, 255 DrawBox ShotX(j), ShotY(j), ShotX(j) + 16, ShotY(j) + 16, stat, TRUE } next // 裏画面の内容を表画面に反映させる ScreenFlip loop DxLib_End // DXライブラリ使用の終了処理 end