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

📄 llk.h

📁 益智类小游戏
💻 H
字号:

/*#if !defined(AFX_SUPERLLK_H__45C8C476_AD9C_462C_A8B5_AC0401A22446__INCLUDED_)
#define AFX_SUPERLLK_H__45C8C476_AD9C_462C_A8B5_AC0401A22446__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "resource.h"


#endif // !defined(AFX_SUPERLLK_H__45C8C476_AD9C_462C_A8B5_AC0401A22446__INCLUDED_)

*/
///////////////////////////////////////////////////////////////////////////

#define MAX_LOADSTRING 100

// Global Variables:///////////////////////////////////////////////////////
HINSTANCE hInst;								// current instance
TCHAR szTitle[MAX_LOADSTRING];								// The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];								// The title bar text
HWND win_hWnd;                                      //for hwnd
HDC win_hdc;
//////////////////////////////////////////////////////////////////////////////////////////////////////


#include <windowsx.h>
#include <windows.h>
#include <mmsystem.h>  // very important and include WINMM.LIB too!
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h> 
using namespace std;

// Forward 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);



#define WIDTH 12+2
#define HEIGHT 7+2
#define CIRCLE 341
#define PicWidth 31
#define PicHeight 34

int Game_Main();
int Game_Restart();
int Game_Pause();
int OnPaint();
int MATRIX[WIDTH][HEIGHT]={0};

int random();
int RandMat();
int InitMat();
bool IfConnect(int X1,int Y1,int X2,int Y2);

OnPaint(int ElemX,int ElemY,int Pic);



bool INIT=false;
bool First=true;

int x1,x2,y1,y2;

const int INIT_X=100,INIT_Y=100;



int MouseToMat(int& x,int& y)
{

	    x=(x-INIT_X)/PicWidth+1;
	    y=(y-INIT_Y)/PicHeight+1;
return 0;
}






int OnPaint()
{
	InvalidateRect(win_hWnd,NULL,false);
	PAINTSTRUCT ps;
	HDC hdc;
	int	cx=0, cy=0;
	int x=0,y=0;               //used to set coordinate of pics
	LPARAM lParam;
	int i,j;                       //used to paint the matrix in circle
	HDC hCompatibleDC;
	static HBITMAP map;
	static BITMAP bitmap;
	cx	= LOWORD (lParam) ;
	cy	= HIWORD (lParam) ;
	hdc = BeginPaint(win_hWnd, &ps);
    hCompatibleDC=::CreateCompatibleDC(hdc);
	for (i=1;i<HEIGHT-1;i++) 
	{
		for(j=1;j<WIDTH-1;j++)
		{
			map=::LoadBitmap(hInst,MAKEINTRESOURCE(MATRIX[j][i]+132));
			GetObject (map, sizeof (BITMAP), &bitmap) ;
			::SelectObject(hCompatibleDC,map);
		    ::BitBlt(hdc,INIT_X+x,INIT_Y+y,cx,cy,hCompatibleDC,0,0,SRCCOPY);
			x=x+PicWidth;
		}
		x=0;
		y=y+PicHeight;
		
	}
			
	::DeleteDC(hCompatibleDC);
	EndPaint (win_hWnd, &ps) ; 
	return(0);
}

OnPaint(int x,int y,int pic)
{
	InvalidateRect(win_hWnd,NULL,false);
	PAINTSTRUCT ps;
	HDC hdc;
	int	cx=0, cy=0;


	LPARAM lParam;
	HDC hCompatibleDC;
	static HBITMAP map;
	static BITMAP bitmap;
	cx	= LOWORD (lParam) ;
	cy	= HIWORD (lParam) ;
	hdc = BeginPaint(win_hWnd, &ps);
    hCompatibleDC=::CreateCompatibleDC(hdc);

	
	
	map=::LoadBitmap(hInst,MAKEINTRESOURCE(pic));
	GetObject (map, sizeof (BITMAP), &bitmap) ;
	::SelectObject(hCompatibleDC,map);
	::BitBlt(hdc,INIT_X+x*PicWidth,INIT_X+y*PicHeight,cx,cy,hCompatibleDC,0,0,SRCCOPY);

	::DeleteDC(hCompatibleDC);
	EndPaint (win_hWnd, &ps) ; 
	return(0);
}
//////////////////////////////////////////////////////////////////////////////

int InitMat()
{

			int i,j,n=1;					
            for (j=1;j<HEIGHT-1;j++)
			{
				for (i=1;i<WIDTH-1;i++)
				{
					
						MATRIX[i][j]=n;
						n=n+1;
						if(n==22)
						{
							n=1;
						}
					
				}
			}
			

			RandMat();
			
return 0;	
}				



////////////////////////////////////////////////////////////////////////////////


int random(int number) 
    { 
	return (int)(number/(float)RAND_MAX * rand()); 
    } 

int RandMat()
{
	int i;
	int tmp;
	int x1,x2,y1,y2;
	
	for(i=1;i<CIRCLE;i++)
	{
		x1=random(WIDTH-2)+1;
		x2=random(WIDTH-2)+1;
		y1=random(HEIGHT-2)+1;
		y2=random(HEIGHT-2)+1;
		
		if(MATRIX[x1][y1]!=0 && MATRIX[x2][y2]!=0)
		{
		tmp=MATRIX[x1][y1];
		MATRIX[x1][y1]=MATRIX[x2][y2];
		MATRIX[x2][y2]=tmp;
		}
	}
	
return 0;
}







////////////////////////////////////////////////////////////////////////////////


bool IfConnect(int X1,int Y1,int X2,int Y2)
{
	int XMark[WIDTH]={0},YMark[HEIGHT]={0};

	int i,j;
	
	if(MATRIX[X1][Y1]!=MATRIX[X2][Y2])
	{
		return false;
	}
	
	if(X1==X2 && Y1==Y2)
	{
		return false;
	}

	if(0==MATRIX[X1][Y1])
	{
		return false;
	}

//-------------------------------------------------------------------------------------
		XMark[X1]++;
		XMark[X2]++;

		for(i=0;i<WIDTH;i++)
		{		
			if(0==MATRIX[i][Y1])
			{
				XMark[i]++;
			}

			if(0==MATRIX[i][Y2])
			{
				XMark[i]++;
			}

		}
		
		YMark[Y1]++;
		YMark[Y2]++;

		for(j=0;j<HEIGHT;j++)
		{		
			if(0==MATRIX[X1][j])
			{
				YMark[j]++;
			}

			if(0==MATRIX[X2][j])
			{
				YMark[j]++;
			}
		}

//------------------------------------------------------------------------------------
	int judge;
	int state;
	int n;
		
	if(X1==X2) judge=1;
	
	else if(Y1==Y2) judge=2;
	
	else judge=3;
		
	switch(judge)
	{
		case 1:
			
			n=0;

			for(j=(Y1<Y2 ? Y1 : Y2)+1;j<(Y1>Y2 ? Y1 : Y2);j++)
			{
				if(MATRIX[X1][j]!=0) break;
				n++;
			}
			
			if(n==(Y1>Y2 ? Y1 : Y2)-(Y1<Y2 ? Y1 : Y2)-1) {MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;return true;}
			
			else for(i=0;i<WIDTH;i++)
			{
				if(XMark[i]==2)
				{
					state=0;

					n=0;
					
					for(j=(X1<i ? X1 : i)+1;j<(X1>i ? X1 : i);j++)
					{
						if(MATRIX[j][Y1]!=0)	break;
						n++;
					}
					
					if(n==(X1>i ? X1 : i)-(X1<i ? X1 : i)-1)
						state++;
				
					n=0;
					for(j=(X2<i ? X2 : i)+1;j<(X2>i ? X2 :i);j++)
					{
						if(MATRIX[j][Y2]!=0) break;
						n++;
					}
					if(n==(X2>i ? X2 :i)-(X2<i ? X2 : i)-1)
						state++;

					n=0;


					for(j=(Y1<Y2 ? Y1 : Y2)+1;j<(Y1>Y2 ? Y1 : Y2);j++)
					{
						if(MATRIX[i][j]!=0) break;
						n++;
					}
					if(n==(Y1>Y2 ? Y1 : Y2)-(Y1<Y2 ? Y1 : Y2)-1)
						state++;
				}
				
				if(state==3) {MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;return true;}
			}
			break;

		case 2:
			
			n=0;

			for(i=(X1<X2 ? X1 : X2)+1;i<(X1>X2 ? X1 : X2);i++)
			{
				if(MATRIX[i][Y1]!=0) break;
				n++;
			}
			
			if(n==(X1>X2 ? X1 : X2)-(X1<X2 ? X1 : X2)-1) {MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;return true;}
			else  	for(j=0;j<HEIGHT;j++)
			{
				if(YMark[j]==2)
					{	
						state=0;
						
						n=0;
						for(i=(Y1<j ? Y1 : j)+1;i<(Y1>j ? Y1 :j);i++)
						{
							if(MATRIX[X1][i]!=0)	break;
							n++;
						}
						if(n==(Y1>j ? Y1 :j)-(Y1<j ? Y1 : j)-1)
							state++;
				
						n=0;
						for(i=(Y2<j ? Y2 : j)+1;i<(Y2>j ? Y2 :j);i++)
						{	
							if(MATRIX[X2][i]!=0) break;
							n++;
						}
						if(n==(Y2>j ? Y2 :j)-(Y2<j ? Y2 : j)-1)
							state++;
						

						n=0;
						for(i=(X1<X2 ? X1 : X2)+1;i<(X1>X2 ? X1 : X2);i++)
						{
							if(MATRIX[i][j]!=0) break;
							n++;
						}
						if(n==(X1>X2 ? X1 : X2)-(X1<X2 ? X1 : X2)-1)
							state++;
					}
			
				if(state==3) {MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;return true;}
			
			}
			break;
		case 3:
			

			for(i=0;i<WIDTH;i++)
			{
				if(XMark[i]==2)
				{
					state=0;

					n=0;
					
					for(j=(X1<i ? X1 : i)+1;j<(X1>i ? X1 : i);j++)
					{
						if(MATRIX[j][Y1]!=0)	break;
						n++;
					}
					
					if(n==(X1>i ? X1 : i)-(X1<i ? X1 : i)-1)
						state++;
				
					n=0;
					for(j=(X2<i ? X2 : i)+1;j<(X2>i ? X2 :i);j++)
					{
						if(MATRIX[j][Y2]!=0) break;
						n++;
					}
					if(n==(X2>i ? X2 :i)-(X2<i ? X2 : i)-1)
						state++;

					n=0;
				
			for(j=0;j<WIDTH;j++)
			{
				if(YMark[j]==2)
				{
					if((MATRIX[i][Y1]==MATRIX[X2][j] || MATRIX[i][Y2]==MATRIX[X1][j])
					&& state==2)
					MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;
				}

			}
					
				
				for(j=(Y1<Y2 ? Y1 : Y2)+1;j<(Y1>Y2 ? Y1 : Y2);j++)
					{
						if(MATRIX[i][j]!=0) break;
						n++;
					}
					if(n==(Y1>Y2 ? Y1 : Y2)-(Y1<Y2 ? Y1 : Y2)-1)
						state++;
				}
				
				if(state==3) MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;return true;
			}
			
			
		
			

			for(j=0;j<HEIGHT;j++)
			{
				if(YMark[j]==2)
					{	
						state=0;
						
						n=0;
						for(i=(Y1<j ? Y1 : j)+1;i<(Y1>j ? Y1 :j);i++)
						{
							if(MATRIX[X1][i]!=0)	break;
							n++;
						}
						if(n==(Y1>j ? Y1 :j)-(Y1<j ? Y1 : j)-1)	state++;
				
						n=0;
						for(i=(Y2<j ? Y2 : j)+1;i<(Y2>j ? Y2 :j);i++)
						{	
							if(MATRIX[X2][i]!=0) break;
							n++;
						}
						if(n==(Y2>j ? Y2 :j)-(Y2<j ? Y2 : j)-1)	state++;
						
						for(i=0;i<HEIGHT;i++)
						{
							if(XMark[i]==2)
							{
								if((MATRIX[i][Y1]==MATRIX[X2][j] || MATRIX[i][Y2]==MATRIX[X1][j])
								&& state==2)
								MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;
								return true;
							}
						}

						n=0;
						for(i=(X1<X2 ? X1 : X2)+1;i<(X1>X2 ? X1 : X2);i++)
						{
							if(MATRIX[i][j]!=0) break;
							n++;
						}
						if(n==(X1>X2 ? X1 : X2)-(X1<X2 ? X1 : X2)-1)
							state++;
					}
			
				if(state==3) {MATRIX[X1][Y1]=MATRIX[X2][Y2]=0;return true;}
			
			}
		break;

		default: break;
	}

return false;
}

⌨️ 快捷键说明

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