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

📄 main.c

📁 本人自己编写的Linux下的象棋程序
💻 C
字号:
#include "function.h"void do_with(int (*func)(int, int,int, int, SDL_Surface*, SDL_Surface*), 				int *x0, int *y0, int x, int y , SDL_Surface *screen,                       		SDL_Surface *qipan_screen, int *flag ){	int ret = func(*x0, *y0, x, y, screen, qipan_screen);	if(ret == 0)	{		*x0 = -1;		*y0 = -1;		*flag = !(*flag);	}	 else if(ret == 1)	{		display_end(screen);	}	else if (qipan[x][y] != 0 && ret == -1)	{		if((((*flag == 0)) && (qipan[x][y] <= 16) && (qipan[x][y] >=1))                        || (((*flag) != 0) && (qipan[x][y]> 16)))				     		{   			change_to(*x0, *y0, x, y, screen, qipan_screen);			*x0 = x;			*y0 = y;		}  	}			     }int main(int argc, char *argv[]){          int x0 = -1;    int y0 = -1;    int x = 0;    int y = 0;    int flag = 0;      if ( SDL_Init(SDL_INIT_AUDIO) < 0 )     {        fprintf(stderr, "can not init SDL: %s\n", SDL_GetError());        exit(1);    }    atexit(SDL_Quit);        SDL_Surface *screen = NULL;        screen = SDL_SetVideoMode(725, 610, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);                                 if ( screen == NULL )     {        fprintf(stderr, "can not set 800x600%s\n", SDL_GetError());        exit(1);    }        init_qizi();     init_qipan();     SDL_Surface *qipan_screen;    qipan_screen = (SDL_Surface *)load_image(QIPAN);    display_qipan(qipan_screen, screen);    display_window(screen);    display_start1(screen);    int done = 0;        while (!done)    {            SDL_Event event;		        while (SDL_PollEvent (&event))        {	    	                	switch (event.type)            	{		case SDL_MOUSEBUTTONUP:                 	if (event.button.x >= 615 && event.button.x <= 665 && event.button.y >= 400 && event.button.y <= 425)			{			 	display_start1(screen);			}     				 		 		break;					     	case SDL_MOUSEBUTTONDOWN:		                 	if (event.button.x >= 615 && event.button.x <= 665 && event.button.y >= 400 && event.button.y <= 425)			{			 	display_start2(screen);				start_again(qipan_screen, screen);				flag = 0;				x0 = -1;				y0 = -1;    				x = 0;    				y = 0;			}     				 		 					                    	 else if (exchange_pos(event.button.x, event.button.y, &x, &y) == 0)                    	{				if((x0 == x) && (y0 == y))				{					break;				}                        	if((x0==-1)&&(y0==-1))                        	{		            		if(((flag == 0) && (qipan[x][y] <= 16) && (qipan[x][y] >=1))			                             						    || ((flag != 0) && (qipan[x][y]> 16)))                            		{			        		x0 = x;                                		y0 = y;						flash_qizi(x0, y0, screen);			    		}	                         	}                        	else                        	{  				    		switch(qipan[x0][y0])			    		{			     		case RL_CAR:			     		case RR_CAR:			     		case BL_CAR:			     		case BR_CAR:		     						do_with(car_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);			    			break;			    		case RL_PAO:			    		case RR_PAO:			    		case BL_PAO:			    		case BR_PAO:  						do_with(pao_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);			    			break;			    		case R_BING1:			    		case R_BING2:			    		case R_BING3:			    		case R_BING4:			    		case R_BING5:			    		case B_ZU1:			    		case B_ZU2:			    		case B_ZU3:			    		case B_ZU4:			    		case B_ZU5:  						do_with(bing_zu_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);			    			break;					case RL_HOR:					case RR_HOR:					case BL_HOR:					case BR_HOR:					        do_with(horse_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);						break;					case RL_ELF:					case RR_ELF:					case BL_ELF:					case BR_ELF:					      	do_with(elf_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);						break;					case RL_NURSE:					case RR_NURSE:					case BL_NURSE:					case BR_NURSE:					      	do_with(nurse_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);						break;					case RC_MAS:					case	BC_MAS:						do_with(master_rules, &x0, &y0, x, y, screen, qipan_screen, &flag);						break;								 		}   			    	 				}       		    	} 		    	break;                case SDL_QUIT:                    	done = 1;                    	break;                default:                    	break;            	}		    	if( SDL_Flip( screen ) == -1 )	    	{	        	return 1; 	    	    	}	    	    	 		   	  	 	  	 	  	  	}    }    return 0;}

⌨️ 快捷键说明

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