Re: [閒聊] 寫這卡牌說明的一定是理組 = =

看板C_Chat (希洽)作者 (日音スキ)時間17小時前 (2026/02/24 18:11), 16小時前編輯推噓5(5015)
留言20則, 5人參與, 11小時前最新討論串8/10 (看更多)
※ 引述《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

02/24 18:12, 17小時前 , 1F
因為有人看不懂 更有人覺得自己能解釋得更好..
02/24 18:12, 1F
※ 編輯: jpopaholic (1.164.127.73 臺灣), 02/24/2026 18:13:57

02/24 18:15, 17小時前 , 2F
因為那個X的寫法很沒必要,如果變數很多或其他原因
02/24 18:15, 2F

02/24 18:15, 17小時前 , 3F
這樣寫確實有好處,可是這個情況直接寫:
02/24 18:15, 3F

02/24 18:15, 17小時前 , 4F
「所有手牌洗入牌堆後抽取等量手牌,之後如果手牌...」
02/24 18:15, 4F

02/24 18:16, 17小時前 , 5F
用等量兩個字就能完全取代那整串文字
02/24 18:16, 5F
用等量跟相同手牌還是一樣會有一樣的爭議 試想想,若對方有牌/怪獸/魔法 有以下效果 "當對方有怪獸發動效果,雙方把手上兩張牌返回牌組" 假設我目前手上有六張,那發動完雙方效果後,我是要重抽六章還是四張

02/24 18:18, 17小時前 , 6F
寫X的擴充性比較好 可以玩組合效果 雖然要國中學過的
02/24 18:18, 6F

02/24 18:18, 17小時前 , 7F
代數(?!
02/24 18:18, 7F

02/24 18:19, 17小時前 , 8F
你是說什麼「所有有X的牌都能讓X+1」這樣嗎,那乾脆
02/24 18:19, 8F

02/24 18:20, 17小時前 , 9F
發動N次以下效果「......如果有Y張一樣費用的卡,造成Z點
02/24 18:20, 9F

02/24 18:20, 17小時前 , 10F
傷害」,N初始為2,Y初始為4,Z初始為4
02/24 18:20, 10F

02/24 18:20, 17小時前 , 11F
全部都是變數,自由度高到不行
02/24 18:20, 11F
那個反而不是啥代數變數 反倒像是英文的指示名詞: which或是that

02/24 18:20, 17小時前 , 12F
可是你是先設X再動作,原文是先動作再設X
02/24 18:20, 12F
這是程式邏輯,換做一般邏輯 當你事先沒確認好手上有幾張牌 當你把全部手牌返回重洗 你能知道你接下來要拿幾張嗎? ※ 編輯: jpopaholic (1.164.127.73 臺灣), 02/24/2026 18:59:25

02/24 18:56, 16小時前 , 13F
特別有X就代表可能會出 但本來就可以每個效果都出
02/24 18:56, 13F

02/24 18:56, 16小時前 , 14F
遊戲也有明說一張洗回去 重抽一張的
02/24 18:56, 14F

02/24 18:56, 16小時前 , 15F
照你寫 你要怎麼區分那個要X+1那個不要
02/24 18:56, 15F

02/24 19:01, 16小時前 , 16F
#本來就不用每個效果都出
02/24 19:01, 16F

02/24 19:01, 16小時前 , 17F
想打‘’不用‘’結果變‘’可以‘’
02/24 19:01, 17F

02/24 21:02, 14小時前 , 18F
你是說有一個卡牌遊戲會希望你能解二元一次聯立方程式成功
02/24 21:02, 18F

02/24 21:02, 14小時前 , 19F
才能發動效果嗎? 不可能吧(棒讀
02/24 21:02, 19F

02/24 23:51, 11小時前 , 20F
那非常精準的點在哪?感覺一般般
02/24 23:51, 20F
文章代碼(AID): #1fdNar9N (C_Chat)
討論串 (同標題文章)
文章代碼(AID): #1fdNar9N (C_Chat)