分享
分销 收藏 举报 申诉 / 17
播放页_导航下方通栏广告

类型毕业设计方案之推箱子.doc

  • 上传人:a199****6536
  • 文档编号:2367935
  • 上传时间:2024-05-28
  • 格式:DOC
  • 页数:17
  • 大小:128.54KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    毕业设计 方案 箱子
    资源描述:
    安徽大学 本科毕业论文(设计、创作) 题  目: 面向过程推箱子设计                     学生姓名:  王**   学号: P010***** 院(系): 电子信息工程专业 专业: 电子信息工程 入课时间:  年  9  月 导师姓名:  李**  职称/学位:  副教授/硕士 导师所在单位:  电子信息工程学院   完成时间:        年     6   月 面向过程推箱子设计 摘 要 推箱子游戏是一款很有趣味游戏,目标在于训练玩家逻辑思维能力。游戏中经过控制人物上下左右移动,将箱子推到指定地点,从而通关游戏。本文关键介绍了推箱子游戏游戏规则、需求分析、步骤设计和游戏中关键算法分析、设计和实现。并经过游戏规则分析,确定任务步骤,展开设计。最终在VC6.0和OpenCV上实现图像加载、显示和游戏交互。此次设计实现了推箱子游戏基础功效。 关键词:推箱子;图像处理;OpenCV Procedure Oriented Sokoban Design Abstract Sokoban game, a very interesting game, which is aimed at training  logical thinking ability of player. By controlling the porters moved from top to bottom, or left to right, and push the box to the specified location, and complete the game at last. This paper mainly introduces the rules and features of Sokoban game, analysis of the demand of it’s design, execution process, analysis and implementation of algorithm design in the game. This design was analyzed by rules of the game, determining the task flow and analysis the system, and finally realized image load, display, mutual in VC6.0 and OpenCV. The design realized the basic functions of Sokoban game. Keywords: Sokoban; image processing; OpenCV 目 录 1 引言 1 2 推箱子游戏概述 2 2.1 游戏起源 2 2.2 游戏操作方法 2 2.3 游戏规则 2 3 使用软件介绍 2 3.1 VC6.0介绍 2 3.2 OpenCV介绍 2 4 任务描述 3 4.1 界面显示 3 4.2 实现键盘操作 3 4.3 图像改变显示 3 4.4 游戏胜败判定 3 5 系统分析 3 5.1 界面设计 3 5.2 数据组织 3 5.3 游戏实施步骤图 4 5.4 程序中各个函数简明介绍 5 6 推箱子游戏算法设计和实现 5 6.1 地图绘制和读取 5 6.2 查找人物坐标 5 6.3 键盘操作 6 6.4 游戏胜利判定 7 6.5 整合和测试 7 7 结束语 8 关键参考文件 9 致 谢 10 1 引言 现在,在中国乃至全世界,游戏产业已经逐步成为微控制器领域一个相当庞大分支。伴随网络和智能手机兴起,多种网络游戏和手机游戏在中国层出不穷。从魔兽世界、英雄联盟到水果忍者、神庙逃亡,巨大市场需求量使游戏行业在中国飞速发展。未来,游戏必将成为网络竞争中主角,它商业利益和商业价值是无法估量。中国,一个人口众多国家,伴随大家生活水平提升,温饱已不是最终目标,我们寻求是愈加多姿多彩生活,那我们又怎能错过游戏这一最好休闲娱乐项目呢?所以游戏在中国发展前景一片大好[1]。 经典推箱子是一个来自日本古老游戏,目标在于训练人逻辑思维能力。在一个狭小仓库中,要求把箱子推到指定位置,稍有不慎就会出现箱子无法移动或通道被堵住情况。所以需要巧妙利用有限空间和通道,合理安排移动次序和位置,才能顺利完成任务。现在,推箱子作为一个经典游戏,非但没有没落,还被很多编程爱好者开发出了多种版本、多种类型。此次毕业设计我将就推箱子游戏做一个研究。经过此次设计让我能愈加好将理论和实践相结和,加深对理论了解,同时培养我动手意识,强化专业知识,为以后研究愈加复杂设计打下坚实基础。本设计关键是基于VC6.0和OpenCV软件实现。 2 推箱子游戏概述 推箱子已被改编成多种版本,有松鼠推箱子、小狐狸推箱子、机器人推箱子、吉豆推箱子和3D推箱子等,但玩法基础相同。 2.1 游戏起源 经典推箱子游戏是一个来自日本古老游戏,1981年由日本人今林宏行首创,在1982年12月由Thinking Rabbit企业首次发行,名“仓库番”,目标是训练人逻辑思维能力[2]。推箱子游戏是现在比较流行游戏之一,很多操作系统和流行软件全部会带有这种游戏。它既能锻炼思维严密性,又有很多趣味性。游戏中箱子只能够推,不能够拉,而且一次只能推进一个,胜利条件就是把全部箱子全部推到目标地。现在市场上有着多种版本推箱子,而且能够在多个平台运行。 2.2 游戏操作方法 在游戏中会出现一个封闭围墙,围墙里有一个人物、若干个箱子和箱子放置点。玩家需要利用方向键控制人物上下左右移动,来推进界面中箱子抵达指定箱子放置点。 2.3 游戏规则 游戏中箱子只能推进而不能拉动,而且一次只能推进一个箱子。注意不要把箱子推到死角,不然就无法再推进它了。当玩家把全部箱子全部推到箱子放置点时,玩家顺利经过目前游戏关卡,并进行下一关游戏。假如玩家无法将指定箱子全部推到放置点,则玩家失败,此时玩家能够重新开始目前关卡游戏或关闭窗口退出游戏。 3 使用软件介绍 本设计关键是基于VC6.0和OpenCV实现。 3.1 VC6.0介绍 VC6.0即Microsoft Visual C++ 6.0,是由微软推出一款C++编译器,是将“高级语言”翻译为“机器语言(低级语言)”程序。VC6.0是一个功效强大可视化软件开发工具。它不不过一个C++编译器,而且是一个基于Windows操作系统可视化集成开发环境(integrated development environment, IDE)。VC6.0由很多组件组成,包含编辑器、调试器和程序向导AppWizard、类向导Class Wizard等开发工具。这些组件经过一个名为Developer Studio组件集成为友好开发环境。自1993年微软企业推出Visual C++1.0后,伴随其新版本不停问世,Visual C++已成为专业程序员进行软件开发首选工具[3]。 3.2 OpenCV介绍 OpenCV全称是:Open Source Computer Vision Library。OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于开源发行跨平台计算机视觉库,能够在Linux、Windows、IOS和Mac OS操作系统上运行。它轻量级而且高效,由一系列C函数和少许C++组成,能够无须学C++,同时提供了Ruby、Python、MATLAB等语言接口,实现了图像处理和计算机视觉方面很多通用算法[4]。较directx方便很多。结合VC6.0能够较为轻易完成此次设计。 4 任务描述 对游戏设计进行需求分析,描述游戏应该含有功效。 4.1 界面显示 能够绘制出各关地图并能成功加载到游戏界面上显示出来。 4.2 实现键盘操作 能够接收到键盘所输入方向键信息,并依据不一样方向键信息把游戏人物移动到对应位置。比如,当玩家敲击方向键“S”时,假如向下位置是可移动,那么就把游戏人物向下移动一个方格。 4.3 图像改变显示 当把箱子推到目标区域时,会显示出不一样形象;当人物移动到目标区域时也会显示出另外一个形象。 4.4 游戏胜败判定 在游戏中,当玩家把全部箱子全部推到箱子放置点时,则玩家顺利胜利经过目前游戏关卡,并进入下一关游戏。假如玩家无法将全部箱子推到箱子放置点时,则玩家失败,此时能够重新开始目前关卡游戏或退出游戏。 5 系统分析 介绍游戏界面设计、数据组织和多种函数和任务实施步骤图。 5.1 界面设计 程序中先创建一个窗口,然后以一副白色图片(大小为600×600)作为背景图片,再用多种小图块(大小为60×60)复制到背景图片中,来绘制游戏各关地图。将背景图片显示到窗口中即出现了游戏界面,游戏第一关界面图1所表示: 图1:第一关界面 5.2 数据组织 程序中先定义了全局整型变量x和y来表示人物坐标,一个控制游戏是否重新开始全局整型loop变量,一个存放地图图片数组img_num[8],和一个存放背景图变量img_bgd。 5.3 游戏实施步骤图 游戏从第一关开始,经过上下左右方向键来控制人物移动从而推进箱子,能够在游戏中任何时刻选择退出。假如游戏无成功期望,能够按空格键回到目前关卡开始状态;假如成功完成目前关卡,则进入下一关;假如目前关卡是最终一关(游戏共四关),则显示通关信息,提醒游戏结束,游戏实施步骤图2所表示: 是否继续 完成? 开始 开始游戏 有没有成功 期望? 是否成功? 是否是第 4关? 否 否 是 否 否 是 初始化地图 退出 回到开始 进入下一关 是 是 显示通关 图2:游戏实施步骤 5.4 程序中各个函数简明介绍 void Refresh(int a[][10]); //刷新背景图函数 void find(int a[][10]); //找人物坐标函数 void Smileboy(int a[][10]); //画一个胜利后快乐人物 int win(int a[][10]); //判定游戏是否胜利函数 void move(int a[][10], int x1, int y1); //移动函数 int play(int a[][10]); //游戏过程 void Gamestar(void); //游戏开始函数 6 推箱子游戏算法设计和实现 6.1 地图绘制和读取 将地图数组中数据绘制成地图图像。设计要求以下: (1)依据要求,实现对应函数,以达成能够正确绘制出各个地图,程序中定义了地图数组,地图数组中各元素代表意思以下: 用0表示空地,1表示人物,2表示箱子,3表示目标地,4表示在目标地上人物,5表示箱子在目标地上,6表示围墙,7表示完成任务后人物(一个快乐人物)。 (2)能读取地图数据,依据不一样地图数据绘制出对应地图。本程序利用刷新函数Refresh,刷新背景图片以得到不一样地图图片。关键代码实现以下: void Refresh(int a[][10]) { for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { CvRect srect=cvRect(0,0,60,60); //发明矩形区域 CvRect drect=cvRect(j*60,i*60,60,60); //发明矩形区域 cvSetImageROI(img_num[a[i][j]],srect); //基于给定矩形设置图像ROI cvSetImageROI(img_bgd,drect); //基于给定矩形设置图像ROI cvCopy(img_num[a[i][j]],img_bgd); //复制 } } cvResetImageROI(img_bgd); //释放基于给定矩形设置图像ROI } 6.2 查找人物坐标 设计中要想使人物移动,首先要找到人物起始位置,然后才能开始移动。人物在地图中有两种情况:人在空地上和人在目标地上。 void find(int a[][10]) { for(x = 0; x < 10; x++) for(y = 0; y < 10; y++) if(a[x][y] == 1||a[x][y] == 4) return; } 6.3 键盘操作 程序在接收玩家键盘输入信息后,对箱子移动是否等进行处理: (1)程序经过截获目前窗口中键盘按下信息来判定玩家所按下按键。 (2)要判定所按方向键方向是否能够移动,若可移动则移动后地图数据要依据具体情况刷新。 (3)依据玩家所按下按键把人物相关坐标进行加减。 (4)移动后需要重新定位人物位置坐标。(x,y)代表人物坐标。下面是移感人物过程中全部情况: 假如人物移动下一步是空白或目标地,则能够移动。更改人物移动后地图坐标并刷新地图; if(a[x+x1][y+y1]==0||a[x+x1][y+y1]==3) { a[x][y]--; a[x+x1][y+y1]++; Refresh(a); return; } 假如人物移动下一步是墙,则不能够移动; if(a[x+x1][y+y1]==6) return; 假如人物移动下一步是空地上箱子,而且移动方向第二步是空地或目标地,则能够移动,更改人物移动后地图坐标并刷新地图。假如移动方向第二步是墙,则不能够移动; if(a[x+x1][y+y1]==2) { if(a[x+2*x1][y+2*y1]==0||a[x+2*x1][y+2*y1]==3) { a[x][y]--; a[x+x1][y+y1]-=1; a[x+2*x1][y+2*y1]+=2; Refresh(a); return; } else return; } 假如人物移动下一步是箱子在目标地上,而且移动方向第二步是空地或目标地,则能够移动,更改人物移动后地图坐标并刷新地图。假如移动方向第二步是墙,则不能够移动。 if(a[x+x1][y+y1]==5) { if(a[x+2*x1][y+2*y1]==0||a[x+2*x1][y+2*y1]==3) { a[x][y]--; a[x+x1][y+y1]-=1; a[x+2*x1][y+2*y1]+=2; Refresh(a); return; } else return; } 6.4 游戏胜利判定 每次在玩家移感人物后,对目前地图数组进行判定,假如还存在箱子(即地图数组中存在值为2元素),就说明玩家未取得胜利;反之就说明玩家已经将全部箱子推到了目标区域,取得了目前关卡胜利。 关键代码实现以下: for(int x1 = 0; x1 < 10; x1++) { for(int y1 = 0; y1 < 10; y1++) if(a[x1][y1] == 2) return 0; //假如还有箱子返回假 } return 1; //假如没有箱子返回真 6.5 整合和测试 (1)编译链接程序,检验程序是否有错误,若有则查找错误并进行调试; (2)编译链接程序无错误后,实施程序,检验结果若有错误,则查找错误并进行调试; (3)若程序成功实施无错误后,看是否能出现游戏界面窗口,若成功则对游戏各项进行测试。若有功效未实现,则需要重新修改代码并进行调试。 7 结束语 多年来伴随科技飞速发展,VC语言应用正在不停深入。此次设计便是基于VC一个小游戏,这个小游戏在功效方面基础到位。基于小游戏标准,没有加入太多花俏图片,也没有华丽界面设计。正如前人所说,小游戏之所以流行,就是因为它小。即使在很破旧机器上,也基础全部能顺畅运行,没有卡顿。正是因为它简练方便,才能长盛不衰。 本论文叙述了推箱子游戏设计和实现全过程,并在论文中对应位置插入了图片、系统设计步骤图和部分编程思想代码,愈加清楚描述了该系统实现过程。论文关键内容以下: (1)对推箱子小游戏进行了具体调研。对推箱子小游戏游戏起源、操作方法和游戏基础规则进行了具体介绍; (2)对本程序设计所需要软件(VC6.0和OpenCV)进行了简单介绍; (3)对游戏设计进行需求分析。描述游戏应该含有功效并对推箱子游戏设计任务作了具体介绍; (4)对推箱子游戏设计进行了系统分析。包含游戏界面设计,数据结构组织和游戏实施步骤; (5)对推箱子游戏算法设计和实现进行了描述。 本程序是基于VC6.0和OpenCV开发,基础实现了推箱子游戏功效,还有待于继续努力设计出更完美推箱子游戏。 关键参考文件: [1] 杨正华, 张秋生. Visual C++游戏编程导学[M]. 北京: 清华大学出版社, . [2] 夏灵敏, 潘惠勇. Flash AS3实现推箱子游戏[J/OL]. 电脑编程技巧和维护, (4). [3] 高守传等. VisualC++6.0开发指南[M]. 北京: 人民邮电出版社,. [4] 布拉德斯基, 克勒等. 学习OpenCV[M]. 北京: 清华大学出版社, . 致 谢 在论文完成之际,我要尤其感谢我指导老师李新华老师热情关心和悉心指导。在我撰写论文过程中,我得到了李新华老师悉心细致教育和无私帮助,尤其是其不厌其烦帮助我进行论文修改和改善。同时,感谢我同学们,她们给了我很多素材,还在论文撰写和排版过程中提供了热情帮助。 另外,感谢这篇论文所包含到全部学者。本文引用了数位学者研究文件,假如没有各位学者研究结果帮助和启发,我将极难完成本篇论文写作。 最终,向在百忙中抽出时间对本论文进行评审并提出宝贵意见各位老师和企业导师表示衷心地感谢。
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:毕业设计方案之推箱子.doc
    链接地址:https://www.zixin.com.cn/doc/2367935.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork