wangfukang 4 days ago
parent
commit
f402c2565a
  1. 33
      package1/planet/adventure.vue

33
package1/planet/adventure.vue

@ -54,7 +54,7 @@
<view class="tips">
<text>规则点选未被压住的卡牌底部槽内3张相同自动消除槽满则失败</text>
<text>挑战难度 · 剩余 {{remainingCount}} · 当前可点 {{availableCount}} · {{riskText}}</text>
<text>地狱难度 · 剩余 {{remainingCount}} · 当前可点 {{availableCount}} · {{riskText}}</text>
</view>
<view class="board">
@ -70,9 +70,9 @@
</view>
<view class="slot-wrap">
<view class="slot-title">助推槽 {{slots.length}}/7</view>
<view class="slot-title">助推槽 {{slots.length}}/{{slotLimit}}</view>
<view class="slots">
<view class="slot" v-for="i in 7" :key="i">
<view class="slot" v-for="i in slotLimit" :key="i">
<text v-if="slots[i - 1]">{{slots[i - 1].icon}}</text>
</view>
</view>
@ -139,6 +139,7 @@
startTs: 0,
cards: [],
slots: [],
slotLimit: 5,
moveCount: 0,
modal: { show: false, title: '', sub: '' }
}
@ -181,8 +182,8 @@
return this.cards.filter(item => !item.removed && !item.selected && !this.isLocked(item)).length
},
riskText() {
if (this.slots.length >= 6) return '危险:差1格就满'
if (this.slots.length >= 5) return '注意槽位'
if (this.slots.length >= this.slotLimit - 1) return '危险:差1格就满'
if (this.slots.length >= this.slotLimit - 2) return '注意槽位'
return '先看上层再下手'
}
},
@ -255,7 +256,7 @@
})
},
buildLevel() {
const icons = ['🍔', '🥤', '📚', '🏀', '🎧', '🚲', '🍜', '📦', '☕', '🧋']
const icons = ['🍔', '🥤', '📚', '🏀', '🎧', '🚲', '🍜', '📦', '☕', '🧋', '🎮', '🌟', '🍟', '🥪']
let cards = []
for (let attempt = 0; attempt < 8; attempt++) {
const seed = this.levelSeed() + '_try_' + attempt
@ -272,21 +273,21 @@
},
buildCardPositions(seed) {
const cards = []
const layerCounts = [36, 30, 24]
const layerCounts = [42, 36, 30, 18]
const rand = this.seededRandom(seed + '_pos')
let idx = 0
layerCounts.forEach((count, layer) => {
for (let i = 0; i < count; i++) {
const col = i % 6
const row = Math.floor(i / 6)
const dx = Math.floor(rand() * 22)
const dy = Math.floor(rand() * 18)
const col = i % 7
const row = Math.floor(i / 7)
const dx = Math.floor(rand() * 18)
const dy = Math.floor(rand() * 14)
const card = {
id: 'c' + idx,
icon: '',
layer,
x: 16 + col * 80 + (layer * 20) + ((row % 2) * 12) + dx,
y: 18 + row * 70 + (layer * 42) + dy,
x: 12 + col * 70 + (layer * 16) + ((row % 2) * 10) + dx,
y: 16 + row * 62 + (layer * 34) + dy,
style: '',
removed: false,
selected: false,
@ -353,7 +354,7 @@
})
},
isOverlap(a, b) {
return Math.abs(a.x - b.x) < 72 && Math.abs(a.y - b.y) < 68
return Math.abs(a.x - b.x) < 66 && Math.abs(a.y - b.y) < 58
},
pickCard(card) {
if (this.cleared) {
@ -365,14 +366,14 @@
return
}
if (card.removed || card.selected || this.isLocked(card)) return
if (this.slots.length >= 7) return
if (this.slots.length >= this.slotLimit) return
card.selected = true
this.slots.push(card)
this.moveCount++
this.tryClear(card.icon)
if (this.cards.every(item => item.removed || item.selected)) {
this.finishClear()
} else if (this.slots.length >= 7) {
} else if (this.slots.length >= this.slotLimit) {
this.failLevel()
}
},

Loading…
Cancel
Save