本系列主要讲利用微信小程序完整实现狼人杀游戏,慢慢跟进
关于狼人杀的游戏规则,就懒得赘述了,请自行百度。以下正文开始
后续更改界面什么
创建房间效果图
以下实现逻辑,首先具有一个初始参数,然后根据用户选择来进行调节
Page({
/**
* 页面的初始数据
*/
data: {
person_step: 62.5, //初始人数条
wolf_step: 60, //初始狼人条
sumPerson: 9, //参与人数
sumWolf: 3, //狼人人数
radio: '2', //默认屠边
loading: false, //不加载
initPerson: { //默认配置
hunter: 1, //猎人
witch: 1, //女巫
prophet: 1, //预言家
guard: 0, //守卫
idiot: 0, //白痴
villager: 3, //村民
wolf: 3, //狼人
sheriff: 2, //警长票数
},
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {
},
onDrag(event) {
this.setData({
sumPerson: Math.ceil(event.detail.value / 6.25)
})
},
onDrag_wolf(event) {
this.setData({
sumWolf: Math.ceil(event.detail.value / 20)
})
},
onChange(event) {
this.setData({
radio: event.detail
});
},
//推荐设置
setIdentity() {
let initPerson = this.data.initPerson,
that = this
switch (this.data.sumPerson) {
case 9:
initPerson.hunter = 1
initPerson.witch = 1
initPerson.prophet = 1
initPerson.wolf = 3
initPerson.villager = 3
initPerson.guard = 0
initPerson.idiot = 0
initPerson.sheriff = 0
break;
case 10:
initPerson.hunter = 1
initPerson.witch = 1
initPerson.prophet = 1
initPerson.wolf = 3
initPerson.villager = 4
initPerson.guard = 0
initPerson.idiot = 0
initPerson.sheriff = 0
break;
case 11:
initPerson.hunter = 1
initPerson.witch = 1
initPerson.prophet = 1
initPerson.wolf = 4
initPerson.villager = 3
initPerson.guard = 0
initPerson.idiot = 1
initPerson.sheriff = 3
break;
case 12:
initPerson.hunter = 1
initPerson.witch = 1
initPerson.prophet = 1
initPerson.wolf = 4
initPerson.villager = 4
initPerson.guard = 0
initPerson.idiot = 1
initPerson.sheriff = 3
break;
case 13:
Toast('目前没有推荐配置,请自行配置')
break;
case 14:
Toast('目前没有推荐配置,请自行配置')
break;
case 15:
Toast('目前没有推荐配置,请自行配置')
break;
case 16:
Toast('目前没有推荐配置,请自行配置')
break;
}
this.setData({
initPerson: initPerson,
sumWolf: initPerson.wolf,
sumPerson: that.reckonPerson(),
person_step: that.reckonPerson() * 6.25,
wolf_step: initPerson.wolf * 20
})
},
//头像单点
identityClick(event) {
// 1 2 3 4 5 6 7 8 hunter witch prophet wolf villager guard idiot sheriff
let initPerson = this.data.initPerson,
that = this,
sumPerson = this.data.sumPerson
switch (parseInt(event.currentTarget.dataset.index)) {
case 1:
Toast('当前局只能有1个猎人')
break;
case 2:
Toast('当前局只能有1个女巫')
break;
case 3:
Toast('当前局只能有1个预言家')
break;
case 4:
initPerson.wolf = initPerson.wolf + 1
break;
case 5:
initPerson.villager = initPerson.villager + 1
break;
case 6:
initPerson.guard = initPerson.guard + 1
break;
case 7:
initPerson.idiot = initPerson.idiot + 1
break;
case 8:
if (parseInt(initPerson.sheriff) < 4) {
initPerson.sheriff = initPerson.sheriff + 0.5;
} else {
Toast('最高4票,0.5票算作一人')
}
break;
}
if (that.reckonPerson() <= 16) {
this.setData({
initPerson: initPerson,
sumPerson: that.reckonPerson(),
sumWolf: initPerson.wolf,
person_step: that.reckonPerson() * 6.25,
wolf_step: initPerson.wolf * 20
})
} else {
Toast('超过最大人数十六人')
}
},
//计算总人数
reckonPerson() {
let initPerson = this.data.initPerson
let sumPerson = initPerson.hunter + initPerson.witch + initPerson.prophet + initPerson.wolf + initPerson.villager + initPerson.guard + initPerson.idiot
return sumPerson;
},
btnCreate() {
let that = this,
initPerson = this.data.initPerson
this.setData({
loading: true
})
//请求创建房间
util.request(api.CreateRoom, {
openid: app.globalData.userInfo.openid,
gamer: that.reckonPerson(),
wolf: initPerson.wolf,
villager: initPerson.villager,
witch: initPerson.witch,
prophet: initPerson.prophet,
hunter: initPerson.hunter,
idiot: initPerson.idiot,
guard: initPerson.guard,
sheriff: initPerson.sheriff
}).then(res => {
if (res.code == 200) {
wx.redirectTo({
url: '/pages/room/room?roomid=' + res.data.id,
})
}
})
}
})
整个项目已上传至GitHub,觉得有用的同学麻烦点个star 谢谢。GitHub狼人杀项目
HDU 2815 Mod Tree 解a^x = b(mod n)非互质
很多程序员兄弟们工资不高,但时间还是比较充足的,剩下的时间想多搞点外快,毕竟要养家糊口。我来讲讲怎么做可以一个月轻松多赚1万多元的外快。(纯干货分享!)一、接项目是程..._外快怎么才能挣到1万块钱
这段时间开发ASP.NETMVC应用程序,从数据库获取数据之后,需要把记录转换为数据集在视图中显示。我们需要把DataTable转换为List<T>或者DataRow转换为T。 本篇中可以学习到相关的知识,数据库方面,创建表,添加数据,存储过程等。MVC方面,创建model,创建Entity,Utility写在一个目录中,控制器创建视图操作,以及行为操作。先从数据库:SQL..._datarow转list
范例如下<table id="LAY-app-content-nav" lay-filter="LAY-app-content-nav"></table> table.on('row(LAY-app-content-nav)', function(obj){ var data = obj.data; /* laye..._layui操作栏按钮过多显示省略号
1.最好做过一段时间的android sdk ndk开发这样就能:(1)了解android系统的运行机制 (2)熟练使用C/C++,java开发2.逆向必备的的基本功是1.java\C++\C 开发2.Python\arm 汇编3.Linux 密码学4.anroid 系统原理,框架,权限,沙箱等等5.elf、dex文件结构、加载运行机制6.推荐啃透:程序员的自我修养,linker ...
有时我们在使用bean的时候会出现显示无法autowire的情况,但实际调用的时候可以正常运行,遇到这种情况zhi'只需要填加@SuppressWarnings("SpringJavaAutowiringInspection")注解,会取消这个无用报错。..._idea 启动失败找不到bean 但是项目中有bean
按照txt中的顺序将文件夹中的文件批量重命名:import osdef re_name(path): for file in os.listdir(path): file_path = os.path.join(path, file) #print(file) if ".dic" in file.lower(): # 判断文件是否为dic文件 for i in range(len(LstFilesDIC)): _if in file: python
平台环境:skyeye1.2.8+u-boot1.2.0+smdk2410现象描述:在运行的时候会出现大量的“bus read error”错误,或者u-boot跑飞出现乱码信息。 1.2.8相对1.2.6最大的改变就是将存储管理这一块做成相对独立的模块,我想这样做的目的应该是能够把更多的精力放在新平台新架构的研发。出现问题我初步想法可能就是在这个改变上。通过与1.2.6上跑u-_bus read 错误
视觉导航技术综述医2007 江苏省自动化学会学术年会论文集视觉导航技术综述唐超颖,杨忠,沈春林(南京航空航天大学自动化学院,江苏 南京 210016)摘要:概述了视觉导航技术。视觉导航依据视觉图像,利用图像处理、计算机视觉、模型识别等相关技术获取运动体的运动信息和空间位置信息,实现导航。首先,简单比较了各种常用的导航方式,分析了视觉导航的研究意义;其次,总结了目前视觉导航的应用领域及应用概况;接着..._杨忠 博导 南京航空航天大学自动化学院
看到这二十条启示第一反应是:游戏出真知啊!凡事都有对立面,多看看积极的一面不挺好啊?吸引我玩这个游戏是因为有朋友说到游戏里的一名话:做人不能贪得无厌每个人的内心或多或少都会有点小恶,个人觉得于人无害便不算恶吧!恶作剧是生活的调剂.个人觉得还是挺好玩的,植物画得很好,很形像,尤其看到作物枝繁叶茂果实累累的时候,最是开心!不过,小孩子慎玩.括...
对于一个Android开发来说,不管你有多不喜欢自定义控件,你都得和她谈一场恋爱。所以我主动谈了这场很费脑子的恋爱,因为阅读源码的能力不好,在寻根抛底的找线索的过程中,搞得反胃,不过最后还是把来龙去脉都捋了一遍。当然今天的角不是常用且高效的组合型自定义控件,而是纯粹绘制出来的View或者重新定义规则的一个ViewGroup。 简述1:启动Activity的时候会创建..._onmeasure onlayout ondraw
ConcurrentHashMap分析1. HashMap 5 个线程 put 数据会发生什么? (阿里面试第一面)2. Java 多线程的内存模型3. synchronized 的底层实现原理4. ConcurrentHashMap 源码分析1. HashMap 5 个线程 put 数据会发生什么? (阿里面试第一面)数据丢失,死循环 (扩容)解决方案:hashTableCollections.synchronizedMap()ConcurrentHashMap前两种是锁着整个方法,分_concurrenthashmap h >>> 16