绘制蛇身的逻辑不难,存储上面使用结构体。
- 第一行和第十九行绘制
--
- 其它行,绘制
|
,分别在头尾处。
(1) 扫描蛇身,如果扫描到则绘制[]
。
(2) 扫描蛇身,如果扫描不到则绘制空白。
#include"curses.h"struct SnakeNode
{int row;int col;struct SnakeNode* next;
};struct SnakeNode node1 = {2,2,NULL};
struct SnakeNode node2 = {2,3,NULL};
struct SnakeNode node3 = {2,4,NULL};void cursesinit()
{initscr();keypad(stdscr,1);
}int hasSnake(int row,int col)
{struct SnakeNode* p = &node1;while(p!=NULL){if(row == p->row && col == p->col)return 1;p = p->next;}return 0;
}
void mapinit()
{int row;int col;for(row = 0;row < 20;row++){// oneif(row == 0 || row == 19){for(col = 0;col < 20;col++)printw("----");}else if(hasSnake(row,col)){printw("[]");}// twoelse{printw("|");for(col = 0;col < 20-2;col++){if(hasSnake(row,col)){printw("[]");printw(" ");}else{printw(" "); // 4 spaces;}}printw(" |"); // 4 + 3 len;}printw("\n");}getch();
}int main()
{node1.next = &node2;node2.next = &node3;cursesinit();mapinit();endwin();return 0;
}
学习打卡