文章目录

  • 前言
  • 一、效果图片
  • 二、使用步骤
    • 1.代码如下
  • 总结

前言

文章使用Vue框架来制作,对Vue感兴趣的小伙伴可以点点收藏哦。

一、效果图片


二、使用步骤

1.代码如下

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script><style>#app {font-family: "microsoft yahei";position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: url('images/bg.jpg') center / cover}#mine {position: absolute;bottom: 5vh;width: 100%;text-align: center;}#computer {position: absolute;top: 5vh;width: 100%;text-align: center;transform: scale(0.6);}#computer.closed {transform-style: preserve-3d;perspective: 1000px;}img {border-radius: 0.6vw;box-shadow: 1px 1px 3vw rgba(0, 0, 0, 0.5);}#computer.closed img {transform: rotateX(30deg);}#call {position: fixed;top: 50vh;width: 320px;left: calc(50% - 160px);background: rgba(255, 255, 255, 0.8);box-shadow: 1px 1px 16px rgba(0, 0, 0, 0.6);border: 1px solid rgba(255, 255, 255, 0.1);border-radius: 10px;z-index: 99;height: 150px;font-size: 30px;text-align: center;padding-top: 10px;line-height: 60px;color: #fff;text-shadow: 1px 1px 10px rgba(0, 0, 0, 0.8);font-weight: bold;}a {float: left;text-decoration: none;color: #fff;width: 120px;margin: 15px;text-align: center;height: 40px;line-height: 40px;border-radius: 25px;border: 5px solid #fff;font-weight: bold;font-size: 20px;box-shadow: 1px 1px 15px rgba(0, 0, 0, 0.3);background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#EB9736), to(#F20000), color-stop(0.5, #EB5002))}#call a:hover {-webkit-filter: saturate(160%);}#call a:last-child {background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#76C0EB), to(#4455F2), color-stop(0.5, #238EEB))}#result {position: relative;margin: 0 auto;width: 300px;top: 30vh;background: rgba(255, 255, 255, 0.9);box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);padding: 10px 15px;z-index: 999;border-radius: 1vw;}h1 {text-align: center;}#result a:last-child {background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#76C0EB), to(#4455F2), color-stop(0.5, #238EEB))}</style></head><body><div id="app"><div id="call" v-if="status.playerRound&&!status.end"><div class="score">当前点数: {{playerScore}}</div><div><a href="javascript:void(0)" @click="playerCall()">叫牌</a><a href="javascript:void(0)" @click="playerStop()">弃牌</a></div></div><div id="computer" :class="{closed:!status.end}"><img v-for="poker in computerPokers" :src="status.end?'images/'+poker.text+'.jpg':'images/背面.png'"style="height:15vw;"></div><div id="mine"><img v-for="poker in playerPokers" :src="'images/'+poker.text+'.jpg'" style="height:15vw;"></div><div id="result" v-if="status.end"><h1 v-if="(computerScore>21&&playerScore>21)||(computerScore==playerScore)">平局</h1><h1 v-else>失败</h1><p>玩家:{{playerScore}}</p><p>对手:{{computerScore}}</p><a href="javascript:void(0)" @click="restart()">再来一局</a></div></div><script>var app = new Vue({el: "#app",data: {pokers: [], //牌组status: {computerStop: false, //电脑对手是否不再叫牌playerStop: false, //玩家是否不再叫牌playerRound: true, //当前是否轮到玩家出牌,为true显示操作框体end: false //游戏是否已结束},playerPokers: [], //玩家的所有手牌computerPokers: [] //电脑对手的所有手牌},computed: {//玩家分数playerScore() {return this.getScore(this.playerPokers);},//电脑分数computerScore() {return this.getScore(this.computerPokers)}},methods: {//重开游戏restart() {//初始化并打乱牌组this.pokers = this.createPokers();this.randomPokers();//初始化默认值this.status.playerStop = false;this.status.computerStop = false;this.status.end = false;this.playerPokers = [];this.computerPokers = []//给两人各发一张牌this.playerPokers.push(this.pokers.pop());this.computerPokers.push(this.pokers.pop());//进入玩家轮this.gotoPlayerRound()},//生成牌组createPokers() {var huase = ["方块","黑桃","红心","梅花"]var suzi = ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']return pokers;},//按牌组的随机数r进行排序,打乱牌组顺序randomPokers() {this.pokers.sort((a, b) => {if (a.r == b.r) {return 0} else if (a.r > b.r) {return 1;} else {return -1;}})},//用户点击弃牌playerStop() {//游戏未结束才执行if (!this.status.end) {//设置玩家不再叫牌this.status.playerStop = true;//检查是否游戏结束this.checkEnd()//进入电脑对手的回合this.gotoComputerRound()}},//进入玩家轮//进入电脑轮gotoComputerRound() {//游戏未结束才执行if (!this.status.end) {//设置进入电脑的回合,以关闭用户操作对话框this.status.playerRound = false;//设置了500毫秒延迟,显得真实些。js的异步模式回调函数,不加箭头指向windows,加箭头由于找不到this会向上找setTimeout(() => {if (this.computerScore > 19) {//得分大于19分//电脑不再叫牌this.status.computerStop = true;} else {//否则叫牌,从牌组取第一张,移入电脑对手的手牌中this.computerPokers.push(this.pokers.pop());}//检查游戏是否结束this.checkEnd()//进入玩家的回合this.gotoPlayerRound();}, 500)}},//返回分数return score;},//检查是否需要结束checkEnd() {if (this.computerScore > 21 || this.playerScore > 21) {//任意人爆牌,结束游戏this.status.end = true;} else if (this.status.playerStop && this.status.computerStop) {//两人都不再叫牌,结束游戏this.status.end = true;}}}})</script></body>
</html>

总结

原创不易,麻烦各位用你的小手点亮star。

基于Vue所制作的发牌游戏(附全部代码)相关推荐

  1. vue canvas插件_基于vue.js 制作在线桌椅定制选择交互特效源码

    码农那点事儿 关注我们,一起学习进步 基于vue.js写的在线桌子椅子垫子选择拼成的自己理想的书桌椅图像,这是一款交互式的课桌椅在线定制选择功能.非常不错,感兴趣的朋友前来下载使用. 下载源码(提取码 ...

  2. 基于Vue.js制作的仿车轮驾考通APP端页面

    背景:学习完Vue,老师要求期末作业以Vue技术做一个手机端或者PC端的前端小项目.期末临近,周围的同学有的仿微信APP端,有的仿QQAPP端.小萍去年考科目一用了车轮驾考通刷题,然后她最后决定基于V ...

  3. html九图拼图游戏代码,基于Vue.js实现数字拼图游戏

    先来看看效果图: 功能分析 当然玩归玩,作为一名Vue爱好者,我们理应深入游戏内部,一探代码的实现.接下来我们就先来分析一下要完成这样的一个游戏,主要需要实现哪些功能.下面我就直接将此实例的功能点罗列 ...

  4. Vue 知识点汇总(下)--附案例代码及项目地址

    文章目录 Vue 预备知识与后续知识及项目案例 一.简介 1.Vue (读音 /vjuː/,类似于 view)的简单认识 2.Vue.js安装 二.Vue知识量化 三.内容 1.Webpack 详解 ...

  5. 沃拼图游戏软件测试,超完整的手机拼图游戏附测试代码本科毕业论文.doc

    超完整的手机拼图游戏附测试代码本科毕业论文 本 科 毕 业 设 计 设 计 题 目 基于J2ME手机拼图游戏的关键技术研究与实现 姓名(学号) 系 别 专 业 通信工程 导 师 姓 名 二○一二 年 ...

  6. 基于TextRank算法的文本摘要(附Python代码)

    基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18

  7. 智能窗帘传感器c语言程序,基于单片机的智能窗帘控制系统设计(附程序代码)

    基于单片机的智能窗帘控制系统设计(附程序代码)(论文18000字,程序代码) 摘要:二十一世纪初以来,科学技术不断发展,智能家居涌现于各家各户,人们越来越重视生活质量的提高.但是传统的手动开合窗帘耗时 ...

  8. 基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)

    摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用 YOLOv4 检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化.文章详细介绍了YOLOv4的 ...

  9. java 3 3数字拼图,基于Vue.js实现数字拼图游戏

    先来看看效果图: 功能分析 当然玩归玩,作为一名Vue爱好者,我们理应深入游戏内部,一探代码的实现.接下来我们就先来分析一下要完成这样的一个游戏,主要需要实现哪些功能.下面我就直接将此实例的功能点罗列 ...

最新文章

  1. 敏捷软件开发之何为敏捷开发
  2. 四大中三家已面向客户推出机器人业务解决方案?别逗了,先用机器人自我革命吧! post by 上海嘉冰信息技术...
  3. 上海交大算法与数据结构
  4. Microsoft Artificial Intelligence Conference(2018.05.21)
  5. 洛谷P1912:诗人小G(二分栈、决策单调性)
  6. JAXB众所周知的秘密
  7. Java教程:Java定义字符串(2种方式)
  8. python嵌套类(内部类相互调用)_核心解密Python函数在(类与函数之间)和(类与类之间)互相调用...
  9. 对称二叉树--深度遍历与广度遍历
  10. iTunes,一个不断侵蚀C盘的大虫
  11. tf.data.Dataset.zip()讲解 和 python自带的zip()的异同
  12. 利用R语言的GWmodel进行GWR模型分析(内含错误解决方法)
  13. php给数据库添加记录,数据表操作之添加数据表记录
  14. oppor829t如何刷机_OPPO R829T中文Recovery刷机教程
  15. Excel 公式学习笔记:数组用法
  16. 【20届考研终章--落幕】北京邮电大学软件学院--学硕
  17. 计算机中的条件格式在哪里,Word中如何实现“条件格式”
  18. python股票交易接口源代码分享
  19. 投资是一个非常专业的领域,亏钱容易赚钱难
  20. 即时通讯软件:改变企业沟通方式

热门文章

  1. SRM系统和CRM系统有什么区别,能否集成?
  2. cs231n的第一次作业svm
  3. 程序员,为你的将来定位好学习的方向!
  4. Eth-Trunk链路聚合(华为ENSP配置)
  5. Java数据爬取——爬取携程酒店数据(一)
  6. 1000只老鼠与毒药的类型问题
  7. 配置Charles HTTPS 代理
  8. 以太坊2.0系列 - 4个阶段
  9. 网上申请的流量卡为何审核不通过,这些原因你中招了吗
  10. Glide 入门到精通之二——图片加载