c语言课程设计论

发布 2022-10-03 04:07:28 阅读 5862

课程设计任务书。

网络游戏的出现代表了一种全新娱乐方式的诞生。目前网络游戏正以其独特的魅力吸引着众多的玩家。随着游戏产业的蓬勃发展,将需要越来越多的人加入到游戏开发中来。

本设计所完成的五子棋游戏是在windows xp下使用microsoft visual c++6.0开发的c/s系统,可以实现网络间的双人对战。

本**从基本网络套节字开始入手,介绍一些本系统相关的理论知识,随后详细介绍五子棋游戏的开发过程。包括五子棋判断算法的实现等。最后对系统进行测试并对做工作进行总结。

关键词:游戏,五子棋,系统。

目录。摘要 1

一。概述 3

二.设计目的 3

三.功能描述 3

四.总体设计 4

1.系统模块图 4

2.任务执行流程图 4

3.下棋函数(move()函数)流程图 5

五.数据结构设计 7

1.定义数组 7

2.全局变量 7

六.函数功能描述 7

init() 7

()和show() 8

七.程序实现 8

1.源码分析 8

2.初始化模块 9

3.功能控制模块 10

4.下棋操作模块 15

5.主函数 18

八.运行结果: 19

1.初始化界面 19

2.操作界面 19

3.棋子的输赢界面 19

参考文献 20

当今时代,是一个新技术层出不穷的时代。随着人们物质生活的不断提高,电子产品已经走进家家户户,无论是生活和学习还是娱乐和消遣几乎样样都离不开电子产品,游戏可谓是我们最喜欢,最享受的生活乐趣之一。

五子棋是起源于中国古代的传统黑白棋种之一。亦有“连五子”,“五子连”,“串珠”,“五目”,“五目碰”,“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋既有现代休闲的明显特征“短,平,快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特征,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;就有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

然而,随着科技的发展,人们已经不仅仅局限于人与人之间的挑战,而是向更高的难度去挑战,那就是人于计算机之间的挑战。因此借着c语言程序设计的机会,我决定来研究一下五子棋,并且项计算机挑战一下。

本系统采用turbo c语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。本**主要介绍了该课题的开发过程和所要完成的功能。并且说明了系统的设计思想,设计步骤。

本程序旨在进一步训练读者游戏开发的技巧,掌握c语言图形模式下的编程。

1) 加深学生对c语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握。

2) 熟练掌握流程图的绘制。

3) 熟悉所用计算机系统的操作方法。

4) 学会上机调试程序,善于发现程序中的错误,并能快速排除这些错误。

5) 学会运用c语言解决实际中的问题的能力。

6) 学会用文档书写程序涉及说明。

本程序用c语言实现五子棋游戏,能进行基本的五子棋操作。程序能实现界面的初始化功能,下棋功能和胜负判断功能。

1) 初始化功能。程序初始化屏幕和棋盘。

2) 实现下棋操作。程序能实现下棋操作,在下棋过程中能随时退出。

3) 胜负判断。程序能对下棋的结果进行判断,分出胜负,并显示胜负信息。

本程序包括3个模块,分别是初始化模块,功能控制模块,下棋操作模块,如下是对各个模块功能的描述。

1)初始化模块。该模块主要是初始化棋盘。

2)功能控制模块。该模块是各个功能函数的集合,主要是被其他模块调用,包括画棋子,棋盘和胜负判断等功能。

3)下棋操作功能模块。该模块用于执行下棋操作。

游戏初始化是黑棋先行。当黑棋行棋后,程序判断黑棋是否获胜,如果获胜则显示获胜信息,否则交换行棋;交换行棋后,白棋行棋,当白棋行棋后,程序判断白棋是否获胜,如果获胜,则显示获胜信息,否则交换行棋。程序以一方获胜或者按esc键为结束标志,任务执行流程图如下所示。

下棋操作函数(move()函数)是本程序的核心部分,它调用功能模块中的函数来实现个种操作。首先获取key值(up,down,left,right,enter,esc),如果获取的key值为esc,则退出程序;如果key值为up,down,left或right,表示棋子移动,程序首先在移动方向上判断棋子下一步是否超出边界,如果超出边界则山么也不做(表示棋子当前位置已经处于棋盘边界了),否则根据flag[i][j]值来执行操作(如果flag[i][j]为0,则画棋子显示运行轨迹;如果flag[i][j]的值不为0,则表示(i,j)位置已经有棋子了);如果key为enter,则表示落子操作,则在落子后,判断当前行棋方是否获胜。如果获胜则显示获胜信息,否则交换行棋方。

move()函数流程图如下所示:

本程序没有自定义结构体,只定义了一些全局变量和数组。另外,本程序还涉及坐标位置的移动。

定义了数组flag[i][j],该数组存储整型类型的值,最多可以存储到flag[15][15]( 实际上棋盘只画了15*15个位置)。数组flag存储给定坐标(实际是反映映射位置的状态值)的状态值。

max_x和may_y

这两个变量是整型类型的。表示行走时棋子处的坐标,分别表示x和y坐标。

该变量时整型类型的,表示按下键盘的键值,本程序中可以获取的值有0x4b00(left).0x4d00(right).0x5000(down).

0x4800(up).0x011b(esc)和0x3920(enter)。

该变量也是整型类型的。用于表示棋子的坐标位置。

函数原型:void drawboard()

drawboard()函数用于画棋盘。棋盘是由15条横线和15条竖线交叉组成的。该函数主要是调用系统函数line()来实现的。

函数原型:void show init()

show init()函数用于设定棋盘中初始位置的棋子的坐标及填充颜色,主要通过setfillstyle ()函数(是设置填充颜色函数)和fillellipse ()函数(是画出并且填充椭圆的函数)来实现对初始化棋子的设置。

函数原型分别为:void hide ()void show()

这两个函数前者是恢复棋子的上一步状态(即转换行棋方,回到棋子的初始状态),而后者是显示棋子的当前状态。

函数原型:void move()

move()函数是本程序的核心函数,主要用于实现下棋操作 。该函数首先获取下棋者从键盘按下的键值(或esc),根据获取的键值作相应的操作。对于每一种操作,都要首先判断行棋者棋子的落子范围是否正确,即落子是否在棋盘内,对于不在棋盘内的落子不予处理;对于落子在棋盘内的操作,则根据数组flag[i][j]((i,j)表示当前位置的坐标)中保存的当前位置的状态来进行,如果状态值为0,则可以按照行棋者的要求移动棋子(圆圈),并在棋子后把(i,j)位置的状态值改为非0;如果获取键值为esc,则退出程序。

C语言课程课程设计

课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...

C语言课程设计

目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...

C语言课程设计

目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...