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

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

?? human.c

?? 操作系統SunOS 4.1.3版本的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#ifndef lintstatic	char sccsid[] = "@(#)human.c 1.1 92/07/30 Copyr 1985 Sun Micro";#endif/* * Copyright (c) 1985 by Sun Microsystems, Inc. */#include <sys/time.h>#include <sys/types.h>#include <sunwindow/win_input.h>#include "defs.h"#define INTERMED	8int humanmoves[4][4];int intpnts[3][2], intcntr;	/* intermediate points in a move */int rollstack[4], rollcntr;	/* rolls used in a move */int humannomove;		/* human couldn't move on last turn */gammon_reader(ie)struct inputevent *ie;{	static int movingpiece = 0, from, to, oldx = -1, oldy = -1;	if (state != MOVE && ie->ie_code == LOC_WINEXIT)		return;	if (state != MOVE && ie->ie_code == LOC_MOVEWHILEBUTDOWN)		return;	if (win_inputposevent(ie)) {		if (ie->ie_code != LOC_MOVEWHILEBUTDOWN)			message(ERR, "");		switch (state) {		case STARTGAME:			if (ie->ie_code == MS_LEFT || ie->ie_code == MS_MIDDLE)				initgame();			break;		case ROLL:			if (ie->ie_code == MS_LEFT || ie->ie_code == MS_MIDDLE) {				rolldice(HUMAN);				message(MSG, "Your turn to move.");				starthumanturn();			}			break;		case MOVE:			if (ie->ie_code == MS_LEFT || ie->ie_code == MS_MIDDLE) {				from = getpoint(ie->ie_locx, ie->ie_locy);				if (legalstart(from))					movingpiece = 1;			} else if (ie->ie_code == LOC_MOVEWHILEBUTDOWN) {				if (!movingpiece)					break;				if (oldx >= 0 && oldy >= 0)					drawoutline(oldx, oldy);				oldx = ie->ie_locx;				oldy = ie->ie_locy;				drawoutline(oldx, oldy);				break;			} else if (ie->ie_code == LOC_WINEXIT) {				if (!movingpiece)					break;				movingpiece = 0;				if (oldx >= 0 && oldy >= 0) {					drawoutline(oldx, oldy);					oldx = oldy = -1;				}			}			break;		case THINKING:			message(ERR, "It's not your turn!");			break;		case GAMEOVER:			message(ERR, "The game is over!");			break;		case COMPUTERDOUBLING:			message(ERR, "You must accept or refuse the computer's double!");			break;		case HUMANDOUBLING:			message(ERR, "Hold on, the computer is thinking about whether to accept your double!");			break;		} /* end switch */	} else {	/* this is a negative event */		if ((ie->ie_code == MS_LEFT || ie->ie_code == MS_MIDDLE) && movingpiece) {			to = getpoint(ie->ie_locx, ie->ie_locy);			if (oldx >= 0 || oldy >= 0) {				drawoutline(oldx, oldy);				oldx = oldy = -1;			}			movingpiece = 0;			if (legalend(to))				if (legalmove(from, to))					domove(from, to);		}	}}legalstart(point)int point;{	if (point == OUTOFBOUNDS || point == HOME)		return(0);	if (humanboard[point] == 0)		return(0);	if (point != BAR && humanboard[BAR] != 0) {		message(ERR, "You must remove your barmen!");		return(0);	}	return(1);}legalend(point)int point;{	if (point == OUTOFBOUNDS || point == BAR)		return(0);	if (computerboard[point] > 1 && point != HOME) {		message(ERR, "You cannot land on a blocked point!");		return(0);	}	return(1);}legalmove(from, to)int from, to;{	int rollneeded, dice[2], numdice, index, furthest, midpnt;	if (to == HOME) {		for (index = 24; index > 6; index--) {			if (index == from && humanboard[index] == 1)				continue;			if (humanboard[index] > 0) {				message(ERR, "You cannot bear off until all your pieces are in your inner table!");				return(0);			}		}	}	clearintermediatepnts();	if (from == to)		return(0);	if (from == BAR && to == HOME)	/* never possible, and it messes */		return(0);		/* up the algorithm */	if (from == BAR)		rollneeded = 25 - to;	else if (to == HOME)		rollneeded = from;	else		rollneeded = from - to;	if (rollneeded < 0) {		message(ERR, "Backwards move!");		return(0);	}        if (humanboard[BAR] > 1 && rollneeded == humandieroll[0] + humandieroll[1]) {                message(ERR, "You must remove all of your barmen!");                return(0);	}	if (to == HOME) {		for (furthest = 6; furthest > 1; furthest--) {			if (humanboard[furthest] > 0)				break;		}	}	if ((humandieroll[0] & NUMMASK) == (humandieroll[1] & NUMMASK)) {		if ((humandieroll[0] & ROLLUSED) == 0)			numdice = 4;		else if ((humandieroll[0] & SECONDROLLUSED) == 0)			numdice = 3;		else if ((humandieroll[1] & ROLLUSED) == 0)			numdice = 2;		else			numdice = 1;		if (rollneeded % (humandieroll[0] & NUMMASK) == 0) {			if (rollneeded / (humandieroll[0] & NUMMASK) > numdice) {				message(ERR, "You didn't roll that move!");				return(0);			}			midpnt = from;			for (index = 0; index < numdice; index++) {				if ((rollneeded -= (humandieroll[0] & NUMMASK)) <= 0) {					useroll(humandieroll[0] & NUMMASK);					break;				}				midpnt -= humandieroll[0] & NUMMASK;				if (computerboard[midpnt] == 1) {					addintermediatepnt(midpnt, 1);				} else if (computerboard[midpnt] <= 0) {					addintermediatepnt(midpnt, 0);				} else {					message(ERR, "You cannot touch down on a blocked point!");					return(0);				}				useroll(humandieroll[0] & NUMMASK);			}			return(1);		} else if (to == HOME) {			if (numdice * (humandieroll[0] & NUMMASK) < rollneeded) {				message(ERR, "You didn't roll that move!");				return(0);			}			if (from != furthest) {				message(ERR, "You didn't roll that move!");				return(0);			}			midpnt = from;			for (index = 0; index < numdice; index++) {				if ((rollneeded -= (humandieroll[0] & NUMMASK)) <= 0) {					useroll(humandieroll[0] & NUMMASK);					break;				}				midpnt -= humandieroll[0] & NUMMASK;				for (furthest = 6; furthest > 1; furthest--) {					if (humanboard[furthest] > 0 && !(furthest == from && humanboard[from] == 1))						break;				}				if (midpnt != furthest) {					message(ERR, "You didn't roll that move!");					return(0);				}				if (computerboard[midpnt] == 1) {					addintermediatepnt(midpnt, 1);				} else if (computerboard[midpnt] <= 0) {					addintermediatepnt(midpnt, 0);				} else {					message(ERR, "You cannot touch down on a blocked point!");					return(0);				}				useroll(humandieroll[0] & NUMMASK);			}			return(1);		} else {			message(ERR, "You didn't roll that move!");			return(0);		}	} else {	/* not doubles */		if (humandieroll[0] & ROLLUSED) {			dice[0] = humandieroll[1] & NUMMASK;			numdice = 1;		} else if (humandieroll[1] & ROLLUSED) {			dice[0] = humandieroll[0] & NUMMASK;			numdice = 1;		} else {			dice[0] = humandieroll[0] & NUMMASK;			dice[1] = humandieroll[1] & NUMMASK;			numdice = 2;		}		if (rollneeded == dice[0]) {			useroll(dice[0]);			return(1);		}		if (numdice == 2 && rollneeded == dice[1]) {			useroll(dice[1]);			return(1);		}		if (numdice == 2 && rollneeded == dice[0] + dice[1]) {			midpnt = from - (humandieroll[0] & NUMMASK);			if (computerboard[midpnt] == 1) {				useroll(dice[0]);				useroll(dice[1]);				addintermediatepnt(midpnt, 1);				return(1);			}			if (computerboard[midpnt] <= 0) {				useroll(dice[0]);				useroll(dice[1]);				addintermediatepnt(midpnt, 0);				return(1);			}			midpnt = from - (humandieroll[1] & NUMMASK);			if (computerboard[midpnt] == 1) {				useroll(dice[0]);				useroll(dice[1]);				addintermediatepnt(midpnt, 1);				return(1);			}			if (computerboard[midpnt] <= 0) {				useroll(dice[0]);				useroll(dice[1]);				addintermediatepnt(midpnt, 0);				return(1);			}			message(ERR, "You cannot touch down on a blocked point!");			return(0);		}		if (to != HOME) {			message(ERR, "You didn't roll that move!");			return(0);		}		if (dice[0] > dice[1]) {			if (dice[0] > rollneeded) {				if (from != furthest) {					message(ERR, "You didn't roll that move!");					return(0);				}				useroll(dice[0]);				return(1);			}		} else {			if (dice[1] > rollneeded) {				if (from != furthest) {					message(ERR, "You didn't roll that move!");					return(0);				}				useroll(dice[1]);				return(1);			}		}		if (numdice < 2) {			message(ERR, "You didn't roll that move!");			return(0);		}		if (dice[0] + dice[1] > rollneeded) {			if (from != furthest) {				message(ERR, "You didn't roll that move!");				return(0);			}			midpnt = from - (humandieroll[0] & NUMMASK);			for (furthest = 6; furthest > 1; furthest--) {				if (humanboard[furthest] > 0 && !(furthest == from && humanboard[from] == 1))					break;			}			if (midpnt != furthest) {				message(ERR, "You didn't roll that move!");				return(0);			}			if (computerboard[midpnt] == 1) {				useroll(dice[0]);				useroll(dice[1]);				addintermediatepnt(midpnt, 1);				return(1);			}			if (computerboard[midpnt] <= 0) {				useroll(dice[0]);				useroll(dice[1]);				addintermediatepnt(midpnt, 0);				return(1);			}			midpnt = from - (humandieroll[1] & NUMMASK);			if (midpnt != furthest) {				message(ERR, "You didn't roll that move!");				return(0);			}			if (computerboard[midpnt] == 1) {				useroll(dice[0]);				useroll(dice[1]);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜电影一区二区三区| 91成人看片片| 色综合 综合色| 久久综合中文字幕| 亚洲成人激情综合网| 成人sese在线| 欧美va亚洲va| 日本免费新一区视频| 在线区一区二视频| 国产精品传媒入口麻豆| 激情图片小说一区| 5566中文字幕一区二区电影 | www.爱久久.com| 91精品国产麻豆国产自产在线 | 高清久久久久久| 欧美剧情片在线观看| 一区二区三区在线免费播放 | 国产精品99久久久久久宅男| 欧美日韩视频在线第一区| 亚洲欧洲精品成人久久奇米网| 蜜桃av一区二区在线观看| 欧美亚洲日本一区| 一区二区三区欧美视频| thepron国产精品| 欧美—级在线免费片| 精品一二三四区| 日韩欧美一级二级三级| 天天av天天翘天天综合网| 91精彩视频在线观看| 亚洲在线成人精品| 欧美在线短视频| 亚洲妇女屁股眼交7| 欧美久久久一区| 日韩电影在线免费| 日韩精品一区二区三区老鸭窝| 日韩av中文字幕一区二区三区| 欧美一级视频精品观看| 久久99国产精品麻豆| 精品国产一区久久| 国产成人激情av| 国产精品丝袜在线| 色综合久久88色综合天天6| 亚洲视频在线观看一区| 在线亚洲免费视频| 首页欧美精品中文字幕| 日韩精品中文字幕在线一区| 韩国女主播成人在线| 久久久久国产精品麻豆ai换脸| 成人在线综合网| 亚洲伊人色欲综合网| 欧美日韩电影在线| 精品一区二区在线播放| 国产欧美视频一区二区三区| 99久精品国产| 午夜在线成人av| 日韩免费看的电影| 91久久奴性调教| 视频一区中文字幕国产| 精品国产乱码久久久久久闺蜜| 国产精品小仙女| 一区二区三区高清| 欧美成人一区二区三区在线观看| 国产suv精品一区二区三区| 亚洲精品大片www| 日韩欧美视频在线| 成人动漫中文字幕| 蜜臀久久久久久久| 国产精品久久久久久久久免费相片| 欧美系列在线观看| 国产精品一级二级三级| 亚洲综合色在线| 国产欧美日韩卡一| 制服丝袜在线91| www.日韩av| 激情偷乱视频一区二区三区| 亚洲另类在线视频| 久久久精品综合| 91精品国产福利| 97精品视频在线观看自产线路二| 亚洲444eee在线观看| 欧美极品另类videosde| 日韩亚洲电影在线| 91行情网站电视在线观看高清版| 久久成人免费日本黄色| 一区二区三区在线观看网站| wwww国产精品欧美| 91精品国产91久久久久久一区二区| aa级大片欧美| 国产呦萝稀缺另类资源| 日本女优在线视频一区二区| 亚洲精品自拍动漫在线| 国产欧美视频一区二区三区| 日韩美女主播在线视频一区二区三区| 在线观看国产日韩| av在线不卡观看免费观看| 国产电影一区在线| 韩日av一区二区| 久久精品国产一区二区三区免费看| 亚洲一区二三区| 一区二区三区波多野结衣在线观看| 国产精品久久久久久久蜜臀| 欧美精品一区二区三区蜜桃| 欧美一区二区三区婷婷月色| 欧美亚洲日本国产| 欧美丝袜第三区| 欧美亚洲禁片免费| 欧美三级电影在线观看| 91啦中文在线观看| 色94色欧美sute亚洲13| 色琪琪一区二区三区亚洲区| 色综合中文字幕国产| 色综合天天综合网国产成人综合天| 成人天堂资源www在线| 国产91精品欧美| 成人精品视频网站| 91啦中文在线观看| 欧美性大战xxxxx久久久| 欧美日韩高清一区二区| 欧美精品aⅴ在线视频| 日韩视频一区二区三区在线播放| 欧美精品久久天天躁| 欧美美女直播网站| 欧美一级片在线看| 精品国产凹凸成av人网站| 久久久久国产一区二区三区四区| 久久伊人中文字幕| 国产精品久久久久aaaa樱花| 亚洲欧美色综合| 亚洲成av人**亚洲成av**| 奇米色一区二区| 国产激情视频一区二区在线观看 | 日韩高清中文字幕一区| 久久精品久久精品| 成人小视频免费在线观看| 91在线云播放| 欧美久久久久久久久中文字幕| 欧美美女网站色| 久久久久久久久99精品| 成人免费在线视频| 午夜精品一区二区三区免费视频| 久久不见久久见中文字幕免费| 国产精品一区不卡| 在线亚洲欧美专区二区| 精品美女被调教视频大全网站| 中文字幕乱码日本亚洲一区二区| 亚洲免费av观看| 激情欧美一区二区三区在线观看| 菠萝蜜视频在线观看一区| 欧美日韩高清在线播放| 26uuu久久天堂性欧美| 怡红院av一区二区三区| 麻豆精品在线看| 色哟哟一区二区| 欧美成人a在线| 亚洲狠狠丁香婷婷综合久久久| 日一区二区三区| 高清国产一区二区| 91精品国产一区二区三区| 国产精品久久久久久久久免费相片| 图片区日韩欧美亚洲| av一区二区三区在线| 日韩三级伦理片妻子的秘密按摩| 国产精品麻豆久久久| 麻豆91在线播放免费| 在线观看免费视频综合| 国产欧美日韩一区二区三区在线观看| 午夜精品一区二区三区电影天堂| 成人av在线一区二区| 精品福利av导航| 日韩成人一级大片| 在线视频综合导航| 国产日本欧美一区二区| 美国精品在线观看| 欧美三级资源在线| 亚洲精品日产精品乱码不卡| 国产成人在线视频网站| 欧美mv日韩mv国产| 午夜精品久久久久久久蜜桃app| 不卡的电影网站| 国产亚洲欧美日韩日本| 麻豆精品国产传媒mv男同| 欧美日韩国产高清一区二区| 中文字幕在线不卡国产视频| 国产乱国产乱300精品| 欧美一级黄色录像| 天天av天天翘天天综合网| 在线亚洲欧美专区二区| 亚洲美女偷拍久久| 97se亚洲国产综合自在线观| 欧美国产丝袜视频| 国产成人超碰人人澡人人澡| 久久婷婷久久一区二区三区| 精品一区精品二区高清| 欧美成人官网二区| 国精产品一区一区三区mba桃花 | 亚洲免费观看高清完整版在线观看| 国产成人免费视频精品含羞草妖精| 日韩久久久精品| 极品少妇一区二区| 国产日产欧美精品一区二区三区|