CAVE だもんね。(12)
RGKT-NDS-STDY-023(001)
RGKT-NDS-HMBR-004(012)
現在は目下ゲームメインソースを作成中。
・シーケンス遷移を手直し(終)
・関数、変数、定数の命名直し(未完)
ゲームルーチン以外にも、MSX 風への変更作業進め中。
・画面最下のファンクションキー表示(終?)
ファンクションキー表示の為に consoleSetWindow() 関数の使い方を学んだ。
void consoleSetWindow(PrintConsole* console, int x, int y, int width, int height); PrintConsole* console : 変更を適用するコンソールステータスを PrintConsole 構造体で指定する。 PrintConsole 構造体は、最初の変数宣言時などに前もって生成しておき、 コンソール初期化時にコンソールステータスを得ておくこと (console = *consoleDemoInit(); /* という風に */)。 int x : 横開始ポジションの設定。0〜31の範囲で設定する。 int y : 縦開始ポジションの設定。0〜23の範囲で設定する。 int width : 横開始ポジションから何文字入力可能とするかの設定。1〜32の範囲で設定する。 int height : 縦開始ポジションから何行入力可能とするかの設定。1〜24の範囲で設定する。
この関数は任意の範囲を指定することで
その範囲内でのみ iprintf() 等のコンソール動作が適応されるというもの。
例えば、改行や画面クリアを実行した際、
適応したくない範囲に処理が及ばなくなるので
そういった用途があるときは割と便利かもしれない。
consoleSetWindow 関数を使ったサンプルソース
/*--------------------------------------------------------------------------------- consoleSetWindow func check program. Mar 18, 2009 CODING BY. AYUMI.K @REGEKATSU This program was made from devkitPro Version 1.4.10 REGEKATSU -Console/Homebrew Programming- this web site. http://akiba.geocities.jp/consolehomebrewprogramming/ ---------------------------------------------------------------------------------*/ #include <nds.h> #include <stdio.h> //--------------------------------------------------------------------------------- int main(void) { // 変更を適用するコンソールステータスを PrintConsole 構造体で持つ。 PrintConsole bottom_screen = *consoleDemoInit(); // BG 透明色として画面に描画される色を青とする(MSX 風に。)。 BG_PALETTE_SUB[0] = RGB15(0, 0, 31); // MSX-BASIC 画面風、ファンクションキーの表示。 iprintf("\x1b[23;2Hcolor auto goto list run"); // iprintf() 出力範囲を MSX 起動時互換のものとするよう変更。 // 具体的には、 // ・横28文字(左右にはそれぞれ2文字分のブランクがある) // ・縦23行(24行目はファンクションキー表示に利用されている) // というように設定する。 // consoleSetWindow(&bottom_screen, 2, 0, 28, 23); // 変更を適応したコンソールを選択する // (選択しないと設定変更したコンソールを利用できない。)。 consoleSelect(&bottom_screen); while(1) { scanKeys(); if(keysHeld() & KEY_A) iprintf("A"); if(keysHeld() & KEY_B) iprintf("B"); if(keysDown() & KEY_START) iprintf("\nCLS"); else if(keysUp() & KEY_START) iprintf("\x1b[2JOk\n"); swiWaitForVBlank(); } return 0; } //---------------------------------------------------------------------------------