微信小程序里石头剪刀布功能的实现方式

why 365 2024-08-20

这篇文章主要介绍了微信小程序 石头剪刀布实例代码的相关资料,需要的朋友可以参考下

微信小程序 石头剪刀布

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

image.png

image.png

.js:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

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:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<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:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

/*底*/

.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;

}


以上就是本文的全部内容,希望对大家的学习有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:信创国产化中间件,开创企业数字化转型新纪元
下一篇:小程序多线程的优势是什么?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~