同一个卡包内不能开出重复卡牌

This commit is contained in:
hahwu 2025-01-23 11:55:51 +08:00
parent 0f732904be
commit d4dc459192
4 changed files with 29 additions and 8 deletions

View File

@ -271,3 +271,14 @@ func IsContain(s []int, s2 []int) bool {
} }
return true return true
} }
func IsSameElem(s []int) bool {
r := make(map[int]struct{})
for _, v := range s {
if _, ok := r[v]; ok {
return true
}
r[v] = struct{}{}
}
return false
}

View File

@ -134,3 +134,11 @@ func UnitLimitedTimeEvent(p *Player) error {
} }
return nil return nil
} }
func UnitCard(p *Player) error {
CardMod := p.PlayMod.getCardMod()
for i := 0; i < 1000; i++ {
CardMod.OpenCardPack(4)
}
return nil
}

View File

@ -157,9 +157,8 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) {
} }
mustHaveStar := cardCfg.GetPackMustHave(Star) mustHaveStar := cardCfg.GetPackMustHave(Star)
if mustHaveStar != 0 { if mustHaveStar != 0 {
cardId = randCard(c.Round, mustHaveStar, 0) cardId = randCard(c.Round, mustHaveStar, 0, newCard)
if cardId == 0 { if cardId == 0 {
return newCard, fmt.Errorf("OpenCardPack card id err") return newCard, fmt.Errorf("OpenCardPack card id err")
} }
@ -177,11 +176,11 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) {
CardStar := GoUtil.RandMap(randList) CardStar := GoUtil.RandMap(randList)
switch CardStar { switch CardStar {
case 5: case 5:
cardId = randCard(c.Round, 4, 1) cardId = randCard(c.Round, 4, 1, newCard)
case 6: case 6:
cardId = randCard(c.Round, 5, 1) cardId = randCard(c.Round, 5, 1, newCard)
default: default:
cardId = randCard(c.Round, CardStar, 0) cardId = randCard(c.Round, CardStar, 0, newCard)
} }
if cardId == 0 { if cardId == 0 {
return newCard, fmt.Errorf("OpenCardPack card id err") return newCard, fmt.Errorf("OpenCardPack card id err")
@ -539,7 +538,7 @@ func (c *CardMod) GetHandbookReward(CardId int) ([]*item.Item, error) {
} }
func (c *CardMod) RandCard(Star int) int { func (c *CardMod) RandCard(Star int) int {
return randCard(c.Round, Star, 0) return randCard(c.Round, Star, 0, []int{})
} }
func (c *CardMod) SeasonFirstReward() ([]*item.Item, error) { func (c *CardMod) SeasonFirstReward() ([]*item.Item, error) {

View File

@ -5,12 +5,15 @@ import (
cardCfg "server/conf/card" cardCfg "server/conf/card"
) )
func randCard(Round, Star, IsGold int) int { func randCard(Round, Star, IsGold int, Except []int) int {
cardList := cardCfg.GetCardListByStar(Round, Star, IsGold) cardList := cardCfg.GetCardListByStar(Round, Star, IsGold)
cardList = GoUtil.SubSlices(cardList, Except)
cardId := GoUtil.RandSlice(cardList) cardId := GoUtil.RandSlice(cardList)
return cardId return cardId
} }
func RankGoldCard() (int, int) { func RankGoldCard() (int, int) {
return randCard(0, 4, 1), randCard(0, 5, 1) Card1 := randCard(0, 4, 1, []int{})
Card2 := randCard(0, 5, 1, []int{Card1})
return Card1, Card2
} }