Closed unique021203 closed 3 years ago
不知道你解决了没 我帮你debug了一下 这个程序有时候会卡死有时候正常运行 主要就是因为你使用randrange生成随机数 有时候生成的随机数就会死循环卡死 具体位置是在set_question_air3()函数63行 flag3值永远为1导致这个函数无法跳出卡死
我看了下代码,大概意思是:
创建一个 20x20 的矩阵 poker
,在中间 10x10 的区域内放置三架不重叠的飞机,分别是 4x5、5x5、5x5。
是这样吗?
我看了下代码,大概意思是:
创建一个 20x20 的矩阵
poker
,在中间 10x10 的区域内放置三架不重叠的飞机,分别是 4x5、5x5、5x5。是这样吗?
嗯嗯是这样的
初始化部分 (也就是 set_question_air
函数) 有很多问题要考虑,你目前是在 [5, 15) 范围内随机一个点作为左上角坐标,
(1) 第一个问题是不能保证一定能放下三架飞机,如果第一架正好放在正中间,其他两架就放不下了,需要扩大范围来保证一定能随机放下三架飞机;
(2) 左上角坐标的随机选取也可以优化,比如 5x5 的飞机,左上角坐标肯定不能 >= 11;
(3) 判断飞机能不能放下,目前是只要矩形区域内有一个点不为 0,就判断这个区域放不下,其实不一定,比如下面的 air1
和 air2
,air2
的机头占用了 air1
矩形区域的一个位置,也是可行的;
0, 0, 1, 0, 0, 0, 0
2, 2, 2, 2, 2, 0, 0
0, 0, 2, 0, 0, 0, 0
0, 2, 2, 2, 1, 0, 0
0, 0, 0, 2, 2, 2, 0
0, 0, 2, 0, 2, 0, 2
0, 0, 0, 0, 2, 0, 0
0, 0, 0, 2, 2, 2, 0
(4) 目前飞机都是朝上的,后续需要引入旋转机制,机头朝四个方向都有可能。
偶尔卡死的原因是放飞机过程中,始终随机不到满足要求的左上角坐标,所以死循环。
助教好~想问下我在set_question.py中定义的函数 set_question_air1() set_question_air2() set_question_air3() 在test.py中引用之后会让test.py不能运行是什么原因呀 把引用set_question_air1()注掉之后就可以正常运行了 但加上之后连背景都显示不出来):
代码在这里: https://bhpan.buaa.edu.cn:443/link/D07593C632388B2B23361C3FD52527BE 有效期限:2021-09-03 23:59
辛苦助教啦