C语言课程设计报告黑白棋游戏设计_第1页
C语言课程设计报告黑白棋游戏设计_第2页
C语言课程设计报告黑白棋游戏设计_第3页
C语言课程设计报告黑白棋游戏设计_第4页
C语言课程设计报告黑白棋游戏设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单单 位位计算机与信息工程分院计算机与信息工程分院 分院分院( (系系) ) 专专 业业 电气信息类(计)电气信息类(计) 学学 号号 学生姓名学生姓名 指导教师指导教师 完成日期完成日期 20092009 年年 7 7 月月 1 1 日日 石家庄铁道学院课程设计 黑白棋游戏设计 摘 要 进行科研信息管理是高校重要工作之一。传统的科研信息管理由于是手工 操作,工作量大且容易出错。随着计算机和网络技术的迅速发展,越来越多的 科研单位和院校都拥有自己的科研管理系统,而采用 b/s 架构的科研管理系统 进行科研信息管理则是其趋势。 j2ee 技术的基础就是核心 java 平台,它有许多优点,例如:“

2、编写一次、 随处运行”的特性、方便存取数据库的 jdbc api, corba 技术以及能够在 internet 应用中保护数据的安全模式等等。j2ee 体系结构提供中间层集成框架 用来满足高可用性、高可靠性以及可扩展性的应用需求,为搭建具有可伸缩性、 灵活性、易维护性的网络应用系统提供了良好的机制。 本文基于 j2ee 平台技术、采用 browser/server 结构, 设计并实现了该系统 中的项目管理子系统。 论文首先介绍了系统开发涉及的相关技术,主要围绕 j2ee 的相关技术和系 统的体系结构。其次,介绍了高校科研管理系统的总体分析与设计,包括需求 分析、功能模块分析和数据库设计。最后

3、,利用 jsp+javabean 模式对项目管理 子系统进行了实现,并作了详细描述,主要采用图片与代码结合的方式详细地 叙述了系统功能的实现。 关键词:黑白棋,c 语言,数组,分支,循环,图形处理,函数 目录 1.1.选题的意义选题的意义.1 2 2系统功能需求分析系统功能需求分析.1 2.1 .1 2.2 .21 3.3 .21 3 3系统设计系统设计.26 3.1 .26 3.2 .28 4 4系统实现系统实现.40 4.1 .40 4.2 .40 4 4总结总结.40 5.1 总结.40 5.2 存在的主要问题.40 参考文献参考文献.41 第 1 章 选题的意义 自我介绍:自我介绍:

4、计 0805-2 班 电气信息类(计) 题目名称:题目名称: 黑白棋游戏设计 选题的目的:选题的目的: 通过该题目的设计,使自己掌握软件开发过程的问题分析、系统设计、程 序编码、测试等基本方法和技能。 分支、循环、数组、函数等的综合运用;图形处理函数的使用。 时间安排:时间安排: 6 月 24 号7 月 1 号 主要参考文献:主要参考文献: 1. c 语言程序设计实例精粹. 谭明金 . 电子工业出版社 2. c 语言编程技巧及实用程序荟萃. 鲁沐浴. 电子工业出版社 3. c 语言课程设计案例精选与编程指导 陈清华. 东南大学出版社 4. c 语言课程设计案例精编. 郭翠英 . 中国水利水电出

5、版社 5. c 语言实战 105 例. 王为青. 人民邮电出版社 第第 2 2 章章 系统功能需求分析 2 2、1 1 可行性分析 科技的飞速发展,将人类带入了信息时代, 计算机越来越贴近人的生活, 速度成为人们成功的前提条件,以致于人们必须不断尝试着使用各种手段来提 高自身的工作效率,其手段之一就是对键盘的充分利用和相应游戏软件的开发. 智能型的游戏越来越深受广大游戏爱好者的喜欢.方便而快捷. 黑白棋的游戏是要在一个 8*8 的网格中进行,而数组属于构造体类型,数 组是具有相同数据类型的变量序列,序列中的每个变量成为元素,数组元素由 一个统一标识的数组名和顺序好“下标”来表示。顾需要在游戏中

6、定义一个二 维数从而实现游戏的走棋、落棋、判断棋盘的变化等。 游戏不同于基于 c 语言的其他程序(如学生成绩管理系统、教务工作管理 系统、图书管理系统等)由于游戏本身的问地就在于缓解压力,所以基于 c 语 言设计的游戏需要一个良好的游戏界面,给游戏者以轻松和愉快的感觉。 turbo c 提供了 70 多个图形函数,这些函数包括在图形库文件 graphics.lib 中,他们被定义在 graphics.h 中。有如此强大的图形处理能力,去设计一个良 好的人机交流界面是可行的。 由于此游戏采用的是“人人对战”的模式,所以在游戏时,需要俩个游戏 者轮流下棋,棋手 1 走棋完毕后,经过判断棋盘变化过程

7、后棋手 2 走棋,游戏 过程需要在俩棋手间不断进行转化。在 c 语言中,提供了包括 ifelse,switchcase 等分支语句,综合运用这些分支语句,可以完成上述 转化。 黑白棋游戏双方共需要走棋 60 手,每次走棋后,都需要根据相同的标准判 断棋盘变化,来判断旗子颜色的变化情况。显然需要运用循环语句来简化编程 的长度。c 语言中提供了 while for 等循环语句可以实现上述功能。 游戏需要操作和输出显示游戏的结果,游戏的操作要由计算机的外部设备 在人的操作下完成。c 语言本身并不提供输入和输出语句,输入和输出的操作 都是由函数来完成的,在 c 语言的标准库函数中提供了一些输入和输出的

8、函数, 这些函数的指针都是针对系统隐含指定的输入和输出设备的。综合运用这些输 入和输出的函数可以实现上述的功能。 经济可行性分析:本游戏的实现,花费了很多时间,但没有花费什么费用,而 已这样简单但有一定难度的游戏更能激发游戏爱好者的兴趣,因此黑白棋游戏可 以满足游戏市场的寻求. 综合上述,基于 c 语言的游戏黑白棋的设计是可行的。 2-22-2 游戏黑白棋的总体设想游戏黑白棋的总体设想 在主函数中,通过调用绘制棋盘、棋手对战,判断棋盘变化、改变 棋子颜色等函数的调用来实现主函数的相应的功能 ,以下是有关于主函数的流 程图。 绘制棋盘和初始棋子 drawqp 棋手对战 play to play

9、判断棋盘变化(能否分出胜负) qpchange 计算棋手的成绩 输出胜利者信息 y 1drawqp 绘制棋盘和初始棋子 在界面上绘制 320*320 的棋盘,并在棋盘中绘制 8*8 的格子,初始棋子 2setplay 设置棋子第一次的颜色 先走棋者持白子,后走棋黑子,每次交替 3playtoplay 人人对战函数 俩棋手交替走棋,定义键盘操作等 4movecolor 恢复原来棋盘状态 棋子由初始位置到落子位置的路径不改变颜色 5qpchange 判断棋盘的变化 改变棋子的颜色 走棋后判断棋盘的变化情况,根据变化情况判断是否可以输出分数 6doscore 处理分数 根据棋盘上旗子的多少进行分数的

10、处理 第三章、 系统设计 3.1 系统界面设计系统界面设计 (把设计界面复制到这里把设计界面复制到这里) 3.2 系统编程设计系统编程设计 本程序设计为人与人对弈,一方执黑棋,一方执白棋,轮流走。 棋盘为 88 格,初始状态在棋盘中央交叉排放黑白棋子各两枚,为 统计棋子个数,有一个棋子计一分,白棋先走。每个棋手下棋时, 摆子的位置必须是以自己的棋子能包围住对方一个或多个棋子,被 包围的对方棋子将变成自己的棋子。包围的方向可以是上下左右以 及左右斜线共 8 个方向,只要能连成一条线即可。当轮到一个棋手 摆子,而他没有可以包围对方棋子的位置时,他必须停步,让对方 走棋,直到他可以走为止。当棋盘上有

11、一方的棋子为 0 或下满 64 格, 游戏结束,棋子少者输。 第四章、系统实现 4.1 系统编程代码系统编程代码 #include #define left 0 x4b00 #define right 0 x4d00 #define down 0 x5000 #define up 0 x4800 #define esc 0 x011b #define enter 0 x1c0d int a88=0,key,scoreblack2=0,scorewhite2=0; qipan()/*开始画面开始画面*/ int i,j; setbkcolor(blue); for(i=100;i=420;i+=

12、40) line(100,i,420,i); line(i,100,i,420); setcolor(0);/*取消圆周围的一圈东西取消圆周围的一圈东西*/ setfillstyle(solid_fill,15); fillellipse(500,200,15,15); setfillstyle(solid_fill,8); fillellipse(500,300,15,15); playcolor(int t)/*设置棋子第一次的颜色设置棋子第一次的颜色*/ if(t%2=0) setfillstyle(solid_fill,15); else setfillstyle(solid_fill

13、,8); playcolortwo(int xx,int yy)/*走了一步后恢复原来那里的格走了一步后恢复原来那里的格 子子*/ if(yy100) setfillstyle(solid_fill,blue); else switch(a(xx-120)/40(yy-120)/40) case 1: setfillstyle(solid_fill,15);break; case 2: setfillstyle(solid_fill,8);break; default: setfillstyle(solid_fill,blue); qipanchange(int xxx,int yyx,int

14、 t)/*棋盘的变化棋盘的变化,也就是黑白也就是黑白 的变化的变化*/ int i,j,k,kk,ii,jj; i=(xxx-120)/40; j=(yyx-120)/40; playcolor(t); if(j6)/*开始判断变化开始判断变化*/ /*往右边往右边*/ for(k=j+1;k8;k+) if(aik=aij|!aik) break; if(aikkkkk=0;k-) if(aik=aij|!aik) break; if(aikkkkkk-) aikk=aij; fillellipse(120+i*40,120+kk*40,15,15); if(i6)/*往下往下*/ for(

15、k=i+1;k8;k+) if(akj=aij|!akj) break; if(akjkkkk=0;k-) if(akj=aij|!akj) break; if(akjkkkkk-) akkj=aij; fillellipse(120+kk*40,120+j*40,15,15); if(i1ii-,jj+) aiijj=aij; fillellipse(120+ii*40,120+jj*40,15,15); if(i1)/*左下左下*/ for(k=i+1,kk=j-1;k=0;k+,kk-) if(akkk=aij|!akkk) break; if(akkkiikk=0k-,kk-) if(

16、akkk=aij|!akkk) break; if(akkkiikii-,jj-) aiijj=aij; fillellipse(120+ii*40,120+jj*40,15,15); if(i6kk8k+,kk+) if(akkk=aij|!akkk) break; if(akkkiikii+,jj+) aiijj=aij; fillellipse(120+ii*40,120+jj*40,15,15); doscore()/*处理分数处理分数*/ int i,j; scorewhite0=scorewhite1=scoreblack0=scoreblack1=0;/ *重新开始计分数重新开始

17、计分数*/ for(i=0;i8;i+) for(j=0;j8;j+) if(aij=1)/*分别统计两个人的分数分别统计两个人的分数*/ scorewhite1+; if(scorewhite1=10) scorewhite1=0;scorewhite0+; else if(aij=2) scoreblack1+; if(scoreblack1=10) scoreblack1=0;scoreblack0+; printscore(playnum)/*输出成绩输出成绩*/ int i,j,k; int s2; if(playnum=1)/*把分数给这个临时变量把分数给这个临时变量*/ for(

18、i=0;i2;i+) si=scorewhitei; else for(i=0;i2;i+) si=scoreblacki; if(playnum=1)/*清楚以前的成绩清楚以前的成绩*/ setfillstyle(solid_fill,blue); bar(550,100,640,400); if(playnum=1)/*判断输出的行数判断输出的行数*/ k=200; else k=300; setcolor(red); settextstyle(0,0,4); for(i=0,j=550;iscorewhite0) outtextxy(100,50,black win!); else if(scoreblack0scorewhite1) outtextxy(100,50,black win!); else if(scoreblack1120)/*四个方向按键盘的判断四个方向按键盘的判断*/ playcolortwo(xx,yy);/*判断原来位置因为画什么判断原来位置因为画什么,这里只这里只 画蓝色是不完整的画蓝色是不完整的*/ fillellipse(xx,yy,15,15); playcolor(t); xx-=40; fillellipse(xx,yy,15,15); e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论