微信小程序 石头剪刀布实例代码


Posted in Javascript onJanuary 04, 2017

微信小程序 石头剪刀布

昨天看有个石头剪刀布的练习,就拿出来做了一下,布局的代码浪费了很多时间,果然CSS这块的还不是很熟练,下面直接上图上代码了。

微信小程序 石头剪刀布实例代码

微信小程序 石头剪刀布实例代码

.js:

var numAi = 0
var timer
Page({
 data:{
 //控制按钮是否可点击
 btnState:false,
 //记录获胜次数
 winNum:0,
 //中间的话“Ho~ You Win”
 gameOfPlay:'',
 //用户选择的图片
 imageUserScr:'/pages/image/wenhao.png',
 //电脑随机的图片
 imageAiScr:'',
 //石头剪刀布图片数组
 srcs:[
 '/pages/image/shitou.png',
 '/pages/image/jiandao.png',
 '/pages/image/bu.png'
 ]
 },
 
 //生命周期,刚进来
 onLoad: function () {
 //获取本地缓存“已经获胜的次数”
 var oldWinNum = wx.getStorageSync('winNum');
 //如果有缓存,那么赋值,否则为0
 if(oldWinNum != null && oldWinNum !=''){
 this.data.winNum = oldWinNum;
 }
 this.timerGo();
 },
 
 //点击按钮
 changeForChoose(e){
 console.log();
 if(this.data.btnState == true){
 return;
 }
 
 //获取数组中用户的,石头剪刀布相应的图片。
 this.setData({
  imageUserScr:this.data.srcs[e.currentTarget.id]
 });
 //清除计时器
 clearInterval(timer);
 
 //获取数据源
 var user = this.data.imageUserScr;
 var ai = this.data.imageAiScr;
 var num = this.data.winNum;
 var str = '0.0~\nYou Lost!';
 
 //判断是否获胜
 if( user == "/pages/image/shitou.png" && ai == "/pages/image/jiandao.png"){
  //获胜后增加次数、改变文字内容、从新缓存获胜次数
  num++;
  str = 'Ho~\nYou Win!';
  wx.setStorageSync('winNum', num);
 };
 if(user == "/pages/image/jiandao.png" && ai == "/pages/image/bu.png"){
  num++;
  str = 'Ho~\nYou Win!';
  wx.setStorageSync('winNum', num);
 };
 if(user== "/pages/image/bu.png" && ai == "/pages/image/shitou.png"){
  num++;
  str = 'Ho~\nYou Win!';
  wx.setStorageSync('winNum', num);
 };
 
 //如果平局
 if(user == ai){
  str = 'Game Draw!';
 }
 
 //刷新数据
 this.setData({
  winNum:num,
  gameOfPlay:str,
  btnState:true
 });
 },
 
 //开启计时器
 timerGo(){
 timer = setInterval(this.move,100);
 },
 
 //ai滚动方法
 move(){
 //如果大于等于3,重置
 if(numAi>=3){
 numAi=0;
 }
 this.setData({
 //获取数组中Ai的,石头剪刀布相应的图片。
 imageAiScr: this.data.srcs[numAi],
 })
 numAi++;
 },
 
 again(){
 //控制按钮
 if(this.data.btnState == false){
 return;
 }
 //从新开始计时器
 this.timerGo();
 //刷新数据
 this.setData({
  btnState:false,
  gameOfPlay:'',
  imageUserScr:'/pages/image/wenhao.png'
 });
 }
})

.wxml:

<view class="downView" >
 
 <text class="winNum">你已经获胜了<text style="color:red">{{winNum}}text>次text>
 <view class="showView">
 <image src="{{imageAiScr}}" class="gesturesImgL">image>
 <text class="winOrLost">{{gameOfPlay}}text>
 <image src="{{imageUserScr}}" class="gesturesImgR">image>
 view>
 
 
 
 <view class="chooseForUserView">
 <text class="winNum">出拳吧,少年~text>
 <view class="choose-V">
  <block wx:for="{{srcs}}">
  <view class="choose-view" bindtap="changeForChoose" id="{{index}}"> 
   <image class="choose-image" src="{{item}}" >image> 
  view> 
  block>
 view>
 
 <button class="againBtn" bindtap="again">再来!button> 
 
 view>
 
view>

.wxss:

/*底*/
.downView{
 width: 100%;
 height: 1250rpx;
 background: #FAE738;
 margin: 0rpx;
 text-align: center;
}
 
/*获胜次数*/
.winNum{
 padding-top: 40rpx;
 display: block;
 font-size: 30rpx; 
 color: #363527;
 font-weight:500;
}
 
/*展示出拳结果*/
.showView{
 display: flex; 
 width: 100%;
 margin-top:30rpx;
 height: 200rpx;
}
 
.gesturesImgL{
 height: 180rpx;
 width: 180rpx;
 margin-left:80rpx;
}
 
.gesturesImgR{
 height: 180rpx;
 width: 180rpx;
 margin-right:80rpx;
}
 
.winOrLost{
 color: orangered;
 flex:1;
 font-size: 30rpx;
 margin-top:75rpx;
}
 
/*用户出拳*/
.chooseForUserView{
 margin:40rpx;
 height: 800rpx;
 background: white;
 text-align: center;
}
 
.choose-V{
 display: flex;
 margin-top: 40rpx;
}
 
.choose-view{ 
 flex: 1;
 content:none !important;
 height: 140rpx;
 width: 140rpx;
 border:1px solid white;
} 
 
.choose-image{
 height: 160rpx;
 width: 160rpx;
 border-radius:80rpx;
}
 
/*再来*/
.againBtn{
 margin:80rpx;
 background: #FAE738;
}

demo资源下载 小程序-石头剪刀布

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JS 面向对象的5钟写法
Jul 31 Javascript
JS 控件事件小结
Oct 31 Javascript
js操作textarea 常用方法总结
Dec 03 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
jQuery选择器源码解读(八):addCombinator函数
Mar 31 Javascript
Vue.js快速入门教程
Sep 07 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
深入解析ES6中的promise
Nov 08 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
Vue.js watch监视属性知识点总结
Nov 11 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 #Javascript
微信小程序 Canvas增强组件实例详解及源码分享
Jan 04 #Javascript
AngularJS入门示例之Hello World详解
Jan 04 #Javascript
详解AngularJS验证、过滤器、指令
Jan 04 #Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
Jan 04 #Javascript
javascript 注释代码的几种方法总结
Jan 04 #Javascript
JS数组返回去重后数据的方法解析
Jan 03 #Javascript
You might like
PHP分页效率终结版(推荐)
2013/07/01 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
基于jquery的放大镜效果
2012/05/30 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
Python实现CET查分的方法
2015/03/10 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
详解python logging日志传输
2020/07/01 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
春季防火方案
2014/05/10 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
学校百日安全活动总结
2015/05/07 职场文书
交通事故代理词范文
2015/05/23 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript