Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame:在指定的棋盘上生成x个随机和不同的坐标_Python_Python 3.x - Fatal编程技术网

Python Pygame:在指定的棋盘上生成x个随机和不同的坐标

Python Pygame:在指定的棋盘上生成x个随机和不同的坐标,python,python-3.x,Python,Python 3.x,对于一个小型rpg游戏,我会创建一个包含特定数值的棋盘 让我介绍一个例子: board=[[0,0,0,15,0,0,0,0,0,0], [0, 0, 15, 0, 15, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 15, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 15, 0, 0, 0, 0, 15, 0], [0, 0, 0, 0, 0,

对于一个小型rpg游戏,我会创建一个包含特定数值的棋盘

让我介绍一个例子:

board=[[0,0,0,15,0,0,0,0,0,0],
[0, 0, 15, 0, 15, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 15, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 15, 0, 0, 0, 0, 15, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 15, 0, 0, 0, 0, 0, 15, 0, 0],
[0, 0, 0, 0, 0, 15, 0, 0, 15, 0],
[15, 0, 15, 15, 0, 0, 0, 0, 0, 0]]
这是一个10乘10的电路板,13乘以15

为了得到这个结果,我使用了一个程序,在电路板上给出随机坐标

b2x=[]
b2y=[]
对于范围(B)中的i:
x=random.randint(0,L-1)
y=random.randint(0,H-1)
b2x.append(x)
b2y.追加(y)
董事会[x][y]=15
打印('x:',x'和y:',y)
这里一个明显的问题是我们可以得到两个相似的坐标,这将减少一个值的总数

事实上,在第一个例子的电路板中,我没有得到我向程序询问15个值时得到的值的数量,它返回我13个

因此,我尝试在不进行坐标检查的情况下解决这个问题,这似乎现在无法正常工作

范围内j的
(len(bo2x)):
如果(x==b2x[j-1])和(y==b2y[j-1]):
i-=1#影响范围(B)中的for i循环
完整代码如下:

b2x=[]
b2y=[]
对于范围(B)中的i:
x=random.randint(0,L-1)
y=random.randint(0,H-1)
对于范围内的j(len(bo2x)):
如果(x==b2x[j-1])和(y==b2y[j-1]):
i-=1#影响范围(B)中的for i循环
b2x.append(x)
b2y.追加(y)
董事会[x][y]=15
打印('x:',x'和y:',y)
因此,在多次尝试后,没有任何更改:

随机生成
x:5和y:4
x:1和y:3
x:7和y:7
x:7和y:5
x:0和y:7
x:0和y:1
x:6和y:2
x:3和y:6
x:9和y:4
x:5和y:9
x:6和y:8
x:6和y:7
x:3和y:6
x:3和y:7
x:7和y:5
[在0.2秒内完成]
如您所见,行
x:7和y:5
以及行
x:3和y:6
在生成中出现两次

有人能帮我达到预期的结果吗

预期结果(概念):

x:5和y:4
x:1和y:3
x:7和y:7
x:7和y:5
x:0和y:7
x:0和y:1
x:6和y:2
x:3和y:6
x:9和y:4
x:5和y:9
x:6和y:8
x:6和y:7
x:3和y:6
这条线已经存在了!
x:3和y:7
x:7和y:5
这条线已经存在了!
x:1和y:3
x:9和y:4
董事会:
[[0, 15, 15, 0, 0, 0, 0, 15, 0, 0],
[0, 0, 0, 15, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 15, 15, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 15, 0, 0, 0, 0, 15],
[0, 0, 15, 0, 0, 0, 0, 15, 15, 0],
[0, 0, 0, 0, 0, 15, 0, 15, 0, 0],
[0, 0, 0, 15, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 15, 0, 0, 0, 0, 0]]

您想创建一个LxB板

L,H=10,10
这可以通过一行代码实现:

board=[[0]*L表示范围内(H)]
您希望将某个数字在板上的不同位置放置15次。
生成随机坐标,但如果编号已分配给索引字段,则跳过坐标:

count=15
数字=15
b=[]
当计数>0时:
x、 y=random.randint(0,L-1),random.randint(0,H-1)
如果板[y][x]!=编号:
板[y][x]=编号
b、 附加((x,y))
计数-=1
对于板中的行:
打印(行)
印刷品(b)

通过询问如何生成随机数列表而不重复,您可以将问题缩短90%。。。这里有一个答案:它对坐标有用吗?我不知道它如何解决这个问题:它是创建不重复的随机数,而不是不重复的随机坐标…可能是@Edhyjox的重复,好吧,这里是,没有完全相同的答案。我的意思是,找一点,不要试图被人用勺子喂answers@Edhyjox我想你需要索引元组。我知道你不再需要它们了,那么
b
就没用了。