亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? slider.c

?? 基于MICROWINDOWS的LINUX程序,類似于MICROSOFTWINDOWS的經典小游戲-掃雷
?? C
字號:
/* Copyright (c) 2000 Simon Wood <simon@mungewell.uklinux.net> * * This program is licensed under the same terms that Microwindows * and Nano-X are licensed under.  See the file LICENSE accompanying * this distribution. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#define MWINCLUDECOLORS#include "nano-X.h"/* set up size of the grid */#define WIDTH_IN_TILES	4#define HEIGHT_IN_TILES	4#define MAX_TILES	(WIDTH_IN_TILES * HEIGHT_IN_TILES)#define USE_IMAGE	1static	int	value[WIDTH_IN_TILES][HEIGHT_IN_TILES];static	int	calc_width, calc_height;static	int	tile_width = 40;static	int	tile_height = 40;#if USE_IMAGEstatic	void *	image_addr;static	int	using_image = 1;static	GR_WINDOW_ID	image;		/* storage area for image */#endifstatic	GR_WINDOW_ID	master;		/* id for whole window */static	GR_WINDOW_ID	buttons;	/* id for buttons */static	GR_WINDOW_ID	tiles;		/* id for play area */static	GR_GC_ID	gc1;		/* graphics context for text *//* function prototypes */static	void	HandleEvents();static	void	RefreshWindow();static	void	RandomiseTiles();static	void	MoveTile();static	void	DrawTile();intmain(int argc,char **argv){	if (GrOpen() < 0) {		fprintf(stderr, "cannot open graphics\n");		exit(1);	}			gc1 = GrNewGC();#if USE_IMAGE	image = GrNewWindow(GR_ROOT_WINDOW_ID, 300, 0, (WIDTH_IN_TILES * tile_width),		(HEIGHT_IN_TILES * tile_height), 4, BLACK, WHITE);	if(argc != 2)		/* No image specified, use numered tiles */		using_image = 0;	else {		/* need to find out image size.... */ 		image_addr = malloc(4 * (WIDTH_IN_TILES * tile_width) *			(HEIGHT_IN_TILES * tile_height) ); 		image = GrNewPixmap((WIDTH_IN_TILES * tile_width), 			(HEIGHT_IN_TILES * tile_height), image_addr); 		GrDrawImageFromFile(image, gc1, 0, 0,			GR_IMAGE_MAX_SIZE, GR_IMAGE_MAX_SIZE, argv[1], 0);	}#endif		/* calculate size of tile area */ 	calc_width = 10 + (WIDTH_IN_TILES * tile_width); 	calc_height = 15 + 35 + (HEIGHT_IN_TILES * tile_height);#if 0	/* enforce minimum size */	if (calc_width < 240) calc_width=240;	if (calc_height < 320) calc_height=320;#endif	master = GrNewWindow(GR_ROOT_WINDOW_ID, 0, 0, calc_width, calc_height, 1, RED, WHITE); 	buttons = GrNewWindow((GR_WINDOW_ID) master, 5, 5, (calc_width - 5), 35, 1, RED, RED);	tiles = GrNewWindow((GR_WINDOW_ID) master, (calc_width/2) - (WIDTH_IN_TILES * tile_width /2), 	 	45 + ((calc_height - 50)/2) - (HEIGHT_IN_TILES * tile_height /2),		(WIDTH_IN_TILES * tile_width), (HEIGHT_IN_TILES * tile_height), 1, RED, RED);	GrMapWindow(master);	GrMapWindow(buttons);	GrMapWindow(tiles); 	/* set random seed */ 	srandom((int) getpid());	RandomiseTiles();		GrSelectEvents(master, GR_EVENT_MASK_EXPOSURE|GR_EVENT_MASK_CLOSE_REQ|		GR_EVENT_MASK_KEY_DOWN);	GrSelectEvents(buttons, GR_EVENT_MASK_BUTTON_DOWN); 	GrSelectEvents(tiles, GR_EVENT_MASK_BUTTON_DOWN);	RefreshWindow();	while (GR_TRUE) {		GR_EVENT event;		GrGetNextEvent(&event);		HandleEvents(&event);	}}/* * Read the next event and handle it. */voidHandleEvents(GR_EVENT *ep){int hole_x_pos, hole_y_pos;int tempx, tempy;	switch (ep->type) {		case GR_EVENT_TYPE_BUTTON_DOWN:			if (ep->button.wid == buttons) { 				if (ep->button.x < (calc_width/2)) {					/* 'Again' */					RandomiseTiles();					RefreshWindow(); 				} else {					/* 'Quit' */					GrClose();#if USE_IMAGE					if (using_image)						free(image_addr);#endif					exit(0);				}			}			if (ep->button.wid == tiles) {				/* Try to move selected tile */				MoveTile( (int)(ep->button.x / tile_width),					(int)(ep->button.y / tile_height) );			}			break;		case GR_EVENT_TYPE_KEY_DOWN:			if (ep->keystroke.wid == master) {				hole_x_pos = 0;				hole_y_pos = 0;				/* Find hole position */				for (tempx = 0; tempx < WIDTH_IN_TILES; tempx++)					for (tempy = 0; tempy < HEIGHT_IN_TILES; tempy++)						if (value[tempx][tempy] == MAX_TILES) {							hole_x_pos = tempx;							hole_y_pos = tempy;						}					switch (ep->keystroke.ch) {					case 'q':					case 'Q':					case MWKEY_CANCEL:						GrClose();#if USE_IMAGE						if (using_image)							free(image_addr);#endif						exit(0);					case 'r':					case 'R':						RandomiseTiles();						RefreshWindow();						break;					/* remember you are moving the tile. not the hole */					case MWKEY_DOWN:						if (hole_y_pos != 0) {							MoveTile(hole_x_pos, hole_y_pos - 1);						}						break;												case MWKEY_UP:						if (hole_y_pos != (HEIGHT_IN_TILES-1) ) {							MoveTile(hole_x_pos, hole_y_pos + 1);						}						break;					case MWKEY_RIGHT:						if (hole_x_pos != 0) {							MoveTile(hole_x_pos - 1, hole_y_pos);						}						break;					case MWKEY_LEFT:						if (hole_x_pos != (WIDTH_IN_TILES-1) ) {							MoveTile(hole_x_pos + 1, hole_y_pos);						}						break;				}			}			break;		case GR_EVENT_TYPE_EXPOSURE:			RefreshWindow();			break;		case GR_EVENT_TYPE_CLOSE_REQ:			GrClose();			exit(0);	}}voidRefreshWindow(){	int xpos, ypos;	GrSetGCForeground(gc1, WHITE);	GrSetGCBackground(gc1, RED);	/* draw the buttons */	GrRect(buttons, gc1, 0, 0, (calc_width - 12)/2, 34);	GrRect(buttons, gc1, (calc_width - 8)/2, 0, (calc_width - 12)/2, 34);#if 0	/* for when center align text works */	GrText(buttons, gc1, (calc_width - 10)/4, 22, "Again", 5, 0);	GrText(buttons, gc1, (calc_width - 10)*3/4, 22, "Quit", 4, 0);#else	GrText(buttons, gc1, 5, 22, "Again", 5, 0);	GrText(buttons, gc1, (calc_width / 2) + 5, 22, "Quit", 4, 0);#endif		/* draw the tiles */	for (ypos=0; ypos< HEIGHT_IN_TILES; ypos++){		for (xpos=0; xpos< WIDTH_IN_TILES; xpos++){			DrawTile(xpos, ypos);		}	}}voidRandomiseTiles(){	int count, xpos, ypos;	/* allocate all the numbers in order  1..MAX_TILES */	for (ypos=0; ypos< HEIGHT_IN_TILES; ypos++){		for (xpos=0; xpos< WIDTH_IN_TILES; xpos++){			value[xpos][ypos] = 1 + xpos + (WIDTH_IN_TILES * ypos);		}	}	/* position of 'hole' */	xpos = WIDTH_IN_TILES - 1;	ypos = HEIGHT_IN_TILES - 1;	/* randomly slide them around, ALL games can therefore solved - so no excusses!! */	for (count=0; count< MAX_TILES * 1000; count++){		switch(random() % 4) {			case 0:				if (ypos < HEIGHT_IN_TILES - 1) {					value[xpos][ypos] = value[xpos][ypos+1];					ypos++;					value[xpos][ypos] = MAX_TILES;				}				break;			case 1:				if (xpos > 0) {					value[xpos][ypos] = value[xpos - 1][ypos];					xpos--;					value[xpos][ypos] = MAX_TILES;				}				break;			case 2:				if (ypos > 0) {					value[xpos][ypos] = value[xpos][ypos - 1];					ypos--;					value[xpos][ypos] = MAX_TILES;				}				break;			case 3:				if (xpos < WIDTH_IN_TILES - 1) {					value[xpos][ypos] = value[xpos + 1][ypos];					xpos++;					value[xpos][ypos] = MAX_TILES;				}				break;		}	}}voidMoveTile(int xpos, int ypos){	/* check all possible moves to see if there is the blank (N,E,S,W) */	if (ypos > 0 && value[xpos][ypos - 1] == MAX_TILES) {		value[xpos][ypos - 1] = value[xpos][ypos];		value[xpos][ypos] = MAX_TILES;		DrawTile(xpos, ypos - 1);		DrawTile(xpos, ypos);	}	if (xpos < (WIDTH_IN_TILES - 1) && value[xpos + 1][ypos] == MAX_TILES) {		value[xpos + 1][ypos] = value[xpos][ypos];		value[xpos][ypos] = MAX_TILES;		DrawTile(xpos + 1, ypos);		DrawTile(xpos, ypos);	}	if (ypos < (HEIGHT_IN_TILES - 1) && value[xpos][ypos + 1] == MAX_TILES) {		value[xpos][ypos + 1] = value[xpos][ypos];		value[xpos][ypos] = MAX_TILES;		DrawTile(xpos, ypos + 1);		DrawTile(xpos, ypos);	}	if (xpos > 0 && value[xpos - 1][ypos] == MAX_TILES) {		value[xpos - 1][ypos] = value[xpos][ypos];		value[xpos][ypos] = MAX_TILES;		DrawTile(xpos - 1, ypos);		DrawTile(xpos, ypos);	}	/* check for a winner */	if (value[WIDTH_IN_TILES - 1][HEIGHT_IN_TILES - 1] == MAX_TILES) {		int winner = 0;		for (ypos=0; ypos< HEIGHT_IN_TILES; ypos++){			for (xpos=0; xpos< WIDTH_IN_TILES; xpos++){				if (value[xpos][ypos] == winner + 1)					winner++;				else 					winner=0;			}		}		if (winner == MAX_TILES) {			/* Do winning screen */			int loop = MAX_TILES;			for(loop=0; loop < MAX_TILES; loop++) {				for(winner=0; winner < (MAX_TILES - loop) ; winner++) {					/* move tiles around */					xpos = winner % WIDTH_IN_TILES;					ypos = (int)(winner/WIDTH_IN_TILES);					value[xpos][ypos] = loop + winner + 1; 					DrawTile(winner % WIDTH_IN_TILES, (int)(winner/WIDTH_IN_TILES));				}				GrFlush();				for(winner=0; winner < 10000000 ; winner++);					/* delay loop */			}			/* Print message */			GrSetGCForeground(gc1, WHITE);			GrSetGCBackground(gc1, RED);			GrText(tiles, gc1, ((WIDTH_IN_TILES * tile_width)/2) - 40, (HEIGHT_IN_TILES * tile_height)/2, "Well Done!!", -1, 0);		}					}}voidDrawTile(int xpos, int ypos){	char text[]="00";	/* blank out old tile */	GrSetGCForeground(gc1, RED);	GrFillRect(tiles, gc1, (xpos* tile_width), (ypos*tile_height), tile_width, tile_height);	if (value[xpos][ypos] != MAX_TILES ) {		/* re-draw tile and number */		GrSetGCForeground(gc1, WHITE);		GrSetGCBackground(gc1, RED);		GrRect(tiles, gc1, (xpos*tile_width), (ypos*tile_height), tile_width, tile_height);		#if USE_IMAGE		if (using_image) {			/* copy from image window */			GrCopyArea(tiles, gc1, 1 + (xpos*tile_width), 1 + (ypos*tile_height), 				tile_width - 2, tile_height - 2, image,				1 + (((value[xpos][ypos] - 1) % WIDTH_IN_TILES) * tile_width), 				1 + (((int)(value[xpos][ypos] - 1) / WIDTH_IN_TILES) * tile_height), 0);		} else {#endif			/* label the tile with a number */			if (value[xpos][ypos] > 9)				text[0] = 48 + (int)(value[xpos][ypos]/10);			else				text[0] = 32;				text[1] = 48 + value[xpos][ypos] % 10;						GrText(tiles, gc1, (xpos*tile_width) + (tile_width /2) - 5, (ypos*tile_height) + (tile_height/2) + 5, &text, -1, 0);#if USE_IMAGE		}#endif	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品尤物av久久免费看| 国产亚洲精品中文字幕| 午夜精品123| 777午夜精品视频在线播放| 蓝色福利精品导航| 久久精品亚洲精品国产欧美kt∨| 国产99精品国产| 亚洲少妇30p| 欧美精品乱码久久久久久| 日韩av一区二区三区四区| 精品国产乱码久久久久久夜甘婷婷| 激情小说亚洲一区| 亚洲欧洲99久久| 欧美裸体一区二区三区| 国内外成人在线| 欧美国产97人人爽人人喊| 欧美亚洲国产一区二区三区va| 丝瓜av网站精品一区二区| 2023国产精品| 色狠狠桃花综合| 美腿丝袜亚洲综合| 国产精品国产a级| 欧美一级视频精品观看| www.成人网.com| 青青草原综合久久大伊人精品| 欧美国产精品专区| 欧美日韩国产一区| 成人精品高清在线| 免费看精品久久片| 国产精品成人免费| 精品国产免费久久| 欧美性大战久久久久久久| 国产综合久久久久影院| 亚洲综合一二区| 欧美国产日韩a欧美在线观看| 欧美日韩美女一区二区| 国产寡妇亲子伦一区二区| 亚洲国产精品麻豆| 国产精品美女久久久久久久| 欧美一区二区三区播放老司机| 成人午夜在线免费| 麻豆91小视频| 一卡二卡欧美日韩| 中文字幕不卡三区| 欧美不卡视频一区| 欧美美女直播网站| 91麻豆6部合集magnet| 国产精品1区二区.| 久久99最新地址| 婷婷激情综合网| 夜夜操天天操亚洲| 亚洲欧美日韩中文字幕一区二区三区| 久久伊人中文字幕| 91精品国产91热久久久做人人| 97se亚洲国产综合自在线 | 亚洲曰韩产成在线| 国产精品免费看片| 国产亚洲精品福利| 亚洲精品在线免费观看视频| 日韩一区二区影院| 欧美日本乱大交xxxxx| 色一区在线观看| av亚洲精华国产精华精| 国产成人综合亚洲91猫咪| 国产自产v一区二区三区c| 日本伊人色综合网| 日本三级韩国三级欧美三级| 亚洲成人黄色小说| 丝袜亚洲另类欧美| 日精品一区二区| 日本亚洲欧美天堂免费| 日韩va欧美va亚洲va久久| 日本午夜精品视频在线观看| 亚洲国产日产av| 亚洲一二三专区| 亚洲成精国产精品女| 亚洲自拍与偷拍| 三级成人在线视频| 日日骚欧美日韩| 美日韩一级片在线观看| 国产在线国偷精品免费看| 精品一区二区三区免费播放| 精品一区二区三区欧美| 国产一区二区0| 成人精品视频一区| 色婷婷av久久久久久久| 欧美日韩一级视频| 欧美大片在线观看| 国产午夜亚洲精品理论片色戒| 国产欧美日韩综合| 亚洲免费av观看| 亚洲v精品v日韩v欧美v专区| 美国三级日本三级久久99| 韩国毛片一区二区三区| www.日韩大片| 欧美午夜寂寞影院| 欧美一卡二卡三卡| 欧美激情一区二区三区蜜桃视频 | 99re成人精品视频| 欧美性高清videossexo| 日韩视频123| 国产亚洲污的网站| 一区二区成人在线| 久久超碰97中文字幕| 99国产精品久久久久| 精品视频123区在线观看| 欧美成人一区二区三区片免费 | 国产精品一二三四区| 91在线国产福利| 日韩小视频在线观看专区| 久久久久久久av麻豆果冻| 亚洲日本在线a| 麻豆91在线看| 色菇凉天天综合网| 久久久久亚洲蜜桃| 亚洲国产视频一区二区| 极品美女销魂一区二区三区免费| eeuss国产一区二区三区| 欧美一区二区在线视频| 国产精品嫩草久久久久| 琪琪久久久久日韩精品| 不卡区在线中文字幕| 日韩一卡二卡三卡国产欧美| 中文字幕在线观看一区| 久久成人综合网| 欧美在线影院一区二区| 国产日韩欧美a| 日本成人在线电影网| 97se狠狠狠综合亚洲狠狠| 欧美精品一区二| 亚洲v日本v欧美v久久精品| 成人免费看片app下载| 91精品国产综合久久精品| 最好看的中文字幕久久| 国产精品一区久久久久| 欧美日本韩国一区二区三区视频| 国产精品久久久久影院老司| 狠狠色狠狠色合久久伊人| 欧美精品一二三| 一级中文字幕一区二区| 99在线精品一区二区三区| 26uuu久久综合| 蜜臀av性久久久久蜜臀av麻豆| 91国产免费观看| 国产精品免费久久久久| 国产福利91精品一区二区三区| 91精品国产综合久久久蜜臀粉嫩 | 日韩精品久久理论片| 91香蕉视频黄| 中文字幕欧美国产| 国产高清精品在线| 精品国产成人在线影院| 另类的小说在线视频另类成人小视频在线 | 亚洲国产精品激情在线观看 | 亚洲午夜久久久| 色综合久久88色综合天天免费| 国产欧美中文在线| 国产一区二区0| 久久久精品国产免大香伊| 另类综合日韩欧美亚洲| 制服丝袜亚洲播放| 视频一区二区欧美| 欧美精品丝袜中出| 视频在线观看一区二区三区| 欧美三区在线观看| 性感美女久久精品| 欧美日韩一级视频| 日韩精品亚洲一区| 欧美一区二区黄| 老司机免费视频一区二区| 精品女同一区二区| 国产福利一区二区三区视频| 国产色一区二区| 91小视频免费看| 亚洲高清在线视频| 777xxx欧美| 国产一区二区按摩在线观看| 日本一区二区三区四区在线视频| 国产凹凸在线观看一区二区| 国产精品久久久久桃色tv| 94-欧美-setu| 午夜亚洲国产au精品一区二区| 日韩一二三区不卡| 国产精品1区2区3区在线观看| 国产精品国产三级国产a | 日韩国产欧美三级| 精品乱人伦小说| 成人福利在线看| 午夜日韩在线电影| 亚洲精品一区在线观看| 99热精品一区二区| 视频一区在线视频| 欧美成人精品1314www| 丰满少妇久久久久久久| 亚洲永久精品大片| 精品sm捆绑视频| 欧洲一区在线电影| 久久99这里只有精品| 成人免费一区二区三区视频| 欧美丰满少妇xxxxx高潮对白|