这一节使用循环来输出贪吃蛇的背景(地图),最终效果如下图:
红色空心方框表示边框,绿色实心方框表示贪吃蛇的活动区域。
代码如下:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main(){
int width = 30, height = width; //宽度和高度
int x, y; //x、y分别表示当前行和列
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
//设置窗口大小
system("mode con: cols=64 lines=32");
//打印背景,按行输出
for(x=0; x<width; x++){
for(y=0; y<height; y++){
if(y==0 || y==width-1 || x==0 || x==height-1){ //输出边框
SetConsoleTextAttribute(hConsole, 4 );
printf("□");
}else{ //贪吃蛇活动区域
SetConsoleTextAttribute(hConsole, 2 );
printf("■");
}
}
printf("\n");
}
//暂停
getch();
return 0;
}
程序的关键是两层嵌套的循环。x=0 时,内层循环执行30次,输出第0行;x=1 时,内层循环又执行30次,输出1行。以此类推,直到 x=30,外层循环不再执行(内存循环当然也就没机会执行),输出结束。
注意,□和■虽然都是单个字符,但它们不在ASCII码范围内,是宽字符,占用两个字节,用 putchar 等输出ASCII码(一个字节)的函数输出时可能会出现问题,所以作为字符串输出。我们将在宽字符一节中重点讲解。