亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dining.c

?? 哲學家就餐問題
?? C
字號:
/********************************************************
 * Dining.c modified by Jia-yuan Lin 05/17/04
 ********************************************************/

#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <windowsx.h>
#include <string.h>
#include <math.h>
#include "dining.h"

HINSTANCE 	hInst;			
            // Application Instance Handle
HWND   	hWndMain;       	
            // Main Window Handle
HBITMAP	hbmpOffscreen;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void RenderOffscreen(HDC hDestDC);

BOOL bFastFood;

extern int gDinerState[];
extern int gChopstickState[];
extern HANDLE gchopStick[PHILOSOPHERS];	
			// 1 chopstick between each philopher and his neighbor

/////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
	WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message)
	{
		case WM_COMMAND:
			switch (wParam)
			{
			case CM_EXIT:
				PostMessage(hWndMain, WM_CLOSE, 0, 0L);
				break;
			}
			break;

		case WM_FORCE_REPAINT:
			{
				MSG msg;

				InvalidateRect(hWndMain, NULL, TRUE);
				while (PeekMessage(&msg, hWndMain, WM_FORCE_REPAINT,WM_FORCE_REPAINT,TRUE))
					;
			}
			break;

		case WM_PAINT:

			hdc = BeginPaint(hWndMain, &ps);

			RenderOffscreen(hdc);

			EndPaint(hWndMain, &ps);
			break;

		case WM_CLOSE:
			return DefWindowProc(hWndMain, message, wParam, lParam);

		case WM_DESTROY:
			PostQuitMessage(0);
			break;

		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
}
	return (0);
}

////////////////////////////////////////////////////////////////////
BOOL CreateOffscreen()
{
	HWND hwndScreen = GetDesktopWindow();
	HDC hdc	= GetDC(hwndScreen);

	int	nWidth	= GetSystemMetrics( SM_CXSCREEN );
	int	nHeight	= GetSystemMetrics( SM_CYSCREEN );

	hbmpOffscreen = CreateCompatibleBitmap( hdc, nWidth, nHeight );

	ReleaseDC(hwndScreen, hdc);

	if ( !hbmpOffscreen )
		return FALSE;
	else
		return TRUE;
}

////////////////////////////////////////////////////////////
void RenderOffscreen(HDC hDestDC)
{
	HDC hdc	= hDestDC;			// CreateCompatibleDC(hWndMain);
	int err = GetLastError();
	HBITMAP hOldBitmap	= SelectObject(hdc, hbmpOffscreen);
	RECT rect;
	HPEN hPen;
	double dx, dy, px, py,  AngRad, dDeltaAng;
	int pos, p1;
	long CenterX, CenterY;

	hPen = SelectObject(hdc, CreatePen(PS_SOLID, 3, 0L));

	GetClientRect(hWndMain, &rect);

	/* Draw the table */
	CenterX = (rect.right - rect.left)/2;
	CenterY = (rect.bottom - rect.top)/2;
	Ellipse(hdc, CenterX - 100, CenterY - 100, CenterX + 100, CenterY + 100);

	/* Draw the chopsticks */
	dDeltaAng = 360 / PHILOSOPHERS;
	for (pos = 0; pos < PHILOSOPHERS; pos++)	//FIXIT
	{
		/* Draw the chopsticks */
		AngRad = (pos * dDeltaAng)/57.29577951;//180/pi
		dx = CenterX + (sin(AngRad)*60);
		dy = CenterY - (cos(AngRad)*60);
		MoveToEx(hdc, (int)dx, (int)dy, NULL);
		dx = CenterX + (sin(AngRad)*85);
		dy = CenterY - (cos(AngRad)*85);
		LineTo(hdc, (int)dx, (int)dy);

		//Draw the plate
		AngRad = ((pos * dDeltaAng+dDeltaAng / 2))/57.29577951;
		dx = CenterX + (sin(AngRad) * 72);
		dy = CenterY - (cos(AngRad) * 72);
		Ellipse(hdc, (int)dx-12, (int)dy-12, (int)dx+12, (int)dy+12);
	}

	/* delete the black pen */
	DeleteObject(SelectObject(hdc, hPen));

	/* Draw the philosophers */
	for(pos = 0; pos < PHILOSOPHERS; pos++)
	{
		/* select a pen for each philosopher */
		switch (gDinerState[pos])
		{
		case RESTING:
			hPen = SelectObject(hdc, CreatePen(PS_SOLID, 3, RGB(0, 255, 0)));
			break;

		case WAITING:
		case EATING:
			hPen = SelectObject(hdc, CreatePen(PS_SOLID, 3, RGB(255, 0, 0)));
			break;

		default:
			hPen = SelectObject(hdc, CreatePen(PS_SOLID, 3, 0L));
		}

		AngRad = ((pos * dDeltaAng) + dDeltaAng / 2)/57.29577951;
		px = CenterX + (sin(AngRad)*150);
		py = CenterY - (cos(AngRad)*150);

		/* Draw the Philosopher */
		Ellipse(hdc, (int)px-25, (int)py-25, (int)px+25, (int)py+25);

		//Draw the left arm
		if (gChopstickState[pos] == pos)
		{
			MoveToEx(hdc, (int)px, (int)py, NULL);
			AngRad = (pos * dDeltaAng)/57.29577951;
			dx = CenterX + (sin(AngRad)*85);
			dy = CenterY - (cos(AngRad)*85);
			LineTo(hdc, (int)dx, (int)dy);
		}

		//Draw the right arm
		p1 = pos + 1;
		if (p1 == PHILOSOPHERS)
			p1 = 0;
		if (gChopstickState[p1] == pos)
		{
			MoveToEx(hdc, (int)px, (int)py, NULL);
			AngRad = (p1 * dDeltaAng)/57.29577951;
			dx = CenterX + (sin(AngRad)*85);
			dy = CenterY - (cos(AngRad)*85);
			LineTo(hdc, (int)dx, (int)dy);
		}

		/* Delete the pen */
		DeleteObject(SelectObject(hdc, hPen));
	}	//for pos

	BitBlt( hDestDC,
				rect.left,
				rect.top,
				rect.right - rect.left,
				rect.bottom-rect.top,
				hdc,
				rect.left,
				rect.top,
				SRCCOPY
			);
	GetLastError();

	SelectObject(hdc, hOldBitmap);

//	DeleteDC(hWndMain, hdc);
}

/////////////////////////////////////////////
/////PURPOSE:Initialize the application//////
/////////////////////////////////////////////
BOOL InitApplication(HINSTANCE hInstance)
{
	WNDCLASS  wc;

	wc.style = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName =  "din";
	wc.lpszClassName = "dinWClass";

	RegisterClass(&wc);

	return TRUE;
}


/////////////////////////////////////////////////////////////
///PURPOSE:  Saves instance handle and creates main window///
/////////////////////////////////////////////////////////////
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
	int ret;

	hInst = hInstance;

	hWndMain = CreateWindow(
		"dinWClass",
		"Dining Philosopher",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		450,
		450,
		NULL, NULL, hInstance, NULL );

	if (!hWndMain)
		return FALSE;

	ShowWindow(hWndMain, nCmdShow);
	UpdateWindow(hWndMain);

	if (!CreateOffscreen())
		PostQuitMessage(1);

		ret = MessageBox(hWndMain, "Do you want fast philosophers?\n\n"
			"If you select Yes, then it will deadlock much faster.\n",
			"Wait Mode", MB_YESNO);
		if (ret == IDYES)
			bFastFood = TRUE;
		else
			bFastFood = FALSE;

	// Start the threads
	Diner();

	return TRUE;
}

//////////////////////////////////////////////////////////////////////
////PURPOSE: Calls initialization function, processes message loop////
////Main function!
//////////////////////////////////////////////////////////////////////
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	LPSTR lpCmdLine, int nCmdShow)
{
	MSG msg;
	int i;

	if (!hPrevInstance)
		if (!InitApplication(hInstance))
	   		return (FALSE);

	if (!InitInstance(hInstance, nCmdShow))
  		return (FALSE);

	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
	 	DispatchMessage(&msg);
	}
	// Clear the table
	for (i = 0; i < PHILOSOPHERS; i++)
		CloseHandle(gchopStick[i]);

	return (msg.wParam);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区三| 91麻豆自制传媒国产之光| 国产一区在线精品| 色视频成人在线观看免| 91超碰这里只有精品国产| 亚洲国产精品激情在线观看| 亚洲国产日韩av| 成人免费视频视频| 欧美成人伊人久久综合网| 一区二区三区中文字幕| 国产精品18久久久| 欧美不卡一区二区三区| 亚洲福利电影网| 色综合一区二区| 中文文精品字幕一区二区| 日产国产欧美视频一区精品| 在线看国产一区二区| 欧美激情资源网| 国内精品免费**视频| 欧美精选一区二区| 一个色综合网站| 91麻豆精品秘密| 国产视频一区二区在线观看| 久久97超碰色| 日韩精品一区二区三区swag| 亚洲高清免费在线| 欧美性猛片xxxx免费看久爱| 亚洲美女一区二区三区| 懂色av噜噜一区二区三区av| 久久久久久久一区| 国产福利91精品一区二区三区| 久久综合国产精品| 国产乱码一区二区三区| 久久综合久久综合久久| 精品一区二区三区的国产在线播放| 欧美精品v日韩精品v韩国精品v| 亚洲chinese男男1069| 精品视频免费在线| 日本欧美肥老太交大片| 欧美一区二区女人| 久久精品国产亚洲5555| www国产精品av| 国产福利一区二区| 亚洲私人影院在线观看| 色一情一乱一乱一91av| 亚洲夂夂婷婷色拍ww47| 9191久久久久久久久久久| 日本不卡高清视频| 久久久综合激的五月天| 成人国产精品免费观看| 亚洲精品日产精品乱码不卡| 欧美日韩高清一区二区不卡| 蜜臀av亚洲一区中文字幕| wwwwww.欧美系列| 北条麻妃一区二区三区| 亚洲精品国产精品乱码不99| 欧美日韩国产小视频| 久久草av在线| 亚洲欧美中日韩| 欧美美女视频在线观看| 九九视频精品免费| 日韩伦理av电影| 日韩视频免费观看高清完整版 | 国产精品视频你懂的| 不卡视频一二三四| 日韩国产欧美在线播放| 欧美国产日韩精品免费观看| 欧美综合久久久| 久久99这里只有精品| 国产精品视频一区二区三区不卡| 欧美系列日韩一区| 国产一区二区按摩在线观看| 一区二区三区不卡视频| 欧美成人精品福利| 色天天综合色天天久久| 蜜臀av亚洲一区中文字幕| 亚洲天堂2014| 国产欧美日本一区视频| 欧美日韩国产片| a美女胸又www黄视频久久| 蜜桃视频免费观看一区| 亚洲激情图片一区| 久久久久久久久97黄色工厂| 欧美日韩精品福利| 99国产精品国产精品毛片| 精品一区二区三区影院在线午夜| 亚洲一区二区三区四区在线| 国产精品久久久久久一区二区三区| 欧美一级理论性理论a| 色综合亚洲欧洲| 成人免费视频视频| 国产乱淫av一区二区三区| 日韩av在线免费观看不卡| 亚洲精品视频在线观看网站| 中文字幕欧美激情| 精品国产乱码久久久久久牛牛 | 日韩精品一二区| 亚洲综合一二三区| 国产精品国产三级国产aⅴ原创| 久久在线观看免费| 欧美一级午夜免费电影| 欧美日韩免费在线视频| 91婷婷韩国欧美一区二区| 国产高清视频一区| 精品在线免费视频| 蜜桃av一区二区在线观看| 日韩专区一卡二卡| 亚洲电影激情视频网站| 亚洲综合色自拍一区| 亚洲日本在线观看| 亚洲天堂成人在线观看| 亚洲欧美中日韩| 一区二区三区加勒比av| 亚洲欧洲综合另类| 亚洲欧美日韩在线不卡| 亚洲欧美日韩一区二区三区在线观看 | 国产精品国产自产拍在线| 国产丝袜美腿一区二区三区| 国产欧美日韩在线| 国产精品色在线观看| 国产精品黄色在线观看| 亚洲女同ⅹxx女同tv| 亚洲精品videosex极品| 亚洲午夜一区二区| 日日欢夜夜爽一区| 久久er精品视频| 国产高清亚洲一区| 99视频一区二区三区| 91视频精品在这里| 欧美少妇bbb| 精品伦理精品一区| 久久久精品影视| 最新欧美精品一区二区三区| 亚洲免费av网站| 日本成人在线看| 国产主播一区二区| 暴力调教一区二区三区| 欧美性极品少妇| 日韩视频一区二区三区| 亚洲国产经典视频| 亚洲午夜在线视频| 精品在线视频一区| 91性感美女视频| 欧美一区二区三区视频在线观看| 精品国产第一区二区三区观看体验| 日本一区二区三区dvd视频在线| 亚洲婷婷综合色高清在线| 无码av中文一区二区三区桃花岛| 国内精品久久久久影院薰衣草| 91麻豆精品在线观看| 91精品国产综合久久精品麻豆| 国产日韩欧美精品一区| 一区二区三区电影在线播| 日韩av电影天堂| 成人精品视频.| 欧美精品1区2区3区| 欧美国产精品久久| 日一区二区三区| thepron国产精品| 日韩三区在线观看| 亚洲图片激情小说| 精彩视频一区二区| 欧美在线观看一区| 国产喷白浆一区二区三区| 日韩主播视频在线| 色94色欧美sute亚洲13| 久久久美女艺术照精彩视频福利播放| 亚洲一级片在线观看| 国产福利一区二区| 欧美一级高清片| 亚洲电影一级片| 91麻豆国产福利在线观看| 久久蜜臀中文字幕| 日本sm残虐另类| 在线视频你懂得一区二区三区| 久久精品一区二区三区四区| 日韩一区精品字幕| 欧美午夜影院一区| 中文字幕一区二区在线观看| 国产在线精品一区在线观看麻豆| 欧美美女网站色| 亚洲国产精品麻豆| 色综合久久综合| 亚洲欧洲一区二区在线播放| 国产一级精品在线| 日韩片之四级片| 首页综合国产亚洲丝袜| 欧美亚洲一区二区在线观看| 亚洲婷婷综合久久一本伊一区| 成人小视频在线观看| 久久香蕉国产线看观看99| 蜜臀av性久久久久蜜臀aⅴ | 91视频xxxx| 中文字幕一区二区三区在线观看| 喷白浆一区二区| 欧美一区二区视频在线观看2020 | 一区二区三区四区乱视频| www.欧美日韩| 中文字幕免费观看一区| 国产成人aaa|