http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N7 のHSP版です。DxLib.as は http://tkooler.moe.hm/hsp/img/DxLib.as から入手可能です。今回からウィンドウモードに変更になってます。またC言語版は関数ポインタを使用してますが、HSPで使用してもうれしくないので代わりにラベル型配列変数を使用しています。
http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N7 のHSP版です。DxLib.as は http://tkooler.moe.hm/hsp/img/DxLib.as から入手可能です。今回からウィンドウモードに変更になってます。またC言語版は関数ポインタを使用してますが、HSPで使用してもうれしくないので代わりにラベル型配列変数を使用しています。
#runtime "hsp3cl" #include "DxLib.as" // 処理ラベル型変数配列 ldim Method, 3 Method = *RedBoxDraw, *RandPsetPixel, *GDraw // 選択項目の文字列 sdim String, 64, 3 String = "赤い箱を描画する", "ランダムにドットを打つ", "グラデーションを描く" *main //SetGraphMode 640, 480, 16 ChangeWindowMode TRUE // ウィンドウモードになる DxLib_Init if( stat == -1 ){ // DXライブラリ初期化処理 dialog "エラー" : end // エラーが起きたら直ちに終了 } // 選択ラベルの位置初期化 SPoint = 0 // 選択項目の数を取得&ついでに項目描画 SenntakuNum = 0 repeat length(String) GetColor 255, 255, 255 DrawString 32, SenntakuNum * 32, String(SenntakuNum), stat SenntakuNum++ loop // ループ repeat ProcessMessage if stat != 0 : break // 前のカーソル消去 DrawBox 0, 0, 32, SenntakuNum * 32, 0, TRUE // カーソル描画 GetColor 255, 255, 0 DrawBox 0, SPoint * 32, 16, SPoint * 32 + 16, stat, TRUE // キー入力待ち WaitKey // キー入力に応じて処理 // カーソル移動 CheckHitKey KEY_INPUT_UP if ( (stat != 0) && (SPoint != 0) ) : SPoint-- CheckHitKey KEY_INPUT_DOWN if ( (stat != 0) && (SPoint < SenntakuNum - 1) ) : SPoint++ // 決定キー時処理 CheckHitKey KEY_INPUT_Z if( stat != 0 ){ // 項目に応じた処理を行う gosub Method(SPoint) // キー入力待ち WaitKey // ループから抜ける break } loop DxLib_End // DXライブラリ使用の終了処理 end stop // 赤い箱を描画するラベル *RedBoxDraw GetColor 255, 0, 0 DrawBox 0, 0, 640, 480, stat, TRUE return // ランダムにドットを打つラベル *RandPsetPixel repeat 1000 GetRand 639 r639 = stat GetRand 479 r479 = stat GetRand 255 r = stat GetRand 255 g = stat GetRand 255 b = stat GetColor r, g, b DrawPixel r639, r479, stat loop return // グラデーションを描くラベル *GDraw repeat 480 GetColor 255, 255, 255 * cnt / 480 DrawLine 0, cnt, 640, cnt + 1, stat loop return