鱼C论坛

 找回密码
 立即注册
查看: 577|回复: 88

[作品展示] C语言推箱子(更新完毕)

[复制链接]
回帖奖励 6 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2020-3-14 13:30:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 andy大宝 于 2026-7-1 09:04 编辑

可能有点乱,如果运行不了及时告诉我……
注:提出建议者,或提供关卡的鱼油有赏~
第一关:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. int main()
  5. {
  6.         char a[20][20]={"   ###",
  7.                         "   #*#",
  8.                         "   # #",
  9.                         "####O######",
  10.                         "#*  OS O *#",
  11.                         "#####O#####",
  12.                         "    # #",
  13.                         "    #*#",
  14.                         "    ###",};
  15.    
  16.     int i,x,y;
  17.     char ch;
  18.     x=4;
  19.     y=5;
  20.          for (i=0;i<=8;i++)
  21.     {
  22.                 puts(a[i]);
  23.     }
  24.     while (a[1][4]!='@' || a[4][1]!='@'|| a[4][9]!='@' || a[7][5]!='@')//是否过关
  25.     {
  26.         ch=getch();
  27.                 if (ch=='s')//按下s键
  28.         {
  29.             while (1)
  30.             {
  31.                  if (a[x+1][y]!='#' && a[x+1][y]!='O' && a[x+1][y]!='@')//从此开始判断
  32.                 {
  33.                     a[x][y]=' ';
  34.                     x++;
  35.                     a[x][y]='S';
  36.                     break;
  37.                 }
  38.                 if (a[x+1][y]=='O' && a[x+2][y]==' ')
  39.                 {
  40.                     a[x][y]=' ';
  41.                     a[x+1][y]='S';
  42.                     a[x+2][y]='O';
  43.                     x++;
  44.                     break;
  45.                 }
  46.                 if (a[x+1][y]=='O' && a[x+2][y]=='*')
  47.                 {
  48.                     a[x][y]=' ';
  49.                     a[x+1][y]='S';
  50.                     a[x+2][y]='@';
  51.                     x++;
  52.                     break;
  53.                 }
  54.                 if (a[x+1][y]=='@' && a[x+2][y]==' ')
  55.                                 {
  56.                                         a[x][y]=' ';
  57.                                         a[x+1][y]='S';
  58.                                         a[x+2][y]='O';
  59.                                         x++;
  60.                     break;
  61.                                 }
  62.                                 if (a[x+1][y]=='@' && a[x+2][y]=='*')
  63.                                 {
  64.                                         a[x][y]=' ';
  65.                                         a[x+1][y]='S';
  66.                                         a[x+2][y]='@';
  67.                                         x++;
  68.                     break;
  69.                 }
  70.                 break;
  71.             }
  72.         }
  73.                 if (ch=='w')//按下w键
  74.                 {
  75.                         while (1)
  76.                         {
  77.                                 if (a[x-1][y]!='#' && a[x-1][y]!='O' && a[x-1][y]!='@')//从此开始判断
  78.                                 {
  79.                                         a[x][y]=' ';
  80.                                         x--;
  81.                                         a[x][y]='S';
  82.                     break;
  83.                                 }
  84.                                 if (a[x-1][y]=='O' && a[x-2][y]==' ')
  85.                                 {
  86.                                         a[x][y]=' ';
  87.                                         a[x-1][y]='S';
  88.                                         a[x-2][y]='O';
  89.                                         x--;
  90.                     break;
  91.                                 }       
  92.                                 if (a[x-1][y]=='O' && a[x-2][y]=='*')
  93.                                 {
  94.                                         a[x][y]=' ';
  95.                                         a[x-1][y]='S';
  96.                                         a[x-2][y]='@';
  97.                                         x--;
  98.                     break;
  99.                 }
  100.                                 if (a[x-1][y]=='@' && a[x-2][y]==' ')
  101.                                 {
  102.                                         a[x][y]=' ';
  103.                                         a[x-1][y]='S';
  104.                                         a[x-2][y]='O';
  105.                                         x--;
  106.                     break;
  107.                                 }
  108.                                 if (a[x-1][y]=='@' && a[x-2][y]=='*')
  109.                                 {
  110.                                         a[x][y]=' ';
  111.                                         a[x-1][y]='S';
  112.                                         a[x-2][y]='@';
  113.                                         x--;
  114.                     break;
  115.                                 }
  116.                 break;
  117.             }
  118.         }
  119.         if (ch=='a')//按下a键
  120.                 {
  121.                         while (1)
  122.                         {
  123.                                 if (a[x][y-1]!='#' && a[x][y-1]!='O' && a[x][y-1]!='@')//从此开始判断
  124.                                 {
  125.                                         a[x][y]=' ';
  126.                                         y--;
  127.                                         a[x][y]='S';
  128.                     break;
  129.                                 }
  130.                                 if (a[x][y-1]=='O' && a[x][y-2]==' ')
  131.                                 {
  132.                                         a[x][y]=' ';
  133.                                         a[x][y-1]='S';
  134.                                         a[x][y-2]='O';
  135.                                         y--;
  136.                     break;
  137.                                 }       
  138.                                 if (a[x][y-1]=='O' && a[x][y-2]=='*')
  139.                                 {
  140.                                         a[x][y]=' ';
  141.                                         a[x][y-1]='S';
  142.                                         a[x][y-2]='@';
  143.                                         y--;
  144.                     break;
  145.                 }
  146.                                 if (a[x][y-1]=='@' && a[x][y-2]==' ')
  147.                                 {
  148.                                         a[x][y]=' ';
  149.                                         a[x][y-1]='S';
  150.                                         a[x][y-2]='O';
  151.                                         y--;
  152.                     break;
  153.                                 }
  154.                                 if (a[x][y-1]=='@' && a[x][y-2]=='*')
  155.                                 {
  156.                                         a[x][y]=' ';
  157.                                         a[x][y-1]='S';
  158.                                         a[x][y-2]='@';
  159.                                         y--;
  160.                     break;
  161.                                 }
  162.                 break;
  163.             }
  164.         }
  165.         if (ch=='d')//按下d键
  166.                 {
  167.                         while (1)
  168.                         {
  169.                                 if (a[x][y+1]!='#' && a[x][y+1]!='O' && a[x][y+1]!='@')//从此开始判断
  170.                                 {
  171.                                         a[x][y]=' ';
  172.                                         y++;
  173.                                         a[x][y]='S';
  174.                                         break;
  175.                                 }
  176.                                 if (a[x][y+1]=='O' && a[x][y+2]==' ')
  177.                                 {
  178.                                         a[x][y]=' ';
  179.                                         a[x][y+1]='S';
  180.                                         a[x][y+2]='O';
  181.                                         y++;
  182.                                         break;
  183.                                 }       
  184.                                 if (a[x][y+1]=='O' && a[x][y+2]=='*')
  185.                                 {
  186.                                         a[x][y]=' ';
  187.                                         a[x][y+1]='S';
  188.                                         a[x][y+2]='@';
  189.                                         y++;
  190.                                         break;
  191.                 }
  192.                                 if (a[x][y+1]=='@' && a[x][y+2]==' ')
  193.                                 {
  194.                                         a[x][y]=' ';
  195.                                         a[x][y+1]='S';
  196.                                         a[x][y+2]='O';
  197.                                         y++;
  198.                                         break;
  199.                                 }
  200.                                 if (a[x][y+1]=='@' && a[x][y+2]=='*')
  201.                                 {
  202.                                         a[x][y]=' ';
  203.                                         a[x][y+1]='S';
  204.                                         a[x][y+2]='@';
  205.                                         y++;
  206.                                         break;
  207.                                 }
  208.                 break;
  209.             }
  210.         }
  211.         system("cls");
  212.         for (i=0;i<=8;i++)//刷新
  213.         {
  214.                 puts(a[i]);
  215.         }  
  216.     }  
  217.     system("cls");
  218.     printf("挑战成功!");
  219.     system("pause");
  220.     return 0;
  221. }
复制代码

第二关:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. int main()
  5. {
  6.         char a[20][20]={"##########",
  7.                         "##     ###",
  8.                         "##O###   #",
  9.                         "# S O  O #",
  10.                         "# **# O  #",
  11.                         "##**#    #",
  12.                         "##########",};   
  13.     int i,x,y;
  14.     char ch;
  15.     x=3;
  16.     y=2;
  17.          for (i=0;i<=7;i++)
  18.     {
  19.                 puts(a[i]);
  20.     }
  21.     while (a[4][2]!='@' || a[4][3]!='@'|| a[5][2]!='@' || a[5][3]!='@')//是否过关
  22.     {
  23.         ch=getch();
  24.                 if (ch=='s')//按下s键
  25.         {
  26.             while (1)
  27.             {
  28.                  if (a[x+1][y]!='#' && a[x+1][y]!='O' && a[x+1][y]!='@')//从此开始判断
  29.                 {
  30.                     a[x][y]=' ';
  31.                     x++;
  32.                     a[x][y]='S';
  33.                     break;
  34.                 }
  35.                 if (a[x+1][y]=='O' && a[x+2][y]==' ')
  36.                 {
  37.                     a[x][y]=' ';
  38.                     a[x+1][y]='S';
  39.                     a[x+2][y]='O';
  40.                     x++;
  41.                     break;
  42.                 }
  43.                 if (a[x+1][y]=='O' && a[x+2][y]=='*')
  44.                 {
  45.                     a[x][y]=' ';
  46.                     a[x+1][y]='S';
  47.                     a[x+2][y]='@';
  48.                     x++;
  49.                     break;
  50.                 }
  51.                 if (a[x+1][y]=='@' && a[x+2][y]==' ')
  52.                                 {
  53.                                         a[x][y]=' ';
  54.                                         a[x+1][y]='S';
  55.                                         a[x+2][y]='O';
  56.                                         x++;
  57.                     break;
  58.                                 }
  59.                                 if (a[x+1][y]=='@' && a[x+2][y]=='*')
  60.                                 {
  61.                                         a[x][y]=' ';
  62.                                         a[x+1][y]='S';
  63.                                         a[x+2][y]='@';
  64.                                         x++;
  65.                     break;
  66.                 }
  67.                 break;
  68.             }
  69.         }
  70.                 if (ch=='w')//按下w键
  71.                 {
  72.                         while (1)
  73.                         {
  74.                                 if (a[x-1][y]!='#' && a[x-1][y]!='O' && a[x-1][y]!='@')//从此开始判断
  75.                                 {
  76.                                         a[x][y]=' ';
  77.                                         x--;
  78.                                         a[x][y]='S';
  79.                     break;
  80.                                 }
  81.                                 if (a[x-1][y]=='O' && a[x-2][y]==' ')
  82.                                 {
  83.                                         a[x][y]=' ';
  84.                                         a[x-1][y]='S';
  85.                                         a[x-2][y]='O';
  86.                                         x--;
  87.                     break;
  88.                                 }       
  89.                                 if (a[x-1][y]=='O' && a[x-2][y]=='*')
  90.                                 {
  91.                                         a[x][y]=' ';
  92.                                         a[x-1][y]='S';
  93.                                         a[x-2][y]='@';
  94.                                         x--;
  95.                     break;
  96.                 }
  97.                                 if (a[x-1][y]=='@' && a[x-2][y]==' ')
  98.                                 {
  99.                                         a[x][y]=' ';
  100.                                         a[x-1][y]='S';
  101.                                         a[x-2][y]='O';
  102.                                         x--;
  103.                     break;
  104.                                 }
  105.                                 if (a[x-1][y]=='@' && a[x-2][y]=='*')
  106.                                 {
  107.                                         a[x][y]=' ';
  108.                                         a[x-1][y]='S';
  109.                                         a[x-2][y]='@';
  110.                                         x--;
  111.                     break;
  112.                                 }
  113.                 break;
  114.             }
  115.         }
  116.         if (ch=='a')//按下a键
  117.                 {
  118.                         while (1)
  119.                         {
  120.                                 if (a[x][y-1]!='#' && a[x][y-1]!='O' && a[x][y-1]!='@')//从此开始判断
  121.                                 {
  122.                                         a[x][y]=' ';
  123.                                         y--;
  124.                                         a[x][y]='S';
  125.                     break;
  126.                                 }
  127.                                 if (a[x][y-1]=='O' && a[x][y-2]==' ')
  128.                                 {
  129.                                         a[x][y]=' ';
  130.                                         a[x][y-1]='S';
  131.                                         a[x][y-2]='O';
  132.                                         y--;
  133.                     break;
  134.                                 }       
  135.                                 if (a[x][y-1]=='O' && a[x][y-2]=='*')
  136.                                 {
  137.                                         a[x][y]=' ';
  138.                                         a[x][y-1]='S';
  139.                                         a[x][y-2]='@';
  140.                                         y--;
  141.                     break;
  142.                 }
  143.                                 if (a[x][y-1]=='@' && a[x][y-2]==' ')
  144.                                 {
  145.                                         a[x][y]=' ';
  146.                                         a[x][y-1]='S';
  147.                                         a[x][y-2]='O';
  148.                                         y--;
  149.                     break;
  150.                                 }
  151.                                 if (a[x][y-1]=='@' && a[x][y-2]=='*')
  152.                                 {
  153.                                         a[x][y]=' ';
  154.                                         a[x][y-1]='S';
  155.                                         a[x][y-2]='@';
  156.                                         y--;
  157.                     break;
  158.                                 }
  159.                 break;
  160.             }
  161.         }
  162.         if (ch=='d')//按下d键
  163.                 {
  164.                         while (1)
  165.                         {
  166.                                 if (a[x][y+1]!='#' && a[x][y+1]!='O' && a[x][y+1]!='@')//从此开始判断
  167.                                 {
  168.                                         a[x][y]=' ';
  169.                                         y++;
  170.                                         a[x][y]='S';
  171.                                         break;
  172.                                 }
  173.                                 if (a[x][y+1]=='O' && a[x][y+2]==' ')
  174.                                 {
  175.                                         a[x][y]=' ';
  176.                                         a[x][y+1]='S';
  177.                                         a[x][y+2]='O';
  178.                                         y++;
  179.                                         break;
  180.                                 }       
  181.                                 if (a[x][y+1]=='O' && a[x][y+2]=='*')
  182.                                 {
  183.                                         a[x][y]=' ';
  184.                                         a[x][y+1]='S';
  185.                                         a[x][y+2]='@';
  186.                                         y++;
  187.                                         break;
  188.                 }
  189.                                 if (a[x][y+1]=='@' && a[x][y+2]==' ')
  190.                                 {
  191.                                         a[x][y]=' ';
  192.                                         a[x][y+1]='S';
  193.                                         a[x][y+2]='O';
  194.                                         y++;
  195.                                         break;
  196.                                 }
  197.                                 if (a[x][y+1]=='@' && a[x][y+2]=='*')
  198.                                 {
  199.                                         a[x][y]=' ';
  200.                                         a[x][y+1]='S';
  201.                                         a[x][y+2]='@';
  202.                                         y++;
  203.                                         break;
  204.                                 }
  205.                 break;
  206.             }
  207.         }
  208.         system("cls");
  209.         if(a[4][2]!= '@')
  210.                         if (a[4][2]!= 'S')
  211.                                 a[4][2]='*';
  212.         if(a[4][3]!= '@')
  213.                         if (a[4][3]!= 'S')
  214.                                 a[4][3]='*';
  215.         if(a[5][2]!= '@')
  216.                         if (a[5][2]!= 'S')
  217.                                 a[5][2]='*';
  218.         if(a[5][3]!= '@')
  219.                         if (a[5][3]!= 'S')
  220.                                 a[5][3]='*';
  221.         for (i=0;i<=8;i++)//刷新
  222.         {
  223.                 puts(a[i]);
  224.         }  
  225.     }  
  226.     system("cls");
  227.     printf("挑战成功!");
  228.     system("pause");
  229.     return 0;
  230. }
复制代码

如果此贴对您有帮助,别忘了评分

评分

参与人数 7荣誉 +9 鱼币 +11 收起 理由
Lynn_oyl + 1 + 1 鱼C有你更精彩^_^
额外减小 + 1 感谢楼主无私奉献!
w.py + 1 无条件支持楼主!
xiao-wugui + 5 感谢楼主无私奉献!
易水霖 + 5
lixiangyv + 2 + 2 鱼C有你更精彩^_^
wuqramy + 1 + 1 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-14 17:29:51 | 显示全部楼层

回帖奖励 +1 鱼币

看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-15 13:24:03 | 显示全部楼层
哈哈,评个分
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 16:00:24 | 显示全部楼层

谢谢你们的鼓励是我最大的动力~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 16:16:31 | 显示全部楼层
看一看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 23:08:46 | 显示全部楼层
看一看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 14:43:09 | 显示全部楼层
555
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 14:57:21 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 16:12:41 | 显示全部楼层

回帖奖励 +1 鱼币

看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 16:31:28 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 17:00:04 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 10:24:08 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 14:42:15 | 显示全部楼层
好难啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 16:19:06 | 显示全部楼层

回帖奖励 +1 鱼币

试一下,顶楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 08:39:01 | 显示全部楼层
第26行代码没有声明
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 15:35:43 | 显示全部楼层
过来围观一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-10 18:56:04 | 显示全部楼层

捕捉键盘字符的意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 18:39:16 | 显示全部楼层
本帖最后由 java2python 于 2020-5-23 03:05 编辑

无需回复可见的楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 03:07:19 | 显示全部楼层
本帖最后由 java2python 于 2020-5-23 20:12 编辑

重复代码不少(楼主别生气):
控制台光标位置可以设定的(没有闪烁),
另外a[x][y])写法,改成行优先a[y][x],比如printf,实际打印的a[y],x只是一个行中的列位置
取得游戏数据放到了get_new_game函数中,
由于修改贴不了代码格式,只能再回一贴:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <conio.h>

  5. static int dxy[4][2]={{1,0},{-1,0},{0,-1},{0,1}};
  6. static char tans_table[4][3] = {{'O',' ','O'},{'O','*','@'},{'@',' ','O'},{'@','*','@'}};

  7. HANDLE init_con(){
  8.     SMALL_RECT winPon={0,0,25,10};
  9.     HANDLE con=GetStdHandle(STD_OUTPUT_HANDLE);
  10.     COORD buf={26,11};

  11.     SetConsoleWindowInfo(con,1,&winPon);
  12.     SetConsoleScreenBufferSize(con,buf);
  13.         SetConsoleTextAttribute(con, 6 | FOREGROUND_INTENSITY | BACKGROUND_BLUE);
  14.         CONSOLE_CURSOR_INFO cinfo;
  15.         cinfo.dwSize = 1;
  16.         cinfo.bVisible = false;
  17.         SetConsoleCursorInfo(con,&cinfo);
  18.         return con;
  19. }
  20. void print_char(HANDLE con,int y,int x,char c){
  21.         if(c=='\0') return;
  22.         COORD coord;
  23.         coord.X = x;
  24.         coord.Y = y;
  25.         SetConsoleCursorPosition(con, coord);
  26.         int fore_color=7;
  27.         if(c == 'O') fore_color = 6;
  28.         else if(c == 'S') fore_color = 7;
  29.         else if(c == '#') fore_color = 12;
  30.         else if(c == '*') fore_color = 3;
  31.         else if(c == '@') fore_color = 2;
  32.         SetConsoleTextAttribute(con, fore_color | FOREGROUND_INTENSITY | BACKGROUND_BLUE);
  33.         putchar(c);
  34. }

  35. void get_new_game(char a[20][20],int no,COORD *s_pos,COORD star[],int *pStar_cnt){
  36.         if(no == 1){
  37.                 char aa[20][20]={"   ###",
  38.                                                 "   #*#",
  39.                                                 "   # #",
  40.                                                 "####O######",
  41.                                                 "#*  OS O *#",
  42.                                                 "#####O#####",
  43.                                                 "    # #",
  44.                                                 "    #*#",
  45.                                                 "    ###",};
  46.                 for(int y=0;y<20;y++) for(int x=0;x<20;x++) a[y][x] = aa[y][x];
  47.         }else if(no == 2){
  48.                 char aa[20][20]={"##########",
  49.                                 "##     ###",
  50.                                 "##O###   #",
  51.                                 "# S O  O #",
  52.                                 "#** # O  #",
  53.                                 "##**#    #",
  54.                                 "##########",};
  55.                 for(int y=0;y<20;y++) for(int x=0;x<20;x++) a[y][x] = aa[y][x];
  56.         }
  57.         int star_cnt = 0;
  58.         for(int y=0;y<20;y++) for(int x=0;x<20;x++) {
  59.                 //a[y][x] = aa[y][x];
  60.                 if(a[y][x] == 'S'){
  61.                         s_pos->X = x;
  62.                         s_pos->Y = y;
  63.                 }
  64.                 if(a[y][x] == '*'){
  65.                         star[star_cnt].X = x;
  66.                         star[star_cnt].Y = y;
  67.                         star_cnt++;
  68.                 }
  69.         }
  70.         *pStar_cnt = star_cnt;
  71. }

  72. int play(HANDLE con,int no)
  73. {
  74.         char a[20][20];
  75.         COORD s_pos,next_pos,next2_pos;
  76.         COORD star[10];
  77.         int star_cnt = 0;
  78.         get_new_game(a,no,&s_pos,star,&star_cnt);

  79.         int direct=0;
  80.         int cur_a,next_a,next2_a,loc_change,star_in_pos=0;
  81.         char ch;
  82.         for (int y=0;y<=7;y++) for(int x=0;x<20;x++) print_char(con,y,x,a[y][x]);

  83.         while (star_in_pos != star_cnt)//是否过关
  84.         {
  85.                 ch=getch();
  86.                 if (ch=='s') direct = 0;//按下s键
  87.                 else if (ch=='w') direct = 1;//按下w键
  88.                 else if (ch=='a') direct = 2;//按下a键
  89.                 else if (ch=='d') direct = 3;//按下d键
  90.                 else direct = -1;

  91.                 if(0<=direct && direct <=3)
  92.                 {
  93.                         loc_change = 0;
  94.                         next_pos.Y = s_pos.Y+dxy[direct][0];
  95.                         next_pos.X = s_pos.X+dxy[direct][1];
  96.                         next2_pos.Y = next_pos.Y+dxy[direct][0];
  97.                         next2_pos.X = next_pos.X+dxy[direct][1];
  98.                         next_a = a[next_pos.Y][next_pos.X];
  99.                         next2_a = a[next2_pos.Y][next2_pos.X];
  100.                         if (next_a !='#' && next_a !='O' && next_a!='@')//从此开始判断
  101.                         {
  102.                                 loc_change = 1;
  103.                         }else {
  104.                                 for(int i=0;i<4;i++){
  105.                                         if (next_a == tans_table[i][0] && next2_a == tans_table[i][1])
  106.                                         {
  107.                                                 a[next2_pos.Y][next2_pos.X]=tans_table[i][2];
  108.                                                 print_char(con,next2_pos.Y,next2_pos.X,tans_table[i][2]);
  109.                                                 loc_change = 1;
  110.                                                 break;
  111.                                         }
  112.                                 }
  113.                         }
  114.                         if(loc_change == 1){
  115.                                 a[s_pos.Y][s_pos.X]=' ';
  116.                                 a[next_pos.Y][next_pos.X]='S';
  117.                                 print_char(con,s_pos.Y,s_pos.X,' ');
  118.                                 print_char(con,next_pos.Y,next_pos.X,'S');
  119.                                 for(int i=0;i<star_cnt;i++){
  120.                                         if(s_pos.X == star[i].X && s_pos.Y== star[i].Y){
  121.                                                 cur_a = a[s_pos.Y][s_pos.X];
  122.                                                 if(cur_a != 'S' && cur_a != '@') {
  123.                                                         a[s_pos.Y][s_pos.X]='*';
  124.                                                         print_char(con,s_pos.Y,s_pos.X,'*');
  125.                                                 }
  126.                                         }
  127.                                 }
  128.                                 s_pos.Y = next_pos.Y;s_pos.X = next_pos.X;
  129.                                 star_in_pos = 0;
  130.                                 for(int i=0;i<star_cnt;i++){
  131.                                         if(a[star[i].Y][star[i].X] == '@') star_in_pos++;
  132.                                 }
  133.                         }
  134.                 }
  135.         }  
  136.         system("cls");
  137.         printf("挑战成功!");
  138.         system("pause");
  139.         system("cls");
  140.         return 0;
  141. }

  142. int main(){
  143.         HANDLE con = init_con();
  144.         play(con,1);
  145.         play(con,2);
  146. }
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
andy大宝 + 1 + 1 支持,虽然大部分内容没有学到^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-23 13:09:42 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-7-10 01:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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