/*
贪吃蛇身子节点
1.行坐标
2.列坐标
3.下一个节点的位置(地址/指针)
贪吃蛇身子显示
如何显示蛇身子的一个节点:
设该节点:行坐标2,列坐标为2
if(hang==x.hang && lie==x.lie)
{
printw("[]");
}
*/
#include <curses.h>
#include <stdlib.h>
struct Snake
{
int hang;
int lie;
struct Snake *next;
};
struct Snake *head;//头和尾巴 全局变量
struct Snake *tail;
void initNcurse()
{
initscr();
keypad(stdscr,1);
}
int serchSnakeNode(int i, int j)//打印蛇身子
{
struct Snake *p;
p = head;
while(p !=NULL){
if(p->hang==i && p->lie==j){
return 1;
}
p = p->next;
}
return 0;
}
void gamePic()//创建贪吃蛇地图
{
int hang;
int lei;
for(hang=0;hang<20;hang++){
if(hang==0){//打印0行0列至0行19列为"--"
for(lei=0;lei<20;lei++){
printw("--");
}
printw("\n");//打印完换行
}
if(hang>=0 && hang<19){//打印0行-18行的0列和20列为"|"
for(lei=0;lei<=20;lei++){
if(lei==0 || lei==20){
printw("|");
}else if(serchSnakeNode(hang,lei)){//在相关位置打印蛇的身子
printw("[]");
}
else{
printw(" ");
}
}
printw("\n");
}
if(hang==19){//打印19行0列至19行19列为"--"
for(lei=0;lei<20;lei++){
printw("--");
}
printw("\n");
printw("Bylonghaiyang");
}
}
}
void addNode()//增加蛇的身子(节点)
{
struct Snake *new =(struct Snake *)malloc(sizeof(struct Snake));
new->hang = tail->hang;
new->lie = tail->lie+1;
new->next = NULL;
tail->next =new;
tail = new;
}
void initSnake()//初始化蛇的身子 2,2
{
head = (struct Snake *)malloc(sizeof(struct Snake));
head->hang =2;
head->lie =2;
head->next = NULL;
tail = head;//先初始化一个节点行列为2 这个节点既是头又是尾
addNode();//增加蛇的身子(节点)
addNode();
addNode();
}
int main()
{
initNcurse();
initSnake();
gamePic();
getch();
endwin();
return 0;
}
C语言实现贪吃蛇demo5显示贪吃蛇完整的身子.c
最新推荐文章于 2025-07-21 22:39:01 发布