掷骰子小游戏

掷骰子小游戏

博客班级

https://edu.cnblogs.com/campus/zjcsxy/SE2020

作业要求

https://edu.cnblogs.com/campus/zjcsxy/SE2020/homework/11334

作业目标

1.编写一个小程序,可以全新编写,也可以学习别人的小程序进行修改

2.熟悉git代码管理流程,将源代码上传到到

3.github在博客园班级中写一篇相应的博文

作业源代码

https://github.com/zucc31801111/wxgame.git

学号

姓名

31801111

周云奖

院系

浙大城院计算机系

前言

第一次学习做微信小程序,这个小程序的难点在于如何将骰子随机产生的结果的显示以及和预测结果相比较。主要目的还是在于熟悉小程序开发的过程以及相关文件内容的理解,并熟悉git代码的管理流程,代码中已添加注释便于理解。

开发工具:微信开发者工具。

效果演示

全局配置

app.json

pages:共1个基本页面是骰子游戏页面

window:定义小程序所有页面的顶部背景颜色,文字颜色定义等

小程序根目录下的 sitemap.json文件用于配置小程序及其页面是否允许被微信索引,文件内容为一个 JSON 对象,如果没有 sitemap.json ,则默认为所有页面都允许被索引

{

"pages": [

"pages/index/index","pages/game/game"

],

"window": {

"backgroundTextStyle": "light",

"navigationBarBackgroundColor": "#fff",

"navigationBarTitleText": "掷骰子",

"navigationBarTextStyle": "black"

},

"sitemapLocation": "sitemap.json"

}

app.js

主要用于授权后获得微信用户信息

//app.js

App({

onLaunch: function () {

// 展示本地存储能力

wx.clearStorage();

// 登录

wx.login({

success: res => {

// 发送 res.code 到后台换取 openId, sessionKey, unionId

}

})

// 获取用户信息

wx.getSetting({

success: res => {

if (res.authSetting['scope.userInfo']) {

// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框

wx.getUserInfo({

success: res => {

// 可以将 res 发送给后台解码出 unionId

this.globalData.userInfo = res.userInfo

// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

// 所以此处加入 callback 以防止这种情况

if (this.userInfoReadyCallback) {

this.userInfoReadyCallback(res.userInfo)

}

}

})

}

}

})

},

globalData: {

userInfo: null

}

})

app.wxss

全局样式配置文件

/**app.wxss**/

.mt300 {

margin-top: 300rpx;

}

.mt60 {

margin-top: 60rpx;

}

.mt200 {

margin-top: 200rpx;

}

.mr10 {

margin-right: 10rpx;

}

.mb10 {

margin-bottom: 10rpx;

}

.w600 {

width: 600rpx;

}

.w60 {

width: 60rpx;

}

.h60 {

height: 60rpx;

}

.w120 {

width: 120rpx;

}

.h120 {

height: 120rpx;

}

.text-center {

text-align: center;

}

.orange-btn {

background-color: #fba927;

color: white;

}

.orange-hover {

background-color: rgba(251, 169, 39, 0.1);

opacity: 0.7;

}

.container {

height: 100%;

display: flex;

flex-direction: column;

align-items: center;

justify-content: space-between;

padding: 200rpx 0;

box-sizing: border-box;

}

app.wxss

首页部分

页面布局(index.wxml)

显示首页用户头像和信息以及开始按钮和排行榜按钮

{{motto}}

样式文件(index.wxss)

/**index.wxss**/

.userinfo {

display: flex;

flex-direction: column;

align-items: center;

}

.userinfo-avatar {

width: 128rpx;

height: 128rpx;

margin: 20rpx;

border-radius: 50%;

}

.userinfo-nickname {

color: #aaa;

}

运行逻辑(index.js)

//index.js

//获取应用实例

var app = getApp()

Page({

data: {

canIUse: wx.canIUse('button.open-type.getUserInfo'),

motto: '',

userInfo: null

},

//进入游戏

goGame: function() {

wx.navigateTo({

url: '../game/game'

})

},

//处理emoji表情

killEmoji: function(text) {

return text.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "");

},

//设置用户信息

setUserInfo: function(userInfo) {

this.setData({

userInfo: userInfo,

motto: '欢迎您,' + userInfo.nickName

});

wx.setStorageSync('rankUserInfo', {

name: userInfo.nickName,

score: 8000

});

},

//登陆

onLoad: function() {

var that = this;

app.userInfoReadyCallback = res => {

console.log('回调-获取用户信息成功');

that.setUserInfo(res);

};

if (app.globalData.userInfo) {

console.log('全局变量-获取用户信息成功');

that.setUserInfo(app.globalData.userInfo);

}

},

//用户点击授权

bindGetUserInfo(e) {

var that = this;

console.log('主动授权-获取用户信息成功');

that.setUserInfo(e.detail.userInfo);

},

//显示页面

onShow: function () {

var that = this;

if (!that.data.userInfo && app.globalData.userInfo) {

console.log('全局变量-通过排行榜授权获取用户信息成功');

that.setUserInfo(app.globalData.userInfo);

}

},

})

核心部分

以上内容为小程序的全局配置,以下内容为小程序核心部分主要分为3块内容(内容比较长,采用全部折叠):

骰子游戏布局(game.wxml)

显示三个骰子的位置,所拥有的分数以及下注金额,码盘,投注对象

{{ userInfo.name }}

{{ sigleScore }}

{{ userInfo.score }}