2016-09-06 162 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