C语言课程设计 黑白棋游戏

巡山小妖精
984次浏览
2021年02月16日 01:13
最佳经验
本文由作者推荐

美丽中国作文-

2021年2月16日发(作者:高职扩招)



























C


语言程序设计



课程设计(论文)





题目:








黑白棋游戏














院(系)




软件学院



专业班级:



计算机信息管理





号:


000000000


学生姓名:


000 0


指导教师:


000 00


教师职称:







起止时间:


2008.12.22



2009.1.2








课程设计(报告)任务及评语



院(系)


:软件学院



















教研室:软件教研窒







程序设计


(报告)


题目



程序设计的任务与要求:


< /p>



1


)掌握


C< /p>


语言编程的基础知识。




2


)较熟练地编写


C


语言应 用程序。




3


)了解


C


语言的常用标准函数、编程技巧、异常处理。




5


)联系已学过 的内容,巩固所学的理论,增强独立工作能力。



< p>
6



通过设计主要使学生有一个独立编写程序的过 程,


对理论学习及动手能


力都有一个很大的提高。




7


)通过本次设计,< /p>


进一步培养学生热爱专业的思想,


同时对本专业综合素

< p>
质的提高起一个积极的推动作用。



课程设计过程 中,要严格遵守实践环节的时间安排,听从指导教师的指导。


正确地完成上述内容,记录 实习日记,规范完整地撰写出课程设计报告。




000000


学生姓名



0000


专业班级



计算机信息管理


000


黑白棋游戏




































成绩:






























指导教师签字:























































2009





1




13




























书(论



文)








1




课程设计的目的与要求



...... .....................................


1


1.1


课程设计目的



.


................................. ......................


1


1.2


课程设计的实验环境



.


............................................. ....


1


1.3


课程设计的预备知识



.


............................................. ....


1


1.4


课程设计要求



.

................................................ .......


1



2




课程设计内容


..................... ...............................


2


2.1


程序功能介绍



.............................................. ..........


2


2.2


程序整体设计说明


< p>
............................................ ........


3


2.2.1


设计思路



.............................................. ........


3


2.2.2


数据结构设计及用法说明



....................................... .


4


2.2.3


程序结构(流程图)



......................................... ...


6


2.2.4


各模块的功能及程序说明



....................................... .


8


2.2.5


程序结果



.............................................. ........


8


2.3


程序源代码及注释


< p>
............................................ ........


9



3




课程设计总结


........................ .............................


21


参考资料


....................... ..........................................


22





























书(论



文)




1




课程设计的目的与要求



1.1


课程设计目的



本课程设计是计算机科 学与技术专业重要的实践性环节之一,是在学生学习完《程


序设计语言

< br>(C)


》课程后进行的一次全面的综合练习。本课程设计的目的和任务:




1.


巩固和加深 学生对


C


语言课程的基本知识的理解和掌握



2.


掌握

< br>C


语言编程和程序调试的基本技能




3.


利用


C


语言进行基本的软件设计



4.


掌握书写程序设计说明文档的能力



5.


提高运用


C

语言解决实际问题的能力



1.2


课程设计的实验环境



硬件要求能运行


Windows


20 00/XP


操作系统的微机系统。


C


语 言程序设计及相应的


开发环境。



1.3


课程设计的预备知识



熟悉


C


语言及


C


语言开发工具。



1.4


课程设计要求



1.


分析课程设计题目的要求



2.


写出详细设计说明



3.


编写程序代码,调试程序使其能正确运行



4.


设计完成的软件要便于操作和使用



5.


设计完成后提交课程设计报告





1


























书(论



文)




2




课程设计内容



2.1


程序功能介绍




只有在可以吃到对方棋子的方格里落子。


吃子规则:采用夹吃的原则,左图用红色标记的是黑方可落子的位置。当黑方落子


之 后,则夹在两黑子中间的白子都将变为黑子。右图是落子后的棋盘布局,蓝色标记的


是白 方可落子的位置。



夹子的方向包含:水平、竖直、斜对角。



1




点击“新游戏”,将从新初始化棋局。



2




3




4




5





打开游戏存档,默认是


.bwc


文件< /p>




保存当前游戏,默认扩展名为


.bwc



后退一步,即悔棋



前进一步,只有在前面的操作存在后退的基础上,该按钮才有效。



6




“与或图”按钮,当选择与或法与电脑博弈时会显示与或图。



7




点击设置按钮后,会出现以下对话框,可以修改设置,点击确定按钮后生效。














2


























书(论



文)



2.2


程序整体设计说明



程序设计的组成框图:






吃子规则:采用夹吃的原则,左图 用红色标记的是黑方可落子的位置。当黑方落子


之后,则夹在两黑子中间的白子都将变为 黑子。右图是落子后的棋盘布局,蓝色标记的


是白方可落子的位置。


夹子的方向包含:水平、竖直、斜对角



2.2.1


设计思路



从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可

以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是


0< /p>


代表


空格,


1


代 表白棋,


2


代表黑棋。这样程序的主要工作是接收棋手按键操作 ,棋手用


Up




3


























书(论



文)



Down



Left



Right

< p>
控制光标移动,回车键表示落子。如果无棋可走则显示停步信息。


一旦接收 到回车键或空格键,说明棋手落子,先判断是否是有效位置,也就是说已经有


棋子的位置 不能重叠落子,然后再判断该位置能否吃掉对方的棋子(根据黑白棋的游戏


规则,


只能将棋子落子能吃掉对方棋子的位置上)



如果条件满足则在该位置落子,


落子


时执行这样几个步骤,先调 用画棋子函数,将棋盘的相应位置上画上棋子,再调用吃棋


子函数,将对手的棋子变成自 己颜色的棋子,然后根据吃掉对手棋子的个数,给自己加


上相应的分数和给对手减去相应 的分数,再将数组中的相应元素赋值,标志该位置已经


落子,最后将落子的权限交给对手 。



2.2.2


数据结构设计及用法说明



在主函数中,通过调用绘制棋盘、棋手对战,判断棋盘变化、改变棋子颜色等函数的调< /p>


用来实现主函数的相应的功能



,以下是有关于主函数的流程图。



绘制棋盘和初始棋子



rawQp


棋手对战


playtoplay


判断棋盘变化(能否分出胜负)



QpChange


计算棋手的成绩



输出胜利者信息



Y


1


DrawQp


绘制棋盘和初始棋子



在界面上绘制< /p>


320*320


的棋盘,并在棋盘中绘制


8*8


的格子,初始棋子



2


SetPlay


设置棋子第一次的颜色



先走棋者持白子,后走棋黑子,每次交替



3



4


























书(论



文)



Playtoplay


人人对战函数



俩棋手交替走棋,定义键盘操作等



4


MoveColor


恢复原来棋盘状态



棋子由初始位置到落子位置的路径不改变颜色



5


QpChange


判断棋盘的变化



改变棋子的颜色



走棋后判断棋盘的变 化情况,根据变化情况判断是否可以输出分数



6


DoScore


处理分数





根据棋盘上旗子的多少进行分数的处理














5


























书(论



文)



2.2.3


程序结构(流程图)




1


)落棋位置判断:


















6


























书(论



文)




(< /p>


2


)输出成绩:

















7


























书(论



文)





3


)输出 最后的胜利者结果:





2.2.4


各模块功能及程序说明


< /p>


落棋位置的判断模块:判断


落子后棋盘的变化,判


断棋手的落棋位置和次数,两方交


换走棋。



成绩输出模块:


判断输出哪个棋手的分


,


在不同的位置输出,


清空成绩,


判断哪方胜利 。



输出胜利者信息模块:


开始判断最 后的结果,


将两人分数分别输出。




2.2.5


程序结果



一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己棋子的数目


多于对方。按键盘上的方向键可以上下左右移动棋子,按回车键可以摆放棋子。下到最


后谁的棋子多,谁赢。





8


























书(论



文)



2.3


程序源代码及注释



[size=12px]#include


图形系统头文件


*/


#define LEFT 0x4b00 /*


光标左键值


*/


#define RIGHT 0x4d00 /*


光标右键值


*/


#define DOWN 0x5000 /*


光标下键值


*/


#define UP 0x4800 /*


光标上键值


*/


#define ESC 0x011b /* ESC


键值


*/


#define ENTER 0x1c0d /*


回车键值


*/


int a[8][8]={0},key,score1,score2;/*


具体分数以及按键与存放棋子的变量


*/


char playone[3],playtwo[3];/*


两个人的得分转换成字符串输出


*/


void playtoplay(void);/*


人人对战函数


*/


void DrawQp(void);/*


画棋盘函数


*/


void SetPlayColor(int x);/*


设置棋子第一次的颜色


*/


void MoveColor(int x,int y);/*


恢复原来棋盘状态


*/


int QpChange(int x,int y,int z);/*


判断棋盘的变化


*/


void DoScore(void);/*


处理分数


*/


void PrintScore(int n);/*


输出成绩


*/


void playWin(void);/*


输出胜利者信息


*/ < /p>


/******


主函数


******** */


void main(void)


{


Int00wq


initgraph(&gd,&gr,


初始化图形系统


*/


Dra



]p]();/*


画棋盘


*/


playtoplay();/*


人人对战


*/


getch();


closegraph();/ *


关闭图形系统


*/



9


1


























书(论



文)



}


void DrawQp()/*


画棋盘


*/


{


int i,j;


scor e1=score2=0;/*


棋手一开始得分都为


0*/


setbkcolor(BLUE);


for(i=100;i<=420;i+=40)


{


line(100,i,420,i);/*


画水平线


*/


line(i,100,i,420); /*


画垂直线


*/


}


setcolor(0);/*


取消圆周围的一圈东西

< br>*/


setfillstyle(SOLID_FILL,15);/*


白色实体填充模式


*/


fillellipse(500,200,15,15); /*


在显示得分的位置画棋


*/


setfillstyle(SOLID_FILL,8); /*


黑色实体填充模式


*/


fillellipse(500,300,15,15);


a[3][3]=a[4][4]=1;/*


初始两个黑棋


* /


a[3][4]=a[4][3]=2;/*


初始两个白 棋


*/


setfillstyle(SOLID_FILL,WHITE);


fillellipse(120+3*40,120+3*40,15,15);


fillellipse(120+4*40,120+4*40,15,15);


setfillstyle(SOLID_FILL,8);


fillellipse(120+3*40,120+4*40,15,15);


fillellipse(120+4*40,120+3*40,15,15);


score1=score2=2; /*


有棋后改变分数


*/


DoSc ore();/*


输出开始分数


*/


}


void playtoplay()/*


人人对战


*/


{


int x,y,t=1,i,j,cc=0;



10

美丽中国作文-


美丽中国作文-


美丽中国作文-


美丽中国作文-


美丽中国作文-


美丽中国作文-


美丽中国作文-


美丽中国作文-