今天接觸了一個特別好的圖形庫,可以拯救像我一樣目前只會C語言,但是又想讓程序窗口不再一片漆黑,或者自己做個小游戲
不再那么呆板的超級實用的庫。以下是Easy X的簡介。
EasyX 是針對 C++ 的圖形庫,可以幫助 C 語言初學者快速上手圖形和游戲編程。
為什么要用 EasyX?
許多學編程的都是從 C 語言開始入門的,而目前的現狀是:
1. 有些學校以 Turbo C 為環境講 C 語言,只是 Turbo C 的環境實在太老了,復制粘貼都很不方便。
2. 有些學校直接拿 VC 來講 C 語言,因為 VC 的編輯和調試環境都很優秀,並且 VC 有適合教學的免費版本。可惜在 VC 下只能做一些文字性的練習題,想畫條直線畫個圓都很難,還要注冊窗口類、建消息循環等等,初學者會受嚴重打擊的。初學編程想要繪圖就得用 TC,很是無奈。
3. 還有計算機圖形學,這門課程的重點是繪圖算法,而不是 Windows 編程。所以,許多老師不得不用 TC 教學,因為 Windows 繪圖太復雜了,會偏離教學的重點。新的圖形學的書有不少是用的 OpenGL,可是門檻依然很高。
所以,我想給大家一個更好的學習平台,就是 VC 方便的開發平台和 TC 簡單的繪圖功能,於是就有了這個 EasyX 庫。如果您剛開始學 C 語言,或者您是一位教 C 語言的老師,再或者您在教計算機圖形學,那么這個庫一定會讓您興奮的。
網址:https://easyx.cn/
你可以下載幫助文檔快速上手,希望對你有所幫助!
給大家分享一個時鍾(單純的會C是不可能做出這么漂亮的時鍾的)
#include <graphics.h> #include <conio.h> #include <math.h> #define High 480 // 游戲畫面尺寸 #define Width 640 #define PI 3.14159 int main() { initgraph(Width, High); // 初始化 640 x 480 的繪圖窗口 int center_x,center_y; // 中心點的坐標,也是表的中心 center_x = Width/2; center_y = High/2; int secondLength = Width/5; // 秒針的長度 int minuteLength = Width/6; // 分針的長度 int hourLength = Width/7; // 時針的長度 int secondEnd_x,secondEnd_y; // 秒針的終點 int minuteEnd_x,minuteEnd_y; // 分針的終點 int hourEnd_x,hourEnd_y; // 時針的終點 float secondAngle; // 秒鍾對應的角度 float minuteAngle; // 分鍾對應的角度 float hourAngle; // 時鍾對應的角度 SYSTEMTIME ti; // 定義變量保存當前時間 BeginBatchDraw(); while (1) { // 繪制一個簡單的表盤 setlinestyle(PS_SOLID, 1); setcolor(WHITE); circle(center_x, center_y, Width/4); // 畫刻度 int x, y,i; for (i=0; i<60; i++) { x = center_x + int(Width/4.3 * sin(PI * 2 * i / 60)); y = center_y + int(Width/4.3 * cos(PI * 2 * i / 60)); if (i % 15 == 0) bar(x - 5, y - 5, x + 5, y + 5); else if (i % 5 == 0) circle(x, y, 3); else putpixel(x, y, WHITE); } outtextxy(center_x - 25, center_y + Width/6, "我的時鍾"); GetLocalTime(&ti); // 獲取當前時間 // 秒鍾角度變化 secondAngle = ti.wSecond * 2*PI/60; // 一圈一共2*PI,一圈60秒,一秒鍾秒鍾走過的角度為2*PI/60 // 分鍾角度變化 minuteAngle = ti.wMinute * 2*PI/60 + secondAngle/60; // 一圈一共2*PI,一圈60分,一分鍾分鍾走過的角度為2*PI/60 // 時鍾角度變化 hourAngle = ti.wHour * 2*PI/12 + minuteAngle/12; // 一圈一共2*PI,一圈12小時,一小時時鍾走過的角度為2*PI/12 // 由角度決定的秒針端點坐標 secondEnd_x = center_x + secondLength*sin(secondAngle); secondEnd_y = center_y - secondLength*cos(secondAngle); // 由角度決定的分針端點坐標 minuteEnd_x = center_x + minuteLength*sin(minuteAngle); minuteEnd_y = center_y - minuteLength*cos(minuteAngle); // 由角度決定的時針端點坐標 hourEnd_x = center_x + hourLength*sin(hourAngle); hourEnd_y = center_y - hourLength*cos(hourAngle); setlinestyle(PS_SOLID, 2); setcolor(YELLOW); line(center_x, center_y, secondEnd_x, secondEnd_y); // 畫秒針 setlinestyle(PS_SOLID, 5); setcolor(BLUE); line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 畫分針 setlinestyle(PS_SOLID, 10); setcolor(RED); line(center_x, center_y, hourEnd_x, hourEnd_y); // 畫時針 FlushBatchDraw(); Sleep(10); setcolor(BLACK); setlinestyle(PS_SOLID, 2); line(center_x, center_y, secondEnd_x, secondEnd_y); // 隱藏前一幀的秒針 setlinestyle(PS_SOLID, 5); line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 隱藏前一幀的分針 setlinestyle(PS_SOLID, 10); line(center_x, center_y, hourEnd_x, hourEnd_y); // 隱藏前一幀的時針 } EndBatchDraw(); getch(); // 按任意鍵繼續 closegraph(); // 關閉繪圖窗口 return 0; }
但是注意文件后綴名是.cpp因為EasyX是C++的庫
