博客
关于我
HDU-游戏程序设计-C++贪吃蛇-墙体绘制
阅读量:777 次
发布时间:2019-03-24

本文共 2238 字,大约阅读时间需要 7 分钟。

贪吃蛇的画面是需要墙体的,组成长方形绘制为贪吃蛇活动的区域。舞台绘制思路:长方形舞台大小为width和height。width:横向的墙面比较容易绘制,可以通过for循环,在i从0到width-1的条件下,使i数值不断增加。在for循环条件满足时,每次输出一个墙壁图案,便简单地打印出width个墙体图案。

height:这部分需要更巧妙的处理。对于初学者来说,这部分可能需要一些思考来理解。

在墙体绘制中,可以采用如下的设计:

#include 
#include
#include
using namespace std;int i, j;int width = 40;int height = 40;void Draw() { for (i = 0; i < width; i++) { cout << "1"; cout << endl; } for (int row = 0; row < height; row++) { for (int column = 0; column < width; column++) { if (column == 0) { cout << "2"; } else if (column == width - 1) { cout << "3"; } else { cout << " "; } } cout << endl; } for (i = 0; i < width; i++) { cout << "4"; cout << endl; }}int main() { Draw(); return 0;}

在这段代码中:

  • 前width行全部为"1",为顶部墙壁。
  • 中间height行根据列来判断输出墙壁或空格:
    • 左端(column=0)输出"2"。
    • 右端(column=width-1)输出"3"。
    • 中间部分输出空格" "。
  • 底部墙壁(width行)全部为"4"。
  • 在实际开发中,可能会遇到一些问题:

  • 问题1:新添加的若干条件引发3个墙体少了两个的现象。
    • 初查看代码,发现其他地方是正确的。向源代码中寻找新条件,发现某段新增的代码条件过于严格,导致符合条件的范围变小。
  • 解决办法:将width改为width + 2。这样门限条件变松,墙壁闭合。但注意增加的size可能影响整体布局和逻辑。

    1. 问题2:布局上可能会出现以下情况:
      • 果子不显示或超出舞台范围。
      • 水果的显示位置导致墙壁向右突出一格。
      • 左右墙壁闭合时产生多余空格。
    2. 解决办法:

      • 确保果子坐标在合理范围内。
      • 引入中间的墙壁区域,确保墙壁闭合且不影响正常显示。例如,添加一个THICKNESS变量,用于将坐标转换为相应的相对位置。

      此外,还需要注意以下几点:

      • 确保游戏舞台的实际显示范围与编程逻辑完全一致。
      • 中央墙壁的处理需要非常谨慎,否则会导致蛇移动时逻辑错误。

      代码优化示例

      重构后的代码如下:

      // 窗口初始化及设置坐标函数void setPos(int x, int y) {    COORD pos;    pos.X = CORNER_X + x + THICKNESS;    pos.Y = CORNER_Y + y + THICKNESS;    SetConsoleCursorPosition(h, pos);}// 绘制墙壁和背景void DrawWalls() {    for (int i = 0; i < height; i++) {        setPos(-THICKNESS, i);        for (int j = 0; j < width + THICKNESS * 2; j++) {            if (j == 0 || j == width + THICKNESS) {                cout << "#";            } else {                cout << " ";            }        }        cout << endl;    }}

      这种方式不仅将问题解决,还实现了更灵活的布局控制:

      • 通过setPos函数,将游戏内的坐标与屏幕坐标对齐。
      • 增加了THICKNESS变量,用于处理边框的厚度。
      • 在水平线和竖直线上分别设置墙壁。

      关键点总结

      在编写类似的代码时,可以考虑以下优化策略:

    3. 代码简化:减少不必要的cout语句,提高画面绘制效率。
    4. 抽象处理:引入一些中间变量(如THICKNESS),减少逻辑固化。
    5. 错误追踪:遇到问题时,首先检查所有新增条件。
    6. 代码注释:注释化关键代码,即使小//------------------------------------------------ Falkiro

    7. 通过上述优化策略,可以很好地解决上述问题并优化代码。在实际开发中,可以根据实际需求对颜色和布局进行进一步调整。

    转载地址:http://lnrkk.baihongyu.com/

    你可能感兴趣的文章
    python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
    查看>>
    Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
    查看>>
    Python 从数据库中存储和检索密码的最安全方法
    查看>>
    Python语言及其应用 - 知识点遍历
    查看>>
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>
    python 使用filetype校验文件
    查看>>
    Python 使用flush函数将缓冲区数据立即写磁盘
    查看>>
    python 使用in判断不准确,in不好使
    查看>>
    Python 使用pandas 进行查询和统计详解
    查看>>
    Redis 配置文件redis.conf详细解释
    查看>>
    python网络爬虫(2)——scrapy框架的基础使用
    查看>>
    python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
    查看>>
    Python 使用哈希函数用于加密
    查看>>
    Python 依赖管理的革新——Poetry 深度解析
    查看>>
    python 保留精度及增加去除数字的千位分隔符(金额化数字)
    查看>>
    python 倒计时 9,8,7,。。。。。。0
    查看>>
    Python 入门开发学习笔记之数据的增删改查
    查看>>
    Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
    查看>>