飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1885|回复: 1

[C/C++] 第八课作业 贪吃蛇简单思路

[复制链接]
  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-4-16 12:02:35 | 显示全部楼层 |阅读模式
    本帖最后由 wai1216 于 2016-4-16 12:04 编辑

    想了蛮久的,大概是昨天夜里一会儿,上午一两小时的样子按上下左右变从不同的图形思路:是通过ASCII来找出一些需要的符号,然后进行判断,如果上,怎么样。。
    边框去掉了,是通过for打出来的,按空心菱形的思路最后一行打出'\n',但是存在四个边角符号的问题
    下面是打印出有头部和尾巴的思路,申请4个连续的char空间。把头部,尾部的坐标放进去
    这里将尾部的坐标放在了循环外面,然后进行判断,如果上,下,左,右。打印出尾巴下面有一个注释

    #include <stdio.h>
    main()
    {
            char c[4] = {0};
            char s[4] = {0};
            int i = 5, j = 5 ;
            char t = 1;
            *(s + 2) = i;
            *(s + 3) = j;

            while( t )
            {
                    clrscr();
                    *(s + 0) = i;
                    *(s + 1) = j;

                    gotoxy(*(s + 0), *(s + 1));
                    printf("*");
                    gotoxy(*(s + 2), *(s + 3));
                    printf("*");
                    gotoxy(*(s + 0), *(s + 1));
                    *c = getch();
                    if(*c == 0x48)
                    {
                            j = j == 2? 24:j - 1;
                            *(s + 3) = j + 1;
                            if(*(s + 0) != *(s + 2))   /* 经过测试后,发现移动了上下,之后移动左右。尾巴不会动,添加了一个判断,下同*/
                            {
                                    *(s + 2) = *(s + 0);
                            }        
                    }
                    else if(*c == 0x50)
                    {
                            j = j == 24? 1:j + 1;
                            *(s + 3) = j - 1;
                            if(*(s + 0) != *(s + 2))
                            {
                                    *(s + 2) = *(s + 0);
                            }                          
                    }
                    else if(*c == 0x4B)
                    {
                            i = i == 2? 68:i - 1;
                            *(s + 2) = i + 1;
                            if(*(s + 1) != *(s + 3))
                            {
                                    *(s + 3) = *(s + 1);
                            }
                    }
                    else if(*c == 0x4D)
                    {
                            i = i == 68? 2:i + 1;
                            *(s + 2) = i - 1;
                            if(*(s + 1) != *(s + 3))
                            {
                                    *(s + 3) = *(s + 1);
                            }

                    }
                    else if(*c == 0x30)
                    {
                            t = 0;
                    }
            }      
    }


    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表