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

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

?? pp.cpp

?? 九宮圖游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// pp.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"
#include "stdio.h"
#include <time.h>
#include <fstream.h>

#define MAX_LOADSTRING 100
#define LEFT 150
#define TOP 20
#define RIGHT 450
#define BOTTOM 320
#define SIZE 100
#define	MOVE_UP 38
#define MOVE_DOWN 40
#define MOVE_LEFT 37
#define MOVE_RIGHT 39
#define STOP 0
#define USER 1
#define AUTO 2
#define DISPLAY 3
#define LEN 10
#define FAIL -1

// Global Variables:
HINSTANCE hInst;								// current instance
TCHAR szTitle[MAX_LOADSTRING];								// The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];								// The title bar text
int map[10]={0};//存儲九宮圖數(shù)據(jù)
int *stack,*stack_top;//自定義堆棧
int *knowledge=NULL,*knowledge_top=NULL;//存儲知識,即已存儲的狀態(tài)即走法
int knowledge_len=0;//存儲已存記錄的長度(個數(shù))
int sign;//標(biāo)志當(dāng)前游戲狀態(tài)(停止、玩家、自動、演示)
long len;//堆棧長度
long max_len;//堆棧最大長度
BOOL searching;//正在用Search進行搜索的標(biāo)志
HWND hwnd;//
BOOL study;//
FILE *fp;//外部文件
int playspeed=400;//演示速度
long step;//演示步數(shù)


// Foward declarations of functions included in this code module:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK	About(HWND, UINT, WPARAM, LPARAM);
void ReDraw();//重畫九宮圖
void NewGame();//開始新游戲
void Auto();//開啟自動搜索
BOOL MoveUp();//向上移動
BOOL MoveLeft();//左
BOOL MoveRight();//右
BOOL MoveBottom();//下
int GetReverse();//獲取當(dāng)前狀態(tài)的逆序數(shù)
BOOL Success();//判斷是否成功
BOOL Search(int direct);//自動搜索的遞歸算法
BOOL Push();//將當(dāng)前狀態(tài)壓入自定義的堆棧
void Pop();//出棧,放入當(dāng)前狀態(tài)
void ShowWaiting();//顯示“Please Waiting”
void AutoSearch();//自動搜索的函數(shù),被Auto調(diào)用,調(diào)用Search
void OpenStudy();//開啟學(xué)習(xí)狀態(tài)
void CloseStudy();//關(guān)閉學(xué)習(xí)狀態(tài)
void ReadKnowledge();//讀取已存狀態(tài)
void SaveKnowledge();//保存狀態(tài)
int SearchKnowledge();//在狀態(tài)中搜索當(dāng)前狀態(tài),如有,返回應(yīng)走方向,否則返回0
void Study(int direct);//學(xué)習(xí),保存當(dāng)前狀態(tài)及走法
int Judge();//在未搜索到的情況下判斷走法
void GetDistance(int pos1,int pos2,BOOL& narrow,int& direct);//獲得兩點位置關(guān)系



int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	MSG msg;
	HACCEL hAccelTable;

	// Initialize global strings
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_PP, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// Perform application initialization:
	if (!InitInstance (hInstance, nCmdShow)) 
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_PP);

	// Main message loop:
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return msg.wParam;
}



//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
//  COMMENTS:
//
//    This function and its usage is only necessary if you want this code
//    to be compatible with Win32 systems prior to the 'RegisterClassEx'
//    function that was added to Windows 95. It is important to call this function
//    so that the application will get 'well formed' small icons associated
//    with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX); 

	wcex.style			= CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc	= (WNDPROC)WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(hInstance, (LPCTSTR)IDI_PP);
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName	= (LPCSTR)IDC_PP;
	wcex.lpszClassName	= szWindowClass;
	wcex.hIconSm		= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

	return RegisterClassEx(&wcex);
}

//
//   FUNCTION: InitInstance(HANDLE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }
	hwnd=hWnd;
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

//
//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND	- process the application menu
//  WM_PAINT	- Paint the main window
//  WM_DESTROY	- post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;
	TCHAR szHello[MAX_LOADSTRING];
	int the_Direct;
//	HMENU hmenu;
	LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

	switch (message) 
	{
		case WM_CREATE:
			sign=STOP;
			stack=(int*)malloc(sizeof(int)*100000*LEN);
			stack_top=stack;
			len=0;
			max_len=100000;//初始化堆棧
			study=false;
			ReadKnowledge();//讀取已存知識
			break;
		case WM_COMMAND:
			wmId    = LOWORD(wParam); 
			wmEvent = HIWORD(wParam); 
			// Parse the menu selections:
			switch (wmId)
			{
				case IDM_NEW:
					NewGame();//開始新游戲
					break;
				case IDM_AUTO:
					Auto();//開啟自動搜索
					break;
				case IDM_STUDY:
					//hmenu=GetMenu(hWnd);
					if(study==false)
					{
					//	CheckMenuItem(hmenu,IDM_STUDY,MF_CHECKED);
						OpenStudy();
					//	study=true;
					}
					else
					{						
					//	CheckMenuItem(hmenu,IDM_STUDY,MF_UNCHECKED);
						CloseStudy();//打開、關(guān)閉學(xué)習(xí)開關(guān)
					//	study=false;
					}
					break;
				case IDM_LOWSPEED:
					playspeed=800;
					break;
				case IDM_MIDDLESPEED:
					playspeed=400;
					break;
				case IDM_HIGHSPEED:
					playspeed=100;
					break;
				case IDM_ABOUT:
				   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
				   break;
				case IDM_EXIT:
				   DestroyWindow(hWnd);
				   if(study==true)
					   CloseStudy();//存儲已存狀態(tài)
				   break;
				default:
				   return DefWindowProc(hWnd, message, wParam, lParam);
			}
			break;
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			 //TODO: Add any drawing code here...
			RECT rt;
			GetClientRect(hWnd, &rt);
			DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
			EndPaint(hWnd, &ps);
			ReDraw();
			break;
		case WM_KEYDOWN:
			if(sign!=USER)
				return 0;
			the_Direct=int(wParam);
			switch(the_Direct)
			{
			case MOVE_UP:
				if(MoveUp()==false)
					MessageBeep(MB_OK);
				break;
			case MOVE_DOWN:
				if(MoveBottom()==false)
					MessageBeep(MB_OK);
				break;
			case MOVE_LEFT:
				if(MoveLeft()==false)
					MessageBeep(MB_OK);
				break;
			case MOVE_RIGHT:
				if(MoveRight()==false)//接收鍵盤輸入
					MessageBeep(MB_OK);
				break;
			default:
				return 0;
			}
			ReDraw();
			if(Success()==true)
			{
				if(MessageBox(hWnd,"再來一局?","勝利!!!",MB_OKCANCEL)==IDOK)
					NewGame();
				else
					sign=STOP;
			}
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			free(stack);
			SaveKnowledge();
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}

void ReDraw()
{
	HDC hdc;
	hdc=GetDC(hwnd);
	HBRUSH hBr1,hBr2;
	LPPOINT lppoint=NULL;

	hBr1=(HBRUSH)GetStockObject(DKGRAY_BRUSH);
	SelectObject(hdc,hBr1);
	Rectangle(hdc,LEFT,TOP,RIGHT,BOTTOM);
	if(map[0]!=0)
	{
		hBr2=(HBRUSH)GetStockObject(GRAY_BRUSH);
		SelectObject(hdc,hBr2);
		int x,y;
		switch(map[0])
		{
		case 1:
			x=1;y=1;break;
		case 2:
			x=2;y=1;break;
		case 3:
			x=3;y=1;break;
		case 4:
			x=1;y=2;break;
		case 5:
			x=2;y=2;break;
		case 6:
			x=3;y=2;break;
		case 7:
			x=1;y=3;break;
		case 8:
			x=2;y=3;break;
		case 9:
			x=3;y=3;break;
		}
		Rectangle(hdc,LEFT+(x-1)*100,TOP+(y-1)*100,LEFT+x*100,TOP+y*100);
		//Draw the text
		for(int j=1;j<=9;j++)
		{
			switch(j)
			{
			case 1:
				x=1;y=1;break;
			case 2:
				x=2;y=1;break;
			case 3:
				x=3;y=1;break;
			case 4:
				x=1;y=2;break;
			case 5:
				x=2;y=2;break;
			case 6:
				x=3;y=2;break;
			case 7:
				x=1;y=3;break;
			case 8:
				x=2;y=3;break;
			case 9:
				x=3;y=3;break;
			}
			if(j!=map[0])
			{
				char out_text[2];
				sprintf(out_text,"%d",map[j]);
				TextOut(hdc,LEFT+(x-1)*100+45,TOP+(y-1)*100+45,out_text,1);
			}
		}
		DeleteObject(hBr2);
	}
	MoveToEx(hdc,LEFT+100,TOP,lppoint);
	LineTo(hdc,LEFT+100,BOTTOM);
	MoveToEx(hdc,LEFT+200,TOP,lppoint);
	LineTo(hdc,LEFT+200,BOTTOM);
	MoveToEx(hdc,LEFT,TOP+100,lppoint);
	LineTo(hdc,RIGHT,TOP+100);
	MoveToEx(hdc,LEFT,TOP+200,lppoint);
	LineTo(hdc,RIGHT,TOP+200);
	DeleteObject(hBr1);
	if(sign==DISPLAY)
	{
		char dstep[20];
		sprintf(dstep,"(Steps:%5ld     /",step);
		TextOut(hdc,230,345,dstep,18);
	}
	ReleaseDC(hwnd,hdc);
}

void NewGame()
{
	int i,j,k,temp;
	if(sign==USER)//判斷狀態(tài)
	{
		if(MessageBox(hwnd,"放棄當(dāng)前游戲?","提示",MB_OKCANCEL)==IDCANCEL)
		{
			return;
		}
		if(MessageBox(hwnd,"當(dāng)前游戲是否無解?","提示",MB_OKCANCEL)==IDOK)
			Study(FAIL);//如果此狀態(tài)無解,也存入狀態(tài)表中
	}
	srand((unsigned)time(NULL));
	map[0]=9;
	for(i=1;i<9;i++)
		map[i]=i;
	map[9]=0;
	do{
		for(i=0;i<10;i++)
		{
			j=rand()%9+1;
			k=rand()%9+1;
			temp=map[j];
			map[j]=map[k];
			map[k]=temp;
			if(map[j]==0)
				map[0]=j;
			if(map[k]==0)
				map[0]=k;
		}
	}while(GetReverse()==0);//隨機產(chǎn)生一個狀態(tài)
	ReDraw();
	sign=USER;
	stack_top=stack;
	len=0;
}
void Auto()
{
	if(sign!=USER)
		return;
	sign=AUTO;
	DWORD ID1;
	DWORD ID2;
	searching=true;
	CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ShowWaiting,NULL,0,&ID1);
	//開啟搜索線程
	CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)AutoSearch,NULL,0,&ID2);
	//開啟顯示等待線程
	//主線程接受用戶輸入
}
BOOL MoveUp()
{
	if(map[0]==1||map[0]==2||map[0]==3)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女网站色| 91成人免费网站| 亚洲黄色录像片| 日韩精品一区二区在线| 日本伦理一区二区| 国产精品一线二线三线精华| 亚洲资源中文字幕| 日本一区二区三级电影在线观看 | 亚洲综合色在线| 亚洲精品在线一区二区| 欧美日韩日日摸| 欧美一二三区在线观看| 99久久综合色| 国产在线一区观看| 美女脱光内衣内裤视频久久影院| 亚洲男女毛片无遮挡| 欧美极品少妇xxxxⅹ高跟鞋| 精品久久久三级丝袜| 正在播放亚洲一区| 欧美日韩一区在线| 色综合久久久久网| 96av麻豆蜜桃一区二区| 国产+成+人+亚洲欧洲自线| 毛片av一区二区三区| 日韩综合小视频| 亚洲成av人片在线观看无码| 一区二区中文视频| 欧美国产综合一区二区| 26uuu久久天堂性欧美| 日韩久久久久久| 91精品国产入口| 欧美精品乱人伦久久久久久| 欧美日韩精品系列| 欧美三级韩国三级日本一级| 一本大道久久精品懂色aⅴ| 91在线精品一区二区| 97精品久久久午夜一区二区三区| www.日本不卡| 99久久精品国产观看| 成人高清av在线| 91伊人久久大香线蕉| 99久久精品免费看国产免费软件| 成人精品高清在线| 91丝袜美女网| 欧美午夜寂寞影院| 欧美日韩国产乱码电影| 91麻豆精品国产91久久久久久久久 | 色一情一伦一子一伦一区| a在线欧美一区| 97精品视频在线观看自产线路二 | 精品国精品国产| 久久综合成人精品亚洲另类欧美 | 国产丝袜美腿一区二区三区| 久久久青草青青国产亚洲免观| www欧美成人18+| 国产精品嫩草影院com| 亚洲欧美综合色| 亚洲精品欧美在线| 五月婷婷激情综合| 久久99精品久久久久婷婷| 国产91精品在线观看| 91亚洲精品一区二区乱码| 欧美午夜在线观看| 日韩欧美aaaaaa| 国产日韩影视精品| 亚洲男人都懂的| 亚洲国产美国国产综合一区二区| 日本不卡不码高清免费观看| 狠狠色综合播放一区二区| 成熟亚洲日本毛茸茸凸凹| 色哟哟亚洲精品| 91精品国产福利在线观看| 久久久久一区二区三区四区| 国产精品久久午夜| 亚洲sss视频在线视频| 老司机午夜精品99久久| 国产91丝袜在线播放0| 欧美性videosxxxxx| 欧美成人一区二区三区在线观看| 国产欧美精品日韩区二区麻豆天美| 一区二区三区在线观看国产| 毛片不卡一区二区| 91丨九色丨国产丨porny| 欧美精品久久99| 日本一区二区免费在线| 91免费视频大全| 5566中文字幕一区二区电影| 国产欧美一区二区三区在线老狼| 夜夜揉揉日日人人青青一国产精品 | 亚洲国产美女搞黄色| 国产精品一级片| 欧美日韩另类一区| 国产精品美女久久久久久2018 | 亚洲国产日韩一级| 成人午夜视频免费看| 欧美一区二区三区白人| 亚洲天堂免费看| 国模无码大尺度一区二区三区| 欧洲精品在线观看| 中文字幕av免费专区久久| 日本不卡在线视频| 91免费观看国产| 国产日韩综合av| 免费成人深夜小野草| 在线观看日产精品| 国产精品久久久久久久久免费丝袜 | 一区二区三区鲁丝不卡| 成人在线综合网| 日韩欧美视频在线 | 成人av电影在线| 精品久久久久久综合日本欧美| 亚洲国产日日夜夜| 一本大道av一区二区在线播放| 久久久精品免费网站| 久久www免费人成看片高清| 欧美亚洲日本国产| 综合自拍亚洲综合图不卡区| 国产美女娇喘av呻吟久久| 日韩一区二区三区电影在线观看 | 亚洲图片另类小说| 春色校园综合激情亚洲| 国产性色一区二区| 黄色精品一二区| 2021国产精品久久精品| 免费在线观看视频一区| 3atv一区二区三区| 日韩成人伦理电影在线观看| 欧美老人xxxx18| 午夜精品爽啪视频| 欧美三级一区二区| 视频一区免费在线观看| 欧美日韩午夜精品| 日韩中文字幕一区二区三区| 欧美日韩高清一区| 日韩专区欧美专区| 日韩一区二区三| 久久精品国产77777蜜臀| 日韩一级完整毛片| 久久精品国产精品亚洲综合| 精品少妇一区二区| 国产激情视频一区二区在线观看| 久久综合九色综合97婷婷| 国产成人午夜99999| 国产欧美一区二区在线| 99久精品国产| 一二三区精品视频| 51午夜精品国产| 加勒比av一区二区| 国产女人18毛片水真多成人如厕 | 日韩欧美区一区二| 国产麻豆成人传媒免费观看| 久久九九99视频| 久久天堂av综合合色蜜桃网| 国产露脸91国语对白| 国产精品免费aⅴ片在线观看| 97久久精品人人做人人爽| 亚洲午夜久久久久久久久电影院| 欧美人体做爰大胆视频| 美女脱光内衣内裤视频久久影院| 久久尤物电影视频在线观看| 成人黄色在线看| 一区二区三区四区不卡在线| 8x8x8国产精品| 国产精品一级在线| 一区二区在线观看免费视频播放| 欧美精品精品一区| 国产精品1区2区| 亚洲日本一区二区| 7777精品久久久大香线蕉| 国产一区二区成人久久免费影院| 亚洲欧洲www| 日韩免费高清av| 成人91在线观看| 香蕉久久夜色精品国产使用方法 | 亚洲国产综合色| 欧美电视剧在线看免费| 国产suv精品一区二区883| 一区二区三区四区蜜桃| 亚洲精品在线网站| 日本高清成人免费播放| 美女被吸乳得到大胸91| 成人免费小视频| 日韩美女主播在线视频一区二区三区 | 人人爽香蕉精品| 亚洲色欲色欲www在线观看| 日韩午夜精品电影| 99久久综合国产精品| 日本91福利区| 亚洲男女毛片无遮挡| 2021久久国产精品不只是精品| 欧美性受xxxx| 国产成人免费av在线| 日本中文一区二区三区| 自拍偷在线精品自拍偷无码专区| 欧美一区二区高清| 91啪亚洲精品| 国产成人综合网| 日本人妖一区二区| 一区二区三区在线免费观看| 久久久久久久免费视频了|