一、应用场景
本应用适合利用碎片休闲打发时间,通过游乐放松心情,感悟人生、扩展社交、增进友谊。本应用最大的特色是处处充满随机,有道是人生如潮,有得意也总有失意,不总是按部就班,也正因为有很多不可预期,带了阵阵的惊喜或惊吓。
玩家以精灵视角穿行于游乐城,游玩各类游乐项目,通过抽取钻石盲盒获得钻石,拿钻石换取金币,用金币补充精灵和城堡的每日消耗,以及支付日常有趣社交。
二、目标用户
碎片闲暇用户
三、实现思路
用户无需注册,进入小程序即生成用户,获得原始金币。可通过盲盒寻宝获得钻石,兑换钻石获取金币,钻石价格每日波动,犹如股票,持有或出仓,是赚是赔皆无定数。人生处处有玄机,游戏中亦是如此。精灵、城堡每日消耗金币,需要不断赚取金币维持,偶或间碰到打家劫舍的,蚀财损物再所难免,偶或好友疏财相助,也不亦乐,行为的善恶关乎自己的魅力值。精灵魅力值、生命值,房屋的完善度关乎打劫和被打劫的金币、钻石数。
四、架构图
功能架构
系统架构
五、效果截图
六、功能代码展示
每日定时任务代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: '***'})
const db = cloud.database()
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
clearRecords()
updateTreasurePrice()
updateUserInfo()
//清理record
async function clearRecords() {
let day = new Date(Date.now() - (3 * 24 * 60 * 60 * 1000 + 8 * 60 * 60 * 1000))
console.log(day)
let res = await db.collection('Record').where({
createTime: _.lt(day)
}).remove()
console.log("clearRecords = 'ok'", res)
}
//更新宝石每日成交价
async function updateTreasurePrice() {
let res2 = await db.collection('Setting').doc('5a93cec95edf0fc400679b4f23f37a84')
.get()
let treasures = res2.data.treasures
for (let i = 0; i < treasures.length; i++) {
let rate = ((Math.random() * 20) - 10) / 100
let price = Math.floor(treasures[i].price * (1 + rate))
treasures[i].price = price
treasures[i].rate = rate
}
await db.collection('Setting').doc('5a93cec95edf0fc400679b4f23f37a84')
.update({
data: {
treasures: treasures
}
})
console.log("updateTreasurePrice = 'ok'")
}
//更新用户每日
async function updateUserInfo() {
let day = new Date(Date.now() + (8 * 60 * 60 * 1000))
let today = day.getFullYear().toString() + (day.getMonth() + 1).toString() + day.getDate().toString();
let userCount = await db.collection('User').count()
let total = userCount.total
let list = []
for (let j = 0; j < total; j += 100) {
list = list.concat(await getList(j));
}
for (i = 0; i < list.length; i++) {
let houseLife, roomSum
if (list[i].house.roomSum == 0 && list[i].house.life <= 10) {
houseLife = 0
roomSum = 0
} else if (list[i].house.roomSum > 0 && list[i].house.life <= 10) {
houseLife = 100
roomSum = list[i].house.roomSum - 1
} else {
houseLife = list[i].house.life - 10
roomSum = list[i].house.roomSum
}
let life = list[i].pet.life < 4 ? list[i].pet.life : 4
let charm = list[i].pet.charm < 4 ? list[i].pet.charm : 4
//更新用户数据
let res = await db.collection('User').doc(list[i]._id)
.update({
data: {
loginDay: today,
dialTimes: 0,
openBoxTimes: 0,
'house.life': houseLife,
'house.roomSum': roomSum,
'pet.life': _.inc(-life),
'pet.charm': _.inc(-charm)
}
})
}
console.log("updateUserInfo = 'ok'")
}
async function getList(skip) {
let res = await db.collection('User')
.skip(skip).get()
return res.data;
}
}
七、作品体验二维码
八、团队介绍
个人小程序开发爱好者。码云:https://gitee.com/kyalong/super-q-amusement-park
这种养成的很有市场啊~
不过目前看上去还差点东西 老哥还持续开发吗?
方便的话可以加个微信 交流交流
我:Xrw2021
赞
个人感觉这款小游戏缺乏核心玩法,即游戏的乐趣到底是什么?
有点好玩
为你点赞,
大佬你的代码我可以使用吗?
大佬
大佬
这个有点强啊
好强啊
为你点赞~