ZX81の回想禄

PR

×

プロフィール

ZX81

ZX81

カレンダー

コメント新着

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

キーワードサーチ

▼キーワード検索

2026.07.06
XML

実際に描画する処理を仮実装しました。

ーーーーーmain.c
渦の中心に移動する関数を追加し、mainからの呼び出しとした。
void whirl_move_to_center(int act_no)
{
    int obj_w = 5*2 -1;
    int obj_h = 5*2 -1;
    int obj_left = active_tbl[act_no].x;
    int obj_top  = active_tbl[act_no].y - obj_h;
    boat_x = obj_left;
    int dy = obj_top - boat_y;
    map_scroll(dy);
    goal_meter_draw(dy);
    // オブジェクト移動
    objects_move(dy);
    // オブジェクト出現
    objects_spawn(map_scroll_y);
    for (int spin_frame = 0; spin_frame < 16; spin_frame++)
    {
        // 各種描画
        map_render();
        objects_render(RENDER_COLLISION);
        objects_render(RENDER_CONTACT);
        boat_render_spin(spin_frame);
        // 全体描画                                   
        map_draw();
    }
}

void main()
{
  :
            switch (active_tbl[act_no].type)
            {
            case OBJ_WHIRL:
                // 渦処理
                whirl_move_to_center(act_no);
                break;

ーーーーーboat.c
boat_renderのパラメータに描画する文字と衝突判定有無とし
通常のボートを描画するnomalと
回転中のボートを描画するsipinに分けて実装
// ----------------------------------------------------------
// 描画と衝突判定
// ----------------------------------------------------------
int boat_render_normal(void)
{
    unsigned char *chrp;
    chrp = &boat_ptn[boat_y & 1][boat_x & 1][boat_tilt][0];
    return boat_render(chrp, 1);
}
int boat_render_spin(int  spin_frame)
{
    unsigned char *chrp;
    chrp = &boat_spin_ptn[spin_frame][0];
    return boat_render(chrp, 0);
}
int boat_render(unsigned char *chrp, int set_collision)
{
    unsigned char c;
    unsigned char *pos;
    unsigned char p;
//    unsigned char p1;
    int p1;
    int  y, x;
    int  collision = 0;
    pos = getrenderaddr(boat_y>>1, boat_x>>1);
    for (y = 0; y < 5; y++)
   :

渦のセンターにボートが表示されて
1回転して通常処理に戻ります。

実際に渦と重ねると、少し見づらい気がします。

あとは、タイミングよくスペースキーを押すと脱出したり
引き寄せる途中を描画する処理を追加します。







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

最終更新日  2026.07.06 08:46:46
コメント(0) | コメントを書く
[ZX81C言語でのプログラム開発] カテゴリの最新記事


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

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