• vue3 斗兽棋游戏


         近来掘金举办前端比赛,所以写了一个小游戏参加,而且熟悉一下vue3,写了一下游戏,思来想去就写了一个斗兽棋游戏。

            欢迎去给我加油      点赞评论收藏  ,试玩地址  游戏地址 童年斗兽棋 - 码上掘金

    https://code.juejin.cn/pen/7168678657873969160  进入有点击右上方  ‘运行’

       

    下面写一下思路

                       斗兽棋上下各八个棋子,一个16位置的格子,本来用一个数组写出来,后来想起需要空位,还有棋子跳转路径规则,所以设置了以下结构

    1. dataList: [
    2. {
    3. index: 0,//当前位置
    4. ruleval: [1, 4],//规则
    5. carStutas: false,//当前位有牌
    6. }, {
    7. index: 1,
    8. ruleval: [0, 2, 5],
    9. carStutas: false,//当前位有牌
    10. },

    然后设置每个棋子信息

    1. {
    2. 'id': i, //每个id
    3. 'Ranking': i, //棋子的权重
    4. 'url': "http://www.jmyuyu.cn/demo/img/b" + i + ".png",//棋子图片
    5. 'rote': false,//是否已经翻牌
    6. 'Belonging': 'blue',//所属蓝方
    7. 'colorStutas': false,//显示选中的图标
    8. }

    然后设置图片 图片为两张图片 第一张为背面 第二张为棋牌

    最重要的是css 点击后两张翻转180度   第一张用到了一个 backface-visibility: hidden;,,此为翻转后消失的css.注意背面的棋牌需要先翻转180,这样转过来正好是正面。

    然后翻牌

    1. // 判断翻牌
    2. const flop = (item) => {
    3. if (infor.farstValue == 0) {
    4. infor.manStutas = item.brandInfor.Belonging
    5. infor.farstValue++
    6. infor.flopStutas = infor.manStutas
    7. }
    8. infor.dataList.forEach(element => {
    9. if (element.brandInfor && element.brandInfor.id == item.brandInfor.id) {
    10. element.brandInfor.rote = true
    11. infor.clickValue = 0
    12. }
    13. });
    14. infor.flopStutas = infor.flopStutas == 'red' ? 'blue' : 'red'
    15. hoverStutas(infor.flopStutas)
    16. }

    吃牌  实际就是新老两个数组调换一下

    1. //吃牌
    2. const eatBrand = (oldValue, newValue, valstu) => {
    3. let oldValues = JSON.stringify(oldValue)
    4. let newValues = JSON.stringify(newValue)
    5. infor.dataList.forEach(element => {
    6. if (newValue.index == element.index) {
    7. if (element.brandInfor.Belonging == 'red') {
    8. infor.redList.push(JSON.parse(newValues))
    9. }
    10. if (element.brandInfor.Belonging == 'blue') {
    11. infor.blueList.push(JSON.parse(newValues))
    12. }
    13. element.brandInfor = oldValue.brandInfor
    14. element.carStutas = true
    15. // 平子
    16. if (valstu) {
    17. element.brandInfor = {}
    18. element.carStutas = false
    19. if (JSON.parse(oldValues).brandInfor.Belonging == 'red') {
    20. infor.redList.push(JSON.parse(oldValues))
    21. }
    22. if (JSON.parse(oldValues).brandInfor.Belonging == 'blue') {
    23. infor.blueList.push(JSON.parse(oldValues))
    24. }
    25. }
    26. }
    27. });
    28. infor.dataList[oldValue.index].brandInfor = {}
    29. infor.dataList[oldValue.index].carStutas = false
    30. infor.oldValue = false
    31. infor.flopStutas = infor.flopStutas == 'red' ? 'blue' : 'red'
    32. hoverStutas(infor.flopStutas)
    33. if (infor.redList.length == 8) {
    34. if (infor.blueList.length == 8) {
    35. infor.victoryMan = '平局!'
    36. } else {
    37. infor.victoryMan = '蓝方胜利!'
    38. }
    39. infor.victory = true
    40. }
    41. if (infor.blueList.length == 8) {
    42. if (infor.redList.length == 8) {
    43. infor.victoryMan = '平局!'
    44. } else {
    45. infor.victoryMan = '红方胜利!'
    46. }
    47. infor.victory = true
    48. }
    49. }

    这里就不多述了,大家都看得懂,非常简单。

    核心就这么多。欢迎大家试玩!!!!

  • 相关阅读:
    C语言-入门-extern和头文件(十六)
    C++ 信号处理
    2022年11月份中国最具影响力的50位钧瓷匠人排行榜
    数据中心通识
    草坪维护不求人,高尔夫球场草坪自动化灌溉联网方案
    硅谷15菜单权限
    Linux应用程序的启动流程
    Python 异常
    Gitlab 仓库搭建(详细版)
    LeetCode(23)找出字符串中第一个匹配项的下标【数组/字符串】【简单】
  • 原文地址:https://blog.csdn.net/Thekingyu/article/details/128003475