教你前端三件套实现简易版卡牌游戏

游戏介绍

利用好JavaScript,css,html可以实现简易版的卡牌游戏。

卡牌游戏规则如下:

1.每个卡牌对应不同的卡槽,一个卡牌有且仅有唯一的卡槽与其对应

2.通过控制小键盘的上下左右键位实现控制卡牌运动

实现思路

首先构建好卡牌的基本布局。这里推荐使用css中的流式布局,调整好每个卡牌的位置,完成基本框架布局

代码展示:

css部分

<style>
    /*操控单个元素,布局方式:子元素绝对定位,父元素相对定位
    所有的子元素,left和top都是相对于父元素的左上顶点
    因此每个子元素的left和top初始值都不一样

    操控批量的元素:
    父元素流式布局flex,子元素相对定位
    每个子元素都是相对于自身的初始位置
    每个子元素的left和top初始值都是0
    */
    .f1,.f2{
        /*流式布局*/
        display:flex;
        /*每个子元素均匀分布*/
        justify-content: space-around;
    }
    .f1>img{
        width:200px;
        height:300px;
        position:relative;

    }

    .f2{
        margin-top: 150px;
    }
    .f2>div{
        width:200px;
        height:300px;
        border:1px solid rebeccapurple;
       text-align:center;
       /*行高与元素高度一致,则垂直居中*/
       line-height:300px;
    }
   
 </style>

html部分

<body>
 <div class="f1">
   <img src="手抓饼.jpg" alt="" onclick="move1(this,0)">
        <img src="牛肉面.jpg" alt="" onclick="move1(this,1)">
            <img src="烧烤.jpg" alt="" onclick="move1(this,2)">
       <img src="炒菜.jpg" alt="" onclick="move1(this,3)">
       <img src="牛排.jpg" alt="" onclick="move1(this,4)">
      <img src="饺子.jpg" alt="" onclick="move1(this,5)">
 </div>
 <div class="f2">
    <div>手抓饼</div>
    <div>牛肉面</div>
    <div>烧烤</div>
    <div>炒菜</div>
    <div>牛排</div>
    <div>饺子</div>
 </div>
</body>

然后就是编写JavaScript代码部分了。我们要先定义一个坐标对象,用于记录卡牌初始位置,然后定义一个数组用于存放当前的所有对象运动。设置键盘控制图片移动,选用switch分支实现

js部分

<script>
    //定义一个坐标对象,记录当前操作的元素的位置
   let pos={x:0,y:0}
   //定义一个数组,存放六个对象独立的记录每个对象的运动坐标
   let arr=[{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0},{x:0,y:0}]
 function move1(img,i){
    //pos表示当前正在操作的对象
    pos=arr[i]
   console.log(img)
   
   document.onkeydown=function(e){
    switch(e.keyCode){
        case 37:
            console.log('左')
            pos.x-=5
            img.style.left=pos.x+'px'
        break;
        case 38:
            pos.y-=5
            img.style.top=pos.y+'px'
            console.log('上')
        break;
        case 39:
        pos.x+=5
            img.style.left=pos.x+'px'
            console.log('右')
        break;
        case 40:
        pos.y+=5
            img.style.top=pos.y+'px'
            console.log('下')
        break;
    }
   }
 }



 
</script>

实现效果

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值