贪吃蛇(三)绘制蛇身

绘制蛇身的逻辑不难,存储上面使用结构体。

  1. 第一行和第十九行绘制--
  2. 其它行,绘制|,分别在头尾处。
    (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++)
  {
   // one
   if(row == 0 || row == 19)
   {
     for(col = 0;col < 20;col++)
        printw("----");
   }
   else if(hasSnake(row,col))
   {
     printw("[]");
   }
   // two
   else
   {
     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;
}

学习打卡

贪吃蛇(三)绘制蛇身_第1张图片
贪吃蛇(三)绘制蛇身_第2张图片

你可能感兴趣的:(算法,c语言)