跳到主要內容

精選

【桌遊】瘟疫危機

團結抗役,一款團隊合作與全員思辨的遊戲 瘟疫危機起,全員動起來 你的團隊能成功拯救人類嗎? 遊戲名稱:Pandemic (中譯:瘟疫危機) 參與人數:2-4人 適合年齡:8+ 遊戲時間:45min  遊戲設置: 1⃣️ 依玩家人數,發送玩家牌(背面是十字圖,4人局:每人2張) 2⃣️ 每人選擇一個玩家身份卡,並領取遊戲說明卡(角色7選4,開放討論,也可以用抽的) 3⃣️ 每人拿取玩家token,並集合放置於一個城市上。並於該城市放置一個研究所 4⃣️ 將剩餘玩家卡分成四堆,依序放入4張流行病卡,洗混後疊成一疊 ,放在玩家牌區 5⃣️ 將疾病卡洗混放在疾病牌區 遊戲開始 [動作]從疾病牌翻出三個城市牌,並依序在這城市內放上三個感染者(病毒種類依翻出的顏色) 遊戲情境引導員:XXX等城市最先發現疾病,並且已經感染的很嚴重,只要再發生一個案例,感染就會外溢 [動作]從疾病牌翻出三個城市牌,並依序在這城市內放上二個感染者(病毒種類依翻出的顏色) 遊戲情境引導員:XXX等城市也出現病患,但這些城市還能容忍一個感染者 [動作]從疾病牌翻出三個城市牌,並依序在這城市內放上一個感染者(病毒種類依翻出的顏色) 遊戲情境引導員:XXX等城市也有一位感染者了,現在開始,我們必須前往這些疫區,治癒並研發疫苗,阻止瘟疫蔓延,只要我們能在瘟疫爆發前,研發出四種疫苗,就能戰勝遊戲! 遊戲情境引導員進行遊戲解說: 如何研發疫苗,當一位玩家身處研究所的城市,且手上有五張相同顏色的玩家卡,就能花費一個行動製造該顏色疫苗。(當某一顏色疫苗開發成功,之後所有玩家進行治癒疾病時。可一次治癒所有感染者) 玩家動作解說: 1⃣️ 行動:玩家每次可從玩家解說卡上的8種行動,選擇任一行動執行,每種行動均可重複執行,但每次只能累計執行四次行動。 搭車移動(移動到沿線的鄰近城市) 搭乘直航(移動到手上玩家牌任一個城市,移動後捨棄該玩家牌) 包機航班(捨棄所處城市的玩家牌,移動到任何城市) 穿梭航班(身處研究所城市,可任意穿梭到另一個研究所城市) 設立研究所(棄掉所處城市的玩家牌,即可建立一所研究所 治療感染者(移除一枚病毒方塊) 交換情報(兩個玩家同處一個城市時,遞...

桌遊計畫|BGG 資料擷取研究


BGG,是國外一個桌遊網站(Board Game Geek)並且於2000年就已經成立
是個相當資深的桌遊資訊網站
應該也是目前全世界桌遊玩家都會參考的網站

身為桌遊玩家,我們會很在意喜歡的桌遊在這個網站內的排名資訊
包含推薦分數、投票數(熱門度)、及玩家們給予的困難度評分

因此我想研究如何自動定期取得BGG網站排名資料
目前我找到的方法1

使用工具:Google Sheet

語法:IMPORTHTML
可擷取網頁上的table或是ol/ul的資料

語法:importXML
可使用XPath方式取得網頁中特定區域內的值

進階應用:使用Google Sheet內指令碼編輯器,利用程式語言抓取多頁資料

function doGet() {
var SpreadSheet = SpreadsheetApp.openByUrl('#url'); //此處填入Google試算表的網址
var Sheet = SpreadSheet.getSheetByName('#name');  //此處填入試算表的標籤名稱
var range = SpreadSheet.getRange('#name!A1'); //此處填入資料回存的儲存格,這裡存排名資料
var range2 = SpreadSheet.getRange('#name!H2'); //這裡存入遊戲連結
var lastRow = Sheet.getLastRow(); //
var bggUrl = "https://boardgamegeek.com/browse/boardgame/page/"
var row_ ="'row_'"

// i=頁數,BGG上有一萬多筆資料,每頁100筆

for(var i=1;i<=30;i++){
    
    var newbggUrl = bggUrl + i
    range.setValue('=IMPORTHTML("' + newbggUrl +'","table",6)') //寫入儲存格資料
    range = Sheet.getRange(i*101+1,1) //重新取得儲存格位置
    
    
    range2.setValue('=importXML("' + newbggUrl +'","//*[@id='+row_+']/td[2]/a/@href")') //寫入儲存格資料
    range2 = Sheet.getRange(i*101+2,8) //重新取得儲存格位置
    
    Utilities.sleep(5000) //因讀取資料需時間,因此這裡先暫停5秒再寫入下一格
  }
  
}

//用HTML將表格抓出來,
//=IMPORTHTML("https://boardgamegeek.com/browse/boardgame/page/1","table",6)
//用XML將路徑抓出來,目標取得BGG的game連結
//=importXML("https://boardgamegeek.com/browse/boardgame/page/1","//*[@id='row_']/td[2]/a/@href")

留言