微信小程序斗地主完整代码及步骤
一、准备工作
1. 安装微信开发者工具,并登录微信小程序账号;
2. 准备斗地主游戏的图片资源;
3. 准备斗地主游戏的音效资源;
二、创建小程序
1. 打开微信开发者工具,点击“新建小程序”,输入小程序名称,选择小程序的项目目录,点击“创建”;
2. 在小程序的项目目录中,新建文件夹“images”,将准备好的斗地主游戏的图片资源放入“images”文件夹中;
3. 在小程序的项目目录中,新建文件夹“sounds”,将准备好的斗地主游戏的音效资源放入“sounds”文件夹中;
三、编写代码
1. 在小程序的项目目录中,新建文件“game.js”,编写斗地主游戏的逻辑代码;
// game.js
// 定义游戏状态
const GAME_STATE = {
WAITING: 0, // 等待状态
PLAYING: 1, // 游戏中状态
END: 2 // 游戏结束状态
};
// 定义游戏类
class Game {
constructor() {
this.state = GAME_STATE.WAITING; // 初始化游戏状态
this.players = []; // 玩家列表
this.cards = []; // 扑克牌
this.landlordCards = []; // 地主牌
}
// 开始游戏
start() {
// 初始化游戏状态
this.state = GAME_STATE.PLAYING;
// 初始化玩家
this.players = [
new Player('张三'),
new Player('李四'),
new Player('王五')
];
// 初始化扑克牌
this.cards = this.initCards();
// 发牌
this.dealCards();
// 叫地主
this.callLandlord();
// 发地主牌
this.dealLandlordCards();
// 开始游戏
this.play();
}
// 初始化扑克牌
initCards() {
let cards = [];
// 生成54张扑克牌
for (let i = 0; i < 54; i++) {
cards.push(new Card(i));
}
// 打乱牌顺序
cards.sort(() => Math.random() - 0.5);
return cards;
}
// 发牌
dealCards() {
// 每人发17张牌
for (let i = 0; i < 17; i++) {
for (let j = 0; j < 3; j++) {
this.players[j].cards.push(this.cards.pop());
}
}
}
// 叫地主
callLandlord() {
// 玩家叫地主
for (let i = 0; i < 3; i++) {
let player = this.players[i];
let isCall = player.callLandlord();
if (isCall) {
// 叫地主成功,设置地主
this.landlord = player;
break;
}
}
}
// 发地主牌
dealLandlordCards() {
// 将剩余的牌发给地主
this.landlord.cards = this.landlord.cards.concat(this.cards);
// 将地主牌排序
this.landlord.cards.sort((a, b) => a.value - b.value);
// 记录地主牌
this.landlordCards = this.landlord.cards;
}
// 开始游戏
play() {
// 玩家出牌
for (let i = 0; i < 3; i++) {
let player = this.players[i];
let card = player.play();
console.log(`${player.name}出牌:${card.name}`);
}
// 游戏结束
this.state = GAME_STATE.END;
}
}
// 定义玩家类
class Player {
constructor(name) {
this.name = name; // 玩家名称
this.cards = []; // 玩家手牌
}
// 叫地主
callLandlord() {
// 随机叫地主
let isCall = Math.random() > 0.5;
console.log(`${this.name}${isCall ? '叫' : '不叫'}地主`);
return isCall;
}
// 出牌
play() {
// 随机出牌
let card = this.cards[Math.floor(Math.random() * this.cards.length)];
// 从手牌中移除出的牌
this.cards.splice(this.cards.indexOf(card), 1);
return card;
}
}
// 定义扑克牌类
class Card {
constructor(id) {
this.id = id; // 牌的id
this.name = this.getNameById(id); // 牌的名称
this.value = this.getValueById(id); // 牌的大小
}
// 根据id获取牌的名称
getNameById(id) {
let type = Math.floor(id / 13);
let number = id %!;(MISSING)
let types = ['黑桃', '红桃', '梅花', '方块'];
let numbers = ['A', '2', '3', '4','5', '6', '7','8', '9', '10','J', 'Q', 'K']
微信小程序斗地主完整代码及步骤相关推荐
- 微信小程序星星评分代码片段(含半星)
微信小程序星星评分代码片段(含半星) 代码思路 完整代码 代码片段 图片资源 写代码时需要一个点击星星评分的功能 安卓直接用RatingBar非常轻松的解决了 到了小程序,没有现成的封装方法可以用了, ...
- 石头剪刀布php源码,微信小程序 石头剪刀布实例代码
搜索热词 微信小程序 石头剪刀布 昨天看有个石头剪刀布的练习,就拿出来做了一下,布局的代码浪费了很多时间,果然CSS这块的还不是很熟练,下面直接上图上代码了. .js: //获取数组中用户的,石头剪刀 ...
- 微信小程序—微信小程序端支付代码
只有微信小程序端的代码,如下 Page({data: {},onLoad: function (options) {// 页面初始化 options为页面跳转所带来的参数var that = this ...
- 微信小程序-登录-页面-代码-实现-峯-推荐
学习目标 1.掌握 JAVA入门到进阶知识(持续写作中--) 2.学会Oracle数据库用法(创作中--) 3.手把手教你vbs脚本制作(完善中--) 4.强大的 IDEA编程利器(编写中--) 5. ...
- uniapp开发的微信小程序如何上传至微信小程序平台-完整简单步骤
一.选中代码进行发行 二.填入微信小程序appid在hbuilderx中点发行 这个id请登录微信小程序号 设置中查看 三.进入微信小程序工具点上传 成功上传. 四.遇到资源超过2M报错 mess ...
- 爬去微信小程序服务器代码,Python爬取微信小程序通用方法代码实例详解
背景介绍 最近遇到一个需求,大致就是要获取某个小程序上的数据.心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据.在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑 ...
- 从微信小程序看前端代码安全
原文链接:https://share.whuboy.com/weapp.html 感觉写的很好,学习了,转载保存. 起初在研究对移动网络传输进行功耗优化,在一次意外的监听网络传输包中截获了微信小程序的 ...
- 600多个微信小程序源码_点餐系统的开发,java后台+微信小程序 实现完整的餐厅点餐系统。微信扫码点餐小程序源码讲解...
今天来给大家讲解一个完整的微信扫码点餐项目.java后台+微信小程序实现点餐系统. 后台技术选型: JDK8 MySQL(需要5.6以上) Spring-boot Spring-data-jpa Lo ...
- 微信小程序网络请求代码片段
在微信小程序根目录建立/static/js/lsk.js.输入以下代码 function dopost(api,params,callback){var webhost="http://ne ...
最新文章
- Python 从入门到精通:一个月就够了?真的能行嘛?
- 如何创建高性能、可扩展的Node.js应用?
- hdu 2191 多重背包
- Windons Server2008R2_向域中批量创建用户
- 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
- Java集合从菜鸟到大神演变
- Linux磁盘及文件系统(二)Linux下磁盘命名和分区
- 按clear按钮清空两个文本框的内容,按copy按钮时将Source文本框的内容复制到Target文本框,按close按钮结束程序的运行
- 视频+案例,玩转LightGBM
- java生成可执行文件_关于打包java文件并生成可执行文件的问题
- meltdown漏洞解释_“ Meltdown” CPU漏洞的简化解释
- The import com. cannot be resolved
- VSCode换行快捷方式及键盘快捷键重置
- Oracle数据库学习教程
- 推荐个免费ppt模板下载网站
- c语言月份判断季节 switch,C语言编程基础(7页)-原创力文档
- Page size must not be less than onePage 1 of 1 containing UNKNOWN instances
- java 多线程 map_多线程Map并发读后修改
- 修改centos终端提示符背景色
- 推荐系统实践读书笔记