首页主机资讯vue3开发打砖块游戏代码怎么写

vue3开发打砖块游戏代码怎么写

时间2023-10-18 22:38:02发布访客分类主机资讯浏览780
导读:完整代码<template><button@click="stop">停止</button><button@click="start">游戏开始</button><divst...

完整代码

template>
    

button@click="stop"> 停止/button>

button@click="start"> 游戏开始/button>

divstyle="color:red; text-align:center; font-size:25px"> score:{ { scroce} } /div>

divclass="box":style="{ width:boxWidth+"px",height:boxHeight+"px"} ">

divclass="str"> { { str} } /div>

divclass="kuaiBox">

divclass="kuai"v-for="(item,index)inarr":key="index":style="{ opacity:item.active?"0":"1"} "> /div>

/div>

divclass="ball":style="{ left:x+"px",top:y+"px",width:ball+"px",height:ball+"px"} "> /div>

divclass="bottomMove"

:style="{ left:mx+"px",top:my+"px",width:moveBottomW+"px",height:moveBottomH+"px"} "> /div>

/div>

/template>

scriptsetup>

import{ onMounted,onUnmounted,reactive,toRefs} from"vue"

constboxWidth=500,//场景宽度

boxHeight=300,//场景高度

ball=10,//小球的宽高

moveBottomH=5,//移动方块高度

moveBottomW=100//移动方块快读

conststrArr="恭喜你,挑战成功!!"

//用reactive保存一些可观察信息

conststate=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)

lettimer=null,//小球定时器

speed=3,//小球速度

map={ x:10,y:10} ,

timer2=null,//挑战成功字眼显示定时器

index=0//挑战成功字眼续个显示的索引值

//挑战成功字眼续个显示的方法

conststrFun=()=> {

if(strArr.length===index)clearInterval(timer2)

state.str+=strArr.substr(index,1)

index++

}

//移动小球的方法

//1.这里同过变量map对象来记录坐标信息,确定小球碰到左右上及移动方块是否回弹

//2.循环砖块检测小球碰撞到砖块消失

constmoveBall=()=> {

const{ offsetTop,offsetHeight,offsetLeft,offsetWidth} =document.querySelector(".bottomMove")

if(state.x=0){

map.x=speed

} elseif(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.xoffsetLeft+offsetWidth){

map.y=-speed

}

if(state.y> boxHeight){

clearInterval(timer)

alert("gameover")

window.location.reload()

}

Array.from(state.arr).forEach((item,index)=> {

const{

offsetLeft,

offsetTop,

offsetWidth,

offsetHeight

} =document.querySelectorAll(".kuai")[index]

if(state.x> offsetLeft

& & state.xoffsetLeft+offsetWidth

& & state.y> offsetTop

& & state.yoffsetTop+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

}

//移动方块左右移动方法,接住小球

constbottomMove=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.mx0?0:state.mx

state.mx=state.mx> boxWidth-moveBottomW?boxWidth-moveBottomW:state.mx

}

//暂停游戏

conststop=()=> {

clearInterval(timer)

}

//开始游戏

conststart=()=> {

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:0auto;

position:relative;

border:5pxsolidred;

overflow:hidden;

}

.picker{

width:50px;

height:50px;

}

/style>

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

Vue3

若转载请注明出处: vue3开发打砖块游戏代码怎么写
本文地址: https://pptw.com/jishu/500722.html
html5简单登录 html简单登录界面代码 html5applogin的简单介绍

游客 回复需填写必要信息