看板 C_Chat 關於我們 聯絡資訊
※ 引述《MiCy (米賽)》之銘言: : https://l.urusai.cc/sZzWb.png
: 【入場曲】發動2次「使自己手牌中全部的卡片返回牌堆中。由自己的牌堆中抽取X張卡片 : 。X為「因這張卡片而返回牌堆的卡片張數」。隨後,如果自己手牌中有4張以上相同消費 : 的卡片,則會給予敵方戰場上全部的從者卡與敵方的主戰者4點傷害」。 我覺得的確是理組寫的 因為這段話能夠完全轉換任一種程式語言 而且是非常精準的沒有爭議的 void 入場曲() { for(int i=1;i<=2;i++) //發動兩次 { //上引號 int x=my_hand.cards.size(); /* 要先寫 X為"..."敘述,因為傳統式程式語言需要先有變數才能使用 "因這張卡片而返回卡片數量" 則是能限定只須看自己手牌數量 不用理會返回牌堆其他卡片效果 也不用理會場上其他怪獸/魔法....等等效果 更不須理會對方的所有效果 以上這些都有可能影響到目前手上手牌張數 所以可以直接大膽的只看自己手牌數量即可 */ discard_my_hand_to_deck(x); //使自己手牌中全部的卡片返回牌堆中 draw_card(x); //由自己的牌堆中抽取X張卡 std::map<int,int> my_hand_cost_count; //開始計算同消費張數 for(int i=0;i<my_hand.cards.size();i++) { if(my_hand_cost_count.find(my_hand.cards[i].cost)) { my_hand_cost_count.insert(my_hand.cards[i].cost, my_hand_cost_count[my_hand.cards[i].cost]+1); } else my_hand_cost_count.insert(my_hand.cards[i].cost,1); } //計算最大相同cost張數 int max_count = 0; for (auto& [key, value] : my_hand_cost_count) if(max_count < value) max_count = value; if(max_count >= 4) { //如果自己手牌中有4張以上相同消費數 for (monster &m : enemy_monsters) m.blood -= 4; enemy_player -= 4; //則會給予敵方戰場上全部的從者卡與敵方的主戰者4點傷害 } } // 最後的那個下引號 X 因為很精確地表示,所以基本上不會變,目前手上有幾張就重抽幾張 : 這段話其實可以一句就寫完了吧? : 「重新抽取等同手牌張數的卡片」 : 不就好了 = =? : 要寫到阿肥第一眼還要想一下的說明不簡單捏… 反倒是上面那簡短的概約很不精確 因為有各種效果會影響手牌張數,所以寫這樣反而可能有一堆爭議 而且我覺得原文敘述非常精確只會有一種結果,不知為何需要討論效果? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.127.73 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1771927861.A.257.html
symphoeuni: 因為有人看不懂 更有人覺得自己能解釋得更好.. 02/24 18:12
※ 編輯: jpopaholic (1.164.127.73 臺灣), 02/24/2026 18:13:57
nahsnib: 因為那個X的寫法很沒必要,如果變數很多或其他原因 02/24 18:15
nahsnib: 這樣寫確實有好處,可是這個情況直接寫: 02/24 18:15
nahsnib: 「所有手牌洗入牌堆後抽取等量手牌,之後如果手牌...」 02/24 18:15
nahsnib: 用等量兩個字就能完全取代那整串文字 02/24 18:16
用等量跟相同手牌還是一樣會有一樣的爭議 試想想,若對方有牌/怪獸/魔法 有以下效果 "當對方有怪獸發動效果,雙方把手上兩張牌返回牌組" 假設我目前手上有六張,那發動完雙方效果後,我是要重抽六章還是四張
symphoeuni: 寫X的擴充性比較好 可以玩組合效果 雖然要國中學過的 02/24 18:18
symphoeuni: 代數(?! 02/24 18:18
nahsnib: 你是說什麼「所有有X的牌都能讓X+1」這樣嗎,那乾脆 02/24 18:19
nahsnib: 發動N次以下效果「......如果有Y張一樣費用的卡,造成Z點 02/24 18:20
nahsnib: 傷害」,N初始為2,Y初始為4,Z初始為4 02/24 18:20
nahsnib: 全部都是變數,自由度高到不行 02/24 18:20
那個反而不是啥代數變數 反倒像是英文的指示名詞: which或是that
supersusu: 可是你是先設X再動作,原文是先動作再設X 02/24 18:20
這是程式邏輯,換做一般邏輯 當你事先沒確認好手上有幾張牌 當你把全部手牌返回重洗 你能知道你接下來要拿幾張嗎? ※ 編輯: jpopaholic (1.164.127.73 臺灣), 02/24/2026 18:59:25
a12073311: 特別有X就代表可能會出 但本來就可以每個效果都出 02/24 18:56
a12073311: 遊戲也有明說一張洗回去 重抽一張的 02/24 18:56
a12073311: 照你寫 你要怎麼區分那個要X+1那個不要 02/24 18:56
a12073311: #本來就不用每個效果都出 02/24 19:01
a12073311: 想打‘’不用‘’結果變‘’可以‘’ 02/24 19:01
qd6590: 你是說有一個卡牌遊戲會希望你能解二元一次聯立方程式成功 02/24 21:02
qd6590: 才能發動效果嗎? 不可能吧(棒讀 02/24 21:02
supersusu: 那非常精準的點在哪?感覺一般般 02/24 23:51