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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mantischessstd.cpp

?? 象棋的小游戲
?? CPP
字號:
/***************************************************************
  MantisChessStd.cpp : MantisChess 標(biāo)準(zhǔn)函數(shù)

  版權(quán)所有(C)  陳成濤

  這一程序是自由軟件,你可以遵照自由軟件基金會出版的GNU通用公共
  許可證條款來修改和重新發(fā)布這一程序。或者用許可證的第二版,或者
  (根據(jù)你的選擇)用任何更新的版本。

  發(fā)布這一程序的目的是希望它有用,但沒有任何擔(dān)保。甚至沒有適合特
  定目的的隱含的擔(dān)保。更詳細(xì)的情況請參閱GNU通用公共許可證。
  
  你應(yīng)該已經(jīng)和程序一起收到一份GNU通用公共許可證的副本。
  如果還沒有,寫信給:

  The Free Software Foundation,Inc,,675 Mass Ave, Cambridge,
  MAO2139,USA

  如果你在使用本軟件時有什么問題或建議,用以下地址可以與我取得聯(lián)
  系:

              http://thecct.51.net

  或發(fā)Email到:

              stove@eyou.com
              thecct@163.com

------------------------------------------------------------------
  MantisChessStd.cpp : MantisChess standard functions

  Copyright (C)  Chen Chengtao, China
  
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.
  
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  
  If you have any question about this software please visit my hompage:

              http://thecct.51.net

  or E_mail to:

              stove@eyou.com
              thecct@163.com

******************************************************************/

#include "StdAfx.h"
#include "MantisChessDef.h"
#include "MantisChessStd.h"

/******************************************************************
CanGo:		判斷一步棋合不合法

參數(shù):
manmap:		棋位狀態(tài)
man:		所移動的棋子
from:		所移動的棋子原始位置
to:			所要移動到的位置

返回值:		合法返回TRUE,不合法返回FALSE
******************************************************************/
BOOL  CanGo(int manmap[11][12],int man,const POINT &from,const POINT &to)
{
	static int i,j;

	if(!IsNormal(ManToType[man],to))	//這個棋子不能放在目標(biāo)位置
	{
		//如果不是將/帥 (將/帥可以"照相")
		if(ManToType[man]!=RED_K&& ManToType[man]!=BLACK_K)return FALSE;

		else if(ManToType[man]==RED_K &&			//走的是帥
			ManToType[manmap[to.x][to.y]]==BLACK_K)	//目標(biāo)是將
		{
			BOOL flag=FALSE;
			for(j= from.y-1;j>0;j--)
			{
				if (manmap[from.x][j]!=32)
				{
					if(ManToType[manmap[from.x][j]]==BLACK_K)	//照相
						flag=TRUE;
					break;				
				}
			}
			if(flag)return TRUE;
			else return FALSE;
		}
		else if(ManToType[manmap[to.x][to.y]]==RED_K)	//走的是將,目標(biāo)是帥							
		{
			BOOL flag=FALSE;
			for(j= from.y+1;j<11;j++)
			{
				if (manmap[from.x][j]!=32)
				{
					if(ManToType[manmap[from.x][j]]==RED_K)	//照相
						flag=TRUE;	
					break;
				}
			}
			if(flag)return TRUE;
			else return FALSE;
		}
		else return FALSE;
	}

	//下面幾行判斷目標(biāo)點是否己方的棋子:
	if(SideOfMan[man]==0)
	{
		if(manmap[to.x][to.y]!=32&& SideOfMan[manmap[to.x][to.y]]==0)return FALSE;		
	}
	else if(SideOfMan[man]==1)
	{
		if(manmap[to.x][to.y]!=32&& SideOfMan[manmap[to.x][to.y]]==1)return FALSE;		
	}
	//--------------------------------

	//以下是各棋子的規(guī)則:
	switch(ManToType[man])	
		{
		case RED_B:
			//兵不回頭:
			if(to.y > from.y)return FALSE;
			//兵只走一步直線:
			if(from.y-to.y+abs(to.x-from.x)>1)return FALSE;	
			break;

		case BLACK_B:
			//卒不回頭:
			if(to.y < from.y)return FALSE;
			//卒只走一步直線:
			if(to.y-from.y+abs(to.x-from.x)>1)return FALSE;	
			break;

		case RED_S:
		case BLACK_S:
			//士走斜線一步:
			if(abs(from.y-to.y)>1||abs(to.x-from.x)>1)return FALSE;	
			break;

		case RED_X:
		case BLACK_X:
			//相走田:
			if(abs(from.x-to.x)!=2||abs(from.y-to.y)!=2)return FALSE;
			//相心:
			if(manmap[(from.x+to.x)/2][(from.y+to.y)/2]!=32)return FALSE;
			break;

		case RED_K:
		case BLACK_K:
			//將帥只走一步直線:
			if(abs(from.y-to.y)+abs(to.x-from.x)>1)return FALSE;
			break;

		case RED_J:
		case BLACK_J:
			//車只能走直線:
			if(from.y!=to.y&&from.x!=to.x)return FALSE;	
			//車經(jīng)過的路線中不能有棋子: -----------
			if(from.y==to.y)
			{
				if(from.x<to.x)
				{
					for(i=from.x+1;i<to.x;i++)
						if(manmap[i][from.y]!=32)return FALSE;
				}
				else
				{
					for(i=to.x+1;i<from.x;i++)
						if(manmap[i][from.y]!=32)return FALSE;
				}
			}
			else
			{
				if(from.y<to.y)
				{
					for(j=from.y+1;j<to.y;j++)
						if(manmap[from.x][j]!=32)return FALSE;
				}
				else
				{
					for(j=to.y+1;j<from.y;j++)
						if(manmap[from.x][j]!=32)return FALSE;
				}
			}
			//以上是車---------------------------------
			break;

		case RED_P:
		case BLACK_P:
			//炮只能走直線:
			if(from.y!=to.y&&from.x!=to.x)return FALSE;	
			//炮不吃子時經(jīng)過的路線中不能有棋子:------------------
			if(manmap[to.x][to.y]==32)
			{
				if(from.y==to.y)
				{
					if(from.x<to.x)
					{
						for(i=from.x+1;i<to.x;i++)
							if(manmap[i][from.y]!=32)return FALSE;
					}
					else
					{
						for(i=to.x+1;i<from.x;i++)
							if(manmap[i][from.y]!=32)return FALSE;
					}
				}
				else
				{
					if(from.y<to.y)
					{
						for(j=from.y+1;j<to.y;j++)
							if(manmap[from.x][j]!=32)return FALSE;
					}
					else
					{
						for(j=to.y+1;j<from.y;j++)
							if(manmap[from.x][j]!=32)return FALSE;
					}
				}
			}
			//以上是炮不吃子-------------------------------------
			//吃子時:=======================================
			else	
			{
				int count=0;
				if(from.y==to.y)
				{
					if(from.x<to.x)
					{
						for(i=from.x+1;i<to.x;i++)
							if(manmap[i][from.y]!=32)count++;
						if(count!=1)return FALSE;
					}
					else
					{
						for(i=to.x+1;i<from.x;i++)
							if(manmap[i][from.y]!=32)count++;
						if(count!=1)return FALSE;
					}
				}
				else
				{
					if(from.y<to.y)
					{
						for(j=from.y+1;j<to.y;j++)
							if(manmap[from.x][j]!=32)count++;
						if(count!=1)return FALSE;
					}
					else
					{
						for(j=to.y+1;j<from.y;j++)
							if(manmap[from.x][j]!=32)count++;
						if(count!=1)return FALSE;
					}
				}
			}
			//以上是炮吃子時================================
			break;	

		case RED_M:
		case BLACK_M:
			//馬走日:
			if(!(
				(abs(to.x-from.x)==1&&abs(to.y-from.y)==2)
				||(abs(to.x-from.x)==2&&abs(to.y-from.y)==1)
				))return FALSE;
			
			//找馬腳:
			if		(to.x-from.x==2){i=from.x+1;j=from.y;}
			else if	(from.x-to.x==2){i=from.x-1;j=from.y;}
			else if	(to.y-from.y==2){i=from.x;j=from.y+1;}
			else if	(from.y-to.y==2){i=from.x;j=from.y-1;}
			
			//絆馬腳:
			if(manmap[i][j]!=32)return FALSE;
			break;

		default:	
			break;
		}

	return TRUE;	//上面的規(guī)則全通過!
}

/******************************************************************
IsNormal:		mantype類型的棋子放在point位置是否合法

參數(shù):
mantype:		棋子類型
point:			位置

返回值:			合法返回TRUE,不合法返回FALSE
******************************************************************/
BOOL  IsNormal(const int & mantype,const POINT &point)
{
	if(point.x<1||point.x>9||point.y<1||point.y>10)return FALSE;
	switch(mantype)
	{
	case RED_K:	
		//帥不能在紅方宮外:
		if( point.x>6|| point.x<4|| point.y<8)return FALSE;
		break;

	case RED_S:	
		//仕只能在宮內(nèi)特定點:
		if(!(
			( point.x==4&& point.y==10)||
			( point.x==4&& point.y==8)||
			( point.x==5&& point.y==9)||
			( point.x==6&& point.y==10)||
			( point.x==6&& point.y==8)
			))return FALSE;
		break;

	case RED_X:
		//七個相位:
		if(!(
			( point.x==1&& point.y==8)||
			( point.x==3&& point.y==10)||
			( point.x==3&& point.y==6)||
			( point.x==5&& point.y==8)||
			( point.x==7&& point.y==10)||
			( point.x==7&& point.y==6)||
			( point.x==9&& point.y==8)
			))return FALSE;
		break;

	case RED_B:
		//兵不能在兵位后:
		if( point.y>7)return FALSE;
		//兵過河前不能左右移動:
		if( point.y>5&& point.x%2==0)return FALSE;
		break;

	case BLACK_K:
		//帥不能在紅方宮外:
		if( point.x>6|| point.x<4|| point.y>3)return FALSE;
		break;

	case BLACK_S:
		//仕只能在宮內(nèi)特定點:
		if(!(
			( point.x==4&& point.y==1)||
			( point.x==4&& point.y==3)||
			( point.x==5&& point.y==2)||
			( point.x==6&& point.y==1)||
			( point.x==6&& point.y==3)
			))return FALSE;
		break;

	case BLACK_X:
		//七個相位:
		if(!(
			( point.x==1&& point.y==3)||
			( point.x==3&& point.y==1)||
			( point.x==3&& point.y==5)||
			( point.x==5&& point.y==3)||
			( point.x==7&& point.y==1)||
			( point.x==7&& point.y==5)||
			( point.x==9&& point.y==3)
			))return FALSE;
		break;

	case BLACK_B:
		//兵不能在兵位后:
		if( point.y<4)return FALSE;
		//兵過河前不能左右移動:
		if( point.y<6&& point.x%2==0)return FALSE;
		break;

	default:
		break;
	}
	return TRUE;
}

/******************************************************************
FixManMap:		根據(jù)棋子坐標(biāo)計算棋位狀態(tài)

參數(shù):
map:			棋位狀態(tài)(存放結(jié)果)
manpoint:		棋子坐標(biāo)
side:			輪到哪一方走

返回值:			無
******************************************************************/
void  FixManMap(int map[11][12],POINT manpoint[32],int side)
{
	memcpy(map,_defaultmap,132*sizeof(int));

	static POINT * pman;
	static int i;
	for(i=0;i<32;i++)
	{
		pman = & manpoint[i];
		if(pman->x)
			map[pman->x][pman->y]=i;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷精品久久二区二区蜜臂av | 亚洲精品免费视频| 懂色av中文字幕一区二区三区| 精品美女被调教视频大全网站| 美女诱惑一区二区| 亚洲精品在线观看视频| 狠狠色丁香婷婷综合久久片| 久久久久国产成人精品亚洲午夜| 国产成人综合自拍| 亚洲欧美一区二区三区极速播放| 97se亚洲国产综合自在线| 亚洲一区二区三区四区在线观看| 欧美日韩dvd在线观看| 精品一区二区久久久| 日本一区二区免费在线观看视频| 99久久伊人精品| 一区二区三区精品视频在线| 欧美一区二区三区影视| 国产在线精品一区二区| 亚洲色欲色欲www| 欧美日韩视频一区二区| 久久不见久久见中文字幕免费| 欧美国产日韩在线观看| 在线观看一区不卡| 久久99最新地址| 亚洲色图制服诱惑 | 欧美成人一区二区| 懂色一区二区三区免费观看| 亚洲一区二区av在线| 日韩亚洲欧美在线观看| hitomi一区二区三区精品| 亚洲一区二区三区中文字幕在线| 欧美sm美女调教| 色婷婷综合激情| 美女mm1313爽爽久久久蜜臀| 亚洲婷婷国产精品电影人久久| 欧美精品一级二级| caoporn国产精品| 蜜臀av一级做a爰片久久| 中文字幕中文字幕在线一区 | 国产乱对白刺激视频不卡| 亚洲欧美日韩国产另类专区| 日韩精品中文字幕一区| 99热99精品| 国产麻豆成人传媒免费观看| 亚洲一级二级三级在线免费观看| xnxx国产精品| 欧美精品 日韩| 97精品国产露脸对白| 国产精品一品二品| 天堂资源在线中文精品| 亚洲同性gay激情无套| 久久精品人人做| 欧美一区二区三区在线电影| 欧美综合欧美视频| jlzzjlzz亚洲日本少妇| 国产毛片精品国产一区二区三区| 午夜欧美一区二区三区在线播放| 亚洲人吸女人奶水| 中文字幕 久热精品 视频在线 | 亚洲一二三四久久| 国产精品女人毛片| 久久亚洲精品国产精品紫薇| 欧美一区二区精美| 欧美日韩一区小说| 91豆麻精品91久久久久久| 成人免费高清视频在线观看| 国模大尺度一区二区三区| 免费不卡在线观看| 韩日av一区二区| 免费成人美女在线观看| 婷婷六月综合网| 亚洲一区二区成人在线观看| 亚洲精品视频在线看| 中文字幕日韩av资源站| 国产欧美一区二区精品忘忧草| 久久香蕉国产线看观看99| 日韩欧美第一区| 日韩精品一区二区在线观看| 欧美一区二区三区四区在线观看| 欧美日韩激情一区| 欧美精品在线一区二区三区| 欧美精品三级日韩久久| 777精品伊人久久久久大香线蕉| 欧美日韩的一区二区| 欧美日韩三级在线| 56国语精品自产拍在线观看| 欧美一区二区免费| 精品国产乱码91久久久久久网站| 2021久久国产精品不只是精品| 26uuu欧美日本| 亚洲国产经典视频| 亚洲日本一区二区| 亚洲国产va精品久久久不卡综合| 日韩国产欧美三级| 久久国产尿小便嘘嘘| 国产精品一区久久久久| 成人激情午夜影院| 欧亚洲嫩模精品一区三区| 欧美日韩成人在线| 久久众筹精品私拍模特| 国产欧美久久久精品影院| 亚洲欧美在线高清| 亚欧色一区w666天堂| 麻豆一区二区三| 国产成人精品在线看| 色吊一区二区三区 | 精品国产露脸精彩对白 | 亚洲天堂成人在线观看| 亚洲一区二区中文在线| 久久成人免费电影| 99久久99精品久久久久久| 欧美精品在线一区二区| 国产亲近乱来精品视频| 亚洲六月丁香色婷婷综合久久 | 在线欧美小视频| 欧美不卡激情三级在线观看| 国产精品网站导航| 日韩二区在线观看| 东方欧美亚洲色图在线| 欧洲日韩一区二区三区| 26uuu亚洲综合色欧美| 一区二区久久久久久| 麻豆91在线播放| 91视频精品在这里| 欧美成人高清电影在线| 亚洲精品综合在线| 久久er99精品| 欧美性猛交xxxxxx富婆| 亚洲国产精品99久久久久久久久| 亚洲18色成人| 99久久99久久精品免费观看| 精品欧美一区二区三区精品久久| 亚洲三级在线免费| 狠狠网亚洲精品| 欧美肥胖老妇做爰| 亚洲欧美日韩国产综合在线 | 首页亚洲欧美制服丝腿| 成人免费视频app| 这里只有精品免费| 亚洲女子a中天字幕| 国产精品伊人色| 91麻豆精品久久久久蜜臀| 亚洲天堂福利av| 懂色av一区二区三区免费观看| 日韩欧美中文一区| 午夜视频一区在线观看| 91在线小视频| 国产欧美一区视频| 国产一区二区在线视频| 日韩一区二区免费在线电影 | 日韩一区二区在线免费观看| 亚洲卡通欧美制服中文| 岛国一区二区三区| 久久久久综合网| 久久精品国产成人一区二区三区| 欧美亚洲综合色| 亚洲免费资源在线播放| 99久久精品国产一区| 国产精品无遮挡| 国产一区二区三区最好精华液| 日韩限制级电影在线观看| 天天射综合影视| 欧美美女一区二区在线观看| 亚洲国产成人精品视频| 日本电影欧美片| 一区二区欧美精品| 在线日韩av片| 亚洲成人动漫av| 欧美日韩精品一二三区| 五月婷婷综合在线| 欧美视频一区在线观看| 亚洲午夜精品网| 欧美狂野另类xxxxoooo| 天天影视涩香欲综合网| 欧美一级在线视频| 美国毛片一区二区| 日韩一卡二卡三卡国产欧美| 捆绑变态av一区二区三区| 欧美电影精品一区二区| 久草精品在线观看| 久久久99免费| 波多野结衣的一区二区三区| 国产精品色一区二区三区| voyeur盗摄精品| 亚洲高清免费观看高清完整版在线观看| 91国偷自产一区二区开放时间| 亚洲综合一区在线| 宅男在线国产精品| 激情丁香综合五月| 中文字幕中文在线不卡住| 91丨porny丨最新| 亚洲国产精品久久人人爱蜜臀| 欧美亚洲高清一区| 美国三级日本三级久久99| 亚洲国产精品高清| 欧洲av一区二区嗯嗯嗯啊| 美女脱光内衣内裤视频久久网站| 久久综合精品国产一区二区三区| kk眼镜猥琐国模调教系列一区二区 |