js计算中国象棋将帅位置

JavaScript013

js计算中国象棋将帅位置,第1张

i和j。中国象棋将帅问题,输出所有符合规则的将帅位置,使用两个变量i和j表示将和帅的位置,用1-9代表九宫格中的位置。中国象棋是起源于中国的一种棋戏,属于二人对抗性游戏的一种,在中国有着悠久的历史。

js实现单机双人象棋演示及其分析本程序实现的功能为本地二人对弈中国象棋,实现语言为javascript+VML,在windows 2000 pro+IE 6sp1的环境下测试通过。程序默认的起始颜色为红色,只有执红色一方可以先走棋,双方轮流下棋,老将被吃则认为输棋,棋局结束,可以通过刷新页面重新开始。下棋的时候,点击要走的棋子,将显示当前可走位置(小矩形)和可吃位置(加上红色框标记),然后点击对应位置即可走棋。如果要改选其他棋子,直接点击即可。程序的演示地址:设计概述:在一个复杂的、有界面、有交互的程序中,将控制模块与表现模块区分,分别编写是很有效的做法。这样能够使对界面、运算等的操作集中统一,便于修改与测试。在整体设计上,本程序采用了将判断可行位置算法下放的做法。传统的象棋程序一般先取得欲移动棋子类型,然后由统一的算法判断目标位置是否可行。本程序把判断目标位置是否合法的方法下放到棋子,控制模块在判断当前走法合法性的时候,取得这个棋子对象,并且调用此对象的canGo方法来判断目标位置是否可行,这种做法比较有利于让程序充分体现面向对象特性。棋盘单独作为一个模块实现,它具有一定规模,且实现了一个针对性比较强的功能,因此将它与其他模块隔离,单独编写。这个模块的主要事件集中在图形化效果的表现,同时也应当主意结构的层次性和合理性,并且应当向外界提供所生成棋盘的引用,让控制模块可以将棋子挂接在这个根元素上。棋子本质为div对象,包含了一个图标文件,并且具有附加属性,如:颜色、种类、位置等。各种棋子有不少相似属性,但是具体差别还是不小,比如各棋子的判断可行位置走法。因此,先编写一个具有普遍性的棋子模块,拥有棋子的基本属性:坐标、图标、当前是否被攻击等情况,然后分别对于每种棋子,创建单独的模块。这个过程中采用了一种“伪继承”技术:在单独的棋子模块中,创建了一个通用的棋子变量,并且对它附加了一个canGo方法,然后,把这个棋子变量作为自己的创建结果返回出去。为什么称这个为“伪继承”呢?很明显,js并不支持继承,而且,继承的实现方法并非如此。但是,我们做了继承所做的事情,即为父类型的对象添加了属性、方法,因此扩展了它的属性和方法,并且,最后将扩展完成的对象当作自己构造出来的对象返回出去,使得结果对象除了具有父对象的属性、方法,还拥有自己特有的属性及方法,因此,我们可以说这是某种形式的继承。在程序中建立了一个全局二维数组situation用于保存棋子列表,各棋子对象存放其自身坐标等信息,还定义了各常量用于标记棋子颜色、种类等通用信息。程序中所使用的资源文件有棋子图标及标记可走位置的图标。棋盘为VML代码绘制,各棋子分别置于单个div中,由一个外部的HTC文件控制其行为。这个HTC做了这样的事情:在点击当前棋子所在的div时,HTC中的check函数对当前点击对象进行处理,决定应当走棋或者其他操作。在点击棋子时,将根据遍历棋盘坐标代入该棋子canGo方法的结果,取得可以移动的位置。如果这些位置当前没有棋子,则认为是可走位置,在对应位置产生一个Blank对象,放置一个提示图标。Blank对象同样是棋子模块的伪继承,它没有canGo方法,只保存了基本属性,专门用于标志可走位置。如果这些位置当前存在棋子,并且棋子的颜色与自身不同,则认为是可吃位置,将对应棋子加上红色边框标记,同时将其beAttack属性设为真。这样,走棋的时候即可据此判断。走棋后,程序需要清除以前那些过期的标记,这是通过一个遍历实现的,从棋盘中检索到灰色对象,即认为它是标记,直接清除。另外,吃子的实现比较复杂,反复尝试replaceChild方法以后放弃了,因为遇到意想不到的问题,所以通过遍历检索来取代被吃棋子。这个步骤似乎可能有比较简便的实现方法,希望高手指教。附记:很久以前,在51js论坛看见幻宇前辈的js版星际,就产生做这个象棋的念头,然后花一个小时参考美洲豹的VML教程写了棋盘,却因为各种原因搁置了。这次重新捡起来,花了一天半时间写了其他所有部分,测试了一会,没发现bug,先发布出来,给大家玩玩。有兴趣的朋友可以继续做,做成能够联机的版本,不是很难。此外,我暂时有一个部分没有设计,就是老将见面的判断,有空补上,hoho.基本的说明就先写这么多,以后慢慢把各部分代码加上注释,发在这里,大家不要着急啊。帮你找了下,希望能帮到你.

如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vae.la

这种积分叫等级分。

中国大陆棋手的等级分由中国象棋协会负责计算,并且每半年发布一次。棋手的等级分能够均衡的、客观公正的反映出棋手半年来的真实水平。

为了计算等级分,中国象棋协会制定有预计得分胜率表。即以某一棋手自身的等级分为基数,他在比赛中碰见某一等级分的对手,应该取得什么样的成绩,都已经预计好。如果超过这个预计成绩,他的等级分就提高,否则就降低,正好则不变。

请您参考:

象棋棋手等级分制和技术等级标准实施细则

为执行象棋棋手等级分制和技术等级标准,特制订本实施细则。

一、棋手等级分表示棋手的实力水平,由国家体育总局棋类运动管理根据棋手在统计期限内的比赛成绩计算确定。

上半年统计期限为前一年十二月一日至本年五月三十一日止;下半年统计期限为本年六月一日至十一月三十日止。凡跨越统计期限的比赛,其统计期限以比赛结束日期为准。

二、经过计算确定的棋手等级分,由国家体育总局棋类运动管理中心于每年一月—日和七月一日各公布一次。公布的最低分数:男子为2301,女子为2101。

有等级分的棋手如一年内未参加比赛,其等级分不作变动,第二年降20分,第三年降50分,第四年取消其等级分。

三、可计算等级分的比赛,统称为等级分赛,包括:

(一)全国团体赛和个人赛;

(二)经国家体育总局批准的其它比赛。

四、等级分赛必须具备下列条件:

(一)比赛如为单循环制,至少三分之二棋子应有等级分,如参加人数在十人以下,则全部应有等级分;

(二)以省、自治区、直辖市、计划单列市、解放军和行业体协为单位参加(主办单位例外)的比赛,不得少于四个单位,同单位棋手不得超过总人数的三分之一;

(三)至少应有两名国家级裁判员主持整个竞赛裁判工作;

(四)采用国家体育总局审定的最新象棋竞赛规则(经国家体育总局棋类运动管理中心批准,某些比赛可采用“亚洲象棋联合会象棋比赛规例”);

五、可获得等级称号的比赛,统称等级称号赛。包括:

(一)可获得男子、女子特级大师称号的比赛,简称男子、女子特级大师称号赛;

(二)可获得男子、女子大师称号的比赛,简称男子、女子大师称号赛;

六、等级称号赛在具备等级分赛条件的基础上,还须符合下列条件:

(一)参加人数不得少于十二人;同单位的棋手不得超过总数的三分之一;无等级分棋手不得超过20%。

(二)至少应有两名国家级裁判员主持整个竞赛裁判工作。

(三)比赛等级和称号标准应在比赛开始前公布,平均等级分(Ra)取最接近的整数,1以下的小数按四舍五入处理。相应称号的标准分如有小数,等于或大于0·1,小于0·6时,计为0·5;等于或大于0·6,小于1·1时计为1。

(四)男子、女子特级大师称号赛由男、女大师参加。男子、女子大师称号赛由一级棋士参加。承认女子在男女混合比赛中达到的技术等级称号标准。

七、等级分赛和等级称号赛结束后,由裁判长按规定格式完整无误地填写竞赛报告,主办单位于两周内上报国家体育总局棋类运动管理中心。

比赛成绩按胜1、和0·5、负0计分。

未对弈的得分应用记号※标出,必要时加以说明;凡能影响成绩有效性的其它情况,也必须加以说明。

棋手的姓名和所属单位如有任何变动,均应在备注栏中详细说明。竞赛报告如有错误,其后果由上报单位负责。

八、竞赛报告所列的数据将填入棋手等级分变动表。

每次比赛之后,棋手等级分的变动值,可按下列公式计算:AR=K(w—We)式中,△R为等级分的变动值,正值为升,负值为降。

W为实得局分。We为预期局分。

K为换算系数。对于无等级分棋手,前三次比赛或前三十局棋K值取25,以后取15,等级分一经达到2500,以后即使再降也永远取10。

其中,预期局分按下列公式计算:We=NPC

公式中,N为对手人数,PC是根据棋手本人等级分与对手的平均等级分之间的差值计算出来的预期得分率,由附表中查得。

为节省计算时间,在单循环比赛中按下列公式计算预期局分:We=M·pa-1/2

公式中,M为参加比赛人数,Pa系根据全部棋手(包括本人在内)的平均等级分与本人等级分之差值计算出来的预期得分率,由附表中查得。

将棋手在整个统计期限内各次比赛的升降值累加(减)之后,即得出该棋手在该期限的总升降值,再与棋手的原等级分相加(减),即得出棋手的新等级分。

公式如下:Rn=Ro+∑△R

Rn为新等级分,Ro为原等级分,∑△R为总变动值。每次公布新等级分时,个位数均取整数(小数4舍5人)。

凡计算等级分的比赛中,个人冠军不降分。

九、无等级分棋手参加等级分赛或等级称号赛时,以男子2300,女子2100作为暂定等级分(Ru)。男女混合比赛,女子等级分低于2300者,她对男棋手时按2300计分。女对女时,则仍按各自的实际等级分计算。

在积分编排制比赛中,有等级分的棋手只根据他和特等级分的对手对弈的成绩计算等级分;无等级分的棋手必须与有等级分的棋手对弈9局以上方可计算等级分,如不足时,允许在连续两个年度内参加另一次可评分的比赛(无论是积分编排制或单循环赛),前后累积奕满规定局数。

如果无分棋手得分等于或超过50%,须按他的有分对手的平均等级分和他超过(包括等于)50%的计值来计算等级分应用相应比值。

无等级分棋手在循环制比赛中得0分时,与他对奕而得到的局分,不能计人实得局分内。

不论是有分棋手还是元分棋手,由于多种原因未曾对弈而得到的局分,也不能计入实得局分内。

十、将级大师称号申请人必须符合下列条件:

(一)、比赛不少于两次,局数不少于18局;

(二)两次取得特级大师标准分。

大师称号的申请人必须符合下列条件:

(—):比赛不少于两次,局数不少于18局;

(二)两次取得大师标准分。四年前在等级分赛和等级称号赛中取得的成绩不能用来申请等级称号。

申请人或其所属单位必须完整无误地填写等级称号申请表,按规定手续上报国家体育总局棋类运动管理中心审批。

十一、凡属通过名次的途径获得等级称号的棋手,其等级分在下届公布时规定作如下调整:

(一)男子特级大师调整到2550。

(二)男子大师调整到2450。

(三)女子特级大师调整到2350。

(四)女于大师调整到2250。

如本人等级分现已超过或以往曾经达到或超过上述相应数字时,则维持现状不予变动。

象棋等级称号赛应有胜率表

比赛等级

平均等级分

应有胜率(%)

女子大师

女子

特级大师

男子大师

男子

特级大师

1951—1975

1976—2000

2001—2025

2026—2050

1

2051—2075

76

2

2076—2100

73

3

2101—2125

70

4

2126—2150

67

5

2151—2175

64

6

2176—2200

60

7

2201—2225

57

76

8

2226—2250

53

73

9

1

2251—2275

50

70

76

10

2

2276—2300

47

67

73

11

3

2301—2325

43

64

70

12

4

2326—2350

40

60

67

13

5

2351—2375

36

57

64

14

6

2376—2400

33

53

60

15

7

2401—2425

30

50

57

76

16

8

2426—2450

47

53

73

17

9

2451—2475

43

50

70

18

10

2476—2500

40

47

67

19

11

2501—2525

36

43

64

20

12

2526—2550

33

40

60

13

2551—2575

30

36

57

14

2576—2600

33

53

15

2601—2625

30

50

16

2626—2650

47

17

2651—2675

43

18

2676—2700

40

19

2701—2725

36

20

2726—2750

33

2751—2775

30

表一

由得分率P查等级分差D(P)

PD P

1.00 —

.99 677

.98 589

.97 538

.96 501

.95 470

.94 444

.93 422

.92 401

.91 383

.90 366

.89 351

.88 336

.87 322

.86 305

.85 296

.84 284

PD P

.83 273

.82 262

.81 251

.80 240

.79 230

.78 220

.77 211

.76 202

.75 193

.74 184

.73 175

.72 166

.71 158

.70 149

.69 141

.68 138

.67 125

PD P

.66 117

.65 110

.64 102

.63 95

.62 87

.61 80

.60 72

.59 65

.58 57

.57 50

.56 43

.55 36

.54 29

.53 21

.52 14

.51 7

.50 0

PD P

.49 —7

.48 —14

.47 —21

.46 —29

.45 —36

.44 —43

.43 —50

.42 —57

.41 —65

.40 —72

.39 —80

.38 —87

.37 —95

.36 —102

.35 —110

.34 —111

.33—125

PD P

.32 —133

.31 —141

.30 —149

.29 —158

.28 —166

.27 —175

.26 —184

.25 —193

.24 —202

.23 —211

.22 —220

.21 —230

.20 —240

.19 —251

.18 —262

.17 —273

.16—284

PD P

.15 —296

.14 —309

.13 —322

.12 —336

.11 —351

.10 —366

.09 —383

.08 —401

.07 —422

.06 —444

.05 —470

.04 —501

.03 —538

.02 —589

.01 —677

.00 —

表二 由等级分差D(P)查预期得分率PH:高分棋手L:低分棋手

DP P

等 级 分 差 H L

0—3.50.50

4—10.51.49

11—17.52.48

18—25.53.47

26—32.54.46

33—39.55.45

40—46.56.44

47—53.57.43

54—61.58.42

62—68.59.41

69—76.60.40

77—83.61.39

84—91.62.38

DP P

等 级 分 差 H L

92—98.63.37

99—106.64.36

107—113.65.35

114—121.66.34

122—129.67.33

130—137.68.32

138—145.69.31

146—153.70.30

154—162.71.29

163—170.72.28

171—179.73.27

180—188.74.26

189—197.75.25

DP P

等 级 分 差 H L

198—206.76.24

207—215.77.23

216—225.78.22

226—235.79.21

236—245.80.20

246—256.81.19

257—267.82.18

268—278.83.17

279—290.84.16

291—302.85.15

303—315.86.14

316—328.87.13

329—344.88.12

DP P

等 级 分 差 H L

345—357.89.11

358—374.90.10

375—391.91.09

392—411.92.08

412—432.93.07

433—456.94.06

4571—484.95.05

485—517.96.04

518—559.97.03

560—619。98.02

620—735.99.01

超过7351.00.00

本人爱好象棋理论以及象棋文化已经20多年,是象棋三级棋士、国家二级裁判,希望以上回答对您有所帮助。

希望象棋能够丰富您的生活!给您带来快乐!