2016-09-06 261 views
0

这个使用计划是在一个基于文本的太空RPG游戏。我想生成随机点(x,y坐标) - 我已经完成了 - 然后用2d网格上显示的连接绘制它们。作为一个方面,我将如何标记这些坐标?如何从一组随机生成的坐标中生成一个2d网格?

为随机生成的代码包含如下:

import time 
import random 
import math 

radius = 200 
rangeX = (0, 2500) 
rangeY = (0, 2500) 
qty = 40 

deltas = set() 
for x in range(-radius, radius+1): 
    for y in range(-radius, radius+1): 
     if x*x + y*y <= radius*radius: 
      deltas.add((x,y)) 

randPoints = [] 
excluded = set() 
i = 0 
while i<qty: 
    x = random.randrange(*rangeX) 
    y = random.randrange(*rangeY) 
    if (x,y) in excluded: continue 
    randPoints.append((x,y)) 
    i += 1 
    excluded.update((x+dx, y+dy) for (dx,dy) in deltas) 
    time.sleep(0.001) 

stars = {} 
keyName = 1 
for item in randPoints: 
    stars[str(keyName)] = [item, 0,] 
    keyName += 1 
+0

你说的二维网格是什么意思? – martineau

+0

我想用x和y坐标生成一个2维网格的图像,就像地图一样。 @martineau –

+0

您是否试图从给定点找到随机x,y坐标的路径?我不明白你的意思是用二维网格上显示的连接来绘制它们。 – MooingRawr

回答

0

相反,为您提供一个直接的答案,作为这个问题的范围似乎相当大的,我会为你在一个大方向。

考虑使用pygame;它为您提供了绘图功能,拥有一个事件系统,您可以使用它来检测用户输入,并具有许多其他用于创建游戏的有用功能。

强烈考虑使用类;你的代码将变得更可读和更灵活。为您的星星添加功能,如标签,表面温度,发射(脉冲)光的颜色,可用原材料等等变得更容易处理。

要生成名称,您可以将现有的星形名称放在文本文件中,加载它并随机选取一个。要获得额外的奖励积分,请使用markov链生成看似随机的名称。

https://www.pygame.org

https://docs.python.org/3/tutorial/classes.html

https://en.wikipedia.org/wiki/Markov_chain