excel版中国象棋
- 格式:xlsx
- 大小:23.39 KB
- 文档页数:6
国际象棋记录比赛名称日期地点白方用时时限胜方黑方用时轮台Record of ChessEvent Date SiteWhite Used Limit WinnerBlack Used Round Table一、棋盘与棋子图1-1 棋盘与棋子囯际象棋的棋盘为正方形,由32个深色和32个浅色方格交替排列组成。
每边8个方格。
浅色棋格称为“白格”,深色棋格称为“黑格”,摆放棋盘时要使每位棋手的右下角为白格。
囯际象棋的棋子也分为两种颜色:浅色棋子称为“白棋”,执白棋的棋手称为“白方”;深色棋子称为“黑棋”,执黑棋的棋手称为“黑方”。
对弈双方各有16枚棋子,分别为一个国王、一个皇后、两个车(城堡)、两个象(主教)、两个马(骑士)和八个士兵。
开局时即全部放在棋盘上规定的棋格内,特别注意:白后放在白格里,黑后放在黑格里。
棋局由白方先下,对奕双方轮流移动棋盘上既有的己方棋子,一步棋只能移动一个棋子(唯一的例外是“王车易位”,是在一步棋同时移动王和车)。
棋子要不就是移动到未被占据的棋格,要不就是占据对方棋子所在的棋格,并将对方棋子拿出棋盘,称为“吃子”(这也有一个例外是“吃过路兵”,己方的兵是落在对方被吃兵的后一格)。
一个棋格内只能有一个棋子,棋子也不可重叠。
二、棋子的走法1)王(King)的走法又称“国王”,王是整个棋局中最为重要的棋子,它是不能被吃的。
走法是横、直、斜走均可,但每次只能走一格。
另外,所走到的位置不可有对方棋子的威胁,否则会被视为“违规移动”。
吃子与走法相同。
(见图2-1)图2-1 王的走法图2-2 后的走法图2-3 车的走法2)后(Queen)的走法又称“皇后”。
走法是横、直、斜走均可,格数不限,但不可越过其他棋子。
吃子和走法相同。
(见图2-2)3)车(Rook)的走法又称“城堡”,一如中国象棋,车的走法是横走或直走,格数不限,但不可斜走,也不可越过其他棋子。
吃子与走法相同,另外有一种特殊的走法,称作“王车易位”。
《E xcel公式与常用函数》说课稿课题内容:邮电出版社2009版中职教材《计算机应用基础》第五章第3节《公式运算、使用函数》。
一、教材分析:(一)、本课教材在学科中所处的地位和作用:本节内容是学生在学习了Excel数据输入和表格格式化及自动填充柄等知识的基础上引入的一节操作实践以及探究课,本节内容同时又是今后学生学习数据排序、筛选、汇总和制作图表等后续知识的基础,因此本节内容处于核心地位,在整章教材中承前接后,有重要作用。
通过本节课学习,学生主要掌握Excel的初步数据处理知识,了解探索数据处理问题的公式或函数运算方法,初步学会运用公式与函数知识解决简单数学问题的方法。
学生能获得Excel数据处理能力,增强计算机应用的实际动手能力。
(二)、教学目标的确定:依据《课程标准》要求、本节教材特点以及学生现有的认知水平,确定本节课的教学目标为:1、知识与技能目标1) 全部学生理解Excel中公式的作用,掌握公式的输入编写;2)A、B层学生能理解“常用函数”中sum、average、if、today各函数的表达方式和作用。
2、过程与方法目标:1) 巩固“自动填充柄”应用,学会利用Excel表格收集信息,利用公式处理简单数据问题的能力。
2) 学生通过接受学习与自主学习结合,合作探究,学会分析Excel数据并进行初步处理的能力。
学会计算一块数据的总和(sum)、平均值(average)、以及进行初步条件判断(if)。
3、情感态度与价值观目标1) 学会趣味性地利用函数today调用当前电脑时间。
通过对Excel公式函数数据处理的了解后,延伸到有趣的Excel程序宏编写的游戏程序,学生通过学习,感悟计算机世界知识的浩渺与乐趣,激发自身学习的积极性和增强探索新知的精神;2) 学生通过提供的延伸在线Excel学习园地,拓宽视野,增强网络时代的合作学习、网络在线学习、智慧共享等信息素养。
(三)、教学重点,难点的确定:依据课程要求和本节教材实际,并结合学生的实际,本节课主要是让学生理解运用公式和常用函数进行数据初步处理,所以本节课的重点是常用函数的使用。
中国象棋初级教程pdf一、象棋的起源和概况中国象棋,是中国特有的一种棋类游戏。
在中国久负盛名,历史悠久,源远流长。
象棋最早起源于古印度,传入中国后,经过漫长的发展演变,形成了独具特色的中国象棋。
象棋是一种对抗性很强的思维游戏,游戏中双方各执一方,通过运用巧妙的策略和战术,争取捉对方的将帅,以取得最后的胜利。
二、象棋棋盘和棋子1. 棋盘象棋棋盘是一个方形的棋盘,横竖线各九条,共有八十一个交点,被称为“九宫格”。
每个棋子移动都是沿着格线进行的。
2. 棋子象棋共有二十四枚棋子,分为红黑两方,各有兵、炮、车、马、象、士和将/帅七类。
每类棋子有不同的走法和特点。
三、棋子的走法1. 将军将/帅是象棋中最重要的棋子,也是最终决胜的关键。
将/帅的走法是可以上下左右移动一个格子,且不可出九宫格。
两个将/帅不能直接对决,对决时处于对杀状态。
2. 士和象士和象的走法比较相似,都只能斜走;士在九宫格内活动,而象的移动范围则更广泛。
士和象都不能过河。
3. 车和马车的走法是可横走或竖走,但不能斜走,且无走棋方格的限制;马的走法为走日,即走一横一竖或一竖一横,棋盘上有一个格子堵住。
4. 炮和兵炮的走法是直线行进,吃子时需隔一子跳过,称为炮打;兵的走法是一次只能直走一步,过河后可左右移动,而后退时只可直着走。
四、象棋的基本策略1. 进攻在象棋中,进攻是取胜的关键。
要勇于进攻对方,寻找有利位置,使用各类棋子的特点,巧妙布局,制造杀招,逼对方无法回避。
2. 防守防守是保护自己的关键,要时刻留心对方的进攻,防止被对方吃掉要紧要的棋子。
巧妙运用自己的棋子,保持棋局的稳定。
3. 逼将逼将是一种逼迫对方的将/帅到一个角落,使其无法躲避攻击。
逼将需要综合运用各种棋子走法,形成合理的攻击,实现将/帅无处可逃。
五、象棋的学习方法要想提高象棋水平,需要不断的学习和练习。
可以从基本走棋规则开始,逐步提高对各类棋子的认识和运用,掌握各种基本棋局和战术,多与高手对弈,经验互惠。
Excel制作象棋vba源代码' The algorithm of judge and urgentpoint function are exported from one VC program which I downloaded from web.' Sorry I can't remebered the program and the author name.' The original VC program have three options for different level. I simplized it to the hardest one in this VBA sample.'Dim m_Board(17, 17) As IntegerPrivate Type Cpointx As Integery As IntegerEnd TypeDim m_nType As IntegerDim iWho As IntegerPrivate Sub Excelba_Click()End SubPrivate Sub cmdStart_Click()Cells(17, 1) = "Start"Cells(17, 3) = 0 ' total number of stones'clear the boardRange(Cells(17 + 1, 1), Cells(17 + 15, 15)).Value = 0'clear all picture in this sheet except for two orginal pictureFor Each ipic In ActiveSheet.ShapesIf <> "Picture 9" And <> "Picture 10" And Left(, 7) = "Picture" Thenipic.DeleteEnd IfNext'start itIf optComputer.Value = True ThenCall drawit(8, 8, 1)Call setarray(8, 8, 1)Cells(17, 3) = 1End IfEnd SubPrivate Sub optComputer_Click()Cells(17, 1) = ""Cells(17, 2) = 2Cells(17, 3) = 0End SubPrivate Sub optYou_Click()Cells(17, 1) = ""Cells(17, 2) = 1Cells(17, 3) = 0End SubPrivate Function confArray(ix As Integer, iy As Integer) As IntegerconfArray = Cells(17 + ix, iy)End FunctionPrivate Sub setarray(ix As Integer, iy As Integer, iz As Integer)Cells(17 + ix, iy) = izEnd SubPrivate Sub drawit(ix As Integer, iy As Integer, iz As Integer)Dim strP As StringIf ix < 1 Or ix > 15 Or iy < 1 Or iy > 15 Or iz < 1 Or iz > 2 ThenMsgBox "Wrong Entry Number, please check it!", vbCritical, "Wrong Entry"EndEnd IfIf iz = 1 ThenstrP = "Picture 9"ElseIf iz = 2 ThenstrP = "Picture 10"End IfApplication.ScreenUpdating = FalseActiveSheet.Shapes(strP).SelectSelection.CopyCells(16, 4).SelectActiveSheet.Paste-(Selection.Left - Cells(ix, iy).Left) + 1-(Selection.Top - Cells(ix, iy).Top) + 1Cells(17, 4).SelectApplication.ScreenUpdating = TrueEnd SubPrivate Function UrgentPoint(ByVal iz As Integer) As StringDim i, i0, j, j0 As IntegerDim ptUrgent(2025) As CpointDim nGrade1 As IntegerDim nGrade2 As IntegerDim nUrgent1 As IntegerDim nUrgent2 As IntegerDim nUrgent As IntegerDim iEnd As IntegerDim iStep As IntegerDim jEnd As IntegerDim jStep As IntegerFor i = 0 To 2024ptUrgent(i).x = -1ptUrgent(i).y = -1Next iIf ((Rnd() * 32767) Mod 2) = 0 Theni0 = 0Elsei0 = 14End IfIf i0 = 0 TheniEnd = 14iStep = 1ElseiEnd = 0iStep = -1End IfFor i = i0 To iEnd Step iStepIf ((Rnd() * 32767) Mod 2) = 0 Thenj0 = 0Elsej0 = 14End IfIf j0 = 0 ThenjEnd = 14jStep = 1ElsejEnd = 0jStep = -1End IfFor j = j0 To jEnd Step jStepIf (m_Board(i, j) = 0) ThennGrade1 = Judge(i, j, iz)nGrade2 = Judge(i, j, iz + 1)Select Case (nGrade1)Case 0nUrgent1 = 0Case 1nUrgent1 = 2Case 2nUrgent1 = 4Case 3nUrgent1 = 5Case 4nUrgent1 = 8Case 5nUrgent1 = 10Case 6nUrgent1 = 11nUrgent1 = 12 Case 8nUrgent1 = 13 Case 9nUrgent1 = 14 Case 10nUrgent1 = 15 Case 11nUrgent1 = 16 Case 12nUrgent1 = 17 Case 13nUrgent1 = 18 Case 14nUrgent1 = 19 Case 15nUrgent1 = 20 Case 16nUrgent1 = 32 Case 17nUrgent1 = 34 Case 18nUrgent1 = 36 Case 19nUrgent1 = 38 Case 20nUrgent1 = 40 Case ElsenUrgent1 = 40 End SelectSelect Case (nGrade2)Case 0nUrgent2 = 1 Case 1nUrgent2 = 3 Case 2nUrgent2 = 6 Case 3nUrgent2 = 7 Case 4nUrgent2 = 9 Case 5nUrgent2 = 21nUrgent2 = 22Case 7nUrgent2 = 23Case 8nUrgent2 = 24Case 9nUrgent2 = 25Case 10nUrgent2 = 26Case 11nUrgent2 = 27Case 12nUrgent2 = 28Case 13nUrgent2 = 29Case 14nUrgent2 = 30Case 15nUrgent2 = 31Case 16nUrgent2 = 33Case 17nUrgent2 = 35Case 18nUrgent2 = 37Case 19nUrgent2 = 39Case 20nUrgent2 = 41Case ElsenUrgent2 = 41End SelectnUrgent = WorksheetFunction.Min(nUrgent1, nUrgent2) * 45 + WorksheetFunction.Max(nUrgent1, nUrgent2)ptUrgent(nUrgent).x = iptUrgent(nUrgent).y = jEnd IfNext jNext iFor i = 0 To 2024If ((ptUrgent(i).x <> -1) And (ptUrgent(i).y <> -1)) ThenExit ForEnd IfNext iIf (ptUrgent(i).x = -1 And ptUrgent(i).y = -1) ThenMsgBox "Make Draw"End IfUrgentPoint = ptUrgent(i).x & "|" & ptUrgent(i).yEnd FunctionPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)Dim ix As IntegerDim iy As IntegerDim iz As IntegerDim ix1 As IntegerDim iy1 As IntegerDim stmp As StringDim i As IntegerDim j As IntegerIf > 1 Or Target.Areas(1).Columns.Count > 1 Or Target.Areas(1).Rows.Count > 1 Then Exit SubEnd Ifix = Target.Areas(1).Rowiy = Target.Areas(1).Columniz = confArray(ix, iy)If ix > 15 Or iy > 15 ThenExit SubEnd IfIf iz <> 1 And iz <> 2 And Cells(17, 1) = "Start" ThenFor i = 0 To 14For j = 0 To 14m_Board(j, i) = Cells(17 + i + 1, j + 1)Next jNext iCall drawit(ix, iy, 2)Call setarray(ix, iy, 2)m_Board(iy - 1, ix - 1) = 2Call Judge(iy - 1, ix - 1, 2)Call ringIf Cells(17, 1) = "Start" Thenstmp = UrgentPoint(1)iy1 = Left(stmp, InStr(1, stmp, "|") - 1)ix1 = Mid(stmp, InStr(1, stmp, "|") + 1)Call drawit(ix1 + 1, iy1 + 1, 1)Call setarray(ix1 + 1, iy1 + 1, 1)m_Board(iy1, ix1) = 1Call Judge(iy1, ix1, 1)Call ringEnd IfEnd IfEnd SubPrivate Function Judge(ByVal nX As Integer, ByVal nY As Integer, ByVal cValue As Integer) As IntegerDim nGrade As IntegerDim i As IntegerDim j As IntegerDim k As IntegerDim l As IntegerDim nXStart As IntegerDim nXEnd As IntegerDim nYStart As IntegerDim nYEnd As IntegerDim nXYStart As IntegerDim nXYEnd As IntegerDim nYXStart As IntegerDim nYXEnd As IntegerDim nXStartAdd As IntegerDim nYStartAdd As IntegerDim nXYStartAdd As IntegerDim nYXStartAdd As IntegerDim nXEndAdd As IntegerDim nYEndAdd As IntegerDim nXYEndAdd As IntegerDim nYXEndAdd As IntegerDim bXStartEmpty As BooleanDim bXEndEmpty As BooleanDim bXStartEmpty1 As BooleanDim bXEndEmpty1 As BooleanDim bYStartEmpty As BooleanDim bYEndEmpty As BooleanDim bYStartEmpty1 As BooleanDim bYEndEmpty1 As BooleanDim bXYStartEmpty As BooleanDim bXYEndEmpty As BooleanDim bXYStartEmpty1 As BooleanDim bXYEndEmpty1 As BooleanDim bYXStartEmpty As BooleanDim bYXEndEmpty As BooleanDim bYXStartEmpty1 As BooleanDim bYXEndEmpty1 As BooleannXStart = nXnXEnd = nXnYStart = nYnYEnd = nYnXYStart = nXnXYEnd = nXnYXStart = nXnYXEnd = nXnXStartAdd = 0nYStartAdd = 0nXYStartAdd = 0nYXStartAdd = 0nXEndAdd = 0nYEndAdd = 0nXYEndAdd = 0nYXEndAdd = 0bXStartEmpty = FalsebYStartEmpty = FalsebXYStartEmpty = FalsebYXStartEmpty = FalsebXEndEmpty = FalsebYEndEmpty = FalsebXYEndEmpty = FalsebYXEndEmpty = FalsebXStartEmpty1 = FalsebYStartEmpty1 = FalsebXYStartEmpty1 = FalsebYXStartEmpty1 = FalsebXEndEmpty1 = FalsebYEndEmpty1 = FalsebXYEndEmpty1 = FalsebYXEndEmpty1 = FalseFor i = nX - 1 To 0 Step -1 ' <-If m_Board(i, nY) = cV alue ThennXStart = iElseIf m_Board(i, nY) = 0 ThenbXStartEmpty = TrueFor j = i - 1 To 0 Step -1 ' <-If m_Board(j, nY) = cValue ThennXStartAdd = i - jElseIf m_Board(j, nY) = 0 ThenbXStartEmpty1 = TrueExit ForElseExit ForEnd IfNext jExit ForElseExit ForEnd IfNext iFor i = nX + 1 To 14 ' ->If m_Board(i, nY) = cV alue ThennXEnd = iElseIf m_Board(i, nY) = 0 ThenbXEndEmpty = TrueFor j = i + 1 To 14 ' ->If m_Board(j, nY) = cValue ThennXEndAdd = j - iElseIf m_Board(j, nY) = 0 ThenbXEndEmpty1 = TrueExit ForElseExit ForEnd IfNext jExit ForElseExit ForEnd IfNext iFor i = nY - 1 To 0 Step -1 ' ^|^If m_Board(nX, i) = cV alue ThennYStart = iElseIf m_Board(nX, i) = 0 ThenbYStartEmpty = TrueFor j = i - 1 To 0 Step -1 ' <-If m_Board(nX, j) = cValue ThennYStartAdd = i - jElseIf m_Board(nX, j) = 0 ThenbYStartEmpty1 = TrueExit ForElseExit ForEnd IfNext jExit ForElseExit ForEnd IfNext iFor i = nY + 1 To 14 ' v|vIf m_Board(nX, i) = cV alue ThennYEnd = iElseIf m_Board(nX, i) = 0 ThenbYEndEmpty = TrueFor j = i + 1 To 14 ' ->If m_Board(nX, j) = cValue ThennYEndAdd = j - iElseIf m_Board(nX, j) = 0 ThenbYEndEmpty1 = TrueExit ForElseExit ForEnd IfNext jExit ForElseExit ForEnd IfNext ii = nX - 1j = nY + 1Do While i >= 0 And j < 15'j++If m_Board(i, j) = cValue ThennXYStart = iElseIf m_Board(i, j) = 0 ThenbXYStartEmpty = Truek = i - 1l = j + 1Do While k >= 0 And l < 15If m_Board(k, l) = cValue ThennXYStartAdd = i - kElseIf m_Board(k, l) = 0 ThenbXYStartEmpty1 = TrueExit DoElseExit DoEnd Ifk = k - 1l = l + 1LoopElseExit DoEnd Ifi = i - 1j = j + 1Loopi = nX + 1j = nY - 1Do While i < 15 And j >= 0'j--If m_Board(i, j) = cValue ThennXYEnd = iElseIf m_Board(i, j) = 0 ThenbXYEndEmpty = Truek = i + 1l = j - 1Do While l >= 0 And k < 15If m_Board(k, l) = cValue ThennXYEndAdd = i - kElseIf m_Board(k, l) = 0 ThenbXYEndEmpty1 = TrueExit DoElseExit DoEnd Ifk = k + 1l = l - 1LoopExit DoElseExit DoEnd Ifi = i + 1j = j - 1Loopi = nX - 1j = nY - 1Do While i >= 0 And j >= 0'j--If m_Board(i, j) = cValue ThennYXStart = iElseIf m_Board(i, j) = 0 ThenbYXStartEmpty = Truel = j - 1Do While l >= 0 And k >= 0If m_Board(k, l) = cValue ThennYXStartAdd = i - kElseIf m_Board(k, l) = 0 ThenbYXStartEmpty1 = TrueExit DoElseExit DoEnd Ifk = k - 1l = l - 1LoopExit DoElseExit DoEnd Ifi = i - 1j = j - 1Loopi = nX + 1j = nY + 1Do While i < 15 And j < 15'j--If m_Board(i, j) = cValue ThennYXEnd = iElseIf m_Board(i, j) = 0 ThenbYXEndEmpty = Truek = i - 1l = j - 1Do While l < 15 And k < 15If m_Board(k, l) = cValue ThennYXEndAdd = i - kElseIf m_Board(k, l) = 0 ThenbYXEndEmpty1 = TrueExit DoElseExit DoEnd Ifk = k + 1l = l + 1LoopExit DoElseExit DoEnd Ifi = i + 1j = j + 1LoopnXStep = nXEnd - nXStart + 1nXStep = nXEnd - nXStart + 1nYStep = nYEnd - nYStart + 1nXYStep = nXYEnd - nXYStart + 1nYXStep = nYXEnd - nYXStart + 1Dim bX_4 As BooleanDim bY_4 As BooleanDim bXY_4 As BooleanDim bYX_4 As BooleanDim bX4 As BooleanDim bY4 As BooleanDim bXY4 As BooleanDim bYX4 As BooleanbX_4 = (nXStep = 4) And (bXStartEmpty And bXEndEmpty)bY_4 = (nYStep = 4) And (bYStartEmpty And bYEndEmpty)bXY_4 = (nXYStep = 4) And (bXYStartEmpty And bXYEndEmpty) bYX_4 = (nYXStep = 4) And (bYXStartEmpty And bYXEndEmpty) bX4 = (nXStep = 4) And (bXStartEmpty Or bXEndEmpty)bY4 = (nYStep = 4) And (bYStartEmpty Or bYEndEmpty)bXY4 = (nXYStep = 4) And (bXYStartEmpty Or bXYEndEmpty) bYX4 = (nYXStep = 4) And (bYXStartEmpty Or bYXEndEmpty) Dim bX_3 As BooleanDim bY_3 As BooleanDim bXY_3 As BooleanDim bYX_3 As BooleanDim bX3 As BooleanDim bY3 As BooleanDim bXY3 As BooleanDim bYX3 As BooleanbX_3 = (nXStep = 3) And (bXStartEmpty And bXEndEmpty)bY_3 = (nYStep = 3) And (bYStartEmpty And bYEndEmpty)bXY_3 = (nXYStep = 3) And (bXYStartEmpty And bXYEndEmpty) bYX_3 = (nYXStep = 3) And (bYXStartEmpty And bYXEndEmpty) bX3 = (nXStep = 3) And (bXStartEmpty Or bXEndEmpty)bY3 = (nYStep = 3) And (bYStartEmpty Or bYEndEmpty)bXY3 = (nXYStep = 3) And (bXYStartEmpty Or bXYEndEmpty) bYX3 = (nYXStep = 3) And (bYXStartEmpty Or bYXEndEmpty) Dim bX_2 As BooleanDim bY_2 As BooleanDim bXY_2 As BooleanDim bYX_2 As BooleanDim bX2 As BooleanDim bY2 As BooleanDim bXY2 As BooleanDim bYX2 As BooleanbX_2 = (nXStep = 2) And (bXStartEmpty And bXEndEmpty)bY_2 = (nYStep = 2) And (bYStartEmpty And bYEndEmpty)bXY_2 = (nXYStep = 2) And (bXYStartEmpty And bXYEndEmpty) bYX_2 = (nYXStep = 2) And (bYXStartEmpty And bYXEndEmpty) bX2 = (nXStep = 2) And (bXStartEmpty Or bXEndEmpty)bY2 = (nYStep = 2) And (bYStartEmpty Or bYEndEmpty)bXY2 = (nXYStep = 2) And (bXYStartEmpty Or bXYEndEmpty) bYX2 = (nYXStep = 2) And (bYXStartEmpty Or bYXEndEmpty) Dim bX_1 As BooleanDim bY_1 As BooleanDim bXY_1 As BooleanDim bYX_1 As BooleanbX_1 = (nXStep = 1) And (bXStartEmpty And bXEndEmpty)bY_1 = (nYStep = 1) And (bYStartEmpty And bYEndEmpty)bXY_1 = (nXYStep = 1) And (bXYStartEmpty And bXYEndEmpty) bYX_1 = (nYXStep = 1) And (bYXStartEmpty And bYXEndEmpty) Dim nXAdd As IntegerDim nYAdd As IntegerDim nXYAdd As IntegerDim nYXAdd As IntegernXAdd = 0nYAdd = 0nXYAdd = 0nYXAdd = 0If nXEndAdd >= nXStartAdd ThennXAdd = nXEndAddbXEndEmpty = bXEndEmpty1ElsenXAdd = nXStartAddbXStartEmpty = bXStartEmpty1End IfIf (nYEndAdd >= nYStartAdd) ThennYAdd = nYEndAddbYEndEmpty = bYEndEmpty1ElsenYAdd = nYStartAddbYStartEmpty = bYStartEmpty1End IfIf (nXYEndAdd >= nXYStartAdd) ThennXYAdd = nXYEndAddbXYEndEmpty = bXYEndEmpty1ElsenXYAdd = nXYStartAddbXYStartEmpty = bXYStartEmpty1End IfIf (nYXEndAdd >= nYXStartAdd) ThennYXAdd = nYXEndAddbYXEndEmpty = bYXEndEmpty1ElsenYXAdd = nYXStartAddbYXStartEmpty = bYXStartEmpty1End IfDim b1X_4 As BooleanDim b1Y_4 As BooleanDim b1XY_4 As BooleanDim b1YX_4 As BooleanDim b1X4 As BooleanDim b1Y4 As BooleanDim b1XY4 As BooleanDim b1YX4 As Booleanb1X_4 = (nXStep + nXAdd >= 4) And (bXStartEmpty And bXEndEmpty)b1Y_4 = (nYStep + nY Add >= 4) And (bYStartEmpty And bYEndEmpty)b1XY_4 = (nXYStep + nXYAdd >= 4) And (bXYStartEmpty And bXYEndEmpty) b1YX_4 = (nYXStep + nYXAdd >= 4) And (bYXStartEmpty And bYXEndEmpty) b1X4 = (nXStep + nXAdd >= 4) And (bXStartEmpty Or bXEndEmpty)b1Y4 = (nYStep + nY Add >= 4) And (bYStartEmpty Or bYEndEmpty)b1XY4 = (nXYStep + nXY Add >= 4) And (bXYStartEmpty Or bXYEndEmpty)b1YX4 = (nYXStep + nYXAdd >= 4) And (bYXStartEmpty Or bYXEndEmpty) Dim b1X_3 As BooleanDim b1Y_3 As BooleanDim b1XY_3 As BooleanDim b1YX_3 As Booleanb1X_3 = (nXStep + nXAdd >= 3) And (bXStartEmpty And bXEndEmpty)b1Y_3 = (nYStep + nY Add >= 3) And (bYStartEmpty And bYEndEmpty)b1XY_3 = (nXYStep + nXYAdd >= 3) And (bXYStartEmpty And bXYEndEmpty) b1YX_3 = (nYXStep + nYXAdd >= 3) And (bYXStartEmpty And bYXEndEmpty) m_nType = -1'////////If (nXStep >= 5) Or (nYStep >= 5) Or (nXYStep >= 5) Or (nYXStep >= 5) Then nGrade = 0m_nType = 0ElseIf (bX_4 Or bY_4 Or bXY_4 Or bYX_4) ThennGrade = 1m_nType = 1ElseIf ((bX4 And (bY4 Or bXY4 Or bYX4 Or b1Y4 Or b1XY4 Or b1YX4)) Or _(bY4 And (bX4 Or bXY4 Or bYX4 Or b1X4 Or b1XY4 Or b1YX4)) Or _(bXY4 And (bY4 Or bX4 Or bYX4 Or b1Y4 Or b1X4 Or b1YX4)) Or _(bYX4 And (bY4 Or bXY4 Or bX4 Or b1Y4 Or b1XY4 Or b1X4)) Or _(b1X4 And (bY4 Or bXY4 Or bYX4 Or b1Y4 Or b1XY4 Or b1YX4)) Or _(b1Y4 And (bX4 Or bXY4 Or bYX4 Or b1X4 Or b1XY4 Or b1YX4)) Or _(b1XY4 And (bY4 Or bX4 Or bYX4 Or b1Y4 Or b1X4 Or bYX4)) Or _(b1YX4 And (bY4 Or bXY4 Or bX4 Or b1Y4 Or b1XY4 Or b1X4))) Then nGrade = 2m_nType = 1ElseIf ((bX4 And (bY_3 Or bXY_3 Or bYX_3 Or b1Y_3 Or b1XY_3 Or b1YX_3)) Or _ (bY4 And (bX_3 Or bXY_3 Or bYX_3 Or b1X_3 Or b1XY_3 Or b1YX_3)) Or _(bXY4 And (bY_3 Or bX_3 Or bYX_3 Or b1Y_3 Or b1X_3 Or b1YX_3)) Or _(bYX4 And (bY_3 Or bXY_3 Or bX_3 Or b1Y_3 Or b1XY_3 Or b1X_3)) Or _(b1X4 And (bY_3 Or bXY_3 Or bYX_3 Or b1Y_3 Or b1XY_3 Or b1YX_3)) Or _(b1Y4 And (bX_3 Or bXY_3 Or bYX_3 Or b1X_3 Or b1XY_3 Or b1YX_3)) Or _(b1XY4 And (bY_3 Or bX_3 Or bYX_3 Or b1Y_3 Or b1X_3 Or b1YX_3)) Or _(b1YX4 And (bY_3 Or bXY_3 Or bX_3 Or b1Y_3 Or b1XY_3 Or b1X_3))) ThennGrade = 3m_nType = 1ElseIf ((bX_3 And (bY_3 Or bXY_3 Or bYX_3 Or b1Y_3 Or b1XY_3 Or b1YX_3)) Or _ (bY_3 And (bX_3 Or bXY_3 Or bYX_3 Or b1X_3 Or b1XY_3 Or b1YX_3)) Or _(bXY_3 And (bY_3 Or bX_3 Or bYX_3 Or b1Y_3 Or b1X_3 Or b1YX_3)) Or _(bYX_3 And (bY_3 Or bXY_3 Or bX_3 Or b1Y_3 Or b1XY_3 Or b1X_3)) Or _(b1X_3 And (bY_3 Or bXY_3 Or bYX_3 Or b1Y_3 Or b1XY_3 Or b1YX_3)) Or _(b1Y_3 And (bX_3 Or bXY_3 Or bYX_3 Or b1X_3 Or b1XY_3 Or b1YX_3)) Or _(b1XY_3 And (bY_3 Or bX_3 Or bYX_3 Or b1Y_3 Or b1X_3 Or b1YX_3)) Or _(b1YX_3 And (bY_3 Or bXY_3 Or bX_3 Or b1Y_3 Or b1XY_3 Or b1X_3))) ThennGrade = 4m_nType = 2ElseIf ((bXY4 And (bYX_2 Or bY_2 Or bX_2)) Or _(bYX4 And (bXY_2 Or bY_2 Or bX_2)) Or _(bX4 And (bXY_2 Or bYX_2 Or bY_2)) Or _(bY4 And (bXY_2 Or bYX_2 Or bX_2))) ThennGrade = 5m_nType = 1ElseIf ((bXY4 And (bYX3 Or bY3 Or bX3)) Or _(bYX4 And (bXY3 Or bY3 Or bX3)) Or _(bX4 And (bXY3 Or bYX3 Or bY3)) Or _(bY4 And (bXY3 Or bYX3 Or bX3))) Then nGrade = 6m_nType = 1ElseIf ((bXY4 And (bYX_1 Or bY_1 Or bX_1)) Or _(bYX4 And (bXY_1 Or bY_1 Or bX_1)) Or _(bX4 And (bXY_1 Or bYX_1 Or bY_1)) Or _(bY4 And (bXY_1 Or bYX_1 Or bX_1))) Then nGrade = 7m_nType = 2ElseIf ((bXY4 And (bYX2 Or bY2 Or bX2)) Or _(bYX4 And (bXY2 Or bY2 Or bX2)) Or _(bX4 And (bXY2 Or bYX2 Or bY2)) Or _(bY4 And (bXY2 Or bYX2 Or bX2))) Then nGrade = 8m_nType = 1ElseIf (bXY4 Or bYX4 Or bX4 Or bY4) ThennGrade = 9m_nType = 1ElseIf ((bXY_3 And (bYX_2 Or bY_2 Or bX_2)) Or _(bYX_3 And (bXY_2 Or bY_2 Or bX_2)) Or _(bX_3 And (bXY_2 Or bYX_2 Or bY_2)) Or _(bY_3 And (bXY_2 Or bYX_2 Or bX_2))) Then nGrade = 10m_nType = 2ElseIf ((bXY_3 And (bYX3 Or bY3 Or bX3)) Or _(bYX_3 And (bXY3 Or bY3 Or bX3)) Or _(bX_3 And (bXY3 Or bYX3 Or bY3)) Or _(bY_3 And (bXY3 Or bYX3 Or bX3))) Then nGrade = 11m_nType = 2ElseIf ((bXY_3 And (bYX_1 Or bY_1 Or bX_1)) Or _(bYX_3 And (bXY_1 Or bY_1 Or bX_1)) Or _(bX_3 And (bXY_1 Or bYX_1 Or bY_1)) Or _(bY_3 And (bXY_1 Or bYX_1 Or bX_1))) Then nGrade = 12m_nType = 2ElseIf ((bXY_3 And (bYX2 Or bY2 Or bX2)) Or _(bYX_3 And (bXY2 Or bY2 Or bX2)) Or _(bX_3 And (bXY2 Or bYX2 Or bY2)) Or _(bY_3 And (bXY2 Or bYX2 Or bX2))) ThennGrade = 13m_nType = 2ElseIf (bXY_3 Or bYX_3 Or bX_3 Or bY_3) ThennGrade = 14m_nType = 2ElseIf (bXY_2 Or bYX_2 Or bX_2 Or bY_2) ThennGrade = 16ElseIf (bXY3 Or bYX3 Or bX3 Or bY3) ThennGrade = 17ElseIf (bXY2 Or bYX2 Or bX2 Or bY2) ThennGrade = 18ElseIf (bXY_1 Or bYX_1 Or bX_1 Or bY_1) ThennGrade = 19ElsenGrade = 20End IfIf (nGrade > 15) ThenIf (((nX - 2) >= 0) And ((nY - 2) >= 0)) ThenIf ((m_Board(nX, nY - 1) = 0 Or m_Board(nX, nY - 1) = cValue) And _(m_Board(nX + 1, nY) = 0 Or m_Board(nX + 1, nY) = cValue) And _(m_Board(nX, nY + 1) = 0 Or m_Board(nX, nY + 1) = cValue) And _(m_Board(nX - 1, nY) = 0 Or m_Board(nX - 1, nY) = cValue) And _((nX + 2 < 15 And nY - 2 >= 0 And (m_Board(nX + 2, nY - 2) = 0 Or m_Board(nX + 2, nY - 2) = cValue) And _m_Board(nX, nY - 2) = cValue And m_Board(nX + 1, nY - 1) = cValue And m_Board(nX + 2, nY) = cValue) Or _(nX + 2 < 15 And nY + 2 < 15 And (m_Board(nX + 2, nY + 2) = 0 Or m_Board(nX + 2, nY + 2) = cValue) And _m_Board(nX, nY + 2) = cV alue And m_Board(nX + 1, nY + 1) = cValue And m_Board(nX + 2, nY) = cValue) Or _(nX - 2 >= 0 And nY + 2 < 15 And (m_Board(nX - 2, nY + 2) = 0 Or m_Board(nX - 2, nY + 2) = cValue) And _m_Board(nX, nY + 2) = cValue And m_Board(nX - 1, nY + 1) = cV alue And m_Board(nX - 2, nY) = cValue) Or _(nX - 2 >= 0 And nY - 2 >= 0 And (m_Board(nX - 2, nY - 2) = 0 Or m_Board(nX - 2, nY - 2) = cValue) And _m_Board(nX, nY - 2) = cV alue And m_Board(nX - 1, nY - 1) = cValue And m_Board(nX - 2, nY) = cValue))) ThennGrade = 15End IfEnd IfEnd IfiWho = cValueJudge = nGradeEnd FunctionPrivate Sub ring()Cells(17, 3) = Cells(17, 3) + 1If m_nType = 0 ThenIf iWho = 2 ThenIf Cells(17, 3) < 16 ThenMsgBox "Congratulation!! You win by only total " & Cells(17, 3) & " stones, you are cool!"ElseMsgBox "Congratulation!! You win by total " & Cells(17, 3) & " stones, still OK!"End IfElseIf Cells(17, 3) < 16 ThenMsgBox "Sorry!! Computer win by only total " & Cells(17, 3) & " stones, you are bad player!"ElseMsgBox "Sorry!! Computer win by total " & Cells(17, 3) & " stones, you need more practices!"End IfEnd IfCells(17, 1) = ""Cells(17, 3) = 0Range(Cells(17 + 1, 1), Cells(17 + 15, 15)).Value = 0EndEnd IfEnd Sub。
excel表格常用操作命令办公室文员、助理都可以学学,留着迟早用得着!一、输入三个“=”,回车,得到一条双直线;二、输入三个“~”,回车,得到一条波浪线;三、输入三个“*”或“-”或“#”,回车,惊喜多多;在单元格内输入=now()显示日期在单元格内输入=CHOOSE(WEEKDAY(I3,2),"星期一","星期二","星期三","星期四","星期五","星期六","星期日") 显示星期几Excel常用函数大全.隔行颜色效果(奇数行颜色):=MOD(ROW(),2)=12.隔行颜色效果(偶数行颜色):=MOD(ROW(),2)=03.如果希望设置格式为每3行应用一次底纹,可以使用公式:=MOD(ROW(),3)=14.如果希望设置奇偶列不同底纹,只要把公式中的ROW()改为COLUMN()即可,如:=MOD(COLUMN(),2)5.如果希望设置国际象棋棋盘式底纹(白色+自定义色):=MOD(ROW()+COLUMN(),2)说明:该条件格式的公式用于判断行号与列号之和除以2的余数是否为0。
如果为0,说明行数与列数的奇偶性相同,则填充单元格为指定色,否则就不填充。
在条件格式中,公式结果返回一个数字时,非0数字即为TRUE,0和错误值为FALSE。
因此,上面的公式也可以写为:=MOD(ROW()+COLUMN(),2)<>06.如果希望设置国际象棋棋盘式底纹(自定义色+自定义色):加入样式2:=MOD(ROW()+COLUMN(),2)=0二。
用颜色进行筛选excel2007可以按单元格颜色、字体颜色或图标进行排序。
如果是excel2003,需要添加辅助列,用定义名称的方法得到对应的颜色号,然后对辅助列进行排序:颜色单元格在A列,选中B1,插入->名称->定义,输入a,下面输入公式=get.cell(24,$a1),此法可得到字体色的序列号。
一、1、棋盘是完全相同的两部分相对组成的就一方来说是是由五条横线和9条竖线交叉而成。
2、中间有一条空白的横道象征着界限写着“楚河”“汉界”叫“河界”。
合起来就是横十竖九的完整棋盘了。
“河界”中间虽然没有线但是不论横走或者斜走都和有线是一样的。
只是有些子不能过河。
3、每一方直线的标法从右往左依次为1-9路双方刚好相反。
4、双方阵营的一、三路横线与4、6路直线的方框内有两条对角线组成一个“米”字称为“九宫”。
将帅士的活动范围不能走出“九宫”。
二、以红方为例按将、士、象、马、车、炮、兵的顺序教授摆棋。
象棋的棋子是摆在交叉点上的。
1、五个“兵”对了隔一路一字排开摆在自己这方阵地的第四条横线上。
2、两个“炮”分别摆在2路和8路与第3条横线的交叉点上。
其他棋子都摆在底线上3、两个“车”对称地摆在1路和9路上。
4、两个“马”摆在2路和8路上。
5、两个“相”摆在3路和7路上。
1.车的走法快速灵活威力第一“三步不出车必定要输棋”a)直走横走不限步数中间无阻隔的情况下才可以b)所到之处如有对方棋子便吃掉。
2.马的走法满场飞奔八面威风c)一直一斜“日”字形曲折前进依线走一步再走一斜步d) 马的活动范围没有限制有时可以是走八个方向e)“蹩马腿”依线走一步的交点上有一个棋子不论红黑“憋马腿”马就不能“跳”过去。
3.炮的走法隔山打牛一招鲜一招鲜吃遍天f) 不吃子时走法同车一样g) 炮打隔1.介绍吃子的定义一方棋子可以走到并且愿意走到的位置上有对方的棋子存在就可以把对方的棋子吃掉而占领那个位置。
2.吃子时各种不同的情况(1)按照自己的走法吃掉对方的同兵种棋子同时也可被对方棋子吃掉(2)按照自己的走法可以吃掉对方棋子但对方却吃不掉自己(3)不同兵种的吃与反吃吃将帅赢定了。
吃车削弱了对方的很大势力。
吃仕将帅失去了左右手 3.小结各种棋子的走法。
一、1、棋盘是完全相同的两部分相对组成的就一方来说是是由五条横线和9条竖线交叉而成。
2、中间有一条空白的横道象征着界限写着“楚河”“汉界”叫“河界”。
我的水平一般,但一般大局残局还凑合看。
我单位有三个服务器( x39501个x38502个) ,第一台,我用它联网上奕天qq 实用软件对弈使用纯机或人机模式,根据形势来。
另二台我用别的号进去观战,软件连线,观战分析。
用不同引擎,遇到我思考的“棋势”时,让他们俩帮助分析一下,如果可行,把招法放到第一台上。
这个模式一般只在下班时间用,没输过,和棋很少。
我们信息中心三班倒。
上班要求还是很严格的怎样成为超一流的人机高手,和大家分享笔者的心得fficeffice" />以下观点、建议和主张纯属笔者多年来用象棋软件的一些心得,愿意写出来和大家一起分享,也是笔者反复实验的结果,笔者在下棋的过程中,在局面有利的情况下采用该战术就更有利,而多少次也在被动的局面下转危为安,甚至胜棋,下面就详细介绍一下笔这的浅学,欢迎各路棋友批评和指正:1、首先,也是最重要的一点,选择一款(或限制3款)自己比较熟悉的棋软,一般建议大家选择破解较为完整的软件,在这里我建议大家如果用一款软件下棋的话就选择象棋旋风,因为目前来说旋风破解的比较完美,如果同时选择3个软件下棋的话就选择象棋旋风\佳佳\倚天,为什么要选择三个软件下棋?这里就是笔者要说明的问题,希望给大家分享心得,错的地方希望网友给予批评(要打开3个软件下棋,你的机器最好是4核或以上, 笔者不建议双核机器采取以下棋理,双核最好选择在下棋的过程中只使用一款软件):2、为什么多核的一定要打开3个软件分析会好点呢?其实道理很简单,可以说,当今棋软界,以及各大棋软开发程序商,都各有千秋,开发出的棋软都各有自己的特点和长处,举例说明,就象3个人或3位象棋大师,在同一局面的情况下,也许3个人都有不同的理解和不同的招数,当然招数多两个,就好比人多一条路,多一个选择,从而选择出最好的招来应对千变万化的局面.3、打开软件的顺序依次是:比如旋风\佳佳\倚天(你也可以选择大圣或其他)来分析局面,记得顺序别错了,是先开旋风\再开佳佳\后开倚天,不然你可能打不开其中之一的某一款,也就是说顺序错的话可能就出错了.4、当你打开3个棋软后,一定要记得,并且是切记:不能把三个棋软同时都打开分析模式,不然的话,你的机器就会被卡死,同时打开的话,你的K值也是非常低的,算不出好的局面.5、打开的3个棋软,一定要分清主次,选择一个软件作为主要分析工具(比如旋风)另外两个只能做为辅助分析工具(比如佳佳和倚天).一般下棋分为三个阶段,开局、中局和残局,正确的做法是:在打开3个棋软后,在下开局阶段,最好用旋风来下,也就是说只打开旋风的分析模式,因为旋风在这一阶段的打分相对比较准确,脱谱或到中局之后,把当前局面复制粘贴到另外2个棋软上面.中局和残局就是要辅助软件大发威力的时候了,6、下面就是很关键的了,复制粘贴完之后,接下来的工作,一定要让这3款软件充分发挥其自己的作用,这时候你最好以象棋旋风做为主分析工具,(切记:三个棋软在同时分析一个局面的时候,万不可以把三个棋软的分析模式都打开,不然你就会死机,可以先让旋风分析,旋风分析完之后,关闭旋风的分析模式,然后再打开佳佳的分析模式,让佳佳来分析,佳佳分析完招之后,关闭佳佳的分析模式,然后再让打开倚天的分析模式来分析,从中选取最好的招来应对局面,会达到非常好的效果. 而在残局阶段,因为时间问题,可以适当关闭一个棋软,从而节约一定的时间.7、你过滤的招三大棋软有时候分析的都不一样,或其中的两个棋软分析的是一样的,或三个棋软分析的都一样,如果有不一样的时候,就是你要选择好招出来的时候了,举例说明,当目前局面象棋旋风算的是马4进5,而佳佳算的是马4退6,而倚天算的又是马4进3的时候,这个时候不要着急,可以把过滤的后2个招分别在象棋旋风里算一下,并适当让该招往下多走走,看哪个效果好,就可以选择哪个招,但是要注意大局观,对了辅助软件分析出来的招一定要在主要分析软件里面分析再多算,也就是说多往深层去走一下,往后多走几步,以避免出错,这样才能选择出最好的招来走棋!8、在用软件的分析模式时,软件在同一局面的情况下也许会有不同的招,这时候你可以点分析模式,点一下再适当关一下,然后再点一下,往后走几步,通常也会有好的招供自己选择,也许大家都有个误区,包括笔者,通常都会认为越往后面的招越精确,当然,什么事情都是没有绝对的,有时候前面的招不一定就是错的,有时候,恰恰前面的招是正确的,这就需要读者有一定的功底和技巧了,象棋千变万化,也许这就是其千百年来其魅力所在吧!9、就先写到这里吧,以后再有好的建议笔者再和大家一起分享,最后希望各位棋友多提宝贵意见和批评指正、一起探讨,顺祝各位棋友一切顺利、牛年大吉、步步高升!!佳佳象棋的一般设置相关搜索: 象棋, 设置在注册成功佳佳象棋后, 一般要改一下二个设置, 一个是SMP数, 一个是HASH值, 其它的就暂时不要动.具体怎样设置呢, 首先在界面的工具栏上按一下设置标志,也就是那个象时钟一样的图标, 打开如下设置对话框下面具体解析一下如何设置:==========================================================SMP数, 是指使用CPU的数目,如果你的CPU是双核的,就设置成2, 4核的就设置成4, 单核的当然也只能设成1了.==========================================================HASH, 单位是M,一般来说,2G 内存768 或10241G 内存521 或378512 内存256 或128256 内存128 或64在确认设置后,按一下更新, 确认按钮, 保存设置.再谈象棋软件人机合一心得一、人机合一初阶篇——布局夺“先”开局阶段,我一般避开中炮开局,为什么这么说呢?现在象棋多以中炮开局,这一点大家都熟悉,那么黑方如果也是人机高手,你中炮开局,人家就很容易提前防范,甚至布下开局陷阱引你入局。