⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elsgame.c

📁 MiniWinOuterSM MiniWinOuterSM
💻 C
字号:
#include "Game.h"
#define IDT_TETRIS 100
extern int        level;
extern int        speed;
extern int        time[15];
extern int        dtime;
extern int        TextX;
extern RECT       rctWnd;
static LRESULT WINAPI TetrisWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	static int tmcount=0;
   	switch (msg)
	{
	case WM_PAINT:
		{
			PAINTSTRUCT ps;
			HDC hdc=BeginPaint(hWnd,&ps);
			DrawSence(hdc);
			EndPaint(hWnd,&ps);
		}
		return 0;
	case WM_TIMER:
		if(g_AppData.bIsActive){
			int speed=GetDlgItemInt(hWnd,IDC_SPEED,NULL,FALSE);
			tmcount+=10;
			if(tmcount>=time[speed]){
				Fall(hWnd);
				tmcount=0;
			}
		}
		break;
	case WM_DRAWITEM:
		{
			//SS_OWNERDRAW
			UINT idCtl = (UINT) wParam;             // control identifier 
			LPDRAWITEMSTRUCT lpdis =(LPDRAWITEMSTRUCT) lParam;
			if(idCtl==IDC_NEXTOBJ){
				RECT rc;
				int i,x,y;
				FillRect(lpdis->hDC,NULL,(HBRUSH)(COLOR_WINDOWTEXT+1));
				for(i=0;i<4;i++){
					x=NextObj.pos[i].x-60;
					y=NextObj.pos[i].y;
					GetCellRect(&rc,NextObj.pos[i].x-6,NextObj.pos[i].y);
					InflateRect(&rc,-1,-1);
					FillRect(lpdis->hDC,&rc,(HBRUSH)(COLOR_BTNFACE+1));
					//DrawObject(lpdis->hDC,&NextObj);
					//TRACE("===(%d,%d)\r\n",NextObj.pos[i].x,NextObj.pos[i].y);
				}
			}
		}break;
	case WM_KEYDOWN:
		switch(wParam)
		{
		case VK_LEFT:
		case VK_RIGHT:
			if(g_AppData.bIsActive)
				Move(hWnd,wParam==VK_LEFT?LEFT:RIGHT);
			else{
				int speed=GetDlgItemInt(hWnd,IDC_SPEED,NULL,FALSE);
				speed+=(wParam==VK_LEFT?-1:1);speed=(speed+16)%16;
				SetDlgItemInt(hWnd,IDC_SPEED,speed,FALSE);
			}
			break;
		case VK_DOWN:
			if(g_AppData.bIsActive){
				dtime=20;
				Fall(hWnd);
			}else{
				int level=GetDlgItemInt(hWnd,IDC_LEVEL,NULL,FALSE)-1;
				if(level==-1)	level=19;
				SetDlgItemInt(hWnd,IDC_LEVEL,level,FALSE);
			}
			break;
		case VK_UP:
			if(g_AppData.bIsActive) 
				Flip(hWnd);
			else{
				int level=GetDlgItemInt(hWnd,IDC_LEVEL,NULL,FALSE)+1;
				if(level>19)	level=0;
				SetDlgItemInt(hWnd,IDC_LEVEL,level,FALSE);
			}
			break;
		case VK_RETURN:
			g_AppData.bIsActive=!g_AppData.bIsActive;
			if(g_AppData.bIsActive)
				BeginGame(hWnd);
			break;
		default:
			return DefWindowProc(hWnd,msg,wParam,lParam);
		}
		break;
	default: 
		return DefWindowProc(hWnd, msg, wParam, lParam);
	}
	return 0;
}
HWND CreateTetris(void)
{
	int i,j;
	hGame=CreateMainWindow("TERTRIS",WS_VISIBLE|WS_CAPTION|WS_SYSMENU,
		10,10,420,520,TetrisWndProc);
	CreateWindow("Static",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_OWNERDRAW,280,10,100,100,hGame,(HMENU)IDC_NEXTOBJ,NULL,NULL);
	CreateWindow("Static","Score",WS_CHILD|WS_VISIBLE|SS_RIGHT,250,120,80,22,hGame,(HMENU)77,NULL,NULL);
	CreateWindow("Static",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_RIGHT,330,120,80,22,hGame,(HMENU)IDC_SCORE,NULL,NULL);

	CreateWindow("Static","Speed",WS_CHILD|WS_VISIBLE|SS_RIGHT,250,150,80,22,hGame,(HMENU)88,NULL,NULL);
	CreateWindow("Static",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_RIGHT,330,150,80,22,hGame,(HMENU)IDC_SPEED,NULL,NULL);

	CreateWindow("Static","Level",WS_CHILD|WS_VISIBLE|SS_RIGHT,250,180,80,22,hGame,(HMENU)99,NULL,NULL);
	CreateWindow("Static",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_RIGHT,330,180,80,22,hGame,(HMENU)IDC_LEVEL,NULL,NULL);
    //level=0;
	SetDlgItemInt(hGame,IDC_SPEED,0,FALSE);
	SetDlgItemInt(hGame,IDC_SCORE,0,FALSE);
	SetDlgItemInt(hGame,IDC_LEVEL,0,FALSE);
	for(i=0;i<MAXX;i++)
	  for(j=0;j<MAXY;j++)
		   Ev[i][j]=0;
	CreateObj(&NextObj);
	SetCruObjZero();
	//============================================
	g_AppData.bIsActive=0;
	SetTimer(hGame,IDT_TETRIS,10,NULL);
	ShowWindow(hGame,SW_SHOWNORMAL);
	SetActiveWindow(hGame);
	return hGame;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -