生肖抽卡 + 鸿蒙篇

游戏背景与文化价值

中国生肖,又称为十二生肖,是中国古代流传下来的一种纪年方式,由鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪这十二种动物组成。每一种生肖都有其独特的象征意义和性格特征,与中国人的生活哲学、文学艺术乃至日常习俗紧密相连。生肖抽卡项目正是基于这一深厚的文化底蕴,通过数字化手段,让玩家能够以一种新颖的方式接触到这一古老的传统。

游戏规则

  1. 启动抽卡:用户只需简单地点击“立即抽卡”按钮,即可开始他们的抽卡之旅。每一抽都是一个充满期待的瞬间,因为用户永远不知道下一张卡牌会带来什么样的惊喜。
  2. 显示抽中图片:抽卡后,系统会随机选择一张生肖卡牌展示给用户。每张卡牌不仅是一幅精美的插图,更蕴含着丰富的文化和历史故事,等待玩家去探索。

特别设定

为了让游戏更加刺激和有趣,特别设定了第一张生肖卡牌的抽取概率为极低的0.0001(即万分之一)。这张稀有的卡牌不仅代表了好运和幸运,也成为了玩家追求的目标。这种稀缺性设计,增加了游戏的挑战性和吸引力,鼓励玩家不断尝试,同时也为那些幸运儿提供了额外的成就感和奖励。

效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源码

// 1.定义接口(每个列表上的数据结构)
interface ImageCount {
  url: string,
  count: number
}

@Entry
@Component
struct Index {
  @State randomIndex: number = 1
  // 基于接口,准备数据
  @State imagecount: ImageCount[] = [
    { url: 'app.media.bg_00', count: 0 },
    { url: 'app.media.bg_01', count: 0 },
    { url: 'app.media.bg_02', count: 0 },
    { url: 'app.media.bg_03', count: 0 },
    { url: 'app.media.bg_04', count: 0 },
    { url: 'app.media.bg_05', count: 0 }
  ]
  // 控制遮罩的显隐
  @State maskOpacity: number = 0 //透明度
  @State maskZIndex: number = -1 //显示层级
  @State maskImageX: number = 0 //水平方向缩放比
  @State maskImageY: number = 0 //垂直方向缩放比

  build() {
    Stack() {
      Column() {
        Grid() {
          ForEach(this.imagecount, (item: ImageCount, index: number) => {
            GridItem() {
              Badge({
                count: item.count,
                position: BadgePosition.RightTop,
                style: {
                  badgeSize: 16,
                  fontSize: 14
                }
              }) {
                Image($r(item.url))
                  .width(80)
              }
            }
          })
        }
        .columnsTemplate('1fr 1fr 1fr')
        .rowsTemplate('1fr 1fr')
        .width('100%')
        .height(300)
        .margin({
          top: 100
        })

        Button('立即抽卡')
          .width(200)
          .backgroundColor('#ed5b8c')
          .margin({ top: 50 })
          .onClick(() => {
            //   点击时,修改我们的遮罩参数,让遮罩显示
            this.maskOpacity = 1
            this.maskZIndex = 99
            //   点击时图片需要缩放
            this.maskImageX = 1
            this.maskImageY = 1
            //   计算随机数
            this.randomIndex = Math.floor(Math.random() * 6)
            // 设定第一张图片被选中的概率为0.001%
            const randomNumber = Math.random();
            if (randomNumber < 0.00001) {
              this.randomIndex = 0;
            } else {
              // 剩余的图片被选中的概率均等
              this.randomIndex = Math.floor((randomNumber - 0.01) / (1 - 0.01) * (this.imagecount.length - 1)) + 1;
            }

          })
      }
      .width('100%')
      .height('100%')

      // .backgroundColor(Color.Orange)

      Column({ space: 30 }) {
        Text('获得生肖卡')
          .fontColor('#f5ebcf')
          .fontSize(25)
          .fontWeight(FontWeight.Bold)
        Image($r(`app.media.img_0${this.randomIndex}`))
          .width(200)// 控制元素的缩放
          .scale({
            x: this.maskImageX,
            y: this.maskImageY
          })
          .animation({
            duration: 500
          })
        Button('开心收下')
          .width(200)
          .height(50)
          .backgroundColor(Color.Transparent)
          .border({
            width: 2,
            color: '#fff9e0'
          })
          .onClick(() => {
            //   点击时,修改我们的遮罩参数,让遮罩显示
            this.maskOpacity = 0
            this.maskZIndex = -1
            //   点击时图片需要缩放
            this.maskImageX = 0
            this.maskImageY = 0

            //   开心收下,对象数组的情况需要更新,需要修改替换整个对象
            this.imagecount[this.randomIndex] = {
              url: `app.media.img_0${this.randomIndex}`,
              count: this.imagecount[this.randomIndex].count + 1
            }
          })
      }
      .width('100%')
      .height('100%')
      .backgroundColor('#cc000000')
      .justifyContent(FlexAlign.Center)
      // 设置透明度
      .opacity(this.maskOpacity)
      .zIndex(this.maskZIndex)
      //   动画
      .animation({
        duration: 1000
      })
    }
  }
}

资源

如果想获取图片资源请你私信!

结语

生肖抽卡项目不仅仅是一款简单的娱乐应用,它还承载着传播中国文化、增进用户对中国传统节日和习俗了解的使命。通过每一次抽卡的惊喜,玩家不仅能够享受到游戏的乐趣,还能在不经意间增长知识,感受到中国文化的魅力。快来加入这场文化寻宝之旅,看看你能抽中哪位生肖守护神吧!

请记得,在撰写博客时,可以添加一些个人体验和感受,比如你第一次抽中稀有卡牌时的心情,或是你如何从游戏中了解到某个生肖背后的故事。这些细节能够让读者产生共鸣,从而更有效地吸引他们参与到这款游戏中来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐谦_申金

你的鼓励才是我的最大收获

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值