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

📄 game1.cpp

📁 用vc编写的俄罗斯方块游戏
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			SendDlgItemMessage(hdlg,IDRADIOBUTTON1,BM_SETCHECK,ispeed1[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON2,BM_SETCHECK,ispeed1[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON3,BM_SETCHECK,ispeed1[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON4,BM_SETCHECK,ispeed1[3],0);
			sballbuf = 1;
			break;
		case IDRADIOBUTTON5:
			for(i=0;i<4;i++){ispeed2[i]=0;}
			ispeed2[0] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON5,BM_SETCHECK,ispeed2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON6,BM_SETCHECK,ispeed2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON7,BM_SETCHECK,ispeed2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON8,BM_SETCHECK,ispeed2[3],0);
			slinebuf = 10;
			break;
		case IDRADIOBUTTON6:
			for(i=0;i<4;i++){ispeed2[i]=0;}
			ispeed2[1] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON5,BM_SETCHECK,ispeed2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON6,BM_SETCHECK,ispeed2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON7,BM_SETCHECK,ispeed2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON8,BM_SETCHECK,ispeed2[3],0);
			slinebuf = 20;
			break;
		case IDRADIOBUTTON7:
			for(i=0;i<4;i++){ispeed2[i]=0;}
			ispeed2[2] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON5,BM_SETCHECK,ispeed2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON6,BM_SETCHECK,ispeed2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON7,BM_SETCHECK,ispeed2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON8,BM_SETCHECK,ispeed2[3],0);
			slinebuf = 30;
			break;
		case IDRADIOBUTTON8:
			for(i=0;i<4;i++){ispeed2[i]=0;}
			ispeed2[3] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON5,BM_SETCHECK,ispeed2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON6,BM_SETCHECK,ispeed2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON7,BM_SETCHECK,ispeed2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON8,BM_SETCHECK,ispeed2[3],0);
			slinebuf = 5;
			break;
		case IDPUSHBUTTON1:
			sball = sballbuf; sline = slinebuf;
			EndDialog(hdlg,0);
			break;
		case IDPUSHBUTTON2:
			EndDialog(hdlg,0);
			break;
//-------------------------------------
		case IDRADIOBUTTON9:
			for(i=0;i<4;i++){isize1[i]=0;}
			isize1[0] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON9,BM_SETCHECK,isize1[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON10,BM_SETCHECK,isize1[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON11,BM_SETCHECK,isize1[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON12,BM_SETCHECK,isize1[3],0);
			Dbuf = 40;
			break;
		case IDRADIOBUTTON10:
			for(i=0;i<4;i++){isize1[i]=0;}
			isize1[1] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON9,BM_SETCHECK,isize1[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON10,BM_SETCHECK,isize1[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON11,BM_SETCHECK,isize1[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON12,BM_SETCHECK,isize1[3],0);
			Dbuf = 60;
			break;
		case IDRADIOBUTTON11:
			for(i=0;i<4;i++){isize1[i]=0;}
			isize1[2] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON9,BM_SETCHECK,isize1[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON10,BM_SETCHECK,isize1[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON11,BM_SETCHECK,isize1[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON12,BM_SETCHECK,isize1[3],0);
			Dbuf = 80;
			break;
		case IDRADIOBUTTON12:
			for(i=0;i<4;i++){isize1[i]=0;}
			isize1[3] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON9,BM_SETCHECK,isize1[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON10,BM_SETCHECK,isize1[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON11,BM_SETCHECK,isize1[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON12,BM_SETCHECK,isize1[3],0);
			Dbuf = 20;
			break;
		case IDRADIOBUTTON13:
			for(i=0;i<4;i++){isize2[i]=0;}
			isize2[0] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON13,BM_SETCHECK,isize2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON14,BM_SETCHECK,isize2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON15,BM_SETCHECK,isize2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON16,BM_SETCHECK,isize2[3],0);
			Lbuf = 80;
			break;
		case IDRADIOBUTTON14:
			for(i=0;i<4;i++){isize2[i]=0;}
			isize2[1] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON13,BM_SETCHECK,isize2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON14,BM_SETCHECK,isize2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON15,BM_SETCHECK,isize2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON16,BM_SETCHECK,isize2[3],0);
			Lbuf = 100;
			break;
		case IDRADIOBUTTON15:
			for(i=0;i<4;i++){isize2[i]=0;}
			isize2[2] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON13,BM_SETCHECK,isize2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON14,BM_SETCHECK,isize2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON15,BM_SETCHECK,isize2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON16,BM_SETCHECK,isize2[3],0);
			Lbuf = 120;
			break;
		case IDRADIOBUTTON16:
			for(i=0;i<4;i++){isize2[i]=0;}
			isize2[3] = 1;
			SendDlgItemMessage(hdlg,IDRADIOBUTTON13,BM_SETCHECK,isize2[0],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON14,BM_SETCHECK,isize2[1],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON15,BM_SETCHECK,isize2[2],0);
			SendDlgItemMessage(hdlg,IDRADIOBUTTON16,BM_SETCHECK,isize2[3],0);
			Lbuf = 40;
			break;
		case IDPUSHBUTTON3:
			D = Dbuf; L = Lbuf;
			EndDialog(hdlg,0);
			break;
		case IDPUSHBUTTON4:
			EndDialog(hdlg,0);
			break;
//-------------------------------------
		case IDPUSHBUTTON5:
			crRGB[0] = crRGBbuf[0];
			crRGB[1] = crRGBbuf[1];
			crRGB[2] = crRGBbuf[2];
			EndDialog(hdlg,0);
			break;
		case IDPUSHBUTTON6:
			EndDialog(hdlg,0);
			break;
//-------------------------------------
		case IDS_LISTBOX1:
			if(HIWORD(wParam) == LBN_DBLCLK)
			{
				r = 0;
				nIndex = SendDlgItemMessage(hdlg,IDS_LISTBOX1,LB_GETCURSEL,0,0L);
				SendDlgItemMessage(hdlg,IDS_LISTBOX1,LB_GETTEXT,nIndex,(LPARAM)szTemps);
				if(strstr(szTemps,"[-")!=NULL)
				{
					getpath(szTemps);
					strcpy(szDirs,szTemps);
					strcat(szDirs,":");
					strcpy(szPaths,szDirs);
					strcat(szPaths,"\\*.*");
				}
				else if(strstr(szTemps,"..")!=NULL)
				{
					getdir(szDirs);
					strcpy(szPaths,szDirs);
					strcat(szPaths,"\\*.*");
				}
				else if(strchr(szTemps,'[')!=NULL)
				{
					getpath(szTemps);
					strcat(szDirs,"\\");
					strcat(szDirs,szTemps);
					strcpy(szPaths,szDirs);
					strcat(szPaths,"\\*.*");
				}
				else
					r = 1;
				if(r == 0)
				{
					SendDlgItemMessage(hdlg,IDS_LISTBOX1,LB_RESETCONTENT,0,0L);
					SendDlgItemMessage(hdlg,IDS_LISTBOX1,LB_DIR,0x4010,(LPARAM)szPaths);
					strcpy(szDir1s,szDirs);
					strcat(szDir1s,"\\");
					SetDlgItemText(hdlg,IDS_EDITTEXT1,szDir1s);
					SetDlgItemText(hdlg,IDS_EDITTEXT2,"");
				}
				else
				{
					SetDlgItemText(hdlg,IDS_EDITTEXT2,szTemps);
				}
			}
			break;
		case IDPUSHBUTTON7:
			dwNameSize = SendDlgItemMessage(hdlg,IDS_EDITTEXT2,WM_GETTEXTLENGTH,0,0L);
			if(dwNameSize != 0)
			{
				SendDlgItemMessage(hdlg,IDS_EDITTEXT2,WM_GETTEXT,dwNameSize+1,(LPARAM)lpszFileName);
				strcpy(szDir2s,szDir1s);
				strcat(szDir2s,lpszFileName);
				strcpy(lpszFileName,szDir2s);
				DataToFile(hWnd,lpszFileName);
				EndDialog(hdlg,0);
			}
			else
			{
				MessageBox(hWnd,"必须输入或选择文件名",NULL,MB_OK|MB_ICONEXCLAMATION);
			}
			break;
		case IDPUSHBUTTON8:
			EndDialog(hdlg,0);
			break;
//-------------------------------------
		case IDS_LISTBOX2:
			if(HIWORD(wParam) == LBN_DBLCLK)
			{
				r = 0;
				nIndex = SendDlgItemMessage(hdlg,IDS_LISTBOX2,LB_GETCURSEL,0,0L);
				SendDlgItemMessage(hdlg,IDS_LISTBOX2,LB_GETTEXT,nIndex,(LPARAM)szTempl);
				if(strstr(szTempl,"[-")!=NULL)
				{
					getpath(szTempl);
					strcpy(szDirl,szTempl);
					strcat(szDirl,":");
					strcpy(szPathl,szDirl);
					strcat(szPathl,"\\*.*");
				}
				else if(strstr(szTempl,"..")!=NULL)
				{
					getdir(szDirl);
					strcpy(szPathl,szDirl);
					strcat(szPathl,"\\*.*");
				}
				else if(strchr(szTempl,'[')!=NULL)
				{
					getpath(szTempl);
					strcat(szDirl,"\\");
					strcat(szDirl,szTempl);
					strcpy(szPathl,szDirl);
					strcat(szPathl,"\\*.*");
				}
				else
					r = 1;
				if(r == 0)
				{
					SendDlgItemMessage(hdlg,IDS_LISTBOX2,LB_RESETCONTENT,0,0L);
					SendDlgItemMessage(hdlg,IDS_LISTBOX2,LB_DIR,0x4010,(LPARAM)szPathl);
					strcpy(szDir1l,szDirl);
					strcat(szDir1l,"\\");
					SetDlgItemText(hdlg,IDS_EDITTEXT3,szDir1l);
					SetDlgItemText(hdlg,IDS_EDITTEXT4,"");
				}
				else
				{
					SetDlgItemText(hdlg,IDS_EDITTEXT4,szTempl);
				}
			}
			break;
		case IDPUSHBUTTON9:
			dwNameSize = SendDlgItemMessage(hdlg,IDS_EDITTEXT4,WM_GETTEXTLENGTH,0,0L);
			if(dwNameSize != 0)
			{
				SendDlgItemMessage(hdlg,IDS_EDITTEXT4,WM_GETTEXT,dwNameSize+1,(LPARAM)lpszFileName);
				strcpy(szDir2l,szDir1l);
				strcat(szDir2l,lpszFileName);
				strcpy(lpszFileName,szDir2l);
				FileToData(hWnd,lpszFileName);
				EndDialog(hdlg,0);
			}
			else
			{
				MessageBox(hWnd,"必须选择文件名",NULL,MB_OK|MB_ICONEXCLAMATION);
			}
			break;
		case IDPUSHBUTTON10:
			EndDialog(hdlg,0);
			break;
		default:
			break;
		}
		break;
//-----------------------------------------------
//-----------------------------------------------
	case WM_HSCROLL:
		i = 0;
		while(hwScroll[i]!=(HWND)lParam)
			i++;
		switch(LOWORD(wParam))
		{
		case SB_LINEDOWN:
			CurrentVal[i]++;
			if(CurrentVal[i]>255)
				CurrentVal[i] = 255;
			break;
		case SB_LINEUP:
			CurrentVal[i]--;
			if(CurrentVal[i]<0)
				CurrentVal[i] = 0;
			break;
		case SB_PAGEDOWN:
			CurrentVal[i]+=(255-CurrentVal[i])/2;
			break;
		case SB_PAGEUP:
			CurrentVal[i]-=CurrentVal[i]/2;
			break;
		case SB_THUMBTRACK:
			CurrentVal[i] = HIWORD(wParam);
			break;
		case SB_TOP:
			CurrentVal[i] = 0;
			break;
		case SB_BOTTOM:
			CurrentVal[i] = 255;
			break;
		}
		SetScrollPos(hwScroll[i],SB_CTL,crRGBbuf[i],TRUE);
		SetDlgItemText(hdlg,IDC_VALRED+i,itoa(CurrentVal[i],szString,10));
		crRGBbuf[i] = CurrentVal[i];
		break;
	case WM_CLOSE:
		EndDialog(hdlg,0);
		return 1;
	}
	return 0;
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//
//    创建窗口
//
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
	hInst = hInstance;
	hMenu = LoadMenu(hInstance,"Menu");
	hWnd = CreateWindow("WinFill",
		                "测试用小游戏",
						WS_OVERLAPPEDWINDOW,
						CW_USEDEFAULT,
						0,
						650,
						530,
						NULL,
						hMenu,
						hInstance,
						NULL);
	if(!hWnd)
		return FALSE;

	hWndMain = hWnd;
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	return TRUE;
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//
//    声明窗口类
//
BOOL InitWindowsClass(HINSTANCE hInstance)
{
	WNDCLASS WndClass;
	WndClass.cbClsExtra = 0;
	WndClass.cbWndExtra = 0;
	WndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));//RGB(0,0,255)
	WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
	WndClass.hIcon = LoadIcon(NULL,"END");
	WndClass.hInstance = hInstance;
	WndClass.lpfnWndProc = WndProc;
	WndClass.lpszClassName = "WinFill";
	WndClass.lpszMenuName = NULL;
	WndClass.style = CS_HREDRAW|CS_VREDRAW;
	return RegisterClass(&WndClass);
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//
//    实现去掉列表框文本中的“[”,“]”,“-”字符。
//
BOOL getpath(char szTemp[200])
{
	char *pch;
	while(1)
	{
		if((pch = strchr(szTemp,'['))!=NULL)
		{
			for(unsigned int i = pch-szTemp;i<strlen(szTemp);i++)
			{
				szTemp[i] = szTemp[i+1];
			}
		}
		else if((pch = strchr(szTemp,']'))!=NULL)
		{
			for(unsigned int i = pch-szTemp;i<strlen(szTemp);i++)
			{
				szTemp[i] = szTemp[i+1];
			}
		}
		else if((pch = strchr(szTemp,'-'))!=NULL)
		{
			for(unsigned int i = pch-szTemp;i<strlen(szTemp);i++)
			{
				szTemp[i] = szTemp[i+1];
			}
		}
		else
		{
			break;
		}
	}
	return 1;
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//
//    实现得到上一级的目录。
//
BOOL getdir(char szDir[200])
{
	for(int i = strlen(szDir)-1;i>=0;i--)
	{
		if(szDir[i] == 92)
		{
			szDir[i] = '\0';
			break;
		}
	}
	return 1;
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//
//    保存文件。
//
BOOL DataToFile(HWND hWnd,LPCTSTR lpszFileName)
{
	DWORD dwByteWrite;int *lpBufPtr;DWORD dwFileSize = 68;
	hFile = CreateFile(lpszFileName,
		GENERIC_READ|GENERIC_WRITE,
		0,
		NULL,
		OPEN_ALWAYS,
		FILE_ATTRIBUTE_NORMAL,
		(HANDLE)NULL);
	if(hFile != INVALID_HANDLE_VALUE)
	{
		lpBufPtr = (int *)malloc(dwFileSize);
		if(lpBufPtr != NULL)
		{
			*lpBufPtr = x;*(lpBufPtr+1) = y;*(lpBufPtr+2) = fx;*(lpBufPtr+3) = fy;
			*(lpBufPtr+4) = D;*(lpBufPtr+5) = L;*(lpBufPtr+6) = sball;*(lpBufPtr+7) = sline;
			*(lpBufPtr+8) = x1;*(lpBufPtr+9) = crRGB[0];*(lpBufPtr+10) = crRGB[1];*(lpBufPtr+11) = crRGB[2];
			*(lpBufPtr+12) = life;*(lpBufPtr+13) = p;*(lpBufPtr+14) = eg;*(lpBufPtr+15) = ready;
			*(lpBufPtr+16) = gameover;
			WriteFile(hFile,(LPVOID)lpBufPtr,dwFileSize,&dwByteWrite,NULL);
			free(lpBufPtr);
		}
		else
		{
			MessageBox(hWnd,"内存分配失败",NULL,MB_OK|MB_ICONEXCLAMATION);
			return 0;
		}
	}
	else
	{
		MessageBox(hWnd,"打开文件失败",NULL,MB_OK|MB_ICONEXCLAMATION);
		return 0;
	}
	CloseHandle(hFile);
	return 1;
}

//-------------------------------------------------------------------
//-------------------------------------------------------------------
//
//    读取文件。
//
BOOL FileToData(HWND hWnd,LPSTR lpszFileName)
{
	DWORD dwByteRead;DWORD dwFileSize = 68;int *lpBufPtr;
	hFile = CreateFile(lpszFileName,
		GENERIC_READ,
		FILE_SHARE_READ,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,
		(HANDLE)NULL);
	if(hFile != INVALID_HANDLE_VALUE)
	{
		lpBufPtr = (int *)malloc(dwFileSize);
		if(lpBufPtr != NULL)
		{
			ReadFile(hFile,(LPVOID)lpBufPtr,dwFileSize,&dwByteRead,NULL);
			x = *lpBufPtr;y = *(lpBufPtr+1);fx = *(lpBufPtr+2);fy = *(lpBufPtr+3);
			D = *(lpBufPtr+4);L = *(lpBufPtr+5);sball = *(lpBufPtr+6);sline = *(lpBufPtr+7);
			x1 = *(lpBufPtr+8);crRGB[0] = *(lpBufPtr+9);crRGB[1] = *(lpBufPtr+10);crRGB[2] = *(lpBufPtr+11);
			life = *(lpBufPtr+12);p = *(lpBufPtr+13);eg = *(lpBufPtr+14);ready = *(lpBufPtr+15);
			gameover = *(lpBufPtr+16);
			free(lpBufPtr);
			EnableMenuItem(hMenu,IDM_SIZE,MF_BYCOMMAND|MF_GRAYED);
			EnableMenuItem(hMenu,IDM_TWO,MF_BYCOMMAND|MF_GRAYED);
			EnableMenuItem(hMenu,IDM_THREE,MF_BYCOMMAND|MF_GRAYED);
			EnableMenuItem(hMenu,IDM_FOUR,MF_BYCOMMAND|MF_GRAYED);
			EnableMenuItem(hMenu,IDM_SPEED,MF_BYCOMMAND|MF_GRAYED);
			EnableMenuItem(hMenu,IDM_COLOR,MF_BYCOMMAND|MF_GRAYED);
			EnableMenuItem(hMenu,IDM_EG,MF_BYCOMMAND|MF_GRAYED);
			InvalidateRect(hWnd,NULL,1);
		}
		else
		{
			MessageBox(hWnd,"内存分配失败",NULL,MB_OK|MB_ICONEXCLAMATION);
			return 0;
		}
	}
	else
	{
		MessageBox(hWnd,"打开文件失败",NULL,MB_OK|MB_ICONEXCLAMATION);
		return 0;
	}
	CloseHandle(hFile);
	return 1;
}

⌨️ 快捷键说明

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