ZX81の回想禄

PR

×

プロフィール

ZX81

ZX81

カレンダー

コメント新着

コメントに書き込みはありません。

キーワードサーチ

▼キーワード検索

2026.07.30
XML


ーーーーーscrn.cpp
スコア関係の変数を追加しました。
scrn_initでは、0×6を描画していますが、
実は5桁の数字(0xFFFF=65535)で最後の0は固定表示としました。
そして、scoreがhiscoreを超えると更新するようにしてみました。

unsigned int  score = 0;
unsigned int  hiscore = 0;
// ----------------------------------------------------------
// 初期化
// ----------------------------------------------------------
void scrn_init(void)
{
    struct STRTBL {
        char y;
        char x;
        char step;
        char *p;
    } strtbl[] =
    {
        { 6,  1, D_DX, "WATER GAUGE"},
        { 6,  3, D_DX, "GOAL  METER"},
        { 1, 27,    1,   "1UP"},
        { 3, 26,    1,  "000000"},
        { 6, 27,    1,   "TOP"},
        { 8, 26,    1,  "000000"},
        {11, 26,    1,  "ROUNDS"},
        {13, 31,    1,      "1"}
    };
    struct STRTBL *strp;
    for (int i = 0; i < 8; i++)
    {
        strp = &strtbl[i];
        zx81_write_str(getscrnaddr(strp->y, strp->x), strp->p, strp->step);
    }
    score = 0;


void zx81_write_num(unsigned char *dstp, int num, int ndigit)
{
    unsigned char ascii[6+1];
    int  i, n;
    memset(ascii, 0, sizeof(ascii));
    if (ndigit > 6)
    {
        return;
    }
    i = ndigit-1;
    while (i >= 0) {
        n = num % 10;
        num /= 10;
        ascii[i] = '0' + n;
        i--;
    }
    zx81_write_str(dstp, ascii, 1);
}
void score_draw()
{
    unsigned char *p1, *p2;
    p1 = getscrnaddr(3, 26);
    zx81_write_num(p1, score, 5);
    if (hiscore < score)
    {
        hiscore = score;
        p2 = p1 + D_DX * 5;
        memcpy(p2, p1, 5);
    }
}






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2026.07.30 23:59:31
コメントを書く
[ZX81C言語でのプログラム開発] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: