贪食蛇游戏--姚雪娜.doc_第1页
贪食蛇游戏--姚雪娜.doc_第2页
贪食蛇游戏--姚雪娜.doc_第3页
贪食蛇游戏--姚雪娜.doc_第4页
贪食蛇游戏--姚雪娜.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

贪食蛇游戏山东华宇职业技术学院高职毕业生毕业设计(论文)课题名称 贪食蛇游戏 专业 应用电子技术 班级 09应用电子1班 学号 20092060134 姓名 姚雪娜 指导教师 张洪顺 毕业设计(论文)任务书 毕业设计(论文)题目: 贪吃蛇游戏设计 专业: 应用电子技术 姓名: 姚雪娜 毕业设计(论文)工作起止时间: 2011-9-14至2011-10-28 毕业设计(论文)的内容要求: (1)画出模块干支图图,分析过程 (2)进行系统分析和模块设计 (3)进行程序设计 (4)选择元器件 (5)硬件、软件设计 (6)写出设计报告 指导教师(签名): 张洪顺 2011年10月28日毕业设计开题报告一、 课题设计(论文)目的及意义随着我国社会经济的迅猛发展, 人们生活步调日益加快,越来越多的人加入了全球化的世界。人们不再拘泥于一小块天地:加班、出差。而此时可以激起人们兴趣的游戏吸引了越来越多的人的眼球。贪食蛇游戏简单易行,操作方便,娱乐性较强,吸引了不少人。这款游戏紧紧抓住了人们的心理,虽然简单,却其乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后饿满足感,对于一直处于高压下的现代人来说,这是最好的放松工具。当代科学技术飞速发展,特别是微电子技术,计算机软件和应用技术的发展,使得人们的日常生活丰富多彩。单片微型计算机(简称单片机)作为微型计算机家族中的一员,以其独特的结构,良好的稳定性,便宜的价格在嵌入式领域应用广泛。本课题就是基于51单片机设计的贪食蛇游戏,希望能给大家带来更多的乐趣。二、 课题设计(论文)提纲1、贪食蛇游戏的概述2、设计要求、系统分析及模块设计3、程序流程及程序设计4、系统硬件的连接与综合调试三、课题设计(论文)思路、方法及进度安排12周的时间查询并搜集与设计课题有关的资料。34周找出设计方案,并进行系统设计。56周对系统进行调试,修改程序的错误并优化系统的整体设计。并整理出设计报告。四、课题设计(论文)参考文献1. 郭文川.单片机原理与接口技术.中国农业出版社,2007.82. 邱关源.电路.高等教育出版社,2005.43. 童诗白 华成英.模拟电子技术基础.高等教育出版社,2004.44. 阎石.数字电子技术基础.高等教育出版社,2004.45. 周明德.微型计算机硬件、软件及应用(第2 版)M.北京:清华大学出版社,19986. 张友德 赵志英.单片微型机原理、应用与实验M. 上海:复旦大学出版社,19927. 张立科.单片机典型模块设计实例导航.人民邮电出版社,2004.58. 张勇.PROTEL 99SE 电路设计技术入门与应用(第一版).北京:电子工业出版社,20029. 李建忠 单片机原理及应用.西安电子科技大学出版社,200410. 周平 伍云辉 编单片机应用技术.电子科技大学出版社11. 高尚楷.单片机控制交流稳压的设计.微计算机信息,199512. 胡汉才.单片机原理及其接口技术.清华大学出版社,2004:27-46目 录摘 要1第1章 概 述21.1 单片机的定义21.2 单片机的发展史21.3 单片机的应用领域31.4 用TC设计程序的方法41.5 简要说明41.6 设计要求4第2章 系统分析与模块设计52.1 算法设计52.2 数据结构52.3 模块设计52.4 模块支干图5第3章 程序图73.1 图形驱动73.2 开始画面83.3 显示食物93.4 蛇向前移动103.5 判蛇死113.6 吃到食物后处理123.7 判蛇反向移动133.8 游戏结束143.9 结束14第4章 程序设计及关键源代码154.1 定义上下左右控制方向154.2 设定游戏速度154.3 用结构体定义食物与蛇154.4 主函数154.5 图形驱动164.6 开始画面164.7 玩游戏具体过程164.8 游戏结束194.9 输出成绩19第5章 运行结果分析205.1 开始画面205.2蛇吃到两个食物后215.3 游戏结束画面22致谢辞23参考文献24V摘 要本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的免费的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。此外,其功能更多更强,可以选择难度。不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。这些也是贪吃蛇游戏的优点。本人因水平有限,只能设计简单的贪吃蛇游戏。不过,在功能上,比传统贪吃蛇游戏更丰富。蛇可以反向运动,操作起来,显得更为灵活。界面的颜色选用绿色,不易使眼睛疲劳。关键词:3D版 传统 灵活 第1章 概 述1.1 单片机的定义单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。早期的单片机都是8位或4位的。其中最成功的是INTEL的8051,因为简单可靠而性能不错获得了很大的好评。此后在8051上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!1.2 单片机的发展史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。1.3 单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。6.在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。1.4 用TC设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。模块的数量不宜太多,也不宜太少,要使每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图了。流程图要简单,容易理解,多用中文。不宜写过长的代码,增加理解难度。流程图与模块枝干图均可用绘图软件绘制,可适当加些背景色,用以区分。此外,流程图应容易转换成代码。绘制好了流程图,就要编写代码了。直接在TC环境里输入代码,然后运行测试,检查错误,最终,将设计出可行的程序。1.5 简要说明我设计的贪吃蛇游戏具有很多独特性。例如,墙壁不用实体,而用中空的墙,颜色为绿色,显得更美观,且不易使眼疲劳。操作上,做了些简化,游戏开始时便可以自动运行,且速度较快,属中等难度。玩游戏的过程相当简单,只需按键盘上的上下左右方向键,便可改变蛇的行进方向。食物随机产生。贪吃蛇吃到一个食物后便得到10分。得分显示在左上角。当蛇撞到墙壁或自己时,蛇死,游戏结束,输出得分。1.6 设计要求外观为矩形,食物随机产生,添加注释,统计得分、每吃到一个食物获得10分。蛇碰到自己或墙壁,游戏均结束。游戏结束时输出得分。画出模块枝干图与每个模块的程序流程图。修改某些代码,改变其外观及功能。游戏操作应尽量简单、界面美观,让人看了觉得舒服。第2章 系统分析与模块设计2.1 算法设计玩游戏过程采用递归算法,由while(1)控制循环过程,可使游戏重复玩,蛇死之前不停的玩。判断蛇死的算法是通过判断蛇有没有碰到自己及墙壁。使蛇向前移动采用递归算法,通过递归将蛇的每一节依次向前移动,横坐标与纵坐标依次向前赋值,从而达到使蛇前移的目的。蛇的前进方向通过if结构判断。2.2 数据结构蛇与食物信息分别用两个结构体存储与表示。将食物的横坐标x、纵坐标y和判断是否要出现食物的变量yes分别作为食物的结构体的成员。蛇的横坐标数组xn,纵坐标数组yn,蛇的节数node,蛇的移动方向direction、蛇的生命life分别作为蛇的结构体的成员。结构体内每个成员的存储类型均为整型。2.3 模块设计模块应具有高内聚性,低耦合性。这样,程序运行才更稳定,效率更高。据功能将贪吃蛇游戏划分成四个大模块,九个小模块。每个模块均具有自己的功能,而且,比较容易画出各个模块的流程图。2.4 模块支干图简要说明:图形驱动即完成初始化图形系统功能;开始画面模块的主要作用是根据设置绘制出玩游戏区域四周的墙壁;玩游戏的过程是游戏此游戏程序的核心,又可细分为好多小的功能模块;其中,显示食物模块仅完成显示食物功能;蛇前移模块即通过递归算法实现蛇的向某方向移动;判蛇死模块的功能是通过判断蛇是否碰到自己或墙壁来判断蛇有没有死亡。吃到食物后小模块只有蛇吃到食物后才起作用。即当蛇吃到食物后,蛇自身延长一节并绘出蛇,同时加10分。通过键盘操控来玩游戏主要由判反向移动模块完成,即当蛇不是反向移动时,按照键盘上方向键指示移动。游戏结束模块功能简单,仅完成输出得分与提示语功能。最后图形结束模块完成关闭图形功能。第3章 程序图3.1 图形驱动3.2 开始画面3.3 显示食物3.4 蛇向前移动 3.5 判蛇死3.6 吃到食物后处理3.7 判蛇反向移动 3.8 游戏结束 3.9 结束第4章 程序设计及关键源代码4.1 定义上下左右控制方向#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b4.2 设定游戏速度int gamespeed=60000;4.3 用结构体定义食物与蛇struct Food int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/food;/*食物的结构体*/struct Snake int xN; int yN; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/snake;4.4 主函数void main(void) Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/4.5 图形驱动void Init(void) int gd=DETECT,gm; initgraph(&gd,&gm,c:tc); cleardevice();4.6 开始画面左上角坐标为(50,40),右下角坐标为(620,460)的围墙void DrawK(void) setcolor(10);/*绿色*/ setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i=610;i+=10)/*画围墙*/ rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ for(i=40;i0;i-)/*蛇的每个环节前移动,关键算法*/ snake.xi=snake.xi-1; snake.yi=snake.yi-1; /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2: snake.x0-=10;break; case 3: snake.y0-=10;break; case 4: snake.y0+=10;break; for(i=3;isnake.node;i+) if(snake.xi=snake.x0&snake.yi=snake.y0) GameOver();/*显示失败*/ snake.life=1; break; if(snake.x0595|snake.y0455) GameOver(); snake.life=1; /*蛇死*/ if(snake.life=1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if(snake.x0=food.x&snake.y0=food.y)/*吃到食物以后*/ setcolor(0);/*把画面上的食物东西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.xsnake.node=-20;snake.ysnake.node=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node+;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10; PrScore();/*输出新得分*/ setcolor(4);/*画出蛇*/ for(i=0;isnake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10); delay(gamespeed); setcolor(0);/*用黑色去除最后一节*/ rectangle(snake.xsnake.node-1,snake.ysnake.node-1, snake.xsnake.node-1+10,snake.ysnake.node-1-10); /*endwhile(!kbhit)*/ if(snake.life=1)/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key=ESC)/*按ESC键退出*/ break; else if(key=UP&snake.direction!=4)/*判断是否往相反的方向移动*/ snake.direction=3; else if(key=RIGHT&snake.direction!=2) snake.direction=1; else if(key=LEFT&snake.direction!=1) snake.direction=2; else if(key=DOWN&snake.direction!=3) snake.direction=4; /*endwhile(1)*/4.8 游戏结束void GameOver(void) cleardevice(); PrScore(); setcolor(GREEN); settextstyle(0,0,3); outtextxy(200,200, Game over!Try!); getch();4.9 输出成绩void PrScore(void) char str10; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(5); settextstyle(0,0,2); sprintf(str,score:%d,score); outtextxy(55,20,str);第5章 运行结果分析 通过运行,我对自己的设计比较满意。运行结果正如我所料,此贪吃蛇游戏具有易操作性及充满活力的外观。截图及描述:5.1 开始画面图5-1 开始画面此图为开始画面图,蛇有三节,墙壁颜色为绿色,显得较有活力。5.2 蛇吃到两个食物后图5-2 蛇吃到两

温馨提示

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

评论

0/150

提交评论