本当は質問を同時進行しないほうがいいんですが、
他のソースを作れば何かしら解決の糸口が見つかるのでは?って思い作成してました。
ゲーム中にウィンドウサイズの変更とフルスクリーン化をしたいのですが、
下記の方法だとフルスクリーンにはなるものの、画面が真っ暗になってしまい何かしらのキーを操作すると閉じてしまいます。
多分「es_screen」を二重宣言していることが原因だと思われますが、
いまいち原因がわからないためアドバイス等あればよろしくおねがいします!
「考え方」
ゲーム中にウィンドウサイズを変更するので・・・
最初に「es_screen 640,480 ,0,0,1,1」でウィンドウモードを宣言します。
サイズ変更を実行したとき「es_screen 640,480 ,32,,0,1」でフルスクリーンを宣言します。
■仕様■
1.ゲーム中のオプションで画面のサイズの変更ができる
2.選択した内容によって画面のサイズを「通常、2倍、フルスクリーン」に変化させる
3.再起動したとき、閉じたときのサイズで起動する(「peek」で変数を読み込む想定なので、これは大丈夫だと思います)
#include "hspdxfix.as" ;DXライブラリ使用 width ,,130,200 ;ウィンドウの位置 es_ini 640,500,360 ;スプライトの最大数、キャラクタ定義の最大数,周の精度(180*2) es_screen 640,480 ,0,0,1,1 ;************タイトル*************** *タイトル es_cls es_draw ;*************カウンター************ pos 410,250 : es_mes "メインメニューのカウント " + MNI_c pos 410,270 : es_mes "カーソル " + KASO_c pos 200,370 : es_mes "Zキーで決定です" ;********Zキーを読むこむ************ getkey Zkey,90 ;決定 (Zキー) ;通常サイズ(640*480) if Zkey & MNI_c = 0 {;メニューの1段目 SKU_SIZ = 1 ;サイズフラグを1にする goto *初期化 } ;2倍(960*720) if Zkey & MNI_c = 1 {;メニューの2段目 SKU_SIZ = 2 ;サイズフラグを2にする goto *初期化 } ;フルスクリーン if Zkey & MNI_c = 2 {;メニューの3段目 SKU_SIZ = 3 ;サイズフラグを3にする goto *初期化 } ;********カーソルキーを読むこむ********* stick KASO ;カーソルキー取得 if ( KASO & 2 ) { ;↑ボタン KASO_c = -1 gosub *↑↓ボタン } if ( KASO & 8 ) { ;↓ボタン KASO_c = 1 gosub *↑↓ボタン } ;*******メニューの文字を出す****** pos 200,250 : es_mes "通常サイズ(640*480)" pos 200,280 : es_mes "2倍(960*720)" pos 200,310 : es_mes "フルスクリーン" switch MNI_c case 0 pos 150,250 : es_mes "●" swbreak case 1 pos 150,280 : es_mes "●" swbreak case 2 pos 150,310 : es_mes "●" swbreak swend es_sync ;画面更新 await 16 goto *タイトル ;**********↑↓ボタン******* *↑↓ボタン MNI_c = MNI_c + KASO_c ; (↑がマイナス1、↓がプラス1) if MNI_c < 0 { MNI_c = 2 } if MNI_c > 2 { MNI_c = 0 } return ;★★★★★初期化★★★★★ *初期化 if SKU_SIZ = 1 { ;通常サイズ(640*480) ;基準命令 (参考用) ; screen 0,SKU_SIZ*640, SKU_SIZ*480,2 ;非表示のウィンドウを作成する ; width SKU_SIZ*640, SKU_SIZ*480 ;ウィンドウサイズ設定 } if SKU_SIZ = 2 { ;2倍(960*720) ;基準命令 (実行されるが真っ白になる) ; chgdisp 1 ;解像度の変更は正常に行なわれた ; bgscr 0,640,480,,0,0 ;枠のないウィンドウを初期化 } if SKU_SIZ = 3 { ;フルスクリーン ;実行されるが真っ黒になる ; es_screen 640,480 ,32,,0,1 ;フルスクリーンで初期化 } buffer 4 ; picload "jiki.bmp" ;自機 es_buffer 4,,$00ff00,,1 ;---自機--- es_size 28,42, 100 es_pat 150, 0,0 JIKI_x = 286 : JIKI_y = 352 JIKISpd = 4 ;自機のスピード(4) gsel 0,1 ;************ゲーム画面*************** *ゲーム画面 es_cls es_draw ;*************カウンター**************** pos 410,250 : es_mes "SKU_SIZ " + SKU_SIZ ;************************************** gosub *自機の移動 es_set 150, JIKI_x,JIKI_y, 150 ;自機表示 es_sync ;画面更新 await 16 goto *ゲーム画面 ;**************自機の移動*************** *自機の移動 stick key,15 ;キー取得 if key & 1 : JIKI_x = JIKI_x - JIKISpd ;←の移動 if key & 2 : JIKI_y = JIKI_y - JIKISpd ;↑の移動 if key & 4 : JIKI_x = JIKI_x + JIKISpd ;→の移動 if key & 8 : JIKI_y = JIKI_y + JIKISpd ;↓の移動 return