返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何用vue3开发一个打砖块小游戏
  • 572
分享到

如何用vue3开发一个打砖块小游戏

2024-04-02 19:04:59 572人浏览 安东尼
摘要

今天小编给大家分享一下如何用vue3开发一个打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来

今天小编给大家分享一下如何用vue3开发一个打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

游戏效果

如何用vue3开发一个打砖块小游戏

游戏需求

  1. 创建一个场景

  2. 创建一个球,创建一堆被打击方块

  3. 创建一个可以移动方块并可控制左右移动

  4. 当球碰撞左右上边界及移动方块回弹

  5. 挡球碰撞下边界游戏结束

上完整代码

<template>

    <button @click="stop">停止</button>
    <button @click="start">游戏开始</button>
    <div style="color: red; text-align: center;font-size: 25px">score:{{scroce}}</div>

    <div class="box" :style="{width :boxWidth +"px", height:boxHeight +"px"}">
        <div class="str">{{str}}</div>
        <div class="kuaiBox">
            <div class="kuai" v-for="(item,index) in arr" :key="index" :style="{opacity :item.active ? "0":"1"}"></div>
        </div>
        <div class="ball" :style="{left :x + "px", top : y + "px", width : ball +"px", height: ball+"px"}"></div>
        <div class="bottomMove"
             :style="{left :mx + "px" , top : my + "px",width :moveBottomW +"px",height : moveBottomH+"px"  }"></div>
    </div>
</template>

<script setup>
    import {onMounted, onUnmounted, Reactive, toRefs} from "Vue"

    const boxWidth = 500, // 场景宽度
        boxHeight = 300, // 场景高度
        ball = 10,//小球的宽高
        moveBottomH = 5,//移动方块高度
        moveBottomW = 100//移动方块快读

    const strArr = "恭喜你,挑战成功!!"

    //用reactive 保存一些可观察信息
    const state = reactive({
        x: boxWidth / 2 - ball / 2,  // 小球x轴位置信息 计算默认位置在中间
        y: boxHeight - ball - moveBottomH, // 小球Y轴的位置信息 计算默认位置在中间
        mx: boxWidth / 2 - moveBottomW / 2, //移动方块的位置信息 计算默认位置在中间
        my: boxHeight - moveBottomH, // 移动方块y轴的的位置信息  计算默认位置在中间
        // 被打击方块的数组
        arr: Array.from({length: 50}, (_, index) => {
            return {
                index,
                active: false
            }
        }),
        str: "", // 返回挑战成功字眼
        scroce: 0 // 分数
    })
    // 用toRefs将观察对象的信息解构出来供模板使用 
    const {x, y, mx, my, arr, str, scroce} = toRefs(state)
    let timer = null, // 小球定时器
        speed = 3,// 小球速度
        map = {x: 10, y: 10},
        timer2 = null, // 挑战成功字眼显示定时器
        index = 0//挑战成功字眼续个显示的索引值

    // 挑战成功字眼续个显示的方法
    const strFun = () => {
        if (strArr.length === index) clearInterval(timer2)
        state.str += strArr.substr(index, 1)
        index++
    }

    
    //移动小球的方法  
    // 1.这里同过变量map 对象来记录坐标信息, 确定小球碰到 左右上 及移动方块是否回弹
    // 2.循环砖块检测小球碰撞到砖块消失
    const moveBall = () => {
        const {offsetTop, offsetHeight, offsetLeft, offsetWidth} = document.querySelector(".bottomMove")
        if (state.x <= 0) {
            map.x = speed
        } else if (state.x > boxWidth - ball) {
            map.x = -speed
        }
        if (state.y <= 0) {
            map.y = speed
        }
        if (state.y >= offsetTop - offsetHeight &&
            state.y <= offsetTop + offsetHeight &&
            state.x >= offsetLeft &&
            state.x < offsetLeft + offsetWidth) {
            map.y = -speed
        }
        if (state.y > boxHeight) {
            clearInterval(timer)
            alert("game over")
            window.location.reload()
        }
        Array.from(state.arr).forEach((item, index) => {
            const {
                offsetLeft,
                offsetTop,
                offsetWidth,
                offsetHeight
            } = document.querySelectorAll(".kuai")[index]
            if (state.x > offsetLeft
                && state.x < offsetLeft + offsetWidth
                && state.y > offsetTop
                && state.y < offsetTop + offsetHeight) {
                if (!state.arr[index].active) {
                    state.scroce += 100
                }
                state.arr[index].active = true
            }
        })
        if (Array.from(state.arr).every(item => item.active)) {
            clearInterval(timer)
            timer2 = setInterval(strFun, 1000)
        }
        state.x = state.x += map.x
        state.y = state.y += map.y
    }

    //移动方块左右移动方法 ,接住小球
    const bottomMove = ev => {
        if (ev.code === "Space") clearInterval(timer)
        switch (ev.key) {
            case "ArrowRight":
                state.mx += 100
                break
            case  "ArrowLeft":
                state.mx -= 100
                break
        }
        state.mx = state.mx < 0 ? 0 : state.mx
        state.mx = state.mx > boxWidth - moveBottomW ? boxWidth - moveBottomW : state.mx
    }
    // 暂停游戏
    const stop = () => {
        clearInterval(timer)
    }
    // 开始游戏 
    const start = () => {
        timer = setInterval(moveBall, 20)
    }
    
    // 绑定移动方块事件
    onMounted(() => {
        document.addEventListener("keyup", bottomMove)
    })
    // 移动出移动方块事件
    onUnmounted(() => {
        clearInterval(timer)
    })
</script>

<style>

    .bottomMove {
        width: 100px;
        height: 10px;
        background: red;
        position: absolute;
        transition-duration: 100ms;
        transition-timing-function: ease-out;
    }

    .ball {
        width: 20px;
        height: 20px;
        background-color: red;
        border-radius: 50%;
        position: absolute;
    }

    .kuaiBox {
        display: flex;
        flex-wrap: wrap;
    }

    .kuai {
        width: 30px;
        height: 10px;
        background: red;
        margin: 10px;
        transition-duration: 100ms;
        transition-timing-function: ease-in;
    }

    .str {
        text-align: center;
        font-size: 50px;
        color: red;

    }

    .box {

        justify-content: center;
        width: 500px;
        height: 500px;
        margin: 0 auto;
        position: relative;
        border: 5px solid red;
        overflow: hidden;
    }

    .picker {
        width: 50px;
        height: 50px;
    }
</style>

以上就是“如何用vue3开发一个打砖块小游戏”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网JavaScript频道。

--结束END--

本文标题: 如何用vue3开发一个打砖块小游戏

本文链接: https://lsjlt.com/news/95976.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用vue3开发一个打砖块小游戏
    今天小编给大家分享一下如何用vue3开发一个打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2024-04-02
  • 手把手教你用vue3开发一个打砖块小游戏
    前言 用vue3写了几个实例,感觉Vue3的composition Api设计得还是很不错,改变了一下习惯,但写多两个就好了。 这次写一个也是儿时很觉得很好玩的游戏-打砖块, 无聊...
    99+
    2024-04-02
  • 怎么用vue3实现打砖块小游戏
    这篇文章主要介绍“怎么用vue3实现打砖块小游戏”,在日常操作中,相信很多人在怎么用vue3实现打砖块小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用vue3实现打砖块小游戏”的疑惑有所帮助!接下来...
    99+
    2023-07-06
  • 用python实现打砖块小游戏
    本文实例为大家分享了python实现打砖块小游戏的具体代码,供大家参考,具体内容如下 开发益智的打砖块小游戏,你可以试一下能打几块 import pygame,sys,time,ra...
    99+
    2024-04-02
  • java如何实现打砖块游戏
    这篇文章主要介绍了java如何实现打砖块游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java如何实现打砖块游戏文章都会有所收获,下面我们一起来看看吧。一个打砖块游戏算法,供大家参考,具体内容如下这里有一个...
    99+
    2023-06-30
  • 怎么用python实现打砖块小游戏
    这篇文章主要介绍了怎么用python实现打砖块小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python实现打砖块小游戏文章都会有所收获,下面我们一起来看看吧。开发益智的打砖块小游戏,你可以试一下能...
    99+
    2023-06-30
  • Python Pygame如何实现打砖块游戏
    本文小编为大家详细介绍“Python Pygame如何实现打砖块游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python Pygame如何实现打砖块游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-29
  • C语言如何实现控制台打砖块小游戏
    今天小编给大家分享一下C语言如何实现控制台打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。这个问题是我在领扣上面看...
    99+
    2023-06-30
  • 怎么用C语言实现小游戏打砖块
    这篇文章主要讲解了“怎么用C语言实现小游戏打砖块”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C语言实现小游戏打砖块”吧!游戏目标:消除所有的方块即可过关。操作指南:游戏中使用键盘方向...
    99+
    2023-06-25
  • Python中怎么用Pygame实现打砖块小游戏
    这篇文章主要介绍“Python中怎么用Pygame实现打砖块小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中怎么用Pygame实现打砖块小游戏”文章能帮助大家解决问题。一、准备中1...
    99+
    2023-06-29
  • 怎么使用Vue开发一个五子棋小游戏
    这篇文章主要讲解了“怎么使用Vue开发一个五子棋小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Vue开发一个五子棋小游戏”吧!1.绘制游戏区域和游戏元素开始写代码之前,一定要记...
    99+
    2023-07-02
  • 微信跳一跳小程序游戏如何开发
    本篇内容主要讲解“微信跳一跳小程序游戏如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信跳一跳小程序游戏如何开发”吧!  小游戏只有以下两个必要文件:  game.js 小游戏主程序入口...
    99+
    2023-06-26
  • C++ 实战开发一个猜单词的小游戏
    目录前言效果展示一、函数接口二、重要函数接口详解1.菜单内容2.退出程序3.打开单词文件4.开始游戏5.查看玩家排名6.清空玩家排名7.玩家排名全部代码展示前言 程序内的单词全部保存...
    99+
    2024-04-02
  • PHP开发技术:打造一个在线游戏网站
    随着互联网的迅猛发展和人们娱乐方式的多样化,在线游戏逐渐成为大众娱乐的一种选择。同时,越来越多的人开始关注并参与到在线游戏的开发和运营中。在这个前景广阔的领域中,PHP作为一种常用的后端开发语言,被广泛应用于在线游戏网站的开发中。本文将介绍...
    99+
    2023-10-27
    PHP开发 网站设计 在线游戏
  • PHP开发技术:打造一个网络游戏社区
    PHP开发技术:打造一个网络游戏社区随着网络的普及和发展,网络游戏已经成为一种受欢迎的娱乐方式。越来越多的人加入网络游戏的行列,享受着虚拟世界的刺激和乐趣。然而,随之而来的问题是如何打造一个优质的网络游戏社区,为玩家们提供交流、互动和共享游...
    99+
    2023-10-27
    PHP开发 社区 网络游戏
  • 如何使用Html5写一个简单的俄罗斯方块小游戏
    小编给大家分享一下如何使用Html5写一个简单的俄罗斯方块小游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!游戏效果:制作思路因为书里的俄罗斯方块比较普通,太常...
    99+
    2023-06-09
  • 教你如何用python开发一款数字推盘小游戏
    目录1、布局设计2、算法设计2.1 创建并初始化数组2.2 移动算法2.3 是否胜利检测算法3、实现3.1 框架搭建3.2 数字方块实现3.3 将数字转换成方块添加到布局3.4 初始...
    99+
    2024-04-02
  • 利用Java编写一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关利用Java编写一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java游戏俄罗斯方块的实现实例    &nbs...
    99+
    2023-05-31
    java ava
  • 如何使用python做一个罚点球小游戏
    本篇内容介绍了“如何使用python做一个罚点球小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在学习了一点 Python 基础之后,我...
    99+
    2023-06-30
  • 如何用Python和Pygame模块构建一个游戏框架
    如何用Python和Pygame模块构建一个游戏框架,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通过创建一个简单的骰子游戏来探究 Python。现在是来从零制作你自己的游戏的...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作