ImageVerifierCode 换一换
格式:DOC , 页数:32 ,大小:335.50KB ,
资源ID:4512317      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4512317.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(基于Android的俄罗斯方块的设计与实现样本.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于Android的俄罗斯方块的设计与实现样本.doc

1、湖南商学院 移动互联网应用开发 课程设计报告题目 基于Android俄罗斯方块设计与实现 姓 名:学 号:专 业:班 级:指引教师:职 称:计算机与信息工程学院11月课程设计评审表级别成绩构成先进良好中档及格不及格平时成绩1考勤满勤2作业全,均在A以上。3实验报告全,均在A以上。1考勤90%到2作业90%全,均在B以上。3实验报告90%全,均在B以上。1考勤80%到2作业80%全,均在B以上。3实验报告80%全,均在B以上。1考勤70%到2作业70%全,均在C以上。3实验报告70%全,均在C以上。1考勤70%如下。2作业70%如下,或均在C如下。3实验报告70%如下,或均在C如下。课程设计成绩

2、设计文档1完全按照课程设计文档规范规定。2构造合理、层次清晰。3内容充实、设计详细。1完全按照课程设计文档规范规定。2构造较合理、层次较清晰。3内容较充实、设计较详细。1基本按照课程设计文档规范规定。2构造较合理、层次较清晰。3内容较充实、设计较详细。1基本按照课程设计文档规范规定。2构造欠合理、层次欠清晰。3内容欠充实、设计欠详细。1没有按照课程设计文档规范规定。2构造不合理、层次不清晰。3内容不充实、设计不详细。界面设计1布局合理。2界面美观,色调和谐,风格统一。3无链接错误。1布局较合理。2界面较美观,色调和谐,风格统一。3无链接错误。1布局较合理。2界面较美观,色调和谐,风格统一。3链

3、接错误很少。1布局欠合理。2界面欠美观。 3链接错误较少。1布局不合理。2界面不美观。 3链接错误诸多。功能设计1可以较好完毕课程设计题目基本功能。2可以完毕异常数据和边界数据和谐解决。3类与接口设计合理。4功能实现无错误。1可以较好完毕课程设计题目基本功能。2基本可以完毕异常数据和边界数据和谐解决。3类与接口设计合理。4功能实现错误较少。1可以较好完毕课程设计题目基本功能。2基本可以完毕异常数据和边界数据和谐解决。3类与接口设计较合理。4功能实现错误较少。1可以完毕课程设计题目大某些基本功能。2未能完毕异常数据和边界数据和谐解决。3类与接口设计较合理。4功能实现错误较多。1未能完毕课程设计题

4、目大某些基本功能。2未能完毕异常数据和边界数据和谐解决。3类与接口设计不合理。4功能实现错误较多。综合成绩评估: 评阅教师(签章): 年 月 日目 录1 游戏简介2 俄罗斯方块需求分析2.1 游戏功能分析2.1.1游戏方块控制功能2.1.2方块生成显示功能2.1.3方块摆放消行功能2.1.4游戏分数记录功能2.1.5游戏结束控制功能2.2 方块及旋转变换需求分析2.3 游戏运营分析3 游戏总体设计分析3.1 总体设计思想3.2功能模块3.2.1游戏区模块3.2.2游戏控制模块4 详细设计与实现4.1 游戏开始菜单界面设计4.2 方块类设计与实现4.3 方块控制设计和判断5 总结6 参照资料1

5、游戏简介俄罗斯方块是家喻户晓益智小游戏,它由俄罗斯人阿列克谢帕基特诺夫(Alexey Pazhitnov)在1984年6月运用空暇时间编写游戏程序,故此得名。俄罗斯方块基本规则是移动、旋转和摆放游戏随机产生各种方块,使之排列成完整一行或多行并且消除得分。它看似简朴却变化无穷,俄罗斯方块上手极其简朴,且游戏过程变化无穷,作为游戏自身很有魅力,但是要纯熟掌握其中操作和摆放技巧,难度却不低。此软件给顾客提供了一种呈现自己高超技艺场合,在这里,它不但放松自己,还能感受到游戏中乐趣。游戏区域会从顶部不断落下7种下坠物一种,游戏区域右上角有一种区域可以显示下一种下坠物形状,玩家可以控制下坠物移动、旋转和一

6、键究竟,通过玩家操作,下坠物在游戏区域以“摆积木”形式浮现。下坠物在一行或多行堆满后就可以自动消除,消行后会得到相应分数,如果当前下坠物堆积至窗口顶端,则游戏结束。2 俄罗斯方块需求分析2.1 游戏功能分析先分析一下整个游戏详细实现,一方面,游戏有开始、切换界面、结束等操作接口,而在游戏过程中,随着玩家按键,会浮现下坠物形态变化、下坠物迅速下坠、摆放下坠物件、销毁填满行、产生下一种方块等功能。先分析游戏特点,然后对这些功能一一进行细化,从而完毕整个游戏设计。2.1.1游戏方块控制功能当玩家按下相应操作键位时,通过条件判断,判断该操作与否可行,如果可行就执行相应操作。重要操作有游戏方块左移,右移

7、,迅速下降,旋转变形。2.1.2方块生成显示功能游戏中会有两个地方产生方块,一种是游戏区域上方会有方块落下,尚有就是在屏幕右上角,也会产生一种方块,该方块为游戏区域下一种要产生方块。同步当游戏方块左右移动,下落,旋转变形时,要清除先前游戏方块,还规定出被操作后方块坐标,用新坐标重绘游戏方块。2.1.3方块摆放消行功能当方块落究竟部时候,通过条件判断,把方块摆放在屏幕底部并持续显示,当某行或者某几行被填满时候,要把这几行消除,并且被消除行数上方方块整体下移。2.1.4游戏分数记录功能记录游戏积分,每当有行被消除时,游戏积分会依照一次消除行数而增长相应分数。2.1.5游戏结束控制功能通过判断,如果

8、摆放方块超过屏幕顶端时候,则游戏结束,可以返回菜单重新开始游戏。2.2 方块及旋转变换需求分析本游戏共有7种类型方块,而每种类型方块还可以通过旋转变换成4种不同形态方块进行摆放。方块生成后可以将它们摆放在一种20*10区域内,该区域可以看作是有许各种等面积小方格构成区域,而这些区域状态只有两种,被方块占据或空闲。因而,对于整个游戏区域空间是占据或空闲,可以用一位数来标记,对于7种方块和它们旋转后形态咱们可以用不同标记进行标记。对于旋转,游戏中所有方块都是按照顺时针旋转规则进行,并且在旋转过程中它们不会由于旋转而下降,总会保持在同一高度,但是在同一高度最多旋转三次,就会下降一格,任何下坠物通过一

9、种旋转周期还会变回原型。2.3 游戏运营分析游戏开始后会随机产生一种方块,显示在游戏区域,同步右上角也会随机产生一种新方块,该方块为游戏区域下一种将要产生方块,游戏区域不再随机生成方块。当游戏区域方块下落究竟后,新方块再次进入游戏区域,如此循环,直到游戏结束,这就是游戏正常工作。当顾客进行一定操作交互时候,运营程序可以依照顾客操作批示对方块进行控制,而这些操作都是响应有关按键而执行。按键盘上键,此事件实现下坠方块旋转操作,方块并非任何状况都能旋转,如果旋转后与已摆放好方块有冲突或超过边界时,均不能发生旋转。因而一方面要判断与否有足够空间进行旋转,然后决定与否旋转。按键盘下键,此事件实现下坠方块

10、一键究竟操作,使方块迅速下降到游戏区域底部或者已经摆放好方块之上。按键盘左键,此事件实现下坠方块左移操作,一方面要判断此方块与否可以发生左移,当越界或被其她摆放好方块阻挡时,则不能左移。按键盘右键,此事件实现下坠方块右移操作。一方面要判断此方块与否可以发生右移,当越界或被其她摆放好方块阻挡时,则不能右移。3 游戏总体设计分析3.1 总体设计思想俄罗斯方块游戏设计重要从9个方面进行构思。(1)游戏主界面设计。(2)方块设计。(3)方块旋转。(4)方块运动状况(涉及向左、向右、下坠)。(5)方块自动消行功能。(6)游戏速度调节。(7)游戏积分计算。(8)游戏开始菜单设计。(9)游戏结束界面设计。3

11、.2功能模块3.2.1游戏区模块创立游戏区,解决玩家操作,显示操作成果3.2.2游戏控制模块开始,暂停继续,停止,新游戏,协助4 详细设计与实现4.1 游戏开始菜单界面设计游戏开始菜单界面是游戏重要构成某些,为了增强游戏界面美化效果,同步又使界面简洁直观,添加了一种按钮,当监听到开始按钮被点击时,游戏会跳转到游戏开始Activity,该类实现起来较为简朴。4.2 方块类设计与实现方块是游戏最基本元素,俄罗斯方块所有操作都是建立在对方块操作上,方块可以用不同颜色方格图片来显示。public class LeftCorner extends ShapeAbstract private static

12、 final long serialVersionUID = -5552787L; private final static int COLOR = Color.CYAN; Rectangle data = null; data = getEmptyShape(); data01.setSolid(true); data01.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); data22.setSolid(true); da

13、ta22.setColor(COLOR); m_shapes.add(data); data = getEmptyShape(); data02.setSolid(true); data02.setColor(COLOR); data03.setSolid(true); data03.setColor(COLOR); data11.setSolid(true); data11.setColor(COLOR); data12.setSolid(true); data12.setColor(COLOR); m_shapes.add(data); public String toString() r

14、eturn LeftCorner; 4.3 方块控制设计对方块控制,实际就是对二维数组array控制,该二维数组用来布置游戏区域方块显示,方块控制重要在TetrisController类里实现,用来判断方块各种操作与否可行,如果可行则执行相应操作,否则操作无效。控制方块时,一方面要判断该操作与否可以执行,判断办法重要有判断方块与否可以左右移动,判断方块与否碰壁,判断方块与否触顶。判断方块与否可以左移。public class TetrisController private final static int BASE_COLUMN = 3; private final static int M

15、IN_GAP_TIME = 200; private final static int MAX_GAP_TIME = 500; private Shape m_current; private Shape m_next; private int m_row; private int m_column = BASE_COLUMN; private Rectangle m_table; private int m_score; private transient Timer m_timer; private transient Handler m_hanlder; private boolean

16、m_started; private boolean m_paused; private int m_rectWidth = 40; private int m_rectHeight = 40; private int m_nextRectWidth = 20; private int m_nextRectHeight = 20; private int m_gapTime = MAX_GAP_TIME;/ shape fall down gap time public TetrisController() Rectangle rs = new Rectangle2010; for (int

17、i = 0;i 20;i+) for (int j = 0;j 10;j+) int color = Color.BLACK; Rectangle r = new Rectangle(); r.setColor(color); r.setWidth(m_rectWidth); r.setHeight(m_rectHeight); rsij = r; m_table = rs; public void setRectSize(int width,int height) m_rectWidth = width; m_rectHeight = height; if (m_table != null)

18、 for (Rectangle row :m_table) for (Rectangle rect :row) rect.setWidth(m_rectWidth); rect.setHeight(m_rectHeight); public void setNextRectSize(int width,int height) m_nextRectWidth = width; m_nextRectHeight = height; if (m_next != null) m_next.setWidth(m_nextRectWidth); m_next.setHeight(m_nextRectHei

19、ght); public void start() if (m_timer = null) m_row = 0; m_score = 0; m_gapTime = MAX_GAP_TIME; clearTable(); prepare(); put(m_current.getShape(),m_row,m_column); resetTimer(m_gapTime); m_started = true; m_paused = false; notifyUpdateUI(); notifyScore(); private void resetTimer(int gapTime) if (m_ti

20、mer != null) m_timer.cancel(); m_timer.purge(); m_timer = null; m_timer = new Timer(); TimerTask task = new TetrisTask(); m_timer.schedule(task,gapTime,gapTime); public void pause() m_paused = true; public void stop() m_started = false; m_timer.cancel(); m_timer = null; notifyGameState(); private vo

21、id notifyGameState() Message msg = new Message(); msg.what = TetrisActivity.MSG_GAVE_OVER; m_hanlder.sendMessage(msg); private void notifyScore() Message msg = new Message(); msg.what = TetrisActivity.MSG_UPDATE_SCORE; m_hanlder.sendMessage(msg); private Shape getRandomShape() Shape shape = null; Ra

22、ndom r = new Random(); int ran = Math.abs(r.nextInt() % 8; switch (ran) case 0: shape = new Point(); break; case 1: shape = new Bar(); break; case 2: shape = new LeftCorner(); break; case 3: shape = new RightCorner(); break; case 4: shape = new LeftCrutch(); break; case 5: shape = new RightCrutch();

23、 break; case 6: shape = new Hill(); break; case 7: shape = new Square(); break; return shape; public boolean down() synchronized (m_table) clearShape(m_row,m_column); boolean move = move(m_current.getShape(),m_row + 1,m_column); if (!move) recoverShape(m_current.getShape(),m_row,m_column); return fa

24、lse; else m_row+; notifyUpdateUI(); return true; private boolean up() synchronized (m_table) clearShape(m_row,m_column); boolean move = move(m_current.getShape(),m_row - 1,m_column); if (!move) recoverShape(m_current.getShape(),m_row,m_column); return false; else m_row-; return false; private boolea

25、n move(Rectangle shape,int toRow,int toColumn) synchronized (m_table) List coordinates = new ArrayList(); for (int i = 0;i shape.length;i+) for (int j = 0;j = m_table.length | row 0) return false; if (column = m_table0.length) return false; Rectangle gameRect = m_tablerowcolumn; if (gameRect.isSolid

26、() return false; else int coor = new int3; coor0 = row; coor1 = column; coor2 = rect.getColor(); coordinates.add(coor); Iterator its = coordinates.iterator(); while (its.hasNext() int coor = its.next(); int row = coor0; int column = coor1; int color = coor2; Rectangle gameRect = m_tablerowcolumn; ga

27、meRect.setSolid(true); gameRect.setColor(color); return true; private int gainScore() int lines = removeLine(); if (lines 0) int scoreBak = m_score; switch (lines) case 1: m_score += 1; break; case 2: m_score += 3; break; case 3: m_score += 6; break; case 4: m_score += 10; break; notifyScore(); if (

28、m_score / 50 scoreBak / 50) if (m_gapTime MIN_GAP_TIME) m_gapTime -= 50; resetTimer(m_gapTime); notifySpeedUp(); return lines; private void notifySpeedUp() Message msg = new Message(); msg.what = TetrisActivity.MSG_UPDATE_SPEED; int level = (m_score / 50); if (m_gapTime = MIN_GAP_TIME) msg.obj = 难度:

29、 + level + . 最后难度,你能坚持多久?!; else msg.obj = 难度: + level; m_hanlder.sendMessage(msg); private int removeLine() int lines = 0; synchronized (m_table) for (int i = 0;i m_table.length;i+) Rectangle row = m_tablei; boolean remove = true; for (int j = 0;j 0;k-) for (int m = 0;m m_tablek.length;m+) m_tablek

30、m .setColor(m_tablek - 1m.getColor(); m_tablekm.setSolid(m_tablek - 1m.isSolid(); for (int n = 0;n m_table0.length;n+) m_table0n.setColor(Shape.DEFAULT_COLOR); m_table0n.setSolid(false); return lines; public boolean change() synchronized (m_table) clearShape(m_row,m_column); Rectangle next = m_curre

31、nt.getNextShape(); boolean move = move(next,m_row,m_column); if (!move) recoverShape(m_current.getPreShape(),m_row,m_column); return false; else notifyUpdateUI(); return false; public boolean left() synchronized (m_table) clearShape(m_row,m_column); Rectangle shape = m_current.getShape(); boolean move = move(shape,m_row,m_column - 1); if (move) m_column-; notifyUpdateUI(); else recoverShape(m_current.getShape(),m_row,m_column); return false;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服