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

Loading…
Cancel
Save