/* "movec2.c" */
/* stack:4k malloc:2k */
#include <guigui00.h>
#define AUTO_MALLOC 0
/* シグナルボックス関係 */
#define REWIND_CODE 1
#define initsignalbox() lib_initsignalbox0_256(REWIND_CODE)
#define getsignalw() lib_getsig0w(lib_sigbox_256)
void OsaskMain()
{
struct LIB_WINDOW *window;
struct LIB_TEXTBOX *wintitle, *textbox;
int x, y, c;
/* ライブラリ初期化&シグナルボックス初期化 */
initsignalbox();
/* ウィンドウオープン */
window = lib_openwindow(AUTO_MALLOC, 0x0200, 20 * 8, 8 * 16);
wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0, 6, 1, 0, 0, window, 0x00c0, 0);
textbox = lib_opentextbox(0x0001, AUTO_MALLOC, 0, 20, 8, 0, 0, window, 0x00c0, 0);
lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "movec2");
/* シグナル定義 */
lib_definesignal1p0(3, 0x0100, 0x00ac, window, 4); /* カーソルキー(計4つ) */
lib_definesignal1p0(0, 0x0100, ' ', window, 8); /* スペースバー */
lib_definesignal0p0(0, 0, 0, 0);
/* まず表示 */
x = 9; y = 3; c = 11;
lib_putstring_ASCII(0x0000, x, y, textbox, c, 0, "O");
/* メインループ */
for (;;) {
int ox = x, oy = y, oc = c, sig;
sig = getsignalw();
if (sig == 4) { /* left */
if (x > 0)
x--;
}
if (sig == 5) { /* right */
if (x < 19)
x++;
}
if (sig == 6) { /* up */
if (y > 0)
y--;
}
if (sig == 7) { /* down */
if (y < 7)
y++;
}
if (sig == 8) { /* chagne */
c = (c + 1) & 0x0f;
}
/* 何らかの変化があれば表示し直す */
if (x != ox || y != oy || c != oc) {
lib_putstring_ASCII(0x0000, ox, oy, textbox, 0, 0, " ");
lib_putstring_ASCII(0x0000, x, y, textbox, c, 0, "O");
}
}
}