飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5204|回复: 7

[C/C++] C培训第八课作业(贪食蛇雏形)

  [复制链接]
  • TA的每日心情
    开心
    2015-12-28 01:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-12-30 01:12:54 | 显示全部楼层 |阅读模式
    忙活了半小天,终于弄出来个四不像...
    发现自己的逻辑能力和代码的驾驭能力都不强...
    往往出现个思路,琢磨半天也不知道用什么代码表示.
    最后只好写了改,改了写的./:L
    基本实现了老师交代的添加边框,上,下,左,右,回显不同符号.
    还有多次按键实现蛇身变长的那个.不过不知道我这样实现的可以不...
    源码:
    1. main()
    2. {
    3.         char c[5]={0};
    4.         int x = 40;
    5.         int y = 13;
    6.         int i=3;
    7.         char a = 0,b = 0;
    8.         while(*c != 0x30)
    9.         {
    10.                 clrscr();
    11.                 printf("Please enter '0' to quit.  a = %d;b = %d   x = %d;y = %d",a,b,x,y);
    12.                 gotoxy(70,1);
    13.                 printf("By: LShang");
    14.                 while(i <= 80)
    15.                 {
    16.                         if(i<25)
    17.                         {
    18.                                 gotoxy(i-1,2);
    19.                                 printf("#");
    20.                                 gotoxy(i-1,25);
    21.                                 printf("#");
    22.                                 gotoxy(i-1,13);
    23.                                 printf("-");
    24.                                 gotoxy(1,i);
    25.                                 printf("#");
    26.                                 gotoxy(80,i);
    27.                                 printf("#");
    28.                                 gotoxy(40,i);
    29.                                 printf("|");
    30.                         }
    31.                         else
    32.                         {
    33.                                 gotoxy(i-1,2);
    34.                                 printf("#");
    35.                                 gotoxy(i-1,25);
    36.                                 printf("#");
    37.                                 gotoxy(i-1,13);
    38.                                 printf("-");
    39.                         }
    40.                         i++;
    41.                 }
    42.                 if(*c == 0x1e)
    43.                 {
    44.                         gotoxy(x,y);
    45.                         for(i=0;i<5 && i<=abs(b);i++)
    46.                         {
    47.                                 *(c+i+1) = *(c+i);
    48.                                 *(c+i) = 0xdb;
    49.                                 gotoxy(x,y+i);
    50.                                 printf("%c",*(c+i));
    51.                         }
    52.                         gotoxy(x,y);
    53.                         printf("%c",*(c+i));
    54.                         gotoxy(x,y);
    55.                 }else if(*c == 0x1f)
    56.                 {
    57.                         gotoxy(x,y);
    58.                         for(i=0;i<5 && i<=abs(b);i++)
    59.                         {
    60.                                 *(c+i+1) = *(c+i);
    61.                                 *(c+i) = 0xdb;
    62.                                 gotoxy(x,y-i);
    63.                                 printf("%c",*(c+i));

    64.                         }
    65.                         gotoxy(x,y);
    66.                         printf("%c",*(c+i));
    67.                         gotoxy(x,y);
    68.                 }else if(*c == 0x11)
    69.                 {
    70.                         gotoxy(x,y);
    71.                         for(i=0;i<5 && i<=abs(a);i++)
    72.                         {
    73.                                 *(c+i+1) = *(c+i);
    74.                                 *(c+i) = 0xdb;
    75.                                 gotoxy(x+i,y);
    76.                                 printf("%c",*(c+i));
    77.                         }
    78.                         gotoxy(x,y);
    79.                         printf("%c",*(c+i));
    80.                         gotoxy(x,y);
    81.                 }else if(*c == 0x10)
    82.                 {
    83.                         gotoxy(x,y);
    84.                         for(i=0;i<5 && i<=abs(a);i++)
    85.                         {
    86.                                 *(c+i+1) = *(c+i);
    87.                                 *(c+i) = 0xdb;
    88.                                 gotoxy(x-i,y);
    89.                                 printf("%c",*(c+i));
    90.                         }
    91.                         gotoxy(x,y);
    92.                         printf("%c",*(c+i));
    93.                         gotoxy(x,y);
    94.                 }
    95.                 i = 3;
    96.                 *c = getch();
    97.                 if(*c == 0x48)
    98.                 {      
    99.                         y = (y==3)?24:--y;
    100.                         *c = 0x1e;
    101.                         b++;
    102.                 }else if(*c == 0x50)
    103.                 {
    104.                         y = (y == 24)?3:++y;
    105.                         *c = 0x1f;
    106.                         b--;
    107.                 }else if(*c == 0x4b)
    108.                 {
    109.                         x = (x == 2)?79:--x;
    110.                         *c = 0x11;
    111.                         a++;
    112.                 }else if(*c == 0x4d)
    113.                 {
    114.                         x = (x == 79)?2:++x;
    115.                         *c = 0x10;
    116.                         a--;
    117.                        
    118.                 }
    119.         }
    120.         clrscr();
    121. }
    复制代码
    界面截图:

    界面

    界面

    PS:
    因为为了让蛇头正好到达虚线时身体消失.
    所以在按不同方向键时候蛇身位置会不同.
    源码附件:
    这次在.c后缀后加.rar后缀,
    仍未压缩,需重命名.
    s.c.rar (4.28 KB, 下载次数: 14)
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-12-28 01:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-12-30 12:50:16 | 显示全部楼层
    早上起来趁着头脑清醒,修改了下代码.
    取消了中间的虚线,随时按反方向键都可以缩短蛇身.
    然后就是蛇头可以改变方向了,
    但是只能完全伸直后才能转弯.
    虽然已经是尽我所能的去想了,
    但是感觉并不是正确的逻辑.
    因为仅仅是这一点就写了好多代码.
    如果完整的贪食蛇程序,完全按这种方式写下去.
    最少也要500+行代码吧....
    可能是现在所能利用的东西太少了?
    因为是修改代码,就是为了添加功能而写代码.
    感觉很不爽.希望自己早日能够用逻辑构思出一个整体的东西出来.
    修改后源码:
    1. main()
    2. {
    3.         char c[5]={0};
    4.         int x = 40;
    5.         int y = 13;
    6.         int i=3,j = 0;
    7.         char a = 0,b = 0;
    8.         while(*c != 0x30)
    9.         {
    10.                 clrscr();
    11.                 printf("Please enter '0' to quit.  a = %d;b = %d   x = %d;y = %d",a,b,x,y);
    12.                 gotoxy(70,1);
    13.                 printf("By: LShang");
    14.                 while(i <= 80)
    15.                 {
    16.                         if(i<25)
    17.                         {
    18.                                 gotoxy(i-1,2);
    19.                                 printf("#");
    20.                                 gotoxy(i-1,25);
    21.                                 printf("#");
    22.                                 gotoxy(1,i);
    23.                                 printf("#");
    24.                                 gotoxy(80,i);
    25.                                 printf("#");
    26.                         }
    27.                         else
    28.                         {
    29.                                 gotoxy(i-1,2);
    30.                                 printf("#");
    31.                                 gotoxy(i-1,25);
    32.                                 printf("#");
    33.                         }
    34.                         i++;
    35.                 }
    36.                 if(*c == 0x1e)
    37.                 {
    38.                         if(a == 0)
    39.                         {
    40.                                 gotoxy(x,y);
    41.                                 for(i=0;i<5 && i<=abs(b);i++)
    42.                                 {
    43.                                         *(c+i+1) = *(c+i);
    44.                                         *(c+i) = 0xdb;
    45.                                         gotoxy(x,y+i);
    46.                                         printf("%c",*(c+i));
    47.                                 }
    48.                                 gotoxy(x,y);
    49.                                 printf("%c",*(c+i));
    50.                                 gotoxy(x,y);
    51.                          }
    52.                          else
    53.                          {
    54.                                 gotoxy(x,y);
    55.                                 printf("%c",*c);
    56.                                 if(a>0)
    57.                                 {
    58.                                        for(j=1;j<=abs(b);j++)
    59.                                        {
    60.                                                 gotoxy(x,y+j);
    61.                                                 printf("%c",0xdb);
    62.                                        }
    63.                                        for(j = a-1;j>0;j--)
    64.                                        {
    65.                                                 printf("%c",0xdb);
    66.                                        }
    67.                                        a--;
    68.                                        gotoxy(x,y);
    69.                                 }else if(a<0)
    70.                                 {
    71.                                        for(j=1;j<=abs(b);j++)
    72.                                        {
    73.                                                 gotoxy(x,y+j);
    74.                                                 printf("%c",0xdb);
    75.                                        }
    76.                                        for(j = a+1;j<0;j++)
    77.                                        {
    78.                                                 gotoxy(x+j,y+b);
    79.                                                 printf("%c",0xdb);
    80.                                        }
    81.                                        a++;
    82.                                        gotoxy(x,y);
    83.                                 }
    84.                          }
    85.                 }else if(*c == 0x1f)
    86.                 {
    87.                         if(a == 0)
    88.                         {
    89.                                 gotoxy(x,y);
    90.                                 for(i=0;i<5 && i<=abs(b);i++)
    91.                                 {
    92.                                         *(c+i+1) = *(c+i);
    93.                                         *(c+i) = 0xdb;
    94.                                         gotoxy(x,y-i);
    95.                                         printf("%c",*(c+i));
    96.                                 }
    97.                                 gotoxy(x,y);
    98.                                 printf("%c",*(c+i));
    99.                                 gotoxy(x,y);
    100.                          }else
    101.                          {
    102.                                 gotoxy(x,y);
    103.                                 printf("%c",*c);
    104.                                 if(a>0)
    105.                                 {
    106.                                        for(j=1;j<=abs(b);j++)
    107.                                        {
    108.                                                 gotoxy(x,y-j);
    109.                                                 printf("%c",0xdb);
    110.                                        }
    111.                                        for(j = a-1;j>0;j--)
    112.                                        {
    113.                                                 printf("%c",0xdb);
    114.                                        }
    115.                                        a--;
    116.                                        gotoxy(x,y);
    117.                                 }else if(a<0)
    118.                                 {
    119.                                        for(j=1;j<=abs(b);j++)
    120.                                        {
    121.                                                 gotoxy(x,y-j);
    122.                                                 printf("%c",0xdb);
    123.                                        }
    124.                                        for(j = a+1;j<0;j++)
    125.                                        {
    126.                                                 gotoxy(x+j,y+b);
    127.                                                 printf("%c",0xdb);
    128.                                        }
    129.                                        a++;
    130.                                        gotoxy(x,y);
    131.                                        
    132.                                 }
    133.                          }
    134.                 }else if(*c == 0x11)
    135.                 {
    136.                         if(b == 0)
    137.                         {
    138.                                 gotoxy(x,y);
    139.                                 for(i=0;i<5 && i<=abs(a);i++)
    140.                                 {
    141.                                         *(c+i+1) = *(c+i);
    142.                                         *(c+i) = 0xdb;
    143.                                         gotoxy(x+i,y);
    144.                                         printf("%c",*(c+i));
    145.                                 }
    146.                                 gotoxy(x,y);
    147.                                 printf("%c",*(c+i));
    148.                                 gotoxy(x,y);
    149.                         }else
    150.                         {
    151.                                 gotoxy(x,y);
    152.                                 printf("%c",*c);
    153.                                 if(b>0)
    154.                                 {
    155.                                         for(j = 1;j<=abs(a);j++)
    156.                                         {
    157.                                                 gotoxy(x+j,y);
    158.                                                 printf("%c",0xdb);
    159.                                         }
    160.                                         for(j=b-1;j>0;j--)
    161.                                         {
    162.                                                 gotoxy(x+a,y+j);
    163.                                                 printf("%c",0xdb);
    164.                                         }
    165.                                         b--;
    166.                                         gotoxy(x,y);
    167.                                 }else if(b<0)
    168.                                 {
    169.                                         for(j = 1;j<=abs(a);j++)
    170.                                         {
    171.                                                 gotoxy(x+j,y);
    172.                                                 printf("%c",0xdb);
    173.                                         }
    174.                                         for(j=b+1;j<0;j++)
    175.                                         {
    176.                                                 gotoxy(x+a,y+j);
    177.                                                 printf("%c",0xdb);
    178.                                         }
    179.                                         b++;
    180.                                         gotoxy(x,y);
    181.                                 }
    182.                         }
    183.                 }else if(*c == 0x10)
    184.                 {
    185.                         if(b == 0)
    186.                         {
    187.                                 gotoxy(x,y);
    188.                                 for(i=0;i<5 && i<=abs(a);i++)
    189.                                 {
    190.                                         *(c+i+1) = *(c+i);
    191.                                         *(c+i) = 0xdb;
    192.                                         gotoxy(x-i,y);
    193.                                         printf("%c",*(c+i));
    194.                                 }
    195.                                 gotoxy(x,y);
    196.                                 printf("%c",*(c+i));
    197.                                 gotoxy(x,y);
    198.                         }else
    199.                         {
    200.                                 gotoxy(x,y);
    201.                                 printf("%c",*c);
    202.                                 if(b>0)
    203.                                 {
    204.                                         for(j = 1;j<=abs(a);j++)
    205.                                         {
    206.                                                 gotoxy(x-j,y);
    207.                                                 printf("%c",0xdb);
    208.                                         }
    209.                                         for(j=b-1;j>0;j--)
    210.                                         {
    211.                                                 gotoxy(x+a,y+j);
    212.                                                 printf("%c",0xdb);
    213.                                         }
    214.                                         b--;
    215.                                         gotoxy(x,y);
    216.                                 }else if(b<0)
    217.                                 {
    218.                                         for(j = 1;j<=abs(a);j++)
    219.                                         {
    220.                                                 gotoxy(x-j,y);
    221.                                                 printf("%c",0xdb);
    222.                                         }
    223.                                         for(j=b+1;j<0;j++)
    224.                                         {
    225.                                                 gotoxy(x+a,y+j);
    226.                                                 printf("%c",0xdb);
    227.                                         }
    228.                                         b++;
    229.                                         gotoxy(x,y);
    230.                                 }
    231.                         }
    232.                 }
    233.                 i = 3;
    234.                 *c = getch();
    235.                 if(*c == 0x48)
    236.                 {      
    237.                         y = (y==3)?24:--y;
    238.                         *c = 0x1e;
    239.                         if(b<4)
    240.                         {
    241.                                 b++;
    242.                         }
    243.                 }else if(*c == 0x50)
    244.                 {
    245.                         y = (y == 24)?3:++y;
    246.                         *c = 0x1f;
    247.                         if(b>-4)
    248.                         {
    249.                                 b--;
    250.                         }
    251.                 }else if(*c == 0x4b)
    252.                 {
    253.                         x = (x == 2)?79:--x;
    254.                         *c = 0x11;
    255.                         if(a<4)
    256.                         {
    257.                                 a++;
    258.                         }
    259.                 }else if(*c == 0x4d)
    260.                 {
    261.                         x = (x == 79)?2:++x;
    262.                         *c = 0x10;
    263.                         if(a>-4)
    264.                         {
    265.                                 a--;
    266.                         }
    267.                 }
    268.         }
    269.         clrscr();
    270. }
    复制代码
    截图:
    1.jpg

    评分

    参与人数 1威望 +20 飘云币 +40 收起 理由
    Nisy + 20 + 40 不错~

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-2-24 15:35:00 | 显示全部楼层

           

    好帖居然没人顶












    燃文
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-3-1 20:23:49 | 显示全部楼层
    呵呵 楼主还厉害了  我都还不会
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-3-6 08:33:21 | 显示全部楼层
    附件包坏了,直接把代码放TC里有窗口没见蛇,按0键可退出
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-12-28 01:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2011-3-17 12:42:20 | 显示全部楼层
    附件包坏了,直接把代码放TC里有窗口没见蛇,按0键可退出
    浮云思音 发表于 2011-3-6 08:33



        我没传压缩包,把后缀名改成.c就可以了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-3-25 16:42:36 | 显示全部楼层
    强大 啊 C还能做出这个啊
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-12-28 01:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2011-3-25 17:26:42 | 显示全部楼层
    强大 啊 C还能做出这个啊
    蓝天天蓝 发表于 2011-3-25 16:42



        这个只是一个雏形,很多东西都没实现的...
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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