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

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

?? ntetris.h

?? microwindows最新源碼
?? H
字號:
#ifndef NTETRIS_H#define NTETRIS_H/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. *  * The Original Code is NanoTetris. *  * The Initial Developer of the Original Code is Alex Holden. * Portions created by Alex Holden are Copyright (C) 2000, 2002 * Alex Holden <alex@alexholden.net>. All Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the terms * of the GNU General Public license (the  "[GNU] License"), in which case the * provisions of [GNU] License are applicable instead of those * above.  If you wish to allow use of your version of this file only * under the terms of the [GNU] License and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting  the provisions above and replace  them with the notice and * other provisions required by the [GNU] License.  If you do not delete * the provisions above, a recipient may use your version of this file * under either the MPL or the [GNU] License. *//* * Anything which is configurable should be in this file. * Unfortunately I haven't really bothered to comment anything except for the * array of shape descriptions (you can add your own new shapes quite easily). */#ifndef __ECOS#define USE_HISCORE_FILE#define HISCORE_FILE "/usr/games/nanotetris.hiscore"#endif#undef HAVE_USLEEP#define BLOCK_SIZE 10#define BORDER_WIDTH 10#define CONTROL_BAR_WIDTH 90#define BUTTON_HEIGHT 20#define BUTTON_WIDTH (CONTROL_BAR_WIDTH - BORDER_WIDTH)#define BUTTON_BACKGROUND_COLOUR GR_COLOR_GRAY75#define BUTTON_FOREGROUND_COLOUR GR_COLOR_BLACK#define MOVEMENT_BUTTON_WIDTH ((BUTTON_WIDTH / 2) - 1)#define TEXT_X_POSITION 5#define TEXT_Y_POSITION 15#define TEXT2_Y_POSITION 30#define WELL_WIDTH 12#define WELL_HEIGHT 28#define WELL_VISIBLE_HEIGHT 24#define WELL_NOTVISIBLE (WELL_HEIGHT - WELL_VISIBLE_HEIGHT)#define LEVEL_DIVISOR 500#ifdef __ECOS#define DROP_BLOCK_DELAY 10#else#define DROP_BLOCK_DELAY 25#endif#define DELETE_LINE_DELAY 300#define SCORE_INCREMENT 100#define MAIN_WINDOW_X_POSITION 0#define MAIN_WINDOW_Y_POSITION 0#define MAIN_WINDOW_WIDTH (CONTROL_BAR_WIDTH + (2 * BORDER_WIDTH) + \					(WELL_WIDTH * BLOCK_SIZE))#define MAIN_WINDOW_HEIGHT ((2 * BORDER_WIDTH) + \					(WELL_VISIBLE_HEIGHT * BLOCK_SIZE))#define MAIN_WINDOW_BACKGROUND_COLOUR GR_COLOR_NAVYBLUE#define SCORE_WINDOW_WIDTH BUTTON_WIDTH#define SCORE_WINDOW_HEIGHT 35#define SCORE_WINDOW_X_POSITION BORDER_WIDTH#define SCORE_WINDOW_Y_POSITION BORDER_WIDTH#define SCORE_WINDOW_BACKGROUND_COLOUR GR_COLOR_BLACK#define SCORE_WINDOW_FOREGROUND_COLOUR GR_COLOR_GREEN#define NEXT_SHAPE_WINDOW_SIZE 6#define NEXT_SHAPE_WINDOW_WIDTH (NEXT_SHAPE_WINDOW_SIZE * BLOCK_SIZE)#define NEXT_SHAPE_WINDOW_HEIGHT (NEXT_SHAPE_WINDOW_SIZE * BLOCK_SIZE)#define NEXT_SHAPE_WINDOW_X_POSITION (BORDER_WIDTH + 10)#define NEXT_SHAPE_WINDOW_Y_POSITION ((2 * BORDER_WIDTH) + SCORE_WINDOW_HEIGHT)#define NEXT_SHAPE_WINDOW_BACKGROUND_COLOUR GR_COLOR_BLACK#define NEW_GAME_BUTTON_WIDTH BUTTON_WIDTH#define NEW_GAME_BUTTON_HEIGHT BUTTON_HEIGHT#define NEW_GAME_BUTTON_X_POSITION BORDER_WIDTH#define NEW_GAME_BUTTON_Y_POSITION ((3 * BORDER_WIDTH) + SCORE_WINDOW_HEIGHT \						+ NEXT_SHAPE_WINDOW_HEIGHT)#define PAUSE_CONTINUE_BUTTON_WIDTH BUTTON_WIDTH#define PAUSE_CONTINUE_BUTTON_HEIGHT BUTTON_HEIGHT#define PAUSE_CONTINUE_BUTTON_X_POSITION BORDER_WIDTH#define PAUSE_CONTINUE_BUTTON_Y_POSITION ((4 * BORDER_WIDTH) + \			SCORE_WINDOW_HEIGHT + NEXT_SHAPE_WINDOW_HEIGHT + \						NEW_GAME_BUTTON_HEIGHT)#define ANTICLOCKWISE_BUTTON_WIDTH MOVEMENT_BUTTON_WIDTH#define ANTICLOCKWISE_BUTTON_HEIGHT BUTTON_HEIGHT#define ANTICLOCKWISE_BUTTON_X_POSITION BORDER_WIDTH#define ANTICLOCKWISE_BUTTON_Y_POSITION ((5 * BORDER_WIDTH) + \			SCORE_WINDOW_HEIGHT + NEXT_SHAPE_WINDOW_HEIGHT + \			NEW_GAME_BUTTON_HEIGHT + PAUSE_CONTINUE_BUTTON_HEIGHT)#define CLOCKWISE_BUTTON_WIDTH MOVEMENT_BUTTON_WIDTH#define CLOCKWISE_BUTTON_HEIGHT BUTTON_HEIGHT#define CLOCKWISE_BUTTON_X_POSITION (ANTICLOCKWISE_BUTTON_X_POSITION + \					ANTICLOCKWISE_BUTTON_WIDTH + 2)#define CLOCKWISE_BUTTON_Y_POSITION ANTICLOCKWISE_BUTTON_Y_POSITION#define LEFT_BUTTON_WIDTH MOVEMENT_BUTTON_WIDTH#define LEFT_BUTTON_HEIGHT BUTTON_HEIGHT#define LEFT_BUTTON_X_POSITION BORDER_WIDTH#define LEFT_BUTTON_Y_POSITION (ANTICLOCKWISE_BUTTON_Y_POSITION + \				ANTICLOCKWISE_BUTTON_HEIGHT + 2)#define RIGHT_BUTTON_WIDTH MOVEMENT_BUTTON_WIDTH#define RIGHT_BUTTON_HEIGHT BUTTON_HEIGHT#define RIGHT_BUTTON_X_POSITION (LEFT_BUTTON_X_POSITION + LEFT_BUTTON_WIDTH + 2)#define RIGHT_BUTTON_Y_POSITION LEFT_BUTTON_Y_POSITION#define DROP_BUTTON_WIDTH BUTTON_WIDTH#define DROP_BUTTON_HEIGHT BUTTON_HEIGHT#define DROP_BUTTON_X_POSITION BORDER_WIDTH#define DROP_BUTTON_Y_POSITION (LEFT_BUTTON_Y_POSITION + LEFT_BUTTON_HEIGHT + 2)#define WELL_WINDOW_WIDTH (BLOCK_SIZE * WELL_WIDTH)#define WELL_WINDOW_HEIGHT (BLOCK_SIZE * WELL_VISIBLE_HEIGHT)#define WELL_WINDOW_X_POSITION (CONTROL_BAR_WIDTH + BORDER_WIDTH)#define WELL_WINDOW_Y_POSITION BORDER_WIDTH#define WELL_WINDOW_BACKGROUND_COLOUR GR_COLOR_BLACKenum {	STATE_STOPPED,	STATE_RUNNING,	STATE_PAUSED,	STATE_NEWGAME,	STATE_EXIT,	STATE_UNKNOWN};typedef GR_COLOR block;struct ntetris_shape {	int type;	int orientation;	GR_COLOR colour;	int x;	int y;};typedef struct ntetris_shape shape;struct ntetris_state {	block blocks[2][WELL_HEIGHT][WELL_WIDTH];	int score;	int hiscore;	int fhiscore;	int level;	int state;	int running_buttons_mapped;	shape current_shape;	shape next_shape;	GR_WINDOW_ID main_window;	GR_WINDOW_ID score_window;	GR_WINDOW_ID next_shape_window;	GR_WINDOW_ID new_game_button;	GR_WINDOW_ID pause_continue_button;	GR_WINDOW_ID anticlockwise_button;	GR_WINDOW_ID clockwise_button;	GR_WINDOW_ID left_button;	GR_WINDOW_ID right_button;	GR_WINDOW_ID drop_button;	GR_WINDOW_ID well_window;	GR_GC_ID scoregcf;	GR_GC_ID scoregcb;	GR_GC_ID nextshapegcf;	GR_GC_ID nextshapegcb;	GR_GC_ID buttongcf;	GR_GC_ID buttongcb;	GR_GC_ID wellgc;	GR_EVENT event;	struct timeval timeout;};typedef struct ntetris_state nstate;void *my_malloc(size_t size);void msleep(long ms);void read_hiscore(nstate *state);void write_hiscore(nstate *state);int will_collide(nstate *state, int x, int y, int orientation);void draw_shape(nstate *state, GR_COORD x, GR_COORD y, int erase);void draw_well(nstate *state, int forcedraw);void draw_score(nstate *state);void draw_next_shape(nstate *state);void draw_new_game_button(nstate *state);void draw_anticlockwise_button(nstate *state);void draw_clockwise_button(nstate *state);void draw_left_button(nstate *state);void draw_right_button(nstate *state);void draw_drop_button(nstate *state);void draw_pause_continue_button(nstate *state);int block_is_all_in_well(nstate *state);void delete_line(nstate *state, int line);void block_reached_bottom(nstate *state);void move_block(nstate *state, int direction);void rotate_block(nstate *state, int direction);void drop_block(nstate *state);void handle_exposure_event(nstate *state);void handle_mouse_event(nstate *state);void handle_keyboard_event(nstate *state);void handle_event(nstate *state);void clear_well(nstate *state);void choose_new_shape(nstate *state);void new_game(nstate *state);void init_game(nstate *state);void calculate_timeout(nstate *state);unsigned long timeout_delay(nstate *state);void do_update(nstate *state);void do_pause(nstate *state);void wait_for_start(nstate *state);void run_game(nstate *state);void main_game_loop(nstate *state);#define LEVELS 12static const int delays[] = {600, 550, 500, 450, 400, 350,				300, 250, 200, 150, 100, 50};#define MAX_BLOCK_COLOUR 3static const GR_COLOR block_colours[] = {	GR_COLOR_RED, GR_COLOR_GREEN, GR_COLOR_BLUE, GR_COLOR_YELLOW};/* * This isn't the most space efficient way of storing the shape patterns, but * it's quick and easy to parse, and only takes a few hundred bytes of code * space anyway. 0 means "not filled", 1 means "filled", 2 means "go to next * line", and 3 means "end of pattern". There are four patterns for each shape;  * one for each orientation. Adding new shapes is quite easy- just increase * MAXSHAPES by the number of shapes you add, then add the four pattern * descriptions (each one should be the previous one rotated clockwise) for * each shape. If you need to use more than MAXROWS rows (including the "end * of line" marker), increase MAXROWS. Ditto for MAXCOLS. Increasing * MAXORIENTATIONS (to get more than four orientations) may work, but it's * untested, and remember that if you increase it you'll have to add the new * orientations for all of the original shapes as well as your new ones. Also * remember to add the new shapes the the array of shape sizes below. */#define MAXSHAPES 7#define MAXORIENTATIONS 4#define MAXCOLS 5#define MAXROWS 4static const char shapes[MAXSHAPES][MAXORIENTATIONS][MAXROWS][MAXCOLS] = {	{ /* **** */		{			{1,1,1,1,3}		},		{			{1,2},			{1,2},			{1,2},			{1,3}		},		{			{1,1,1,1,3}		},		{			{1,2},			{1,2},			{1,2},			{1,3}		}	},	{ /*    *	      ***  */		{			{0,0,1,2},			{1,1,1,3}		},		{			{1,2},			{1,2},			{1,1,3}		},		{			{1,1,1,2},			{1,3}		},		{			{1,1,2},			{0,1,2},			{0,1,3}		}	},	{ /*  *	      ***  */		{			{1,2},			{1,1,1,3}		},		{			{1,1,2},			{1,2},			{1,3}		},		{			{1,1,1,2},			{0,0,1,3}		},		{			{0,1,2},			{0,1,2},			{1,1,3}		}	},	{ /*  **	       **  */		{			{1,1,2},			{0,1,1,3}		},		{			{0,1,2},			{1,1,2},			{1,3}		},		{			{1,1,2},			{0,1,1,3}		},		{			{0,1,2},			{1,1,2},			{1,3}		}	},	{ /*   **	      **   */		{			{0,1,1,2},			{1,1,3}		},		{			{1,2},			{1,1,2},			{0,1,3}		},		{			{0,1,1,2},			{1,1,3}		},		{			{1,2},			{1,1,2},			{0,1,3}		}	},	{ /*  **	      **  */		{			{1,1,2},			{1,1,3}		},		{			{1,1,2},			{1,1,3}		},		{			{1,1,2},			{1,1,3}		},		{			{1,1,2},			{1,1,3}		}	},	{ /*   *	      ***  */		{			{0,1,2},			{1,1,1,3}		},		{			{1,2},			{1,1,2},			{1,3}		},		{			{1,1,1,2},			{0,1,3}		},		{			{0,1,2},			{1,1,2},			{0,1,3}		}	}};static const unsigned char shape_sizes[MAXSHAPES][MAXORIENTATIONS][2] = {	{{4,1},{1,4},{4,1},{1,4}},	{{3,2},{2,3},{3,2},{2,3}},	{{3,2},{2,3},{3,2},{2,3}},	{{3,2},{2,3},{3,2},{2,3}},	{{3,2},{2,3},{3,2},{2,3}},	{{2,2},{2,2},{2,2},{2,2}},	{{3,2},{2,3},{3,2},{2,3}}};#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品久久99久久在免费线| 韩国av一区二区三区四区| 国内外成人在线视频| 日韩一区二区不卡| 六月丁香综合在线视频| 日韩免费视频线观看| 免费成人av在线| 精品福利av导航| 国产成a人亚洲| 国产精品电影院| 色综合色狠狠天天综合色| 亚洲精品视频在线观看免费| 欧美中文字幕一区| 丝袜诱惑制服诱惑色一区在线观看| 欧美高清视频在线高清观看mv色露露十八| 一级精品视频在线观看宜春院 | 免费精品99久久国产综合精品| 欧美日韩国产一级片| 蜜桃久久av一区| 欧美成va人片在线观看| 国产91在线看| 一区二区三区小说| 日韩视频国产视频| 成人中文字幕合集| 亚洲国产综合91精品麻豆| 91精品欧美久久久久久动漫| 国产在线精品国自产拍免费| 国产精品久久夜| 欧美乱妇20p| 日本不卡视频一二三区| 久久久久久久久久久久电影| 粉嫩嫩av羞羞动漫久久久| 亚洲影视在线播放| 久久伊人中文字幕| 在线欧美小视频| 国产在线精品一区二区三区不卡| 国产精品沙发午睡系列990531| 欧美午夜精品理论片a级按摩| 老鸭窝一区二区久久精品| 亚洲特黄一级片| 日韩视频123| 91麻豆国产自产在线观看| 秋霞电影网一区二区| 中文字幕一区二区三区四区不卡 | 欧美成人性福生活免费看| 成年人国产精品| 午夜久久久影院| 国产精品美女视频| 日韩一二在线观看| 91麻豆精品秘密| 国产一区二区美女| 偷拍与自拍一区| 亚洲欧洲精品一区二区三区| 欧美大度的电影原声| 欧美性视频一区二区三区| 成人听书哪个软件好| 乱一区二区av| 爽爽淫人综合网网站| 17c精品麻豆一区二区免费| 精品99久久久久久| 欧美乱熟臀69xxxxxx| 色8久久精品久久久久久蜜| 岛国精品在线播放| 久久99精品国产91久久来源| 亚洲电影第三页| 亚洲精品第1页| 中文字幕的久久| 久久嫩草精品久久久精品| 制服丝袜亚洲播放| 欧美日韩你懂的| 日本乱人伦aⅴ精品| www.欧美亚洲| 丁香婷婷综合网| 国产成人午夜99999| 国产一区二区三区日韩| 强制捆绑调教一区二区| 日韩 欧美一区二区三区| 国产成人啪免费观看软件 | 成人午夜视频免费看| 国产一区二区三区四区五区美女| 美女一区二区三区| 美女视频黄免费的久久| 免费不卡在线观看| 麻豆高清免费国产一区| 日本不卡一区二区三区| 五月激情综合网| 日本一道高清亚洲日美韩| 日韩精品福利网| 蜜桃精品在线观看| 狠狠色狠狠色综合日日91app| 激情综合色播激情啊| 国产在线国偷精品免费看| 国产精品一区二区久激情瑜伽| 狠狠狠色丁香婷婷综合激情| 国产专区综合网| 国产大陆精品国产| 北岛玲一区二区三区四区| 欧美日韩精品欧美日韩精品一| 欧美日韩国产欧美日美国产精品| 欧美日韩国产小视频在线观看| 欧美一区二区三区性视频| 精品国产乱码久久久久久夜甘婷婷| 久久品道一品道久久精品| 国产女同性恋一区二区| 综合激情成人伊人| 亚洲一区二区三区四区在线| 丝袜美腿亚洲一区| 国模少妇一区二区三区| 高清不卡一区二区| 91国产免费观看| 日韩丝袜情趣美女图片| 国产视频视频一区| 一区二区日韩av| 日韩av一区二区三区四区| 国产精品99久久久久久宅男| 色综合中文综合网| 99久久精品免费看| 欧美老人xxxx18| 国产亚洲女人久久久久毛片| 最新日韩在线视频| 日韩激情一二三区| 福利一区在线观看| 欧美日韩综合色| 久久亚洲一区二区三区明星换脸| 综合欧美亚洲日本| 麻豆久久久久久| 一本在线高清不卡dvd| 亚洲日本免费电影| 在线91免费看| 久久久精品国产免大香伊| 玉米视频成人免费看| 美女爽到高潮91| 91蜜桃在线免费视频| 欧美一区二区三区在| 亚洲三级在线播放| 久久se这里有精品| 欧美在线|欧美| 久久精品人人做人人综合 | 日韩高清不卡一区| 成人av网址在线观看| 欧美一级夜夜爽| 亚洲男同1069视频| 国产精品911| 3d成人h动漫网站入口| 亚洲精品在线免费观看视频| 亚洲影视在线播放| 成人国产精品免费网站| 日韩精品一区国产麻豆| 亚洲另类色综合网站| 国产福利视频一区二区三区| 91精品国产综合久久久久久久| 亚洲人成网站精品片在线观看| 国产九色sp调教91| 欧美一区二区三区思思人| 夜夜嗨av一区二区三区中文字幕| 国产精品456露脸| 精品少妇一区二区三区在线播放 | 一区二区三区日本| 成人中文字幕在线| 久久久噜噜噜久噜久久综合| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美亚洲国产bt| 亚洲乱码国产乱码精品精的特点| 成人精品视频网站| 国产日产欧产精品推荐色 | 91九色02白丝porn| 中文字幕一区二区三区视频| 国产精品一区二区三区99| 欧美tickling网站挠脚心| 肉肉av福利一精品导航| 欧美日韩一区二区三区在线看| 一区二区三区欧美| 91成人免费电影| 亚洲已满18点击进入久久| 91啪九色porn原创视频在线观看| 中文字幕二三区不卡| 波多野结衣在线aⅴ中文字幕不卡| 国产人伦精品一区二区| 国产成人综合网站| 日本一二三四高清不卡| 成人午夜在线播放| 亚洲人亚洲人成电影网站色| 99久久精品免费观看| 亚洲免费在线观看| 欧美亚洲国产一区在线观看网站| 亚洲综合区在线| 欧美日韩精品电影| 美国一区二区三区在线播放| 日韩一二三区视频| 狠狠色综合日日| 国产精品丝袜91| 色8久久精品久久久久久蜜| 亚洲一区二区在线视频| 欧美久久婷婷综合色| 日韩不卡一区二区三区| 精品乱码亚洲一区二区不卡| 国产九九视频一区二区三区| 国产精品沙发午睡系列990531| 91麻豆6部合集magnet| 天堂av在线一区|