五、蛇向右移动

1.蛇向右移动

  1 #include<curses.h>
  2 #include<stdlib.h>
  3 
  4 struct NodeofSnake
  5 {
  6         int hang;
  7         int lie;
  8         struct NodeofSnake *next;
  9 };
 10 
 11 struct NodeofSnake *head=NULL;
 12 struct NodeofSnake *tail=NULL;
 13 
 14 void addNode()
 15 {
 16         struct NodeofSnake *new;
 17         new=(struct NodeofSnake*)malloc(sizeof(struct NodeofSnake));
 18         new->hang=tail->hang;
 19         new->lie =tail->lie+1;
 20         new->next=NULL;
 21 
 22         tail->next=new;
 23         tail=new;
 24 }
 25 void initSnake()
 26 {
 27         //      struct NodeofSnake *head,*tail;
 28         head=(struct NodeofSnake*)malloc(sizeof(struct NodeofSnake));
 29         head->hang=2;
 30         head->lie =2;
 31         head->next=NULL;
 32 
 33         tail=head;
 34 
 35         addNode();
 36         addNode();
 37         addNode();
 38 }
 39 int wheatherOfSnakeNode(int hang,int lie)
 40 {
 41 
 42         struct NodeofSnake *point = head;
 43         while(point!=NULL){
 44                 if(hang==point->hang && lie==point->lie ){
 45                         printw("[]");
 46                         return 1;
 47                 }
 48                 point=point->next;
 49         }
 50         return 0;
 51 }
 52 
 53 void initMap()
 54 {
 55         int hang=0;
 56         int lie =0;
 57         move(0,0);
 58 
 59         for(hang=0;hang<=20;hang++){
 60                 if(hang==0||hang==20){
 61                         for(lie=0;lie<20;lie++){
 62                                 printw("--");
 63                         }
 64                         printw("\n");
 65                 }
 66                 if(hang>0&&hang<=19){
 67                         for(lie=0;lie<=20;lie++){
 68                                 if(lie==0||lie==20){
 69                                         printw("|");
 70                                 }else if(wheatherOfSnakeNode(hang,lie)){
 71                                 }
 72                                 else{
 73                                         printw("  ");
 74                                 }
 75                         }
 76                         printw("\n");
 77                 }
 78         }
 79         printw("By:GuoMing\n");
 80 }
 81 void deleteNode()
 82 {
 83         struct NodeofSnake *point = head;
 84         head=head->next;
 85         free(point);
 86 }
 87 void snakeMove()
 88 {
 89         addNode();
 90         deleteNode();
 91 }
 92 int main()
 93 {
 94         int key;
 95         initscr();
 96         keypad(stdscr,1);
 97 
 98         initSnake();
 99         initMap();
100 
101         while(1){
102                 key=getch();
103                 if(key==KEY_RIGHT){
104                         snakeMove();
105                         initMap();
106                 }
107         }
108 
109         //      initSnake();
110         //      initMap();
111 
112         getch();
113         endwin();
114 
115         return 0;
116 }

 

2.蛇撞墙而死

1 #include<curses.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 
  5 struct NodeofSnake
  6 {
  7         int hang;
  8         int lie;
  9         struct NodeofSnake *next;
 10 };
 11 
 12 struct NodeofSnake *head=NULL;
 13 struct NodeofSnake *tail=NULL;
 14 
 15 void addNode()
 16 {
 17         struct NodeofSnake *new;
 18         new=(struct NodeofSnake*)malloc(sizeof(struct NodeofSnake));
 19         new->hang=tail->hang;
 20         new->lie =tail->lie+1;
 21         new->next=NULL;
 22 
 23         tail->next=new;
 24         tail=new;
 25}
 26 void initSnake()
 27 {
 28         struct NodeofSnake *point =head;
 29         if(point!=NULL){
 30                 head=head->next;
 31                 free(point);
 32         }
 33         head=(struct NodeofSnake*)malloc(sizeof(struct NodeofSnake));
 34         head->hang=2;
 35         head->lie =2;
 36         head->next=NULL;
 37 
 38         tail=head;
 39 
 40         addNode();
 41         addNode();
 42         addNode();
 43 }
 44 int wheatherOfSnakeNode(int hang,int lie)
 45 {
 46 
 47         struct NodeofSnake *point = head;
 48         while(point!=NULL){
 49                 if(hang==point->hang && lie==point->lie ){
 50                         printw("[]");
51                         return 1;
 52                 }
 53                 point=point->next;
 54         }
 55         return 0;
 56 }
 57 
 58 void initMap()
 59 {
 60         int hang=0;
 61         int lie =0;
 62         move(0,0);
 63 
 64         for(hang=0;hang<=20;hang++){
 65                 if(hang==0||hang==20){
 66                         for(lie=0;lie<20;lie++){
 67                                 printw("--");
 68                         }
 69                         printw("\n");
 70                 }
 71                 if(hang>0&&hang<=19){
 72                         for(lie=0;lie<=20;lie++){
 73                                 if(lie==0||lie==20){
 74                                         printw("|");
 75                                 }else if(wheatherOfSnakeNode(hang,lie)){
76                                 }
 77                                 else{
 78                                         printw("  ");
 79                                 }
 80                         }
 81                         printw("\n");
 82                 }
 83         }
 84         printw("By:GuoMing\n");
 85 }
 86 void deleteNode()
 87 {
 88         struct NodeofSnake *point = head;
 89         head=head->next;
 90         free(point);
 91 }
 92 void snakeMove()
 93 {
 94         addNode();
 95         deleteNode();
 96         if(tail->lie==20 ||tail->lie==0 ||tail->hang==0 ||tail->hang==20 ){
 97                 initSnake();
 98         }
 99 }
100 int main()101 {
102         int key;
103         initscr();
104         keypad(stdscr,1);
105 
106         initSnake();
107         initMap();
108 
109         while(1){
110                 key=getch();
111                 if(key==KEY_RIGHT){
112                         snakeMove();
113                         initMap();
114                 }
115         }
116 
117         //      initSnake();
118         //      initMap();
119 
120         getch();
121         endwin();
122 
123         return 0;
124 }

 

3.蛇向右自行移动

在这里就不检测键盘响应反应了,目的让蛇一直向右移动。

只修改main函数中while(1)中内容 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值