对于本节内容分为两个部分进行讲解
1.地图规划
大小20X20
地图竖直方向上的边界“|”
地图水平方向的边界“--‘
贪吃蛇的身体”[ ]“
贪吃蛇的食物”##“
效果如下图所示
立刻构建出地图有些困难,我们先试着打印20X20的方块出来,代码在这:
#include <curses.h>
void initNcurse()
{
initscr();
keypad(stdscr,1);
}
void gamePic()
{
int hang;
int lie;
for(hang = 0;hang < 20;hang ++)
{
for(lie = 0;lie < 20;lie ++)
{
printw("##");
}
printw("\n");
}
}
int main()
{
initNcurse();
gamePic();
getch();//防止程序退出
return 0;
}
其中getch()函数作用是防止程序退出。
在终端运行该程序
那么我们慢慢来,先尝试写出地图的顶部
#include <curses.h>
void initNcurse()
{
initscr();
keypad(stdscr,1);
}
void gamePic()
{
int hang;
int lie;
for(hang = 0;hang < 20;hang ++)
{
if(hang == 0)
{
for(lie = 0;lie < 20;lie ++)
{
printw("--");
}
}
printw("\n");
for(lie = 0;lie < 20;lie ++)
{
if(lie == 0 || lie == 19) printw("|");
else printw(" ");
}
}
}
int main()
{
initNcurse();
gamePic();
getch();//防止程序退出
return 0;
}
运行效果是这样的
地图右边还是偏了一点,没关系我们稍做修改。
#include <curses.h>
void initNcurse()
{
initscr();
keypad(stdscr,1);
}
void gamePic()
{
int hang;
int lie;
for(hang = 0;hang < 20;hang ++)
{
if(hang == 0)
{
for(lie = 0;lie < 20;lie ++)
{
printw("--");
}
}
printw("\n");
for(lie = 0;lie <= 20;lie ++)
{
if(lie == 0 || lie == 20) printw("|");
else printw(" ");
}
}
}
int main()
{
initNcurse();
gamePic();
getch();//防止程序退出
endwin();
return 0;
}
此时的效果已经非常棒了:
2.代码实现
继续修改:
#include <curses.h>
void initNcurse()
{
initscr();
keypad(stdscr,1);
}
void gamePic()
{
int hang;
int lie;
for(hang = 0;hang < 20;hang ++)
{
if(hang == 0)
{
for(lie = 0;lie < 20;lie ++)
{
printw("--");
}
printw("\n");
for(lie = 0;lie <= 20;lie ++)
{
if(lie == 0 || lie == 20) printw("|");
else printw(" ");
}
printw("\n");
}
if(hang > 0 && hang <= 18)
{
for(lie = 0;lie <= 20;lie ++)
{
if(lie == 0 || lie == 20) printw("|");
else printw(" ");
}
printw("\n");
}
if(hang == 19)
{
for(lie = 0;lie < 20;lie ++)
{
printw("--");
}
printw("\n");
printw("by beiweiqiuAC");
}
}
}
int main()
{
initNcurse();
gamePic();
getch();//防止程序退出
endwin();
return 0;
}
此时我们完成了想要的地图效果