首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言實現藝術清屏特效:開合、掃描、中心擴散多種動畫演示

     編輯:關於C語言

前言

傳統 cls 或 clrscr() 僅提供瞬間清屏,缺乏視覺美感。本文提供六種藝術清屏子函數,透過光標定位與逐字符覆蓋空格,實現開屏、閉幕、上掃、下掃、矩形邊框、中心擴散等動態效果,適合 DOS 時代字符界面程式的視覺強化。

核心輔助函數

光標定位 goto_xy

使用 BIOS 中斷 0x10 功能 2(設置光標位置),參數為行 dh、列 dl,頁碼 bh=0。

void goto_xy(int x, int y) {
    union REGS r;
    r.h.ah = 2;
    r.h.dl = y;   // 列
    r.h.dh = x;   // 行
    r.h.bh = 0;
    int86(0x10, &r, &r);
}

演示用填滿螢幕 puta

將整個 24×79 文字模式螢幕填入字符 'a',供清屏動畫演示對比。

六大藝術清屏算法

1. 中心清屏 zcls —— 由中心向四角擴散

根據螢幕長寬比,計算擴散步數 d,從中心矩形逐層向外呼叫 recls 清除矩形邊框,形成同心矩形收縮動畫。

2. 矩形邊清屏 recls —— 周邊逐行/列掃描

依序清除左、右兩直欄(上→下),再清除上、下兩橫列(左→右),每步 delay(10) 產生動畫感。

3. 開屏式清屏 kcls —— 上下同時向中間展開

從垂直中心線 t/s 起始,雙向向上/下掃描每一行,逐列寫入空格,呈現「雙頁打開」效果。

4. 閉幕式清屏 bcls —— 上下同時向兩側收合

從頂底 t=y1, s=y2 向中間推進,逐行清除,模擬「雙頁合上」動畫。

5. 自下清屏 dcls —— 從右向左、由上而下掃描

外層列遞減 j=x2→x1,內層行遞增 i=y1→y2,逐點寫空格,形成「右上角掃向左下」的掃描線效果。

6. 主程式演示流程

main() {
    puta(); getch();          // 填滿 'a'
    dcls(0,4,0,79); getch();  // 自下清屏前 4 行
    puta(); getch();
    bcls(0,25,0,79); getch(); // 閉幕式全屏
    puta(); getch();
    zcls(0,25,0,79); getch(); // 中心擴散全屏
}

技術要點總結

  • 所有動畫核心均為 goto_xy + putchar(' ') + delay 組合。
  • 座標系統:x 為行 (0~24),y 為列 (0~79),對應 BIOS 中斷慣例。
  • 需包含 <dos.h>、<conio.h> 以使用 int86、delay、getch。
  • 僅適用於真實 DOS 或 DOSBox 等實模式環境;現代 Windows 控制台需改用 Win32 API (SetConsoleCursorPosition) 移植。

擴展建議

可進一步封裝為通用動畫引擎:傳入矩形區域、幀回調函數、幀間隔,支援任意字符、顏色漸變、非矩形路徑(圓形、對角線)等更豐富的視覺特效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved