C语言课程设计运动的小车动画

上传人:仙*** 文档编号:33891243 上传时间:2021-10-19 格式:DOC 页数:18 大小:1.41MB
返回 下载 相关 举报
C语言课程设计运动的小车动画_第1页
第1页 / 共18页
C语言课程设计运动的小车动画_第2页
第2页 / 共18页
C语言课程设计运动的小车动画_第3页
第3页 / 共18页
点击查看更多>>
资源描述
XXX航空工业学院课课 程程 设设 计计 报报 告告课程设计名称:C 语言课程设计语言课程设计课程设计题目:运动的小车动画 院(系):计算机学院专 业:网络工程班 级:学 号:姓 名: 指导教师:完成日期:2009年07月17日沈阳航空工业学院课程设计报告 -I-目目 录录第第 1 章章 需求分析需求分析.11.1 题目的内容与要求.11.2 开发工具.11.3 题目分析.1第第 2 章章 概要设计概要设计.22.1 总体结构.2第第 3 章章 详细设计详细设计.33.1 主函数模块.32.2 图形驱动模块.32.3 场景游戏模块.43.4 游戏过程模块.53.5 结束模块模块.7第第 4 章章 调试分析调试分析.8第第 5 章章使用说明使用说明.9参考文献参考文献.11附附 录(程序清单)录(程序清单).12沈阳航空工业学院课程设计报告 -1-第 1 章 需求分析1.1 题目的内容与要求题目的内容与要求内容:实现一个简单动画,屏幕背景为蓝色,画一简单小车。小车在屏中随意移动。要求:1)实现简单的游戏界面;2)对小车运动进行控制;3)熟练掌握基本的调试方法,并将程序调试通过;4)采用 VC 环境进行调试运行。1.2 开发工具开发工具操作系统:WindowsXP SP2。硬件环境:CPUAMD3000+内存 1G ,硬盘 120G。软件环境:TurboC。1.3 题目分析题目分析本程序首先分为四个模块即编写四个函数,主程序按顺序调用这四个函数最后掉用关闭图形系统函数,至此整个程序算是真正结束。题目程序设计思想分析是:先设置背景色和前景色,确定小车的初始位置和车头方向,画出小车,在没有按键的情况下,进入一个循环系统小车自动向前运动,直到撞墙,有按键的情况下,判断按键的性质确定车头的方向,计算小车的新坐标,进入另一个画车循环,一直循环,直到结束。沈阳航空工业学院课程设计报告 -2-第 2 章 概要设计2.1 总体结构总体结构 本程序主要分为五个模块:主函数模块,图行驱动模块,场景游戏模块,游戏过程模块,结束模块。主函数模块实现函数调用。图行驱动模块对图行操作系统进行初使化。场景游戏模块建立简单的游戏界面。游戏过程模块画小车,并通过键盘控制小车的运动。结束模块关闭作图系统,结束程序(如图 2.1) 。小车动画程序场景游戏模块游戏过程模块主模块图形驱动模块结束模块图图 2.1 功能模块功能模块 1 主函数模块:本模块主要实现函数的调用,一共四个函数。 2 图行驱动模块:本模块主要是实现对图形系统进形初始化以及做出简单界面,设置屏幕背景颜色,还有显示游戏开始时的菜单。 3 场景游戏模块:本模块主要是实现画出游戏界面,利用循环画出四面墙,屏幕背景为蓝色。 4 游戏过程模块:本模块主要是实现画出初始小车及显示其位置,用 swich-case()来控制小车的移动情况。 5 结束模块:本模块主要是实现最后清屏以及关闭作图系统,显示游戏结束菜单。 沈阳航空工业学院课程设计报告 -3-第 3 章 详细设计3.1 主函数模块主函数模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图 3.1 所示。调用 Init()函数调用 DrawPlay()函数调用 GamePlay()函数调用 close()函数开始结束 图图 3.1 主模块流程图主模块流程图 主函数主要完成函数的调用,一共有四个函数:画图系统初始化函数,画开始游戏界面函数,游戏过程函数,关闭图形系统函数。2.2 图形驱动模块图形驱动模块此模块完成图形操做系统初始化,选择适配器,设置背景颜色及前景色,显示进入游戏界面,流程如图 3.2 所示。沈阳航空工业学院课程设计报告 -4- initgraph(&graphdrive,&graphmode,”) setcolor(WHILT)设置前景色清屏 画进入游戏的界面setbkcolor(BLUE) 设置背景色清屏开始结束图图 3.2 显示模块流程图显示模块流程图 图形系统初始化:程序自动在当前选择适配器,背景色设为蓝色,前景色为白色,画四面墙为游戏开始界面,outtextxy()函数确定字符显示位置及其内容。2.3 场景游戏模块场景游戏模块 此模块主要完成在完成图形初始化后画出游戏界面,该游戏界面为四面墙,屏幕背景为蓝色,画墙面用了两个 for 循环完成,流程如图 3.3 所示。沈阳航空工业学院课程设计报告 -5-int i ;setbkcolor(BLUE)etcolor(11);setlinestyle();i=50i=600rectangle(i,40,i+10,49)rectangle(i,451,i+10,460)i+i=40i=450rectangle(50,i,59,i+10)rectangle(601,i,610,i+10)i+YNYN结束开始图图 3.3 场景模块流程图场景模块流程图3.4 游戏过程模块游戏过程模块此程序是本游戏的主体部分,主要完成游戏的运动过程,首先确定小车的位置和车头方向,接着在这个位置画小车,利用循环画小车,在没有按键情况下,进入画小车循环,直到小车撞墙结束整个程序。如果有按键则判断按键的数值,沈阳航空工业学院课程设计报告 -6-计算新的坐标,再判断小车头是否撞墙,如果撞墙则结束循环显示结束出结束界面的内容,如果不 撞墙则进入画小车循环,接着进入有没有按键的循环,直到整个程序结束为止。流程如图 3.4 所示。进入设置小车初始方向和位置i=0i4画第i节小车i-没有按键i=3i=0Car.xi=car.xi-1;Car.yi=car.yi-1;i-;判断按键等于ESCKey=up&car.direction!=4Car-direction=3Car.y0-=20Key=RIGHT&car-direction!=2Car.direction=1Car-x0+=20Key=LEFT&car.direction!=1Car.directin=2Car.x0-=20Key=down&car.direction!=3Car.direction=4Car.y0+=20小车撞墙设置游戏速度和背景颜色画新的小车YNYYNYNYNNYYNYN进入NY图图 3.4 游戏模块流程图游戏模块流程图接受按键结结 束束开开 始始沈阳航空工业学院课程设计报告 -7-3.5 结束模块模块结束模块模块此模块主要完成关闭图形操作系统,流程如图 3.5 所示。 调用 closegraph()函数开始结束 图图 3.5 结束模块流程图结束模块流程图沈阳航空工业学院课程设计报告 -8-第 4 章 调试分析问题 1:由于在编源代码的时候我没有掌握好屏幕的坐标,导致小车画不出来,也答不到我想要的停止效果。解决办法:我就采用尝试法修改错误,我的程序中有四个坐标,我就已次改变一个坐标,一次改变一点坐标的大小,最终完成了我想要的效果。问题 2:小车运动时,小车运动的前一个位置仍然有小车图像。解决办法:在代码适当的位置适当加入 cleardevice();函数,使小车在屏幕上运行轨迹正确显示。问题 3:出现一些未定义的参数。解决方法:由于我的粗心且 C 语言大小敏感,我的错误就是弄错了字母的大小写。改了大小写就可以了。问题 4:小车不动。解决方法:函数调用顺序出现了错误,导致一些函数无法运行,换了顺序序就像我想象的运行了。沈阳航空工业学院课程设计报告 -9-第 5 章 使用说明 以下图 5.1 和图 5.2 为程序执行后小车运动的画面。背景为蓝色,小车为红色。图 5.3 为游戏结束界面图。图 5.1 小车运动图小车运动图图 5.2 小车运动图小车运动图沈阳航空工业学院课程设计报告 -10-图图 5.3 结束时的界面结束时的界面沈阳航空工业学院课程设计报告 -11-参考文献1张长海.C 语言程设计M,北京高等教育出版社,20062刘红伟.C+游戏开发M,机械工业出版社,20063刘变红.C 语言高级编程及实例剖析M,人民邮电出版社,20074石祥滨.C 语言程序设计基础与实践M,辽宁大学出版社,20045谭浩强.C 程序设计(第二版)M,清华大学出版社,2000沈阳航空工业学院课程设计报告-12-附 录(程序清单)#define N 200#include #include #include #define LEFT 0 x4b00#define RIGHT 0 x4d00#define DOWN 0 x5000#define UP 0 x4800#define ESC 0 x011bint i,key;int gamespeed=60000;/*游戏速度自己调整*/struct car int xN; int yN; int node;/*小车的节数*/int direction;/*小车移动方向*/car;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束*/void GamePlay(void);/*具体过程*/*主函数*/void main(void) Init();/*图形驱动*/ DrawK();/*开始画面*/沈阳航空工业学院课程设计报告-13- GamePlay();/*具体过程*/ Close();/*图形结束*/*图形驱动*/void Init(void) int gd=DETECT,gm; initgraph(&gd,&gm,c:tc); cleardevice();/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void)setbkcolor(BLUE); setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i=600;i+=10)/*画围墙*/ rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ for(i=40;i0;i-)/*小车的每个环节往前移动,也就是小车运行的关键算法*/ car.xi= car.xi-1; car.yi=car.yi-1; /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动车头*/ switch(car.direction) case 1:car.x0+=20;break; case 2: car.x0-=20;break; case 3: car.y0-=20;break; case 4: car.y0+=20;break; if(car.x0595|car.y0455)/*小车是否撞到墙壁*/GameOver();/*本次演示结束*/ getch();setcolor(4);/*画出小车*/for(i=0;icar.node;i+) rectangle(car.xi,car.yi,car.xi+20, car.yi-20);delay(gamespeed);setcolor(BLUE);/*用背景色去除车的的最后一节*/rectangle(car.xcar.node-1,car.ycar.node-1,car.xcar.node-1+20,car.ycar.node-1-20); /*endwhile(!kbhit)*/ key=bioskey(0);/*接收按键*/ if(key=ESC)/*按ESC键退出*/ GameOver(); else沈阳航空工业学院课程设计报告-15- if(key=UP&car.direction!=4)/*判断是否往相反的方向移动*/ car.direction=3; else if(key=RIGHT&car.direction!=2) car.direction=1; else if(key=LEFT&car.direction!=1)car.direction=2; elseif(key=DOWN&car.direction!=3) car.direction=4; /*endwhile(1)*/ void GameOver(void) cleardevice(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,GAME OVER); Close(); /*图形结束*/void Close(void) getch(); closegraph();沈阳航空工业学院课程设计报告-16-课程设计总结:课程设计总结:这次 C 语言课程设计是我的第一次编写一个相对平时实验课写的小程序大得多也复杂得多的程序。我的题目是小车动画,属于游戏类,用到的函数全是新的,这说明我必须自修,对我来说是一个挑战。在这一个暑假的的开发工作中,虽然遇到不少困难和难题,但是我都以坚坚持不懈的毅力和顽强的拼搏精神一一解决了它们。虽然暑假没玩好,看书看到眼睛疼,但是当小车动画程序最终按自己的意图执行时的欣慰亦足以弥补。通过此次的课程设计,我也意识到了自身的不足。无论是从程序模块化还是系统稳定性都还有很大的改进优化余地,自己 C 语言知识学的太少,以后学习应该开阔眼界,应当多阅读他人的优秀程序,取人所长,补己之短。努力提升自己的程序编写、系统开发水平以及 C 知识水平。这次课程设计给我最大的收获是:深刻地体会到了 C 语言的严格,自己又太粗心大意。C 语言是一门高深的学问,很难学但也充满乐趣,此次课设让我更想学好计算机。课程设计结束了,但是我知道我的学习没有结束。当今的计算机技术发展更新的速度极快,我们必须不断的学习、提升才能跟上时代的步伐!指导教师评语: 指导教师(签字): 年 月 日课程设计成绩
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!