欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机科学与技术专业《综合课程设计》报告.docx

    • 资源ID:3366802       资源大小:330.28KB        全文页数:24页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机科学与技术专业《综合课程设计》报告.docx

    1、计算机科学与技术专业综合课程设计报告 电脑科学与技术专业12级综合课程设计报告题目: 贪吃蛇小游戏 成员: 学号 郝兴明 201207051 指导教师: 王金龙 开始日期: 2015 年 12月 7 日 完成日期: 2016 年 01月 8 日 2012级综合课程设计评价表题 目贪吃蛇小游戏指导老师王金龙项 目 内 容 简 介本次综合课程设计的内容为“贪吃蛇”小游戏,游戏操作简单,设计却很复杂,主要实现的内容为:通过键盘控制蛇的移动,判断蛇是否死亡,以及通过相应按钮来控制游戏的进程。评价工作量 (饱满、到达要求、不饱满);运行效果 (良好、有小问题、错误较多);文档及报告撰写 (标准、较标准、

    2、 不标准、未提交;答辩 (优秀、良好、 一般、 较差);团队分工及协作 (很好、较好、 一般、 较差)。成绩学 号姓 名组内分工奉献排名成 绩201207051郝兴明程序设计、编写、测试、报告答辩小组签字青岛理工大学课程设计任务书姓 名 组内分工 郝兴明 程序设计、编写、测试、报告 院 系: 电脑工程 专 业: 电脑科学与技术 任务起至日期: 2015年 12月 7 日 至 2016年 01月 8 日 课程设计题目: 贪吃蛇小游戏 主要内容及要求: “贪吃蛇”小游戏主要应实现以下几个方面的功能:1. 通过方向键控制蛇的移动工作计划安排:2015年12月07日-2015年12月10日 需求分析2

    3、015年12月11日-2015年12月15日 概要设计2015年12月16日-2015年12月20日 框架搭建2015年12月21日-2015年12月30日 详细功能设计2015年12月31日-2016年01月03日 程序测试2016年01月04日-2016年01月05日 书写报告2016年01月06日 项目答辩第1部分 概述1.内容简介“贪吃蛇”是一款经典的小游戏,以其操作简单、娱乐性强而广受欢送。一条蛇在封闭的围墙内移动,在围墙内随机出现一个食物,通过键盘的方向键来控制蛇的移动,当蛇吃到食物后蛇的身体长一节,同时出现一个新的食物等待蛇去吃,如果蛇在移动过程中蛇头吃到自己身体或者吃到围墙的石

    4、头,则蛇死亡,游戏结束。作为一个小游戏,设计中必须要考虑人机交互和用户体验,因此游戏界面应简洁直观,让用户可直接了解游戏的操作。“贪吃蛇”的设计对java编程的提高和进阶是一次很好的锻炼时机。本次设计使用java语言,通过GUI编程、线程、事件监听等技术来实现游戏的开发,功能虽然较少,但游戏的基本功能都具备,可正常进行游戏。2.功能介绍“贪吃蛇”小游戏的设计较复杂,要想实现所有功能需要很高的技术要求和很强的编程能力。由于本人技术能力欠缺,所以只能实现基本的游戏功能,通过画图的方法来显示出蛇的身体,食物的位置和墙的位置。主要操作是通过键盘的方向键来控制蛇的移动方向,无效方向要忽略;当蛇吃到食物时

    5、蛇的身体变长一节,同时产生一个新的食物;蛇吃到自己身体或者吃到石头时死亡,游戏结束;在游戏控制区域可通过相应按钮来控制游戏的运行进度。3.设计环境本次游戏设计的环境及开发工具如下:运行环境:Windows 7编程语言:java开发环境:eclipse第2部分 需求分析1用户特点分析游戏开发成功后,可适用于各类人群使用,所以要求界面简单,操作方便, 不需要进行专门培训就可以学会如何操作2.功能需求2.1图形界面的需求 游戏画布区主要包括蛇的身体出现的位置,食物随机出现的位置,墙的固定位置,以及蛇可移动的区域。 游戏控制区域显示按钮及操作提示。 在可使用性方面,要求各个功能实现简单,操作方便,系统

    6、处理正确;整个系统恢复性能号,链接速度快,以确保系统可适用性好。另外,还要求系统的可扩展性、可维护性、可移植性良好。 软件开发过程中的功能模块设计,主要解决实现该游戏需求的程序模块设计问题。包括如何把该游戏划分成假设干个模块、决定各个模块之间的接口、模块之间穿的的信息,以及模块结构的设计等。本游戏主要完成以下几方面的功能:1)游戏控制功能2)界面布局3)其他辅助功能 根据游戏需求,整个游戏主要划分为游戏界面和游戏控制两个模块。见图2.1 。游戏界面是整个游戏的运行区域,可动态的观察游戏过程。游戏控制是用来控制游戏进程的,可以开始游戏,暂停/继续游戏,停止游戏。 图2.1 游戏模块划分 第3部分

    7、 系统设计1.系统流程图系统流程图是描绘系统物理模型的传统工具。它的基本思想是用图形符号描绘系统里面的每个部件,表达信息在各个部件之间流动的情况。 是 是 否 否 否 是 图3.1 系统流程图本次设计遵循MVC设计模式,主要类之间的关系如下: 图3.2 MVC设计模式表达Snake类:设置蛇的属性,以及蛇的产生、移动、吃食物、死亡等方法。Food类:设置食物的随机产生和是否被吃掉等方法。Controller类:监听Snake类以及按键事件,并进行处理。Game类:用来控制游戏进程和界面的显示。表3.1 Snake类成员作用private boolean pause;判断是否暂停private

    8、boolean life;判断蛇是否死亡private boolean isMoving;判断蛇是否在移动private LinkedListbody;存放蛇的身体节点private void init();初始化方法public void move();蛇的移动方法public void drawMe(Graphics g);画出蛇的身体public void start();让蛇开始移动public void die();让蛇死亡表3.2 Food类:Public void newFood(Point p);设置食物产生的位置Public Boolean isSnakeEatFood(Sn

    9、ake snake);判断蛇是否吃到食物public void drawMe(Graphics g);在画布上画出食物表3.3 Ground类:Private int rocks;存放石头的数组Public Ground();初始化石头Public Boolean isSnakeEatRock(Snake snake);判断是否吃到石头Public Point getPoint();设置食物产生的位置public void drawMe(Graphics g);在画布上画出石头表3.4 Controller类:Public Controller(Snake snake,Food food,Gr

    10、ound ground,GamePanel gamePanel);初始化控制器类Public void keyPressed(KeyEvent e);监听按键事件Public void snakeMoved(Snake snake);监听蛇的移动Public void newGame();创建新游戏Public void setSnake(Snake snake);设置蛇第4部分 系统实现1.界面展示“贪吃蛇”小游戏适合广阔群体,故界面应以简洁直观为主,让玩家一眼便可了解游戏的操作。具体游戏界面如下:游戏初始化界面图 4.1 游戏初始化界面游戏开始界面图 4.2 游戏开始运行界面游戏结束界面图

    11、 4.3 游戏结束界面2.游戏的具体实现代码游戏画布区public void display(Snake snake,Food food,Ground ground) System.out.println(GamePanels display); this.snake = snake; this.food = food; this.ground = ground; this.repaint(); protected void paintComponent(Graphics g) g.setColor(new Color(0xcfcfcf); g.fillRect(0, 0, Global.WI

    12、DTH * Global.CELL_SIZE, Global.HEIGHT * Global.CELL_SIZE); if(ground != null & snake != null & food != null) this.ground.drawMe(g); this.snake.drawMe(g); this.food.drawMe(g); 控制区private static final long serialVersionUID = 1L; private final JButton button_start = new JButton(开始游戏); private final JBu

    13、tton button_wait = new JButton(暂停游戏); private final JButton button_stop = new JButton(停止游戏); private final JLabel label_tips = new JLabel(方向键控制蛇的移动); public GameOptionPanel() super(); setLayout(null); setFocusable(false); setVisible(true); button_start.setFont(new Font(楷体, Font.PLAIN, 17); button_wa

    14、it.setFont(new Font(楷体, Font.PLAIN, 17); button_stop.setFont(new Font(楷体, Font.PLAIN, 17); label_tips.setFont(new Font(楷体, Font.PLAIN, 25); button_start.setFocusable(false); button_wait.setFocusable(false); button_stop.setFocusable(false); label_tips.setFocusable(false); button_start.setBounds(10, 1

    15、0, 110, 40); button_wait.setBounds(145, 10, 110, 40); button_stop.setBounds(280, 10, 110, 40); label_tips.setBounds(70, 70, 300, 40); add(button_start); add(button_wait); add(button_stop); add(label_tips); public JButton getStartButton() return button_start; public JButton getWaitButton() return but

    16、ton_wait; public JButton getStopButton() return button_stop; public JLabel getTipsLabel() return label_tips; 蛇的移动public void move() if(!(oldDirection + newDirection = 0) oldDirection = newDirection; System.out.println(Snakes move); oldTail = body.removeLast(); int x = body.getFirst().x; int y = body

    17、.getFirst().y; switch(oldDirection) case UP: y-; if(y 0) y = Global.HEIGHT -1; break; case DOWN: y+; if(y = Global.HEIGHT) y = 0; break; case LEFT: x-; if(x 0) x = Global.WIDTH - 1; break; case RIGHT: x+; if(x = Global.WIDTH) x = 0; break; Point newHead = new Point(x,y); body.addFirst(newHead);监听按键p

    18、ublic void keyPressed(KeyEvent e) if(!snake.isPause()&snake.isLive()&snake.isMoving() switch(e.getKeyCode() case KeyEvent.VK_UP: snake.changeDirection(Snake.UP); break; case KeyEvent.VK_DOWN: snake.changeDirection(Snake.DOWN); break; case KeyEvent.VK_LEFT: snake.changeDirection(Snake.LEFT); break; c

    19、ase KeyEvent.VK_RIGHT: snake.changeDirection(Snake.RIGHT); break; 画出蛇的身体public void drawMe(Graphics g) g.setColor(Color.BLUE); for(Point p:body) g.fill3DRect(p.x * Global.CELL_SIZE, p.y * Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true); 随机产生食物public Point getPoint() Random radom = new Ra

    20、ndom(); int x = 0, y = 0; do x = radom.nextInt(Global.WIDTH); y = radom.nextInt(Global.HEIGHT); while(rocksxy=1); return (new Point(x,y); 初始化墙public Ground() for(int x=0;xGlobal.WIDTH;x+) rocksx0 = 1; rocksxGlobal.WIDTH-1 = 1; for(int y=0;yGlobal.HEIGHT;y+) rocks0y = 1; rocksGlobal.HEIGHT-1y = 1; 第5

    21、部分 系统测试进行软件测试是对系统的性能、完善程度以及安全性进行测试,在现今这个科技发达的时代,软件应用于各个领域,如果一个软件未经过细致的系统测试就投入使用,在使用过程中一旦出现问题后果将不堪设想,这不仅仅是对用户负责,更是对开发人员自身负责,通过系统测试不断地发现问题和解决问题,在以后的工作中就会减小这些漏洞出现的几率,不断地完善每一个软件是每一个软件开发人员共同的愿望。所以,进行系统测试是十分必要的。在进行本次游戏设计的过程中,对于软件的测试一直贯穿始终,对于在开发过程中的代码和文档,以及系统完成后都在进行测试。测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助

    22、项目管理者发现当前软件开发过程中的缺陷,以便及时改良。测试主要分5种,即单元测试、集成测试、确认测试和白盒测试和黑盒测试。 本次游戏测试主要采用黑盒测试方法,检查游戏功能是否能实现。5.2 详细测试一测试内容:是否能正常开始游戏测试方法:点击开始按钮预期结果:游戏区出现蛇、食物和墙,蛇会移动图 5.1 开始按钮测试二测试内容:是否能暂停/继续游戏测试方法:点击暂停/继续按钮预期结果:点击暂停后蛇停止移动,按钮变为继续游戏,点击继续后沿原方向移动,按钮变为暂停游戏。 测试结果:和预期一样,祥见图图5.2 暂停游戏测试图5.3 继续游戏测试测试内容:蛇是否能吃食物身体变长测试方法:控制蛇移动去吃食

    23、物预期结果:吃食物后蛇身体变长一节,同时产生一个新的食物 图5.4 蛇吃食物测试蛇身体默认为3节测试内容:蛇撞墙是否会死测试方法:控制蛇移动去撞墙预期结果:蛇死亡不再移动,游戏结束 图5.5 蛇撞墙死亡测试测试内容:蛇吃到自己身体是否会死测试方法:控制蛇移动让蛇头吃到自己身体预期结果:蛇死亡不再移动,游戏结束 图5.6 蛇吃到自己身体测试第6部分 系统总结本次课程设计从游戏界面和游戏控制两方面实现了比较完善的功能,因为本人能力有限,还需要学习的地方很多,所以还是不尽完美,有很多可以优化的地方,但游戏的基本功能都很齐全,相比之前做的管理系统类的设计,应该可以说是又上升了一个层次。虽然在设计中遇到

    24、了很多困难,比方说为了修改一个小小的bug而花费一整天,重新去学习新的知识,改了一次又一次等等,但是终于功夫不负有心人,游戏的功能都基本上实现了,作为一个学习电脑的人,尤其是一个即将毕业的大四学生,更需要有坚持不懈的毅力和不断学习新知识的激情,困难只是我们走向成功的阶梯。当你克服一个一个的困难后,会感到满满的成就感。总体来说,这次课设对我自己是一次很好的锻炼时机,不仅把以前学到的只是温习了一遍,还学习到了很多新知识,而且还提高了敲代码的能力。对设计中遇到的问题,通过仔细思考和查阅资料,使得问题得以解决,对自己以后独立思考解决问题的能力也有很大帮助。参考文献1 李芝兴 杨瑞龙. Java程序设计之网络编程第2版. 清华大学出版社,2 张海藩 牟永敏. 软件工程导论第6版. 清华大学出版社,


    注意事项

    本文(计算机科学与技术专业《综合课程设计》报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开