鱼C论坛

 找回密码
 立即注册
查看: 3114|回复: 30

[已解决]一个贪吃蛇的小问题,百思不得骑姐

[复制链接]
发表于 2018-8-2 13:28:39 | 显示全部楼层    本楼为最佳答案   
y坐标一直是24 + 1
一直是25
x坐标虽然是随机的,但是很难超过20
如果蛇占用了这些位置,那就一直递归

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

使用道具 举报

发表于 2018-8-2 13:32:24 | 显示全部楼层
再说一个问题
1.png
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 15:20:40 | 显示全部楼层
本帖最后由 人造人 于 2018-8-2 15:21 编辑
sswy 发表于 2018-8-2 15:03
我觉得问题可能不是在这里,因为照理说,食物和身体重合,递归进去,X坐标还是会随机,一直随机到不在身 ...


1.png
看这个程序
我想要10个随机数
调用10次GetRand
应该得到10个不同的值
但是,这10个值是相同的

原因是 srand
srand要在程序开始时调用一次,之后不需要再次调用了,如果这个程序要运行很长时间,例如服务器的守护进程,这个可以每隔一天调用一次srand,详情可以百度srand的用法

2.png

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

使用道具 举报

发表于 2018-8-2 15:27:59 | 显示全部楼层
1.png

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>

  4. int GetRand(void)
  5. {
  6.         //srand((unsigned int)time(NULL));
  7.         return rand();
  8. }

  9. int main(void)
  10. {
  11.         srand(0);
  12.         for(int i = 0; i < 10; ++i)
  13.                 printf("%d\n", GetRand());

  14.         srand(1);
  15.         for(int i = 0; i < 10; ++i)
  16.                 printf("%d\n", GetRand());

  17.         srand(2);
  18.         for(int i = 0; i < 10; ++i)
  19.                 printf("%d\n", GetRand());
  20.         printf("***********************************\n");

  21.         srand(0);
  22.         for(int i = 0; i < 10; ++i)
  23.                 printf("%d\n", GetRand());

  24.         srand(1);
  25.         for(int i = 0; i < 10; ++i)
  26.                 printf("%d\n", GetRand());

  27.         srand(2);
  28.         for(int i = 0; i < 10; ++i)
  29.                 printf("%d\n", GetRand());
  30.         printf("***********************************\n");
  31.        
  32.         return 0;
  33. }
复制代码

  1. 38
  2. 7719
  3. 21238
  4. 2437
  5. 8855
  6. 11797
  7. 8365
  8. 32285
  9. 10450
  10. 30612
  11. 41
  12. 18467
  13. 6334
  14. 26500
  15. 19169
  16. 15724
  17. 11478
  18. 29358
  19. 26962
  20. 24464
  21. 45
  22. 29216
  23. 24198
  24. 17795
  25. 29484
  26. 19650
  27. 14590
  28. 26431
  29. 10705
  30. 18316
  31. ***********************************
  32. 38
  33. 7719
  34. 21238
  35. 2437
  36. 8855
  37. 11797
  38. 8365
  39. 32285
  40. 10450
  41. 30612
  42. 41
  43. 18467
  44. 6334
  45. 26500
  46. 19169
  47. 15724
  48. 11478
  49. 29358
  50. 26962
  51. 24464
  52. 45
  53. 29216
  54. 24198
  55. 17795
  56. 29484
  57. 19650
  58. 14590
  59. 26431
  60. 10705
  61. 18316
  62. ***********************************
  63. 请按任意键继续. . .
复制代码


种子值一样,得到的随机值就一样
这就是伪随机
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 15:36:17 | 显示全部楼层
1.png

Stack overflow
不断的递归,导致堆栈溢出了
因为蛇占用了位置,导致的不断递归
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 15:52:19 | 显示全部楼层
1.png
你能确定这里是25吗?
还是说你把52写成了25?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 16:34:08 | 显示全部楼层
sswy 发表于 2018-8-2 16:15
醍醐灌顶,请问老师如此隐蔽的问题,老师您是怎么发现的?之前遇上过这样的问题?
太感谢人造人老师了, ...

没错,之前遇到过这样的问题
^_^
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 16:38:55 | 显示全部楼层
1.png
2.png
3.png
4.png

这是在调试,需要一个合适的速度,太快了没办法调试,太慢了也不行

然后就是调试运行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 16:40:53 | 显示全部楼层
本帖最后由 人造人 于 2018-8-2 16:43 编辑

每一次吃到食物就会停下来
然后多次观察生成的这个食物的坐标,就会看到问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 16:43:48 | 显示全部楼层
5.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 16:51:22 | 显示全部楼层
sswy 发表于 2018-8-2 16:49
这里不是25老师,是52或者53我记不清楚了,但是这里是因为我故意把x位置调小,让程序多出错,我好方便看 ...


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

使用道具 举报

发表于 2018-8-2 16:56:00 | 显示全部楼层
sswy 发表于 2018-8-2 16:53
也就是说DBUG需要一个合适的速度?。。。。。这个这个这。。。。什么速度比较合适,。。。。。

1.png

要能把蛇吃到这么长的速度,太快了根本吃不到这么长就死了,太慢也不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 18:14:57 | 显示全部楼层
sswy 发表于 2018-8-2 17:03
合适的速度,是否是调试的时候多试试Sleep呢?我就没有这个提示

录了个视频,18分钟,耐心看完
不得不说一下百度云的上传速度
230MB的文件花了半个多小时
限速也太严重了

链接:https://pan.baidu.com/s/1-R-lOS6mpGKYFAcQGqyYRg 密码:zgq2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 20:18:16 | 显示全部楼层
sswy 发表于 2018-8-2 20:16
必须耐心每一个秒,每一帧都要看

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

使用道具 举报

发表于 2018-8-2 22:44:28 | 显示全部楼层
sswy 发表于 2018-8-2 22:26
谢谢老师,视频我已经反复观看并学习,虽然老师玩游戏撞了几次墙,但是耐心解答,让我想起了一首歌
{:10 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 04:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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