zoukankan      html  css  js  c++  java
  • 星 辰 · 第 三 条 约 定

    前要:

    前两天事情比较多,基本不在家,所以就把贪吃蛇拖到这两天来做了。结果。。。有点蒙圈。

    题外话:

    1、耦合的不良影响:通俗的讲 

    模块一的实现依赖于模块二,更改模块二后,模块一也得更改,那么二者就有耦合。
    耦合的类设计降低了代码的维护性

    所以要避免耦合的出现!!

    正题

     程序的主体主要围绕“蛇”这个对象的属性以及方法进行设计。所以要明确在游戏中这个对象需要有哪些属性以及行为,首先“蛇”有长度以及“蛇”的组成,这就是蛇的属性;其次,蛇能移动(上下左右),能吃食物,并且不能碰到边框以及头部不能触碰自己的身体,这就可以抽象为蛇的三个行为,Move(),IsEatFood(),IsOver,分别为移动,吃食物,检测自身是否满足游戏的规则。

    1、贪吃蛇要实现的功能

    <1>能上下左右移动(本质是坐标的更新与重新打印  打印目前知道有两种方式 第一种是用二维数组记录然后全部重新打印(这次采用) 第一种是用改变光标位置                                 进行打印,非全部打印) --Move 更新坐标信息

    <2>吃到食物身体变长(本质是存放蛇身体的数组增加一个数据) --IsEatFood 吃到时候返回true 没吃到返回false

    <3>碰到墙壁或身体游戏结束(本质是对蛇头将到达的下一个坐标进行检测)-----IsOver 游戏结束返回true 没结束返回false

    2、游戏逻辑 

    第一步:绘制地图边界,蛇,食物(初始化地图边界,蛇,食物等对象)

    第二步: 一个0.1秒执行一次的功能块1

       功能块1包括:<1>打印地图边界,蛇,食物

                           <2>检测是否吃到食物,吃到食物则 增长身体 且 生成新事物 然后蛇根据方向移动一位,没吃到食物则蛇根据方向移动一位

                           <3>判断游戏是否结束

    第三步:实时接收用户输入,更改全局变量direction

    新学到

    1、一个String对象在 堆内存 中创建以后, 就不能被改变了. 请注意String对象的所有方法都不会改变其本身,而是会返回一个新的String对象.

    如果我们需要可改变的字符串,则需要使用 StringBuffer 或者 StringBuilder. 否则每次创建一个新String对象的话,就会造成大量的内存浪费,需要耗时来执行垃圾回收。详见http://blog.csdn.net/renfufei/article/details/15815121

    2、定时器Timer的使用 

    3、

     程序的主体主要“蛇”这个对象的属性以及方法的设计。现在我们想想在游戏中这个对象需要有哪些属性以及行为,首先“蛇”有长度以及“蛇”的组成,这就是蛇的属性,可以由一个相邻的Block类型的集合snakeList来表示;其次,蛇能移动(上下左右),能吃食物,并且不能碰到边框以及头部不能触碰自己的身体,这就可以抽象为蛇的三个行为,Move(),IsEatFood (),IsOver(),分别为移动,吃食物,检测自身是否满足游戏的规则。

  • 相关阅读:
    JS——祝愿墙
    JS——模拟百度搜索
    JS——选择水果
    html——快捷键
    JS——百度背景图
    JS——stye属性
    JS——高级各行换色
    html——细线表格
    LeetCode初级算法(数组)解答
    Python网络爬虫(四)
  • 原文地址:https://www.cnblogs.com/wshyj/p/6395063.html
Copyright © 2011-2022 走看看