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

📄 color.c

📁 minigui编写五子球游戏! 请多指教!
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>
#include <string.h>
#include <time.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>
#define ID_TIME 100
#define IDM_RESTART 104
#define IDM_EXIT 105
typedef struct _BASE
{
	int Kind;
	int PostX;//左上 
	int PostY;
	int flag;
}BASE;

static BITMAP Back_gameover;
static BITMAP Back_restart;
static BITMAP Back_refresh;
static BITMAP Back_ground;
static BITMAP Back_score;
static BITMAP Back_highest;


static BITMAP MyPic[6];
static BITMAP MyPic2[6];

static BITMAP SPic[10];
static BASE Base[9][9];
static int path[50][2];
static int score=0;
static int start=1;
static int m=0,n=0;

static int fiandway=0;
static int count=0;
static int highest=0;
static RECT rect[81];
static LoadPicture()//装载位图
{
	LoadBitmap (HDC_SCREEN, &Back_ground,"./pic/bk.png");
	LoadBitmap (HDC_SCREEN, &Back_gameover,"./pic/gameover.png");
	//LoadBitmap (HDC_SCREEN, &Back_refresh,"./pic/fresh.png");
	LoadBitmap (HDC_SCREEN, &Back_restart,"./pic/restart.png");
	LoadBitmap (HDC_SCREEN, &Back_score,"./pic/score.png");
	LoadBitmap (HDC_SCREEN, &Back_highest,"./pic/highest.png");
	
	LoadBitmap (HDC_SCREEN, &MyPic[0],"./pic/black.png");
	LoadBitmap (HDC_SCREEN, &MyPic[1],"./pic/coffee.png");
	LoadBitmap (HDC_SCREEN, &MyPic[2],"./pic/green.png");
	LoadBitmap (HDC_SCREEN, &MyPic[3],"./pic/purple.png");
	LoadBitmap (HDC_SCREEN, &MyPic[4],"./pic/red.png");
	LoadBitmap (HDC_SCREEN, &MyPic[5],"./pic/yellow.png");

	LoadBitmap (HDC_SCREEN, &MyPic2[0],"./pic/black1.png");
	LoadBitmap (HDC_SCREEN, &MyPic2[1],"./pic/coffee1.png");
	LoadBitmap (HDC_SCREEN, &MyPic2[2],"./pic/green1.png");
	LoadBitmap (HDC_SCREEN, &MyPic2[3],"./pic/purple1.png");
	LoadBitmap (HDC_SCREEN, &MyPic2[4],"./pic/red1.png");
	LoadBitmap (HDC_SCREEN, &MyPic2[5],"./pic/yellow1.png");

	LoadBitmap (HDC_SCREEN, &SPic[0],"./pic/s0.png");
	LoadBitmap (HDC_SCREEN, &SPic[1],"./pic/s1.png");
	LoadBitmap (HDC_SCREEN, &SPic[2],"./pic/s2.png");
	LoadBitmap (HDC_SCREEN, &SPic[3],"./pic/s3.png");
	LoadBitmap (HDC_SCREEN, &SPic[4],"./pic/s4.png");
	LoadBitmap (HDC_SCREEN, &SPic[5],"./pic/s5.png");
	LoadBitmap (HDC_SCREEN, &SPic[6],"./pic/s6.png");	
	LoadBitmap (HDC_SCREEN, &SPic[7],"./pic/s7.png");
	LoadBitmap (HDC_SCREEN, &SPic[8],"./pic/s8.png");
	LoadBitmap (HDC_SCREEN, &SPic[9],"./pic/s9.png");

	srand( (unsigned)time( NULL ) );
	
}

			
static int Addball()//随即添3个求
{
	int i,k,l;
	for(i=0;i<3;)
	{
			k=rand()%9;
			l=rand()%9;
			if(Base[k][l].Kind==0)
				{
					Base[k][l].Kind=1+rand()%6;		
					i++;
				}
		}
	return 0;
		
}
static int InitBase()//初始化9*9图片
{
	int Init_i,Init_k;
	for(Init_i=0;Init_i<9;Init_i++)
		{

			for(Init_k=0;Init_k<9;Init_k++)
			{
				Base[Init_i][Init_k].PostX=5+Init_k*35;
				Base[Init_i][Init_k].PostY=5+Init_i*35;
				Base[Init_i][Init_k].Kind=0;
				
			}
		}
	return 0;
		
}

static void  initRect()//初始化数组 邋邋RECT
{

	int Init_t;
	for(Init_t=0;Init_t<81;Init_t++)

	{

		SetRect( &rect[Init_t],Init_t%9*35+5,Init_t/9*35+5,Init_t%9*35+35+5,Init_t/9*35+35+5);
		
	}
	printf("init RECT OK!\n");
}
static int Killball()//消球
	{	
		int flag1=0;
		 int h_num=0,p_num=0,rincline_num=0,lincline_num=0;
		 int k_i=0,k_j=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;
		static int count0;
			for( k_i=0 ;k_i<9 ;k_i++)//heng
						{
				for( k_j=0 ;k_j<9 ;k_j++)
					{
						if(Base[k_i][k_j].Kind!=0)
						{
									if(Base[k_i][k_j].Kind==Base[k_i][k_j+1].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+2].Kind && Base[k_i][k_j].Kind==Base[k_i][k_j+3].Kind &&Base[k_i][k_j].Kind==Base[k_i][k_j+4].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+5].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+6].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+7].Kind &&Base[k_i][k_j].Kind==Base[k_i][k_j+8].Kind)
									{
										h_num=9;
										i=k_i;
										j=k_j;
										break;
										break;
									}
									else if(Base[k_i][k_j].Kind==Base[k_i][k_j+1].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+2].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+3].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+4].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+5].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+6].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+7].Kind)
										{
											h_num=8;
											i=k_i;
											j=k_j;
											break;
											break;				
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i][k_j+1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i][k_j+2].Kind )&&Base[k_i][k_j].Kind==Base[k_i][k_j+3].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+4].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+5].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+6].Kind)
										{
											h_num=7;
											i=k_i;
											j=k_j;
											break;
											break;	
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i][k_j+1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i][k_j+2].Kind )&&Base[k_i][k_j].Kind==Base[k_i][k_j+3].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+4].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+5].Kind)
										{
											h_num=6;
											i=k_i;
											j=k_j;
											break;
											break;	
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i][k_j+1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i][k_j+2].Kind )&&Base[k_i][k_j].Kind==Base[k_i][k_j+3].Kind&&Base[k_i][k_j].Kind==Base[k_i][k_j+4].Kind)
										{
											h_num=5;
											i=k_i;
											j=k_j;
											break;
											break;	
										}
								
						}
									
						
						 }
			}
			///////////////////////////////////////////////////
			  for( k_j=0 ;k_j< 9;k_j++)//shu
						{
				for( k_i=0; k_i<9 ;k_i++)
					{
						if(Base[k_i][k_j].Kind!=0)
						{
									if(Base[k_i][k_j].Kind==Base[k_i+1][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+7][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+8][k_j].Kind)
										{
											p_num=9;
											k=k_i;
											l=k_j;
											break;
											break;
									}
									else if(Base[k_i][k_j].Kind==Base[k_i+1][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+7][k_j].Kind)
										{
											p_num=8;
											k=k_i;
											l=k_j;
											break;
											break;
										
									}
									else if (Base[k_i][k_j].Kind==Base[k_i+1][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j].Kind)
										{
											p_num=7;
											k=k_i;
											l=k_j;
											break;
											break;
									
									}
									else if (Base[k_i][k_j].Kind==Base[k_i+1][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j].Kind)
										{
											p_num=6;
											k=k_i;
											l=k_j;
											break;
											break;
									
									}
									else if (Base[k_i][k_j].Kind==Base[k_i+1][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j].Kind)
										{
											p_num=5;
											k=k_i;
											l=k_j;
											break;
											break;
									
									}
									
						}
						
						 }
				
			}
			////////////////////////////////////////////////////
			for( k_i=0 ;k_i<9 ;k_i++)//rincline
						{
				for( k_j=0 ;k_j<9 ;k_j++)
					{
						if(Base[k_i][k_j].Kind!=0)
						{
									if(Base[k_i][k_j].Kind==Base[k_i+1][k_j+1].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j+2].Kind && Base[k_i][k_j].Kind==Base[k_i+3][k_j+3].Kind &&Base[k_i][k_j].Kind==Base[k_i+4][k_j+4].Kind &&Base[k_i][k_j].Kind==Base[k_i+5][k_j+5].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j+6].Kind&&Base[k_i][k_j].Kind==Base[k_i+7][k_j+7].Kind&&Base[k_i][k_j].Kind==Base[k_i+8][k_j+8].Kind)
									{
										rincline_num=9;
										m=k_i;
										n=k_j;
										goto kiLL;//line 350
									}
									else if(Base[k_i][k_j].Kind==Base[k_i+1][k_j+1].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j+2].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j+3].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j+4].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j+5].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j+6].Kind&&Base[k_i][k_j].Kind==Base[k_i+7][k_j+7].Kind)
										{
											rincline_num=8;
											m=k_i;
											n=k_j;
											goto kiLL;				
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i+1][k_j+1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i+2][k_j+2].Kind )&&(Base[k_i][k_j].Kind==Base[k_i+3][k_j+3].Kind )&&Base[k_i][k_j].Kind==Base[k_i+4][k_j+4].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j+5].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j+6].Kind)
										{
											rincline_num=7;
											m=k_i;
											n=k_j;
											goto kiLL;	
										}
									else if(Base[k_i][k_j].Kind==Base[k_i+1][k_j+1].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j+2].Kind && Base[k_i][k_j].Kind==Base[k_i+3][k_j+3].Kind &&Base[k_i][k_j].Kind==Base[k_i+4][k_j+4].Kind &&Base[k_i][k_j].Kind==Base[k_i+5][k_j+5].Kind)
									{
										rincline_num=6;
										m=k_i;
										n=k_j;
										goto kiLL;
									}
									else if(Base[k_i][k_j].Kind==Base[k_i+1][k_j+1].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j+2].Kind && Base[k_i][k_j].Kind==Base[k_i+3][k_j+3].Kind &&Base[k_i][k_j].Kind==Base[k_i+4][k_j+4].Kind )
									{
										rincline_num=5;
										m=k_i;
										n=k_j;
										break;
										break;
									}
									
								
						}
									
						
						 }
			}
			//////////////////////////////////////////////
			for( k_i=0 ;k_i<9 ;k_i++)//lincline
				{
				for( k_j=8 ;k_j>=0 ;k_j--)
					{
						if(Base[k_i][k_j].Kind!=0)
						{
									if(Base[k_i][k_j].Kind==Base[k_i+1][k_j-1].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j-2].Kind && Base[k_i][k_j].Kind==Base[k_i+3][k_j-3].Kind &&Base[k_i][k_j].Kind==Base[k_i+4][k_j-4].Kind &&Base[k_i][k_j].Kind==Base[k_i+5][k_j-5].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j-6].Kind&&Base[k_i][k_j].Kind==Base[k_i+7][k_j-7].Kind&&Base[k_i][k_j].Kind==Base[k_i+8][k_j-8].Kind)
									{
										lincline_num=9;
										o=k_i;
										p=k_j;
										goto kiLL;
									}
									else if(Base[k_i][k_j].Kind==Base[k_i+1][k_j-1].Kind&&Base[k_i][k_j].Kind==Base[k_i+2][k_j-2].Kind&&Base[k_i][k_j].Kind==Base[k_i+3][k_j-3].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j-4].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j-5].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j-6].Kind&&Base[k_i][k_j].Kind==Base[k_i+7][k_j-7].Kind)
										{
											lincline_num=8;
											o=k_i;
											p=k_j;
											goto kiLL;
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i+1][k_j-1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i+2][k_j-2].Kind )&&Base[k_i][k_j].Kind==Base[k_i+3][k_j-3].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j-4].Kind&&Base[k_i][k_j].Kind==Base[k_i+5][k_j-5].Kind&&Base[k_i][k_j].Kind==Base[k_i+6][k_j-6].Kind)
										{
											lincline_num=7;
											o=k_i;
											p=k_j;
											goto kiLL;
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i+1][k_j-1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i+2][k_j-2].Kind )&&(Base[k_i][k_j].Kind==Base[k_i+3][k_j-3].Kind)&&(Base[k_i][k_j].Kind==Base[k_i+4][k_j-4].Kind)&&(Base[k_i][k_j].Kind==Base[k_i+5][k_j-5].Kind))
										{
											lincline_num=6;
											o=k_i;
											p=k_j;
											goto kiLL;
										}
									else if( (Base[k_i][k_j].Kind==Base[k_i+1][k_j-1].Kind )&&(Base[k_i][k_j].Kind==Base[k_i+2][k_j-2].Kind )&&Base[k_i][k_j].Kind==Base[k_i+3][k_j-3].Kind&&Base[k_i][k_j].Kind==Base[k_i+4][k_j-4].Kind)
										{
											lincline_num=5;
											o=k_i;
											p=k_j;
											break;
											break;	
											break;
										}
								
						}
									
						
						 }
			}
			         /////////////////////////////////////////////
			
				kiLL:			for(count0=0;count0<h_num;count0++)
								{
									 Base[i][j+count0].Kind=0;
								}
								for(count0=0;count0<p_num;count0++)
									{
										Base[k+count0][l].Kind=0; 
									}
								for(count0=0;count0<rincline_num;count0++)
								{
									Base[m+count0][n+count0].Kind=0;
								}
								for(count0=0;count0<lincline_num;count0++)
								{
									Base[o+count0][p-count0].Kind=0;
								}
				
					
				return (p_num+h_num+lincline_num+rincline_num);
	}

static int initflag()
{
	int i,j;
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
			{
				Base[i][j].flag=0;
		}

	}
	printf("init flag;\n");
	return 0;
}
static int FindWay(int x,int y,int x1,int y1)//寻找可移动路径若无法移动返回0,存在可移动路径返回1
{	
	
	path[count][0]=x;
	path[count][1]=y;
	count++;
	if(y-y1>0&&x-x1>=0&&(abs(x-x1)<=abs(y-y1)))
	{
			printf("Move from %d,%d to %d,%d \n",x,y,x1,y1);
			if(Base[x][y-1].Kind==0&&(y-1>=0)&&Base[x][y-1].flag!=1)//zuo
			         {
				y=y-1;
				printf("Move left to %d,%d;\n",x,y);
				Base[x][y].flag=1;
				while(x==x1&&y==y1)
					{
						printf("Move to DEST.\n");	
				   		return 1;
					}
				if(FindWay(x, y, x1, y1)==1)
						return 1;	
				y=y+1;
			         }
			 if(Base[x-1][y].Kind==0&&(x-1>=0)&&Base[x-1][y].flag!=1)//shang
				   {
					x=x-1;
					printf("Move  up to %d,%d;\n",x,y);
					Base[x][y].flag=1;
					while(x==x1&&y==y1)
						{
							printf("Move to DEST.\n");	
				   			return 1;
					}

⌨️ 快捷键说明

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