ZX81の回想禄

PR

×

プロフィール

ZX81

ZX81

カレンダー

コメント新着

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

キーワードサーチ

▼キーワード検索

2026.07.27
XML

当初は、横1ドット×縦22ドットで描画するようにしていましたが
水ゲージと合わせて仕様変更します。
River Patrol GOAL METERの実装 | ZX81の回想禄 - 楽天ブログ

ーーーーーscrn.cpp
横2ドット×縦48ドットとして、
96ドット分でゴールまでの距離を描画するように修正。

int goal_level = 0;
int goal_count = 0;
void goal_meter_init(void)
{
    unsigned char *p;
    int  i;
    goal_level = 96;
    goal_count = 2;
     p = getscrnaddr(0, 2);
    for (i = 0; i <= 24; i++)
    {
        *p = 0x80;
        p += D_DX;
    }
}
void goal_meter_draw(int dy)
{
    unsigned char goal_ptn[4] = {0x00, 0x02, 0x03, 0x84, 0x80};
    int  y;
    int  ptnno;
    unsigned char *p, c;
    int  row, step;
    if (dy < 0)
    {
        step = -dy;
        if (goal_level == 0)
        {
            return;
        }
        if (goal_count > step)
        {
            goal_count -= step;
            return;
        }
        goal_count += 10 - step;
        goal_level--;
        row = goal_level >> 2;
        ptnno = goal_level & 0x03;
    }
    else if (dy > 0)
    {
        step = dy;
        goal_count += step;
        if (goal_count < 10)
        {
            return;
        }
        goal_count -= 10;
        goal_level++;
        row = goal_level >> 2;
        if (goal_level & 0x03)
        {
            ptnno = goal_level & 0x03;
        }
        else
        {
            if (row < 1)
            {
                return;
            }
            row --;
            ptnno = 4;
        }
    }
    else
    {
        return;
    }
    p = getscrnaddr(row, 2);
    *p = goal_ptn[ptnno];
}

水ゲージ、ゴールメーター共に、文字の左に描画します。










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

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


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


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

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