| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1069 人关注过本帖
标题:初学C 写了贪吃蛇 出现奇怪问题 请高手指教
只看楼主 加入收藏
testarosa
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-1-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
初学C 写了贪吃蛇 出现奇怪问题 请高手指教
先上代码:
/* snake */
#include<stdio.h>

int main()
{
    int x = 1;
    int y = 1;
    char key = 0;
    char x_snake[30] = {12};
    char y_snake[30]= {6};
    char length = 4;
    char length_count = 4;
    char close = 1;
   
   
   
    for(;close; )
    {
        clrscr();
        /* clear screen and show new update for snake */
        gotoxy(29, 2);
        printf("Wellcome to snake world!");
        gotoxy(1, 5);
        for(y = 5; y <= 21; y++)
        {
            if((y == 5) || (y == 21))
            {
                for(x = 1; x <= 80; x++)
                {
                    if((x >= 11) && (x <= 70))
                    {
                        printf("%c", 0xCD);
                    }
                    else
                    {
                        printf(" ");
                    }
                }
               
            }
            else
            {
                for(x = 1; x <= 80; x++)
                {
                    if(( x == 11) || (x == 70))
                    {
                        printf("%c", 0xBA);
                    }
                    else
                    {
                        printf(" ");
                    }
                }
               
            }
        }
        /* print a box as limit of the world */

   
   
        gotoxy(22, 23);
        printf("x_snake = %d          y_snake = %d", x_snake[0], y_snake[0]);
        
        
        for( length_count = length; length_count > 0 ; )
        {
                x_snake[length_count] = x_snake[length_count - 1];
                y_snake[length_count] = y_snake[length_count - 1];
                gotoxy(x_snake[length_count], y_snake[length_count]);
                printf("*");
                length_count--;
                /*gotoxy(x_snake[length_count], y_snake[length_count]);*/
        }
        gotoxy(15, 22);
        printf("%d  %d    ", x_snake[0], y_snake[0] );
        printf("%d  %d    ", x_snake[1], y_snake[1] );
        printf("%d  %d    ", x_snake[2], y_snake[2] );
        printf("%d  %d    ", x_snake[3], y_snake[3] );
        printf("%d  %d    ", x_snake[4], y_snake[4] );
        printf("%d  %d    ", x_snake[5], y_snake[5] );
        
        
        /*print snake with update */

        key = getch();
        if(key == 0x4b)
        {
            x_snake[0] = x_snake[0] == 12 ? 69 : --x_snake [0];
        }        
        if(key == 0x4d)
        {
            x_snake[0] = x_snake[0] == 69 ? 12 :++x_snake[0];
        }
        if(key == 0x48)
        {
            y_snake[0] = y_snake[0] == 6 ? 20 : --y_snake[0];
        }
        if(key == 0x50)
        {
            y_snake[0] = y_snake[0] == 20? 6 : ++y_snake[0];
            
        }
        /* contorl for snake */
   
    }
    return 0;
}

这代码执行的问题是。。当我length为4以上的时候。蛇的长度显示不正常。
我打印了数组中的数值来看。发现 每一次 更新蛇的坐标时 ,每一节的坐标被赋值两次 。所以 有两节蛇被打印到同一坐标 造成蛇的长度错误。
但是我不知道这代码哪里错了。。

求高手指教。
搜索更多相关主题的帖子: update screen 贪吃蛇 include 
2013-01-13 12:25
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:4 
未装TC,抱歉


[fly]存在即是合理[/fly]
2013-01-13 16:29
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:4 
同上...

I have not failed completely
2013-01-13 18:52
辉阳
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2012-11-5
收藏
得分:4 
tc   

我能做成吗?能,  制..........
2013-01-13 20:35
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:4 
晚上回去要是我还记得,就看一下

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-01-14 08:32
conan8732
Rank: 2
等 级:论坛游民
帖 子:24
专家分:43
注 册:2012-8-8
收藏
得分:4 
大概看了下   记得看过用链表做的
存在个问题   蛇头方向没定义   你这样是可以向后走的  会存在蛇点重合的情况
建议判断蛇前进方向  还有判断咬到自己时  蛇死亡
2013-01-14 09:22
testarosa
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-1-13
收藏
得分:0 
回复 5楼 peach5460
是的 你说的很对。我这个只是初步实现了控制。死亡准备下一步慢慢做进去
。。但是。。蛇的数量不对。。头痛了2天了。。不知道哪里除了问题 ,能帮我看看吗?
2013-01-14 21:30
testarosa
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-1-13
收藏
得分:0 
回复 4楼 辉阳
多谢~~能知道哪里出错就好了~
2013-01-14 21:31
悍马无极
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-2-20
收藏
得分:0 
        clrscr();           gotoxy(29, 2);       key = getch();   我的编译器显示的错误希望能对你有用
2013-02-20 19:07
悍马无极
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-2-20
收藏
得分:0 
返回信息为  --------------------配置: mingw2.95 - CUI Debug, 编译器类型: MinGW (Old)--------------------

正在编译 E:\C-Free Standard\temp\未命名1.cpp...
[Error] E:\C-Free Standard\temp\未命名1.cpp:18: implicit declaration of function `int clrscr(...)'
[Error] E:\C-Free Standard\temp\未命名1.cpp:20: implicit declaration of function `int gotoxy(...)'
[Error] E:\C-Free Standard\temp\未命名1.cpp:84: implicit declaration of function `int getch(...)'

编译中止 E:\C-Free Standard\temp\未命名1.cpp: 3 个错误, 0 个警告
2013-02-20 19:08
快速回复:初学C 写了贪吃蛇 出现奇怪问题 请高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031075 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved