游戏程序设计-C++贪吃蛇-墙体绘制

贪吃蛇的画面是需要墙体的,组成长方形绘制为贪吃蛇活动的区域。
舞台绘制思路:长方形舞台大小width&height;
width:横向的墙面比较易于绘制:建立for循环,在i属于[0,width-1]的条件里,使i数值不断+1,在符合for循环条件里,每次达到条件,就输出墙壁图案,因此很简单便有width个墙体图案被打印出来。
height:其实这边用的for循环比较有趣。初学者可能要思考一下才能明白。在这里插入图片描述

于是在墙体绘制中,做出如下设计`

#include <iostream>
#include <windows.h>
#include <conio.h>;
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 j = 0; j < height; j++)
	{
		for (int i = 0; i < width; i++) 
		{
			if (i == 0)
				cout << "2";
			else if (i == width - 1)
				cout << "3";
			else
				cout << " ";

		}
		cout << endl;
	
	}
	for (i = 0; i < width; i++)
		cout << "4";
	cout << endl;
}
int main() {
	Draw();
	return 0;
}

在这里插入图片描述
感觉很正常。

下一步,给背景绘制蛇头和果实:如果代表蛇头,果实的坐标的x,y,fruitx,fruity==i,j那么cout 《O,F.
这边用到比较多的elseif和else知识:if和else if 之间是有联系的,当不满足if中的条件的时候,才会去执行else if.如果if中的条件已经满足了,就不会去判断else if中的条件了.两个if语句在一起时,才会依次对每一个if句都进行判断,互相之间不会影响。
假如蛇头绘制后,出现了以下的几个问题:

1.3墙少了两个墙体。但刚刚是没问题的。

在这里插入图片描述
因为刚刚测试很正常。所以我感觉是添加的条件出问题。

在这里插入图片描述
于是干脆给1,4墙条件判断改成width+2。墙壁闭合。但是,舞台尺寸变大。产生些许混乱。
这一章节里,对if else if语句的使用比较需要注意。在这里插入图片描述
假如没有用好,便会出现这样的情况:

2.有时画面没有果子,或超过舞台

在这里插入图片描述

并且发现一个灵异的现象:果子让墙体无故变成红色

在这里插入图片描述
在这里插入图片描述

3.水果出现的水平行,墙体向右突出一格

按理说,舞台上的显示内容只有oFO果,四个中间四选一才对。但是现在,显示的内容和空格产生了互斥。导致多出一个空格键的情况。

5.游戏舞台的尺寸设定为高度height,宽度width,但本节案例的实际执行稍有偏差。以舞台的第i行为例,左墙的坐标为(0,i),右墙坐标为(width-1,i),实际舞台的宽度为width-2。该情况可能会为后续蛇的移动判定带来困扰。

`解决策略:

//光标位置设定函数,让舞台坐标XY与屏幕坐标xy关联,让用户不用去考虑屏幕的物理坐标
void setPos(int X, int Y)

{

COORD pos;

pos.X = CORNER_X + X + THICHKNESS;

pos.Y = CORNER_Y + Y + THICHKNESS;

SetConsoleCursorPosition(h, pos);

}



for (int i = 0; i < height; i++)

{

setPos(-THICHKNESS, i);//绘制左右的墙

for (int j = 0; j < width+THICHKNESS*2; j++)

{

if (j == 0)

                            cout << "#";

else if (j == width + THICHKNESS)

      cout << "#";

else

      cout << " ";

}

cout << endl;

}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值