看板 java 關於我們 聯絡資訊
※ 引述《money1943 (小豬)》之銘言: : 小弟要做一個 5*5的矩陣 : setLayout(new GridLayout(5, 5)); : 擺滿按鈕 : 已宣告好五個不重複的隨機變數int sum[5] : 要做類似踩地雷的功能 : 如果想做到例如點是.. : 0 1 5 6 7(隨機) 後來終於看懂了,一開始沒把上面這串當成是位置。 雖然我看過很多人都習慣用一維陣列處理這種問題, 不過我覺得二維陣列比較容易理解 (也比較容易處理邊緣問題) 所以這裡就先轉成二維吧,因此上述五個座標就變成: (0, 0) (0, 1) (1, 0) (1, 1) (1, 2) 假設現在要找到 (x, y) 的八個 neighbors, 你可以直接宣告兩組陣列: (向量) int[] dx = {0, -1, -1, -1, 0, 1, 1, 1}; int[] dy = {-1, -1, 0, 1, 1, 1, 0, -1}; // 依序分別是 上, 左上, 左, ..., 右上 把 (x, y) 分別和這些向量相加,你就可已達到八個 neighbors 的座標了。 通常在四相鄰的圖中我比較愛用上面的方式, 如果是八相鄰的話我通常會這樣用: for(int dx=-1;dx<=1;dx++) for(int dy=-1;dy<=1;dy++) if(dx!=0 || dy!=0){ // do something ... } 剩下來你唯一要注意的,就是如何處理超出邊界的問題了,good luck! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.50.250 ※ 編輯: tkcn 來自: 61.230.50.250 (06/16 15:24)
slalala:我的做法 隱藏邊界 科科 06/16 17:57
PsMonkey:嘖嘖... 從來沒想過說 XDXD 06/16 21:43
tkcn:一起來參加 code jam 吧 (招手) 06/16 23:05
TonyQ:我一直以為這是標準作法...-.-;;當初寫題目的直覺 06/17 00:44
tkcn:那來個詭異的作法 XD 先初始一個向量然後用 rotation matrix 06/17 01:08
tkcn:如果是四相鄰的話,code 還蠻精簡的 06/17 01:10
spring0417:推圍牆 06/17 04:48