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

C語言練習實例60:TC繪製彈球動畫(綜合圖形示例2)

     編輯:C 語言實例練習

C語言練習實例60:TC繪製彈球動畫(綜合圖形示例2)

本實例在 Turbo C 中模擬一條線段在屏幕矩形邊界內反彈運動,顏色隨時間變化。

程序分析

  • 定義屏幕邊界常量 LEFT=0, TOP=0, RIGHT=639, BOTTOM=479。
  • 線段端點 (x1,y1), (x2,y2) 以速度 (dx1,dy1), (dx2,dy2) 移動。
  • 碰到邊界反向速度分量。
  • 每畫 LINES=400 條線換一次顏色(0-15 循環)。
  • 檢測鍵盤輸入 kbhit() 退出循環。

源代碼

// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include "graphics.h"
#define LEFT 0
#define TOP 0
#define RIGHT 639
#define BOTTOM 479
#define LINES 400
#define MAXCOLOR 15

int main() {
    int driver, mode, error;
    int x1, y1, x2, y2;
    int dx1, dy1, dx2, dy2, i = 1;
    int count = 0;
    int color = 0;
    driver = VGA; mode = VGAHI;
    initgraph(&driver, &mode, "");
    x1 = x2 = y1 = y2 = 10;
    dx1 = dy1 = 2; dx2 = dy2 = 3;
    while (!kbhit()) {
        line(x1, y1, x2, y2);
        x1 += dx1; y1 += dy1;
        x2 += dx2; y2 += dy2;
        if (x1 <= LEFT || x1 >= RIGHT) dx1 = -dx1;
        if (y1 <= TOP || y1 >= BOTTOM) dy1 = -dy1;
        if (x2 <= LEFT || x2 >= RIGHT) dx2 = -dx2;
        if (y2 <= TOP || y2 >= BOTTOM) dy2 = -dy2;
        if (++count > LINES) {
            setcolor(color);
            color = (color >= MAXCOLOR) ? 0 : ++color;
        }
    }
    closegraph();
}

現代移植

可用 SDL2 + 游戲循環實現相同邏輯,kbhit() 替換為事件輪詢。

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