基于c#的中国象棋游戏的设.docx

上传人:b****5 文档编号:6061978 上传时间:2023-01-03 格式:DOCX 页数:42 大小:7.13MB
下载 相关 举报
基于c#的中国象棋游戏的设.docx_第1页
第1页 / 共42页
基于c#的中国象棋游戏的设.docx_第2页
第2页 / 共42页
基于c#的中国象棋游戏的设.docx_第3页
第3页 / 共42页
基于c#的中国象棋游戏的设.docx_第4页
第4页 / 共42页
基于c#的中国象棋游戏的设.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

基于c#的中国象棋游戏的设.docx

《基于c#的中国象棋游戏的设.docx》由会员分享,可在线阅读,更多相关《基于c#的中国象棋游戏的设.docx(42页珍藏版)》请在冰豆网上搜索。

基于c#的中国象棋游戏的设.docx

基于c#的中国象棋游戏的设

本科毕业论文(设计)

基于c#的中国象棋游戏的设计和实现

院系

数学与计算机科学系

专业

信息与计算科学

班级

信本111班

姓名

黄盛波

学号

110410701033

指导教师姓名

黎利辉

指导教师职称

讲师

完成日期

2015年3月15日

广西民族师范学院本科毕业论文(设计)任务书

题目名称:

学生姓名

黄盛波

所学专业

信息与计算科学

班级

信本111

指导教师姓名

黎利辉

所学专业

计算机应用技术

职称

讲师

完成期限

2014.6-2015.6

1.毕业论文(设计)主要内容

基于C#的中国象棋人人对弈游戏主要实现了象棋的基本走棋规则,完成了开局,悔棋,保存残局和打开残局等基本功能。

本次象棋游戏是主要实现的是双人对战模式,主要的功能模块有,不同实力悬殊的对战,特色的棋谱,还有不一样的另类玩法,给棋手增加了各种不同的玩法,已达到游戏的娱乐性。

2.毕业论文(设计)基本要求

中国象棋游戏不仅在外观上设计精美,而已利用了双缓冲技术的缓冲位图,使棋手在走棋过程中有不一样的视觉效果,而且该象棋游戏有着不一样的玩法,更适合朋友之间的娱乐消遣。

2.毕业论文(设计)进度安排

时间

完成项目

备注

2014.6

题目布置、毕业设计的功能需求界定

2014.7-2014.10

需求分析,毕业设计初步设计

2014.10

开题答辩,中期考核

2014.10-2015.2

完成毕业设计(系统)

2015.3--2015.4

完成论文初稿并进行修改

2015.5

论文检测并修改

2015.6

论文答辩并做最后修改及打印工作

指导教师签名:

年月日

广西民族师范学院本科毕业论文(设计)中期自查表

系名

数学与计算机科学系

年级

2011级

专业

计算机科学与技术

本人投入的时间和精力

每周平均工作小时,出勤情况:

较好()、一般()、差()。

影响时间投入的原因:

找工作()、自身水平()、其他原因。

指导教师的投入

指导教师每周指导次,大约小时;

指导形式:

网络()、电话()、面对面()、其他;

指导效果:

好()、较好()、一般()、差()。

毕业论文(设计)工作情况

是否能按任务书的“进程安排”完成工作:

是(√)、否(),已完成内容占全部工作85%。

你的论题是:

自选()、专业安排()、跨专业()。

论题是否结合专业(是、否)、难度(高、适当、容易)、工作量(大、一般、小)。

自己对毕业设计(论文)文件规范的学习情况:

已了解()、部分了解()、不清楚()。

条件保障

试验设备和器材是否得到保证:

是(√)、否()。

学校提供的图书资料是否满足需要:

是()、一般(√)、否()。

学校计算机上机条件:

好()、较好(√)、不好();约需5机时。

经费来源:

学校()、个人()、尚无需要(√)。

存在问题及

整改思路

存在的问题:

①功能还不够完善

②棋子的合法判断还不够完善

整改思路:

学生签名:

年月日

指导教师签名:

年月日

基于c#的中国象棋游戏的设计和实现

计算机科学与技术2011级111班黄盛波

指导老师黎利辉

摘要

中国象棋发展至今已经有数千年的历史了,它是中华民族智慧的结晶。

在我国,中国象棋的普遍程度是其他棋类无法比拟的,,大至国际、国内比赛,小至街头巷尾,随处可见。

这个古老而又略带乡土气息的棋种,让人看到了进军世界的希望。

自1986年开始,中国象棋就被列为向外推广项目,经过多年努力,世界杯、亚洲杯等赛事应运而生,中国象棋的发展趋势日益国际化。

本文首先研究了中国象棋在计算机中的表示问题,开发出基于C#的中国象棋人人对弈的游戏软件。

利用VS2008开发工具设计一款中国象棋的单机版游戏。

在对系统进行详细需求分析的基础上,确定了系统功能和性能的要求,实现其屏幕绘制、棋盘绘制、布局算法等进行设计。

并实现了人人博弈,悔棋,保存未下完的残局和实力悬殊的让棋等功能。

关键词:

中国象棋、C#、人人博弈

 

C#ofChinesechessgamebasedonthedesignandimplementation

ComputerscienceandtechnologyJiben111

Abstract

   Chinesechessdevelopmenthasbeenforthousandsofyears,anditisthewisdomoftheChinesenation.InChina,theprevalenceofChinesechessisunmatchedbyotherchess,,rangingfrominternationalanddomesticcompetitions,smallstreets,everywhere.Thisancientandslightlyrusticchessspecies,peopleseeintotheworldofhope.Since1986,Chinawaslistedasoutchesstopromotetheproject,afteryearsofefforts,theWorldCup,theAsianCuptournamentcameintobeing,thedevelopmenttrendofChina'sincreasinglyinternationalchess.

   Thispaperstudiestheproblem,saidChinesechesscomputerdevelopedbasedonC#forallChinesechesschessgamesoftware.VS2008developmenttoolsuseastand-aloneversionofChinesechessgame.Onthebasisofthesystemonadetailedneedsanalysistodeterminethefunctionalandperformancerequirementsofthesystemtoachieveitsscreenpainting,drawingboardlayoutalgorithmdesign.Andrealizedallgame,undo,savethemessanddidnotfinishunderunequalletchessandotherfunctions.

Keywords:

ChineseChess,C#,allgame

 

目录

1引言…………………………………………………………………………………

1.1中国象棋的历史起源……………………………………………………….1

1.2中国象棋的发展现状与前景……………………………………………2

1.3需求分析…………………………………………………………………….

2中国象棋的走法规则与实现分析…………………………………………...3

2.1棋盘和棋子的介绍………………………………………………………3

2.2中国象棋的规则…………………………………………………………..4

2.2.1车的走法规则……………………………………………………….4

2.2.2马的走法规则………………………………………………………..6

2.2.3象(相)的走法规则…………………………………………………..7

2.2.4士(仕)的走法规则…………………………………………………..8

2.2.5炮的走法规则……………………………………………………….9

2.2.6卒(兵)的走法规则…………………………………………………11

2.2.7将(帅)的走法规则………………………………………………..12

2.3中国象棋胜负的判定……………………………………………….13

3棋盘与棋子的绘制及功能的实现…………………………………15

3.1程序流程设计…………………………………………………………15

3.2棋盘与棋子的绘制……………………………………………….

3.2.1棋盘的绘制……………………………………..

3.2.2棋子的算法实现…………………………………………………

3.3游戏功能的实现…………………………………………………….16

3.3.1棋谱的实现………………………………………………………….16

3.3.2悔棋………………………………………………………………….18

3.3.3保存和打开残局………………………………………………….19

3.3.4重新开始游戏……………………………………………………21

3.4实力对决、另类玩法、特色棋谱的功能实现……………22

3.5游戏说明………………………………………………………..23

3.6背景音乐…………………………………………………………24

4测试结果…………………………………………………………………32

4.1运行结果…………………………………………………………….32

4.2棋谱的打开和保存……………………………………………….35

结束语………………………………………………………………..36

致谢……………………………………………………………………….37

参考文献…………………………………………………………………….38

 

1引言

1.1中国象棋的历史起源

象棋的形成与秦朝末年的“楚汉相争”有着密切的关系。

象棋棋子分红、黑两种颜色,帅方红色,将方为黑色,俗称“红帅黑将”。

传闻刘邦率义军在芒砀山起义,并亲自在山上斩杀一条大白索,这就是,民间流传很久的“高祖斩蛇”的故事。

自从斩杀白蛇后刘邦就自称赤帝的儿子,也就特别喜欢红色。

而项羽不管是身上穿的衣服、披挂,还是说骑的战马都是黑色,可见项羽非常喜欢黑色。

因此“红帅黑将”就是由此的来。

所以在早期的象棋中,人们一般把黑将代表为项羽,红帅代表刘邦。

而棋盘上的“楚河汉界”,指的是河南省荥阳市黄河南岸广武山上的鸿沟。

沟口宽约800米,深达200米,是古代的一处军事要地。

西汉初年楚汉相争时,汉高祖刘邦和西楚霸王项羽仅在荥阳一带就爆发了“大战七十,小战四十”,因种种原因项羽“乃与汉约,中分天下,割鸿沟以西为汉,以东为楚”,鸿沟便成了楚汉的边界。

现在鸿沟两边还有当年两军对垒的城址,东边是霸王城,西边是汉王城。

象棋的基本规则的由来大都是来自汉朝的传说,经过近百年的实践,象棋于北宋未定型成近代模式:

32枚棋子,有楚河汉界的棋盘,将帅在九宫之中等等,至此之后,中国象棋在民间广为流传,成为一项人们休闲娱乐的棋艺活动。

1.2中国象棋的发展现状与前景

中国象棋对弈在中国有着悠久的历史,是中华民族的传统文化,作为二人对抗游戏中的一种,由于趣味性很强,很快就成为流行极广泛的棋艺活动,不仅在国内深受广大群众的喜爱,而且在国外,尤其是东南亚的侨袍和外籍华人中也广泛流传。

许多海外华侨、华人和港澳同袍把象棋看作是侨袍与祖国联系的桥梁和纽带,把开展象棋活动看座是炎黄后裔对自己民族文化的继承和发扬。

近几十年来,随着贸易和文化交往的不断发展,象棋在英、美、法、加拿大等国家也发展了不少爱好者。

象棋正从他的发源地,经过亚洲,传播到世界各个角落。

现在从亚洲来看,不仅港澳等棋风很盛,而且在泰国、新加坡、马来西亚、印尼,日本等过的华侨和外籍华人中,象棋也很普遍。

那些地区和国家每年都举行象棋比赛,而且都已分别成立了象棋总会或象棋协会。

在象棋风的盛行下,亚洲象棋联合会应运而生。

现在,菲律宾、马来西亚、新加坡等大多亚洲国家都“亚象联”的成员。

自从“压象联”的成立以后,亚洲地区的象棋活动更加活跃,亚洲各国和地区之间的交流和比赛也是逐年的曾多,因此也涌现出了不少棋坛新星。

在“亚象联”越来越大的推动下,近年来,象棋也开始得到外国人的关注,在美国、法国、德国、加拿大等国也纷纷成立象棋协会或象棋社。

然而为了进一步促进象棋的国际化,使东方的棋道推向全球,以便全世界人民都能分享中华民族的文化,“亚象联”委托中国象棋协会举办“七星杯”国际邀请赛。

这更加促进了各国象棋的交流,推动了象棋进一步的国际化,吸引了更多外国人积极参加象棋活动,把中国象棋推向了世界。

然而随着互联网的飞快发展,计算机的使用也深入普及,现在人在闲暇之余都喜欢花大量的时间在电脑上上网,电脑已经是人们生活中不可缺少的一部分。

正是因为这个原因诸如中国象棋这类游戏得以发展和推广的另一个途径。

这对于学好C#软件开发制作中国象棋游戏显得非常有意义,同时也是本次研究的意义所在。

1.3需求分析

该程序需要实现象棋游戏的以下几个基本功能:

(1)开局/重新开始:

开始一局新的象棋对弈:

(2)悔棋:

将上一步的棋子还原到之前所处的位置

(3)保存残局:

就是保存未下完的棋局

(4)打开残局:

打开已保存的棋局

(5)退出:

退出本程序:

(6)实力对决/特色棋谱/另类玩法:

提供给不同玩家的不同玩法

(7)游戏说明:

提示走棋的方法和游戏的简介

(8)音乐:

提供背景音乐

2中国象棋的走法规则与实现分析

2.1棋盘和棋子介绍

2.1.1棋盘

运行程序后显示棋盘界面如图2-1-1

图2-1-1棋盘界面

中国象棋棋盘主要是由一个长方形平面构成,平面由九条平行的竖线和十条平行的横线交叉组成,一共有九十个交叉点,象棋棋子都是在交叉点上活动,在第五和第六横线之间有空白的地带被称为“楚河汉界”也称“河界”,在第四条竖线和第六条竖线之间画有一个“米”字型的方框,称为“九宫图”。

2.2.2棋子

开局后调入棋子后的界面如图2-2-2

图2-2-2棋子调入界面

象棋棋子一个有三十二个,分为红、黑两方,每方共有十六个棋子,分别有对战的双方各执一方,各分的棋子种类为七种,种类的名称和数目如下:

红子:

帅一个,车、马、炮、相、士各两个,兵五个。

黑子:

将一个,车、马、炮、象、士各两个,卒五个。

 

2.2中国象棋的规则和胜负的判定

所谓“无规矩不成方圆”,象棋游戏也不例外。

中国象棋游戏有着自己的规则方法。

中国象棋游戏的规则如下:

2.2.1车的走法

车的走法是象棋中最自由的,所以车在象棋中是威力最大的,无论横线、竖线均可行走,只要在同一条直线上无子阻拦,那它的步数就不受限制,所以才有“一车十子寒”之称。

/if(_pickChessValue=="黑车"||_pickChessValue=="红车")

{

if(_pickCol!

=col&&_pickRow!

=row)

validateFlag=false;

else

validateFlag=true;

if(_chessValue[row,col]=="无子")

{

if(_pickRow==row)

{

if(_pickCol

{

for(inti=_pickCol+1;i

if(_chessValue[_pickRow,i]!

="无子")

validateFlag=false;

}

elseif(_pickCol>col)

{

for(inti=col+1;i<_pickCol;i++)

if(_chessValue[_pickRow,i]!

="无子")

validateFlag=false;

}

else

validateFlag=true;

}

if(_pickCol==col)

{

if(_pickRow

{

for(intj=_pickRow+1;j

if(_chessValue[j,_pickCol]!

="无子")

validateFlag=false;

}

elseif(_pickRow>row)

{

for(intj=row+1;j<_pickRow;j++)

if(_chessValue[j,_pickCol]!

="无子")

validateFlag=false;

}

else

validateFlag=true;

}

}

}

2.2.2马的走法规则

马的走法是斜着走,即可以横着或者竖着走两格,然后是走在这两格的对角线上,因此才有“马走日”的说法,但是如果马要走的方向上身边有棋子,就不能往这方向落子。

这就是俗话说的“蹩马脚”。

//马的走棋规则

if(_pickChessValue=="黑马¨ª"||_pickChessValue=="红马")

{

if(_pickChessValue=="黑马")

{

if(Math.Abs(_pickRow-row)==2&&Math.Abs(_pickCol-col)==1)

{

if(_chessValue[(_pickRow+row)/2,_pickCol]=="无子")

{

validateFlag=true;

}

else

validateFlag=false;

}

if(Math.Abs(_pickRow-row)==1&&Math.Abs(_pickCol-col)==2)

{

if(_chessValue[_pickRow,(_pickCol+col)/2]=="无子")

{

validateFlag=true;

}

else

validateFlag=false;

}

}

elseif(_pickChessValue=="红¨¬马¨ª")

{

if(Math.Abs(_pickRow-row)==2&&Math.Abs(_pickCol-col)==1)

{

if(_chessValue[(_pickRow+row)/2,_pickCol]=="无子")

{

validateFlag=true;

}

else

validateFlag=false;

}

if(Math.Abs(_pickRow-row)==1&&Math.Abs(_pickCol-col)==2)

{

if(_chessValue[_pickRow,(_pickCol+col)/2]=="无子")

{

validateFlag=true;

}

else

validateFlag=false;

}

}

}

2.2.3象(相)的走法规则

象(相)的走法和马的走法有些类似,但是象(相)是走四格,在走出四格的对角线,俗称“象(相)走田”。

但当田字的中间那个点有子的话象(相)是不能跳的这就是俗称的“卡象(相)脚”。

但是象(相)有个特点就是象(相)不能过河,只能在自己这半边的棋盘上活动。

if(_pickChessValue=="黑象"||_pickChessValue=="红¨象")

{

//如果是黑象

if(_pickChessValue=="黑象")

{

//如果走田中央无子且不越界时

if(Math.Abs(_pickRow-row)==2&&Math.Abs(_pickCol-col)==2

&&_chessValue[(_pickRow+row)/2,(_pickCol+col)/2]=="无子"&&row<=5)

validateFlag=true;

}

//如¨果是红象

if(_pickChessValue=="红象")

{

//如果象走田不越界时

if(Math.Abs(_pickRow-row)==2&&Math.Abs(_pickCol-col)==2

&&_chessValue[(_pickRow+row)/2,(_pickCol+col)/2]=="无子"&&row>=6)

validateFlag=true;

}

}

2.2.4士(仕)的走法规则

士(仕)就和它的名称一样,就像古时候在皇上身边的侍卫一样,它是负责保护将(帅)的,它只能在“九宫图”内活动,而且走棋的路线也只是在“九宫图”的斜线上。

//判断士的走棋规则

if(_pickChessValue=="黑士"||_pickChessValue=="红士")

{

if(_pickChessValue=="红士")

{

if(col<4||col>6||row<8)

validateFlag=false;

if(Math.Abs(_pickRow-row)!

=1||Math.Abs(_pickCol-col)!

=1)

validateFlag=false;

else

validateFlag=true;

}

if(_pickChessValue=="黑士")

{

if(col<4||col>6||row>3)

validateFlag=false;

if(Math.Abs(_pickRow-row)!

=1||Math.Abs(_pickCol-col)!

=1)

validateFlag=false;

else

validateFlag=true;

}

}

2.2.5炮的走法

炮的走法基本上和车的走法一样,只是在吃子的时候,炮要隔着一个子才能吃。

//炮的判断走棋规则

if(_pickChessValue=="黑¨²炮¨²"||_pickChessValue=="红¨¬炮¨²")

{

if(_pickCol!

=col&&_pickRow!

=row)

validateFlag=false;

else

validateFlag=true;

//炮不吃子时

if(_chessValue[row,col]=="无子")

{

if(_pickRow==row)

{

if(_pickCol

{

for(inti=_pickCol+1;i

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1