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

📄 baselian.c

📁 minigui编写的连连看! 请多指教!
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>#include <string.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/mywindows.h>#include <minigui/mgext.h>#include <minigui/filedlg.h>#include <minigui/newfiledlg.h>#include <minigui/control.h>#define W_WIDE 480#define W_HEIGTH 270#define SQUARE 30#define STATE_Y 9#define BUTTOM_X 80#define BUTTOM_Y 30#define BASENUM 12typedef struct _BASE{	int Value;	int Row;	int Line;	int Length;	int Width;	BITMAP Picture[27];}BASE;static BITMAP Bk_Ground;static BITMAP Bk_State;static BITMAP Bk_Score;static BITMAP Bk_Record;static BITMAP Bk_Stage;static BITMAP Bt_Clew;static BITMAP Bt_Ruffle;static BITMAP Bt_End;static BITMAP Bt_Restart;static BITMAP Bt_Time;static BITMAP Number[10];static BASE Base;static BASE Choose_A;static BASE Choose_B;static BASE Clew_A;static BASE Clew_B;static int Mode;static int Take;static int Pass;static int SCORE;static int RECORD;static int ClewNum=9;static int RuffleNum=9;static int Count;static int Flag[10][12];//static int V_Line[10][12];static RECT Rect={W_WIDE-BUTTOM_X,200,W_WIDE,230};static RECT RectClew={W_WIDE-BUTTOM_X,80,W_WIDE,110};static RECT RectScore={80,9,153,21};static RECT RectRcord={240,9,313,21};static RECT Area[10][12];static int Time;static void SetArea(){	int i=0;	int j=0; 	for( i=0; i<12; i++)	{		SetRect(&Area[0][i],SQUARE*i,0,SQUARE+SQUARE*i,SQUARE);	}	for( i=0; i<12; i++)	{		SetRect(&Area[1][i],SQUARE*i,SQUARE,SQUARE+SQUARE*i,SQUARE*2);	}	for( i=0; i<12; i++)	{		SetRect(&Area[2][i],SQUARE*i,SQUARE*2,SQUARE+SQUARE*i,SQUARE*3);	}	for( i=0; i<12; i++)	{		SetRect(&Area[3][i],SQUARE*i,SQUARE*3,SQUARE+SQUARE*i,SQUARE*4);		}	for( i=0; i<12; i++)	{		SetRect(&Area[4][i],SQUARE*i,SQUARE*4,SQUARE+SQUARE*i,SQUARE*5);	}	for( i=0; i<12; i++)	{		SetRect(&Area[5][i],SQUARE*i,SQUARE*5,SQUARE+SQUARE*i,SQUARE*6);	}	for( i=0; i<12; i++)	{		SetRect(&Area[6][i],SQUARE*i,SQUARE*6,SQUARE+SQUARE*i,SQUARE*7);	}	for( i=0; i<12; i++)	{		SetRect(&Area[7][i],SQUARE*i,SQUARE*7,SQUARE+SQUARE*i,SQUARE*8);	}	for( i=0; i<12; i++)	{		SetRect(&Area[8][i],SQUARE*i,SQUARE*8,SQUARE+SQUARE*i,SQUARE*9);	}	for( i=0; i<12; i++)	{		SetRect(&Area[9][i],SQUARE*i,SQUARE*9,SQUARE+SQUARE*i,SQUARE*10);	}}static void LoadPicture(){		LoadBitmap (HDC_SCREEN, &Bk_Ground,"./bk/bk_snow.png");	LoadBitmap (HDC_SCREEN, &Bk_State,"./bk/state.png");	LoadBitmap (HDC_SCREEN, &Bk_Score,"./bk/score.png");	LoadBitmap (HDC_SCREEN, &Bk_Record,"./bk/record.png");	LoadBitmap (HDC_SCREEN, &Bk_Stage,"./bk/stage.png");	LoadBitmap (HDC_SCREEN, &Number[0],"./number/0.png");	LoadBitmap (HDC_SCREEN, &Number[1],"./number/1.png");	LoadBitmap (HDC_SCREEN, &Number[2],"./number/2.png");	LoadBitmap (HDC_SCREEN, &Number[3],"./number/3.png");	LoadBitmap (HDC_SCREEN, &Number[4],"./number/4.png");	LoadBitmap (HDC_SCREEN, &Number[5],"./number/5.png");	LoadBitmap (HDC_SCREEN, &Number[6],"./number/6.png");	LoadBitmap (HDC_SCREEN, &Number[7],"./number/7.png");	LoadBitmap (HDC_SCREEN, &Number[8],"./number/8.png");	LoadBitmap (HDC_SCREEN, &Number[9],"./number/9.png");		LoadBitmap (HDC_SCREEN, &Bt_Clew,"./button/b2.png");	LoadBitmap (HDC_SCREEN, &Bt_Ruffle,"./button/b1.png");	LoadBitmap (HDC_SCREEN, &Bt_Restart,"./button/b4.png");	LoadBitmap (HDC_SCREEN, &Bt_End,"./button/b3.png");	LoadBitmap (HDC_SCREEN, &Bt_Time,"./button/time.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[0],"./xiaotu/1.png"); 	LoadBitmap (HDC_SCREEN, &Base.Picture[1],"./xiaotu/2.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[2],"./xiaotu/3.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[3],"./xiaotu/4.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[4],"./xiaotu/5.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[5],"./xiaotu/6.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[6],"./xiaotu/7.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[7],"./xiaotu/8.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[8],"./xiaotu/9.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[9],"./xiaotu/10.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[10],"./xiaotu/11.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[11],"./xiaotu/12.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[12],"./xiaotu/13.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[13],"./xiaotu/14.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[14],"./xiaotu/15.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[15],"./xiaotu/16.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[16],"./xiaotu/17.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[17],"./xiaotu/18.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[18],"./xiaotu/19.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[19],"./xiaotu/20.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[20],"./line/choose.png");		LoadBitmap (HDC_SCREEN, &Base.Picture[23],"./newline/b_r.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[24],"./newline/b_l.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[25],"./newline/t_r.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[26],"./newline/t_l.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[21],"./newline/h_line.png");	LoadBitmap (HDC_SCREEN, &Base.Picture[22],"./newline/v_line.png");}static int Readscore()/*读取记录*/{	FILE *fp;	char p[4];	fp=fopen("score.txt","r");		if(fp==NULL)			{				printf("Open file failed! /n");				return -1;		}		fgets(p,4,fp);		RECORD=atoi(p);		fclose(fp);         return 0;}static int Writescore()/*写入记录*/{	FILE *fp;	char p[4];	fp=fopen("score.txt","w+");		if(fp==NULL)			{				printf("Open file failed! /n");				return -1;		}		sprintf(p,"%d",RECORD);		fwrite(p,4,1,fp);		fclose(fp);         return 0;}static void InitLian(){	int i=0;	int j=0;	int count=0;	for( i=0; i<8; i++)	{		for( j=0; j<10; j++)		{			Flag[i+1][j+1]=count/4;//			V_Line[i+1][j+1]=0;			count++;		}	}	for( i=0; i<10 ; i++)	{		Flag[i][0]=-2;		Flag[i][11]=-2;//		V_Line[i+1][j+1]=0;	}	for( j=0; j<12; j++)	{		Flag[0][j]=-2;		Flag[9][j]=-2;//		V_Line[i+1][j+1]=0;	}	Base.Length=29;	Base.Width=29;	Choose_A.Length=29;	Choose_A.Width=29;	Choose_B.Length=29;	Choose_B.Width=29;	Mode=0;	Take=0;	Pass=1;	Count=80;	Time=99;//	SCORE=0;//	ClewNum=9;//	RuffleNum=9;}static int OneLine(int a_row, int b_row, int ab_line){	int minrow=(a_row < b_row) ? a_row : b_row;	int maxrow=(a_row > b_row) ? a_row : b_row;	minrow++;	while( Flag[ab_line][minrow]<0 && minrow<maxrow )	{		minrow++;	}	if( minrow == maxrow )	{		return 1;	}	else 	{		return 0;	}}static int OneRow(int a_line, int b_line, int ab_row){	int minline=(a_line < b_line) ? a_line : b_line;	int maxline=(a_line > b_line) ? a_line : b_line;	minline++;	while( Flag[minline][ab_row]<0 && minline<maxline)	{		minline++;	}	if( minline == maxline)	{		return 1;	}	else 	{		return 0;	}}/*static void RowPaint(int a_line, int b_line, int ab_row){	int minline=(a_line < b_line) ? a_line : b_line;	int maxline=(a_line > b_line) ? a_line : b_line;	minline++; 	while( minline< maxline)	{		V_Line[minline][ab_row]=1;		minline++;	}}static void LinePaint(int a_row, int b_row, int ab_line){	int minrow=(a_row < b_row) ? a_row : b_row;	int maxrow=(a_row > b_row) ? a_row : b_row;	minrow++;	while(  minrow<maxrow)	{		V_Line[ab_line][minrow]=2;		minrow++;	}}*/static int JudgeChoose(HWND hWnd){	int minline=0;	int minrow=0;	int maxline=0;	int maxrow=0;	int count=0;	if( Flag[Choose_A.Line][Choose_A.Row]  ==  Flag[Choose_B.Line][Choose_B.Row]  && Flag[Choose_A.Line][Choose_A.Row]>=0 )	{//同一直线		minline = ( Choose_A.Line < Choose_B.Line ) ? Choose_A.Line : Choose_B.Line;		minrow = ( Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row;		maxrow = ( Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row;		maxline =( Choose_A.Line > Choose_B.Line ) ? Choose_A.Line : Choose_B.Line;				if( Choose_A.Line == Choose_B.Line )		{			if(  OneLine(Choose_A.Row, Choose_B.Row, Choose_A.Line) == 1)			{//				LinePaint(Choose_A.Row, Choose_B.Row, Choose_A.Line);				while( minrow< maxrow)				{					InvalidateRect (hWnd,&Area[Choose_A.Line][++minrow],TRUE);				}				return 1;			}			}		if( Choose_A.Row == Choose_B.Row )		{			if( OneRow(Choose_A.Line, Choose_B.Line, Choose_A.Row) == 1 )			{//				RowPaint(Choose_A.Line, Choose_B.Line, Choose_A.Row);				while( minrow< maxrow )				{					InvalidateRect (hWnd,&Area[++minline][Choose_B.Row],TRUE);				}				return 1;			}			}	//经过一次转折		if( Choose_A.Line != Choose_B.Line && Choose_A.Row != Choose_B.Row)		{			minline = ( Choose_A.Line < Choose_B.Line ) ? Choose_A.Line : Choose_B.Line;			minrow = ( Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row;			maxrow = ( Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row;			maxline =( Choose_A.Line > Choose_B.Line ) ? Choose_A.Line : Choose_B.Line;			if(  OneLine(minrow, maxrow, minline)==1 && OneRow(minline, maxline, maxrow)==1 && Flag[minline][maxrow]<0 )			{//				LinePaint(minrow, maxrow, minline);//				RowPaint(minline, maxline, maxrow);//				V_Line[minline][maxrow]=4;				return 1;			}			if( OneLine(minrow, maxrow, maxline)==1 && OneRow(minline, maxline, maxrow)==1 && Flag[maxline][maxrow]<0 )			{//				LinePaint(minrow, maxrow, maxline);//				RowPaint(minline, maxline, maxrow);//				V_Line[maxline][maxrow]=6;				return 1;			}			if(  OneLine(minrow, maxrow, minline)==1 && OneRow(minline, maxline, minrow)==1 && Flag[minline][minrow]<0 )			{//				LinePaint(minrow, maxrow, minline);//				RowPaint(minline, maxline, minrow);//				V_Line[minline][minrow]=3;				return 1;			}			if( OneLine(minrow, maxrow, maxline)==1 && OneRow(minline, maxline, minrow)==1 && Flag[maxline][minrow]<0 )			{//				LinePaint(minrow, maxrow, maxline);//				RowPaint(minline, maxline, minrow);//				V_Line[maxline][minrow]=5;				return 1;			}		}//经过两次转折		//外部按行		{				minrow = ( Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row;			maxrow = ( Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row;			minline= (Choose_A.Line < Choose_B.Line) ? Choose_A.Line : Choose_B.Line;			maxline= (Choose_A.Line > Choose_B.Line) ? Choose_A.Line : Choose_B.Line;						while( minline>= 0 )			{				minline--;				if( Flag[minline][maxrow]>=0 || Flag[minline][minrow]>=0 )				{					break;				}				if( OneLine( (minrow), (maxrow) , minline) == 1 )				{					if( Choose_A.Line == Choose_B.Line)					{//						LinePaint((minrow), (maxrow) , minline);//						RowPaint(Choose_A.Line, minline, Choose_A.Row);//						RowPaint(Choose_B.Line, minline, Choose_B.Row);//						V_Line[minline][minrow]=3;//						V_Line[minline][maxrow]=4;						return 1;					}					else if( OneRow(Choose_A.Line, minline, Choose_A.Row)==1 && OneRow(minline, Choose_B.Line, Choose_B.Row)==1 && Flag[minline][Choose_A.Row]<0 )					{//						LinePaint((minrow), (maxrow) , minline);//						RowPaint(Choose_A.Line, minline, Choose_A.Row);//						RowPaint(Choose_B.Line, minline, Choose_B.Row);//						V_Line[minline][minrow]=3;//						V_Line[minline][maxrow]=4;						return 1;					}				}			}						while( maxline<= 9 )			{				maxline++;				if( Flag[maxline][maxrow]>=0 || Flag[maxline][minrow]>=0 )				{					break;				}				if( OneLine( (minrow), (maxrow) , maxline) == 1 )				{					if( Choose_A.Line == Choose_B.Line)					{//						LinePaint((minrow), (maxrow) , maxline);//						RowPaint(Choose_A.Line, maxline, Choose_A.Row);//						RowPaint(Choose_B.Line, maxline, Choose_B.Row);//						V_Line[maxline][minrow]=5;//						V_Line[maxline][maxrow]=6;						return 1;					}					else if( OneRow(Choose_A.Line, maxline , Choose_A.Row)==1 && Flag[maxline][Choose_A.Row]<0 && OneRow(maxline, Choose_B.Line, Choose_B.Row)==1 )					{//						LinePaint((minrow), (maxrow) , maxline);//						RowPaint(Choose_A.Line, maxline, Choose_A.Row);//						RowPaint(Choose_B.Line, maxline, Choose_B.Row);//						V_Line[maxline][minrow]=5;//						V_Line[maxline][maxrow]=6;						return 1;												}				}			}		}		//按列外部			{			minline= ( Choose_A.Line< Choose_B.Line) ? Choose_A.Line : Choose_B.Line;			maxline= ( Choose_A.Line> Choose_B.Line) ? Choose_A.Line : Choose_B.Line;			minrow= (Choose_A.Row < Choose_B.Row) ? Choose_A.Row : Choose_B.Row;			maxrow= (Choose_A.Row > Choose_B.Row) ? Choose_A.Row : Choose_B.Row;					while( minrow>= 0 )			{				minrow--;				if( Flag[minline][minrow]>=0 || Flag[maxline][minrow]>=0 )				{					break;				}				if( OneRow( (minline), (maxline) , minrow) == 1 )				{					if( Choose_A.Row == Choose_B.Row )					{//						RowPaint((minline), (maxline) , minrow);//						LinePaint(Choose_A.Row,minrow,  Choose_A.Line);//						LinePaint(Choose_B.Row,minrow,  Choose_B.Line);//						V_Line[minline][minrow]=3;//						V_Line[maxline][minrow]=5;						Flag[Choose_A.Line][Choose_A.Row]=-1;						Flag[Choose_B.Line][Choose_B.Row]=-1;						return 1;					}					else if( OneLine(Choose_A.Row, minrow, Choose_A.Line)==1 && Flag[Choose_B.Line][minrow]<0 && OneLine(minrow, Choose_B.Row, Choose_B.Line)==1)					{//						RowPaint((minline), (maxline) , minrow);//						LinePaint(Choose_A.Row,minrow,  Choose_A.Line);//						LinePaint(Choose_B.Row,minrow,  Choose_B.Line);//						V_Line[minline][minrow]=3;//						V_Line[maxline][minrow]=5;						return 1;					}				}			}			while( maxrow <= 11 )			{				maxrow++;				if( Flag[minline][maxrow]>=0 || Flag[maxline][maxrow]>=0 )				{					break;				}				if( OneRow( (minline), (maxline) , maxrow) == 1 )

⌨️ 快捷键说明

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