easyx 簡介

http://www.easyx.cn/算法

基本說明

許多學編程的都是從 C 語言開始入門的,而目前的現狀是:編程

  1. 有些學校以 Turbo C 爲環境講 C 語言,只是 Turbo C 的環境實在太老了,複製粘貼都很不方便。函數

  2. 有些學校直接拿 VC 來說 C 語言,由於 VC 的編輯和調試環境都很優秀,而且 VC 有適合教學的免費版本。惋惜在 VC 下只能作一些文字性的練習題,想畫條直線畫個圓都很難,還要註冊窗口類、建消息循環等等,初學者會受嚴重打擊的。初學編程想要繪圖就得用 TC,非常無奈。學習

  3. 還有計算機圖形學,這門課程的重點是繪圖算法,而不是 Windows 編程。因此,許多老師不得不用 TC 教學,由於 Windows 繪圖太複雜了,會偏離教學的重點。新的圖形學的書有很多是用的 OpenGL,但是門檻依然很高。調試

  因此,咱們想給你們一個更好的學習平臺,就是 VC 方便的開發平臺和 TC 簡單的繪圖功能,因而就有了這個 EasyX 庫。若是您剛開始學 C 語言,或者您是一位教 C 語言的老師,再或者您在教計算機圖形學,那麼這個庫必定會讓您興奮的。code

示例代碼

該程序實現了二維星空的動態效果

 

// 編譯環境:Visual C++ 6.0,EasyX 2018春分版
// http://www.easyx.cn
//
#include <graphics.h>
#include <time.h>
#include <conio.h>

#define MAXSTAR 200	// 星星總數

struct STAR
{
	double	x;
	int		y;
	double	step;
	int		color;
};

STAR star[MAXSTAR];

// 初始化星星
void InitStar(int i)
{
	star[i].x = 0;
	star[i].y = rand() % 480;
	star[i].step = (rand() % 5000) / 1000.0 + 1;
	star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5);	// 速度越快,顏色越亮
	star[i].color = RGB(star[i].color, star[i].color, star[i].color);
}

// 移動星星
void MoveStar(int i)
{
	// 擦掉原來的星星
	putpixel((int)star[i].x, star[i].y, 0);

	// 計算新位置
	star[i].x += star[i].step;
	if (star[i].x > 640)	InitStar(i);

	// 畫新星星
	putpixel((int)star[i].x, star[i].y, star[i].color);
}

// 主函數
int main()
{
	srand((unsigned)time(NULL));	// 隨機種子
	initgraph(640, 480);			// 建立繪圖窗口

	// 初始化全部星星
	for(int i = 0; i < MAXSTAR; i++)
	{
		InitStar(i);
		star[i].x = rand() % 640;
	}

	// 繪製星空,按任意鍵退出
	while(!kbhit())
	{
		for(int i = 0; i < MAXSTAR; i++)
			MoveStar(i);
		Sleep(20);
	}

	closegraph();					// 關閉繪圖窗口
}
相關文章
相關標籤/搜索