2011-03-09 51 views
0

現在,我正在研究一個側項目,我試圖隨機分配一個字符串到16/16表中(對於這個例子,我使用第一行蓋茨堡地址)。這個想法是它會以相反的順序顯示單詞(即單詞只能反向顯示在四個方向上:對角線向上,對角線向下,從下向上和從右向左,因此某些內容是「四個」成爲「ROUF」是允許的)。到目前爲止,我已經創建了表,並使用string.split方法將我的字符串轉換爲數組,但我堅持得到反轉順序和隨機分佈部分。任何關於如何實現這一點的建議都是值得讚賞的。在表格中隨機分配一個字符串

到目前爲止的代碼:

wind.globals.tRows = 16; 
wind.globals.tCols = 16; 
wind.globals.wordTable = OS.gui.add_table(view, wind.globals.tRows, wind.globals.tCols); 
wind.globals.wordTable.border = '2'; 
wind.globals.wordTable.frame = 'box'; 
wind.globals.wordTable.style.position = 'absolute'; 
wind.globals.wordTable.style.left = '50px'; 
wind.globals.wordTable.style.top = '50px'; 
wind.globals.wordTable.style.width = '400px'; 
wind.globals.wordTable.style.height = '400px'; 
wind.globals.wordTable.style.textAlign = 'center'; 

wind.globals.string = "Four Score and Seven Years Ago"; 
//var tempVar = wind.globals.tString.split('').reverse().join(''); 
var tempVar = wind.globals.string.split(''); 
var t = Math.floor(Math.random()*tempVar.length); 


for(x = 0; x < wind.globals.tRows; x++){ 

    for(y = 0; y < wind.globals.tCols; y++){ 

     for(i = 0; i < tempVar.length; i++){ 

      wind.globals.wordTable.td[x][y].width = '20'; 
      wind.globals.wordTable.td[x][y].innerHTML = tempVar[y].toUpperCase(); 

      if(tempVar[y] == "," || tempVar[y] == "." || tempVar[y] == " "){ 

       wind.globals.wordTable.td[x][y].innerHTML = ""; 

      } 

     } 

    } 
} 

注:我也忘了這部分,信可以相交和共享(即s時,可以用於連接的話「分數」信和「7」

UPDATE:那麼遠也找過一些筆記我做了一段時間後,我想我已經拿出來達到什麼我需要做的方法,該方法進去4個部分

。 1)從1到4獲得一個隨機數。這將決定它是否是水平的,垂直的,positi正斜率或負斜率。 2)獲取另一個隨機數字,以決定是否嘗試將其與現有單詞相交。 3)獲取單詞開頭的隨機x,y座標。考慮到這個詞的長度。 4)檢查數組是否有衝突的交點。如果發生衝突,請轉到上一步並重試。 否則,填寫數組。

儘管我有這個想法,但我仍然遇到編碼問題,因爲我還沒有那麼多編程經驗。如果任何人都可以舉一些例子來解決問題,我想它會讓我走向正確的方向。謝謝!

回答

0

既然你用字符串中的每個字符的工作,有沒有必要做一個string.split()把它變成一個數組:你可以簡單地使用string.length()遍歷它包含的字符數,並使用string.charAt()獲得每個位置的角色。

這也解決了你的倒車問題,因爲你可以使用string.charAt(string.length()-pos)從字符串的末尾開始取反字符位置。

接下來,讓你的話在隨機方向進入表中我會從一組方向數據開始。它看起來像這樣:

var directions = [ [1,0], //horizontal 
        [0,1], //vertical 
        [1,-1], //diagonal-up 
        [1,1] //diagonal-down 
       ]; 

然後,你可以從這個數組中隨機選擇一個方向。然後,一旦您選擇了起始位置,您可以通過添加directions陣列中的座標偏移數據,以所需的方向在表格中移動。

希望有所幫助。

這可能還有很多,特別是對於我剛纔暗示的起始位置,但我不認爲我可以給出更多的建議,因爲您對目標沒有真正清楚你的程序(聽起來可能是wordsearch遊戲,但我不確定?)。