贪吃蛇游戏设计报告
实验报告贪吃蛇

一、实验目的1. 掌握Python编程语言的基本语法和面向对象编程思想;2. 理解并实现贪吃蛇游戏的基本算法和流程;3. 学会使用Pygame库进行图形界面设计;4. 提高编程实践能力和团队协作能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm4. 图形库:Pygame三、实验内容1. 游戏界面设计2. 游戏逻辑实现3. 游戏控制实现4. 游戏测试与优化四、实验步骤1. 游戏界面设计(1)初始化Pygame库```pythonimport pygame```(2)设置游戏窗口```pythonscreen = pygame.display.set_mode((640, 480))pygame.display.set_caption("贪吃蛇游戏")```(3)设置游戏背景颜色```pythonscreen.fill((0, 0, 0))```2. 游戏逻辑实现(1)定义蛇类```pythonclass Snake:def __init__(self, x, y, width, height, color):self.x = xself.y = yself.width = widthself.height = heightself.color = colorself.x_change = 0self.y_change = 0def draw(self, surface):pygame.draw.rect(surface, self.color, (self.x, self.y, self.width, self.height))```(2)定义食物类```pythonclass Food:def __init__(self, x, y, width, height, color):self.x = xself.y = yself.width = widthself.height = heightself.color = colordef draw(self, surface):pygame.draw.rect(surface, self.color, (self.x, self.y, self.width, self.height))```(3)定义游戏主函数```pythondef game():clock = pygame.time.Clock()snake = Snake(50, 50, 10, 10, (0, 255, 0))food = Food(300, 300, 10, 10, (255, 0, 0))game_over = Falsewhile not game_over:for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueelif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:snake.x_change = -10snake.y_change = 0elif event.key == pygame.K_RIGHT:snake.x_change = 10snake.y_change = 0elif event.key == pygame.K_UP:snake.x_change = 0snake.y_change = -10elif event.key == pygame.K_DOWN:snake.x_change = 0snake.y_change = 10snake.x += snake.x_changesnake.y += snake.y_changescreen.fill((0, 0, 0))snake.draw(screen)food.draw(screen)pygame.display.flip()clock.tick(15)pygame.quit()```3. 游戏控制实现在游戏主函数中,通过监听键盘事件来控制蛇的移动方向。
贪吃蛇游戏程序设计实验报告

贪吃蛇游戏程序设计实验报告贪吃蛇游戏程序设计实验报告1、引言1.1 文档目的1.2 背景介绍1.3 项目概述2、需求分析2.1 用户需求2.2 功能需求2.3 非功能需求3、总体设计3.1 系统结构3.2 使用的开发工具和技术3.3 程序流程图3.4 数据结构设计4、模块设计4.1 游戏界面模块设计4.2 蛇的移动模块设计4.3 食物模块设计4.4 游戏结束判定模块设计5、开发过程5.1 编码规范5.2 界面设计与实现5.3 功能模块实现5.4 联合测试与整合调试6、测试结果与分析6.1 单元测试6.2 集成测试6.3 性能测试6.4 用户验收测试7、部署与运维7.1 系统环境要求7.2 安装步骤7.3 运行与维护8、问题与解决方案8.1 开发中的问题8.2 解决方案9、结论9.1 实验总结9.2 实现目标9.3 后续改进方向附件:- 源代码文件- 参考文献法律名词及注释:- 版权:保护原创作品的独有权利,防止他人未经授权使用、复制或传播。
- 许可证:授权他人在特定条件下使用受版权保护的作品。
- 商标:用于标识特定产品或服务来源的标识,可以是文字、图形、颜色或声音。
- 专利:通过创造一种新的发明而获得的对该发明的独有权利,防止他人在未获许可的情况下制造、使用或销售该发明。
- 使用条款:规定使用软件、服务或作品的条件和限制。
- 免责声明:声明作者或提供者对使用软件、服务或作品时可能产生的损害不承担责任。
全文结束 \。
项目实践报告模板(贪吃蛇)

1系统设计要求1.1需求分析本系统为一个用C#实现, 用类和GDI+完成一个贪吃蛇游戏软件,该系统的具体功能如下:(1).控制蛇的运动方向:用键盘上的↑.↓.←.→控制蛇的运动方向。
若在游戏中,蛇头碰墙或是自己的身体,则游戏结束。
(2).蛇吃食物:蛇每吃一个食物就增长一节,并且得分,加相应的分值,达到一定的分值游戏上升一个级别。
(3).游戏结束:如果在游戏过程中,蛇头碰墙或是碰到了自己的身体,则游戏结束。
速度:玩家可以自己选择游戏速度1.2界面要求+要求界面简洁美观,简单易用。
1.3设计环境本程序选择Visual Studio 2005作为实验环境。
2设计思路2.1系统分析(1). 明确贪吃蛇的游戏规则(2). 将panel控件设为游戏背景。
(3). 场地.贪吃蛇及食物都是在panel 控件的重绘中绘制。
绘制蛇身的好处是在贪吃蛇进行移动时,不需要重绘制背景。
(4).用Timer组件来实现贪吃蛇的移动,并且该组件的Interval属性来控制移动速度。
2.2概要设计2.根据设计思路,可以为系统设计,.四个类,一个豆类,一个块类,一个蛇类,和一个场地类。
豆(Bean)类的作用:是在特定的位置生成一个豆,豆要不断被吃掉,当豆被吃掉后,原豆消失,又在新的位置出现新的豆。
块(Block)类的作用:用来构成蛇,在蛇出现时,要把构成蛇的块一个个输出(显示),在蛇消失时,要把块消除掉。
蛇(Snack)类作用:组成蛇,如果蛇吃了豆就增长一块,蛇死亡后要消除块。
在蛇运行过程中,判断是否碰到自身,判断是否死亡。
场地(Floor)类作用:游戏的主场地,豆要在此范围出现,蛇要在此范围运行。
3系统功能模块图3.1功能模块图3.2程序流程图定义新块bb定义并实例化点P(vertex.X+25,vertex.Y+25)实例化blockList[count]定义i=0i<=count是否成立块添加到blockList中i=i+1HeadNumber=count3.3类的结构图4调试过程生成块和豆的调试过程:运行程序,在画布上随机生成块和豆,如果无法生成块和豆就应该检查其随机生成函数,调整其相关函数.运行程序,生成不同大小和颜色的豆和块.蛇类的调试过程:运行程序在画布上随机生成蛇,如果无法随机生成蛇应查看生成蛇的相关函数,如随机生成函数,如果蛇只增不减少应查看显示蛇的方法里的移出函数.更该相关的函数后运行函数,控制蛇的运行方向以及测试蛇类的各项功能.场地类的调试过程:运行程序,初始化场地,如果无法生成场地,检查显示场地的方法,然后运行程序,测试蛇类的各项功能.主游戏的调试过程:运行程序,如果"级别"菜单的级别无法生效,就应该检查属性的click事件,是否把级别控制添加到click事件中。
贪吃蛇设计报告

贪吃蛇设计报告1. 引言贪吃蛇是一款经典的游戏,它的目标是通过操纵蛇的移动,吃掉尽量多的食物,并尽可能长大。
本文将介绍贪吃蛇游戏的设计过程和实现细节。
2. 游戏介绍贪吃蛇游戏由一个蛇和若干个食物组成。
玩家通过控制蛇的移动方向,使蛇能够吃到食物并增长身体长度。
当蛇撞到游戏边界或自己的身体时,游戏结束。
3. 游戏设计3.1 游戏场景贪吃蛇游戏的场景是一个矩形的游戏区域,可以使用二维数组来表示。
每个数组元素可以表示该位置的状态,如蛇的身体部分、食物或空白区域。
3.2 蛇的移动蛇的移动是关键部分,可以通过控制蛇的方向来实现。
蛇的长度会随着吃到食物而增加,当蛇移动时,蛇的尾部会被剪切掉,而蛇头会根据移动方向新增一个位置。
3.3 食物的生成食物的生成可以随机选择游戏区域的一个空白位置,并将该位置设置为食物。
3.4 碰撞检测碰撞检测主要检测蛇是否撞到了游戏边界或自己的身体。
当蛇的头部位置与边界或身体的其他部分位置重叠时,游戏结束。
4. 游戏实现贪吃蛇游戏可以使用编程语言来实现。
以下是一个示例的实现代码:import random# 游戏区域的大小width =10height =10# 蛇的初始位置和方向snake = [(0, 0)]direction = (1, 0)# 食物的位置food = (random.randint(0, width-1), random.randint(0, height-1))# 游戏是否结束的标志game_over =False# 游戏主循环while not game_over:# 处理输入# ...# 更新蛇的位置head = snake[0]new_head = (head[0] + direction[0], head[1] + direction[1])snake.insert(0, new_head)# 如果蛇头位置与食物位置重叠,则吃掉食物并生成新的食物if new_head == food:food = (random.randint(0, width-1), random.randint(0, height-1)) else:snake.pop()# 检测碰撞if new_head[0] <0or new_head[0] >= width or new_head[1] <0or ne w_head[1] >= height:game_over =Trueif new_head in snake[1:]:game_over =True# 渲染游戏界面# ...# 游戏结束,显示得分等信息# ...5. 总结贪吃蛇游戏是一款简单但耐人寻味的游戏,通过实现蛇的移动、食物的生成和碰撞检测等功能,可以让玩家体验到游戏的乐趣。
贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现学校:轻工大学院系:班级:姓名:学号:2015 年12月16日目录一、题目介绍二、设计目的三、详细设计3.1贪吃蛇本体设计3.2贪吃蛇食物设计3.3游戏界面设计3.3.1游戏初始化3.3.2游戏开始3.3.3游戏暂停3.3.4游戏退出3.3.5游戏总界面3.3.6游戏区域与背景3.3.7关于SNAKE3.4玩法规则设计3.5核心设计四、功能测试五、总结六、参考文献一、题目介绍:编写一个基于MFC的小游戏。
基本要求:1、实现一个小游戏2、实现基本游戏控制功能3、具有游戏数据保存功能4、界面布局合理、美观;二、设计目的:通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。
了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。
程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。
培养和锻炼开发游戏的能力。
三、详细设计3.1贪吃蛇的本体设计贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下:struct Snake{int x,y;int len;int direct;}Snake[50];3.2贪吃蛇食物设计贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。
struct Food{int x;int y;int isfood;}Food;3.3游戏界面设计3.3.1游戏初始化游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;void CSNAKEView::OnInitialUpdate(){CView::OnInitialUpdate();Snake[0].x=10;Snake[0].y=10;Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;Snake[0].direct=3;Snake[0].len=3;Food.isfood=1;//初始化贪吃蛇起初有3个节点,长度为3,起始坐标;食物默认为1无0有// TODO: Add your specialized code here and/or call the base class }void CSNAKEView::oninit(){CDC *pDC=GetDC();CBrush DrawBrush=(RGB(100,100,100));CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);for(int i=0;i<=Snake[0].len-1;i++)pDC->Rectangle(Snake[i].x*20,Snake[i].y*20,(Snake[i].x+1)*20,(Snake[i].y+1)*2 0);pDC->SelectObject(DrawBrush);}3.3.2游戏开始点击游戏开始菜单后,出现一个对话框,提示一秒后,将开始游戏。
java贪吃蛇课程设计报告总结

课程设计报告:Java贪吃蛇游戏1. 背景贪吃蛇是一款经典的街机游戏,通过控制蛇的移动,吃掉食物,使蛇变得越来越长,直到触碰到边界或自己的身体为止。
该游戏在20世纪80年代流行起来,并成为了一种代表性的休闲娱乐方式。
贪吃蛇游戏可以提高玩家的反应能力、体力协调和空间感知能力。
本次课程设计旨在通过使用Java编程语言,设计实现一个简化版的贪吃蛇游戏,以加深学生对面向对象程序设计的理解和应用,并培养学生的逻辑思维能力和团队协作精神。
2. 分析2.1 游戏规则分析在贪吃蛇游戏中,玩家通过控制蛇的移动方向,使蛇吃到食物从而变长,直到游戏结束。
具体规则如下:•初始状态下,蛇由一个长度为3的身体组成,呈水平放置。
•蛇的移动方式为每个时间单位(通常为固定时间间隔)前进一格,移动方向由玩家通过键盘输入控制。
•蛇在吃到食物后,身体变长一节,并在地图上随机生成新的食物。
•蛇头碰到地图边界或自身身体的任意部分,游戏结束。
2.2 功能模块分析基于对游戏规则的分析,可以将贪吃蛇游戏的功能模块划分如下:•游戏初始化模块:初始化地图、蛇的初始位置和长度、生成初始食物等。
•用户输入模块:读取用户的键盘输入,控制蛇的移动方向。
•游戏逻辑模块:根据用户输入和游戏规则,更新蛇的位置、判断是否吃到食物或撞到障碍物等。
•地图绘制模块:将地图、蛇、食物等元素绘制到屏幕上。
•游戏循环模块:根据固定时间间隔循环执行游戏逻辑、用户输入和地图绘制等操作。
•游戏结束模块:在游戏结束时输出游戏得分等信息。
2.3 设计思路基于上述功能模块的分析,我设计了如下的实现思路:1.使用Java面向对象编程的思想,抽象出地图、蛇、食物等对象,并为其封装相应的属性和方法。
2.在游戏初始化模块中,创建地图对象、蛇对象,初始化位置和长度,并生成初始食物。
3.在用户输入模块中,利用Java的键盘事件监听机制,获取用户的方向输入,并通过调用蛇对象的移动方法实现控制蛇的移动方向。
设计贪吃蛇实验报告

一、实验目的1. 掌握游戏设计的基本流程和原则。
2. 学会使用Unity游戏引擎进行游戏开发。
3. 提高编程能力和逻辑思维能力。
4. 实现贪吃蛇游戏,并优化游戏性能。
二、实验环境1. 操作系统:Windows 102. 开发工具:Unity 2019.4.10f13. 编程语言:C#三、实验内容1. 游戏设计2. 场景搭建3. 贪吃蛇游戏逻辑实现4. 游戏优化四、实验步骤1. 游戏设计(1)确定游戏主题:贪吃蛇(2)游戏规则:玩家控制蛇头,通过移动蛇头吃到食物,蛇的长度逐渐增加。
同时,蛇头不能撞到墙壁或自己的身体,否则游戏结束。
(3)游戏界面:包括游戏主界面、游戏场景、得分显示、游戏结束界面等。
2. 场景搭建(1)创建游戏场景:使用Unity编辑器创建一个3D场景,命名为“贪吃蛇场景”。
(2)添加墙壁:使用Unity编辑器中的Cube对象创建墙壁,设置墙壁的位置和大小,使墙壁围成一个封闭的空间。
(3)添加食物:使用Unity编辑器中的Sphere对象创建食物,设置食物的位置和大小。
3. 贪吃蛇游戏逻辑实现(1)创建蛇头和蛇身:使用Unity编辑器中的Cube对象创建蛇头和蛇身,设置蛇头和蛇身的位置和大小。
(2)控制蛇头移动:编写C#脚本,实现蛇头在四个方向上的移动。
(3)蛇头吃到食物:当蛇头与食物接触时,蛇的长度增加,食物消失。
(4)蛇头撞到墙壁或自身:当蛇头与墙壁或自身接触时,游戏结束。
4. 游戏优化(1)提高游戏帧率:通过优化代码和减少资源消耗,提高游戏帧率。
(2)优化蛇身移动:在蛇身移动时,减少不必要的计算,提高游戏性能。
五、实验结果与分析1. 实验结果通过以上步骤,成功实现了一个简单的贪吃蛇游戏。
游戏界面简洁,操作方便,符合游戏设计原则。
2. 实验分析(1)游戏设计方面:游戏规则简单易懂,游戏画面简洁,符合玩家需求。
(2)场景搭建方面:墙壁和食物的布局合理,有利于游戏进行。
(3)游戏逻辑实现方面:蛇头移动、吃到食物、撞墙等逻辑实现正确,游戏运行稳定。
MFC课程设计报告-贪吃蛇

MFC课程设计报告MFC实现贪食蛇小游戏1.需求分析,系统功能贪吃蛇游戏需求分析贪吃蛇游戏作为一款经典小游戏,版本多样,娱乐性也很高,适合在闲暇时放松心神。
并且可在多个平台上实现,程序简单易懂,非常适合MFC初学者学习制作。
贪吃蛇游戏功能介绍一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇向上接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。
并且可以在游戏开始前自由选择游戏难度,游戏过程中可暂停游戏,并有积分系统,且积分每满一定值,蛇的运行速度会逐步增加。
2. 分工情况为在设计过程中实现小组成员能力最大化,进行了以下分工:1、张施展:负责前期系统需求分析,系统结构设计,图标设计,界面美化调整工作,以及课程设计报告的撰写。
2、张清扬:负责主要程序的编写工作,菜单的设计及代码编写工作。
3、资料收集,程序调试共同进行。
3. 程序及系统结构设计贪吃蛇程序设计思路1、方案讨论贪吃蛇游戏作为一款经典的休闲类小游戏,深受同学喜爱,因此我们将贪吃蛇作为此次MFC课程设计题目。
在最初的方案中,我们倾向于单文档〔SDI〕的形式设计,但最初尝试都因缺少一些文件等情况而失败。
考虑到windows中自带小游戏大多采用对话框形式,为能更好的与同学们的使用习惯相一致,最终决定使用对话框〔Dialogue〕的形式。
2、数据结构在数据结构的选取,我们选择了链表,链表具有用多少空间就开多少空间的优点,使程序执行更稳定,高效。
游戏控制模块框函数成员贪吃蛇程序整体间调用关系4. 软件测试报告游戏初始界面菜单栏记分牌操作说明运动区域游戏运行界面游戏结束界面出现的问题1、问题:蛇运动区域与边框不匹配,造成蛇运动出边框或未到达边框而游戏结束。
原因:相关数据不匹配。
解决:重新对程序中的矩形框绘制函数数据进行修改,并修改蛇运动边界的判断条件。
2、问题:食物出现在边框外,造成游戏无法进行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪吃蛇游戏设计班级:13级7班学号:姓名:一、实验目的1.熟练掌握C6713 的中断结构和对中断的处理过程。
2.熟练掌握C6713 定时器的控制和使用方法。
3.熟练掌握键盘的使用原理及编程方法。
4.熟练掌握使用C6713DSP的扩展空间控制外围设备信息的方法;掌握蜂鸣器发声原理和音乐发生方法;掌握液晶显示器的显示控制原理及编程方法。
5.掌握C6713的系统自启动设计方法。
6.熟练掌握C语言开发DSP程序的流程及调试方法。
二、实验设备计算机,ICETEK-C6713-EDU 实验箱,示波器。
三、实验内容(*号为选做内容)1、在液晶屏上显示游戏背景、初始蛇身及运动、随机产生食物。
2、可以用键盘控制蛇身运动、暂停游戏。
3、游戏烧写到FLASH内,可以上电自启动运行。
四、设计原理贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个按键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体叉蛇头撞倒自己身体游戏结束。
要想实现贪吃蛇功能,需要应用到键盘,按键中断,和液晶显示。
想要正常使用按键,就要调用包含于有文件"ICETEK-C6713-A.h"中的init_emif();和InitCTR();程序用来初始化emif和ICETEK-CTR。
中断原理:dsp有三种类型的中断cpu的TMS320C6000:重置、可屏蔽的、不可屏敝的复位中断优先级最高,对应于复位信号。
不可屏蔽中断优先级最高,对应于第二敝中断信号。
最低优先级中断中断4−15对应INT4−INT15信号。
重置,敝中断,一些INT4−INT15信号映射到C6000设备上的别针。
一些INT4−INT15中断信号是内部使用的外设和一些可能不可用或在软件的控制下可以使用。
外中断区别于计时器等片内设备中断,它来源于DSP 片外,属于硬件中断。
外中断信号通过DSP 器件封装上的专用管脚输入DSP,属于可屏蔽中断。
TMS3206713DSP 有三个外中断:EXT_INT4~EXT_INT7,如果CPU 允许,这四个信号线上的低脉冲信号会中断CPU。
中断是为使CPU 具有对外界异步事件的处理能力而设置的。
通常DSP 工作在包含多个外界异步事件环境中,当这些事件发生时,DSP 应及时执行这些事件所要求的任务。
中断就是要求CPU 暂停当前的工作,转而去处理这些事件,处理完成后,再回到原来被中断的地方继续原来的工作。
显然,服务一个中断包括保存当前处理现场,完成中断服务,恢复各寄存器和现场,然后返回继续执行被暂时中断的程序。
请求CPU 中断的请求源称为中断源。
这些中断源可以是片内的,如定时器等,也可以是片外的,如A/D 转换及其他片外装置。
片外中断请求连接到芯片的中断管脚,并且在这些管脚处的电平上升沿产生。
如果这个中断被使能,则CPU开始处理这个中断,将当前程序流程转向中断服务程序。
当几个中断源同时向CPU 请求中断时,CPU 会根据中断源的优先级别,优先响应级别最高的中断请求。
TMS320C6000 有11 个寄存器管理中断服务:*控制状态寄存器CSR 控制全局使能或禁止中断*中断使能寄存器IER 使能或禁止中断处理*中断标志寄存器IFR 指示有中断请求但未被响应的中断发生*中断设置寄存器ISR 手动设置IFR 中的标志位*中断清除寄存器ICR 手动清除IFR 中的标志位*中断服务表指针ISTP 指向中断服务表的起始地址*不可屏蔽中断返回指针NRP 包含从不可屏蔽中断返回的地址,该中断返回通过B NRP指令完成*可屏蔽中断返回地址IRP 可屏蔽中断的返回地址*中断选择寄存器IML 可选择CPU 中断10-15 号对应的中断源*中断选择寄存器IMH 可选择CPU 中断4-9 号对应的中断源*外中断极性选择寄存器EIP 选择外中断(INT4-INT7)的触发极性外设事件要引起CPU 中断,必须保证:CSR 使能中断,IER 相应位被使能(置1),ST1 寄存器中的INTM 使能(置0),中断服务表相应位置放置服务程序入口地址转移指令,相应中断源放入IML 或IMH 适当位置。
当CPU 响应中断时,PC 指针指向中断向量表中对应中断的地址,进入中断服务子程序。
中断向量表是DSP 存放中断服务程序的一段内存区域,大小为80H。
在中断向量表中,每一个中断占用32 个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。
中断向量表的位置是可以改变的,修改ISTP 寄存器中的中断向量表基地址可以实现这一点。
程序中应包含中断向量表。
向量表中每项为32 个字,存放跳转指令,跳转指令中的地址为相应服务程序入口地址。
第一个向量表的首项为复位向量,即CPU 复位操作完成后自动进入执行的程序入口。
程序中包含相应的中断服务程序,应将其入口地址加入相应中断向量表中。
在程序中重定位中断向量表到本程序的中断向量表地址;设置中断源(IML,IMH)、中断屏蔽寄存器IER__·定时器原理:设备有32位通用定时器,可用于:时间事件、计数事件、产生脉冲、中断cpu、dma发送同步事件计时器有两个信号模式,由一个内部时钟或externl来源。
计时器有输入插口和输出插口。
输入和输出。
(tinpand兜售)可以作为定时器时钟时钟输入和输出。
也可以分别配置为通用的输入和输出。
监视定时器状态:设置TOUT 管脚功能:01940004 01980004 定时器周期寄存器PRD 设置定时器的计数周期决定TSTAT 信号的频率01940008 01980008 定时器计数寄存器CNT 定时器当前计数值键盘使用:ICETEK-C6713-EDU 实验箱对TMS320C6713 DSP 存储空间的使用地址范围:0901f0000h—0901fffffh 数据宽度:16 位0901f0000h:ICETEK-CTR 全局控制寄存器写地址0901f0002h:读取键盘扫描码地址,液晶命令写地址0901f0004h:清除键盘缓冲区读地址,液晶控制写地址0901f0006h:液晶左侧显示数据写地址0901f0008h:液晶右侧显示数据写地址0901f000Ah:发光二极管阵列数据写地址0901f000Eh:发光二极管阵列使能、交通灯状态、PWM 状态写地址、直流电机使能位其它地址:保留液晶显示器的显示控制原理:ICETEK-C6713-A 是一块以TMS320C6713DSP 为核心的DSP 扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。
液晶显示模块的访问、控制是由C6713DSP 对CE1 空间的特定地址的操作完成。
LCD控制寻址:命令发送的地址为0901f0002H,数据发送的地址为0901f0006H 和0901f0008H,辅助控制的地址为0901f0004H。
显示控制方法:-液晶显示模块中有两片显示缓冲存储器,分别对应屏幕显示的象素,向其中写入数值将改变显示,写入“1”则显示一点,写入“0”则不显示。
在系统硬件上电复位后,软件根据用户的需要自动对各项控制器指令代码及其参数进行设置,从而完成对液晶模块的参数如液晶的行数、列数、扫描频率、光标的位置等。
以及显示方式等一系列的初始化过程。
在对系统进行正确的初始化以后,可以通过DSP将外部ROM中的数据直接送至SED1335显示缓冲区,控制器就可以控制液晶屏显示出用户所要的图画。
同时用户也可以根据自己的需要在主程序运行的过程中改变图片显示的形式。
试验箱上与之相连对应的端口有端口8001.8002控制液晶显示开关以及行列显示,而端口8003和8004是控制显示左屏和右屏。
具体情况如下:port8001=0x3f; port8002=0;打开显示屏port8001=0x3e; port8002=0;关闭显示屏port8001=0x0c0; port8002=0;从存储器第0行开始显示,依次增大行数也增大到8为止。
port8001=0x40; port8002=0;控制0列port8001=0x0b8; port8002=0;控制0页port8003=0x80; port8002=0;控制左屏显示port8003=0x01; port8002=0;控制右屏显示发送控制命令:向液晶显示模块发送控制命令的方法是通过向命令控制地址写入命令控制字,然后再向辅助控制地址写入0。
由于液晶模块相对于DSP 来讲是慢速设备,在命令之间可能需要增加延时语句,或将CE1 空间的EMIF 访问控制寄存器设置的访问延时加大。
写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。
将数据发送到相应数据控制地址即可。
由于液晶模块相对于DSP 来讲是慢速设备,在命令之间可能需要增加延时语句,或将CE1 空间的EMIF 访问控制寄存器设置的访问延时加大。
液晶显示程序:void draw(int index){int page; //定义页int row; //定义列page=index%8; //页对8取模row=index/8; //列对8取整LCDCMD(7-page+0x0b8); // 设置操作页if (row<64){LCDCMD(row+LCDCMDVERADDRESS); // 起始列LCDWriteLeft(Ground.LCDarray[index]);}else{LCDCMD(row-64+LCDCMDVERADDRESS); // 起始列LCDWriteRight(Ground.LCDarray[index]);}}五、程序设计本次设计是基于DSP芯片的贪吃蛇设计。
而显示则使用液晶显示器,设计关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
当在一个关卡中蛇头撞到墙壁或者自己的身体,则刷屏,表示游戏结束。
其程序流程图如下:载入游戏并初始化蛇开始移动(默认初始方向向有)键盘控制蛇的移动方向判断蛇头和食物坐标是否重合随机生成下一个食物判断蛇头和自身及墙的坐标是否重合宣布死亡在设计中,我们定义了一个共同体,把蛇身数据以及屏幕显示的数据放在一个类里面,这样既节省了空间,也方便我们在程序中的数据调用。