C程序多線程同時畫圓畫方

程序

#include<stdio.h>
#include<math.h>
#include<Windows.h>
#include <graphics.h>


//畫圓
DWORD WINAPI circle(LPVOID n)
{
	int circlePointx = 180;
	int circlePointy = 180;
	const double degree_half = 0.008726;
	int R0 = 150;
	for (int i = 0; i < 720; i++) {
		putpixel(circlePointx + R0 * cos(degree_half*i), circlePointy + R0 * sin(degree_half*i), RED);
		Sleep(10);
	}
	return 0;
}

//畫方
DWORD WINAPI tangle(LPVOID n)
{
	int circlePointx = 540;
	int circlePointy = 180;
	int R0 = 150;
	float factor = 1.65;
	float delta = 2 * R0 / 180 * factor;
	for (int ii = 0; ii < 180; ii++) {
		//up
		putpixel(circlePointx + R0 - delta * ii,circlePointy-R0,GREEN);
		Sleep(10);
	}
	for (int ii = 0; ii < 180; ii++) {
		//left
		putpixel(circlePointx - R0, circlePointy - R0 + delta * ii, GREEN);
		Sleep(10);
	}
	for (int ii = 0; ii < 180; ii++) {
		//down
		putpixel(circlePointx - R0 + delta * ii, circlePointy + R0, GREEN);
		Sleep(10);
	}
	for (int ii = 0; ii < 180; ii++) {
		//right
		putpixel(circlePointx + R0, circlePointy + R0 - delta * ii, GREEN);
		Sleep(10);
	}
	return 0;
}

int main()
{
	initgraph(960, 540);
	HANDLE hThread[2];
	//創建線程,並調用函數打印輸出
	hThread[0] = CreateThread(NULL, 0, circle, (LPVOID)0, 0, NULL);
	hThread[1] = CreateThread(NULL, 0, tangle, (LPVOID)0, 0, NULL);
	//等待所有線程結束
	WaitForMultipleObjects(2, hThread, TRUE, INFINITE);
	//關閉進程句柄
	CloseHandle(hThread[0]);
	CloseHandle(hThread[1]);

	getchar();
	return 0;
}

結果

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章