全解小程序猜數字游戲 04《 程序員變現指南之 微信QQ 小程序 真的零基礎開發寶典》

本系列教程是針對粉絲的變現教程,還不是粉絲的可以關注我并且到社區:https://bbs.csdn.net/topics/603436232

進行打卡,不是老粉的也可以獲取最終的技術變現學習,最終還有詳細的變現教程等你來。

社區有獎勵 下面有投票

本文也有評論區、點贊、收藏有抽獎,評論區抽取,3天內開獎

前言

《 程序員變現指南之 微信&QQ 小程序 真的零基礎開發寶典》
本系列文章參考《微信小程序開發實戰》并對新手做出補充說明
教程出完后將會有變現直播,請關注CSDN社區活動公告:https://bbs.csdn.net/forums/A757291228?spm=1001.2014.3001.6682&typeId=19380。

在社區中發文每周將會在活躍前十送出:

  • 一本實物書籍
  • 多份實物小禮品
  • 每月送出機械鍵盤等獎勵

教程所需

由于小程序開發需要一定的基礎,這些基礎需要提前掌握,本教程只對小程序開發進行零基礎說明。

  • 微信小程序開發工具,下載鏈接:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

  • JavaScript基礎

  • HTML基礎

目錄 持續更新:

小程序的 HelloWord 01《 程序員變現指南之 微信&QQ 小程序 真的零基礎開發寶典》
小程序獲取頭像試試水 02《 程序員變現指南之 微信&QQ 小程序 真的零基礎開發寶典》
小程序仿微信發現頁 03《 程序員變現指南之 微信&QQ 小程序 真的零基礎開發寶典》
小程序猜數字游戲 04《 程序員變現指南之 微信&QQ 小程序 真的零基礎開發寶典》

一、多頁面訪問

首先該demo有多個頁面,這些頁面進入到首頁后可以互相查看:

首先頁面就是兩個按鈕,一看就是一個 view 里面有兩個 button,簡簡單單是不是?index.wxml 的代碼如下:

<view><button>開始游戲</button><button>游戲規則</button>
</view>

在這里插入圖片描述
接著我們發現在我目錄中有兩個文件夾,一個是 game 還有一個是 ru,這個不急,咱們先給首頁加上合適的事件。我們需要點擊按鈕跳轉到其它頁面,這個時候就需要添加事件,事件是一個js函數,咱們在前端index.wxml中使用bindtap綁定不同按鈕對應需要執行的事件:

<view><button bindtap="startGame">開始游戲</button><button bindtap="toRules">游戲規則</button>
</view>

在這里插入圖片描述
此時咱們在index.js中寫下對應的函數響應:

  startGame(){},toRules(){},

在這里插入圖片描述
那我們需要怎樣跳轉頁面呢?這個時候就需要使用 wx.navigateTo({}),此時代碼寫成:

  startGame(){wx.navigateTo({url: '/pages/game/game',})},toRules(){wx.navigateTo({url: '/pages/ru/ru',})},

在這里插入圖片描述

此時只需要在 navigateTo 中傳入 url 參數即可,這些 url參數表示需要跳轉頁面的文職,其中 ru/ru 直接會默認跳轉到對應的 wxml 文件。

接著咱們創建文件夾 ru 與 game:
在這里插入圖片描述
隨后在創建的兩個目錄的json文件中添加基本的json內容,否則會 出錯呢:

{"usingComponents": {}
}


接下來還需要一個點,就是在app.json中配置對應的文件目錄:

"pages": ["pages/index/index","pages/game/game","pages/ru/ru","pages/logs/logs"]

在這里插入圖片描述
不配置就等于沒注冊,沒注冊肯定是找不到,這個一定要注意,接下來,我們點擊對應的按鈕就可以跳轉到對應的界面了。

二、開始游戲頁面隨機值生成

既然已經可以進入游戲開始頁了,咱們就可以開始設置一個隨機值, 這個隨機值就是用戶需要回答的答案。

在游戲界面 game.wxml 文件響應前,會執行一些 game.js 里面的一些js函數,這些函數對應著當前頁面的一個狀態,例如:
在這里插入圖片描述
此時可以看到頁面中有對應的注釋說明每個事件在什么時候調用。接下來我們需要在 onload 加載時就創建一個隨機數。此時可以寫一個js的函數如下:

inital(){this.setData({answei:Math.round(Math.random()*100),count:0,tip:'',x:0,isGame:true});},

在這里插入圖片描述

在代碼中調用了當前頁面的 setData 方法,this.setData()為當前頁面設置頁面所需的值,需要把對應的值放到花括號中,添加到setData中進行設置:

{answei:Math.round(Math.random()*100),count:0,tip:'',x:0,isGame:true}

其中 answei 的值等于 Math.round(Math.random()*100),其中 Math.random() 將會得到一個大于1小于0的小數,那么如果想取一個0到100的數就需要乘 100,接著 Math.round() 的作用是四舍五入取整,此時就可以得到一個0到100的整數了。
在該init方法中還設置了count 用于累計猜測次數,tip當前提示,x為猜測值,isGame表示是否游戲結束。

三、判斷所猜數字正確與否

接下來在游戲界面 game.wxml 中輸入如下代碼編寫界面:

<view><text>猜數字游戲</text><form><input type="number" placeholder="請輸入1-100你要猜的數"></input><button form-type="reset">確定</button></form>
</view>

在這里插入圖片描述

inpuit="number" 表示當前 input接收數字輸入,placeholder 表示該輸入框的提示語,button 按鈕的 form-type=“reset” 表示在按下按鈕后其 form 內的內容將會重置。

接著在輸入框 input 與 按鈕button 上綁定事件:

  <form><input  bindblur="getNumber" type="number" placeholder="請輸入1-100你要猜的數"></input><button bindtap="guess" form-type="reset">確定</button></form>

在這里插入圖片描述
其中 bindblur 表示當前input 失去焦點后,將會響應一個事件,這個事件是 getNumber,button 按鈕點擊后將會響應 guess 事件。

此時去 game.js 中編寫這兩個事件,首先查看 getNumber:

getNumber(e){this.setData({x:e.detail.value});console.log(this.data.x)},

此時響應頁面中按鈕失去焦點后,將會有一個值傳遞到該函數中,這個值包含在 e參數中,使用 e.detail.value 即可獲取到傳入 input 中輸入的值。此時使用 setData 設置當前值中的猜測值 x 為輸入框的內容值。

接著查看 guess 函數代碼:

guess(){let x=this.data.x;if(x<0){wx.showToast({title: '不能小于0',})}else if(x>100){wx.showToast({title: '不能大于100',})}else{let count=this.data.count+1;let tip=this.data.tip;if(x==this.data.answei){tip+='\n第'+count+' 回合 猜:'+x+' 對了!';this.setData({isGame:false});}else if(x>this.data.answei){tip+='\n第'+count+' 回合 猜:'+x+' 大了!';}else{tip+='\n第'+count+' 回合 猜:'+x+' 小了!';}this.setData({tip:tip,count:count})}},

首先 let x=this.data.x; 定義一個局部變量x,賦值為猜測的值x,方便之后的計算。
接著判斷猜測之是否大于100或者小于0,因為這兩者是范圍之外不再進行判斷,所以最開始使用 if進行判斷:

 if(x<0){wx.showToast({title: '不能小于0',})}else if(x>100){wx.showToast({title: '不能大于100',})}

以上代碼中 wx.showToast 表示調用微信小程序接口彈出提示,傳入的參數 title 為提示內容。

在以上完整代碼 esle 部分中就是合理輸入時進行的響應。在else 部分中:

 let count=this.data.count+1;let tip=this.data.tip;

創建兩個變量,一個是 count記錄猜測次數,另外一個 tip 為提示當前是對是錯。

if(x==this.data.answei){tip+='\n第'+count+' 回合 猜:'+x+' 對了!';this.setData({isGame:false});}

接著判斷 x 是否等于最開始設置 answei(才發現因為打錯了,不要在意就用著吧),如果等于就直接設置 tip的值為 第 某次回答 猜對了。其中count是表示第幾次的變量,x是當前猜測的值。最后設置一個 isGame 這個變量為 false,表示游戲結束。

接著的 esle if 和 else 表示是否猜大或者猜小:

else if(x>this.data.answei){tip+='\n第'+count+' 回合 猜:'+x+' 大了!';
}else{tip+='\n第'+count+' 回合 猜:'+x+' 小了!';
}

其中 else if 表示 x 的值是否猜大了,猜大使用 tip加上當前的記錄;另外的else 表示猜小的情況,同理記錄 tip。

此時已經有了tip記錄,將 tip 記錄反饋至界面 game.wxml之中,只需要在前端加一個 text 即可,這個text 輸出對應的 tip值:

在這里插入圖片描述
最后我們也要將 isGame 用上,當猜對后應該顯示一個重新開始的按鈕,那么此時在前端頁面中加上一個 view 用于顯示重新開始按鈕:

在這里插入圖片描述
在 view 之中 wx:if="{{isGame==false}}" 表示使用 if 判斷,isGame 是否等于 false,等于false 表示當前游戲結束,此時滿足條件將會顯示該部分內容,也就是顯示重新開始按鈕。在 "{{isGame==false}}" 中會自動解析 isGame的值與 flase 進行對比。

在重新開始處綁定的點擊事件 regame 事件只需要重新在事件中調用 init 函數即可:
在這里插入圖片描述

 regame(){this.inital();},

此時即使猜對了,頁面也還是會顯示內容確定內容:
在這里插入圖片描述
該邏輯不合理,再到 form 中添加一個 wx:if 判斷 isGame 的值是否等于 true,如果等于true 就顯示,不等于則不顯示:
在這里插入圖片描述
此時完美解決:
在這里插入圖片描述
還剩一個規則頁過于簡單,大家就自己搞定了。

四、最后關鍵完整代碼

game.wxml

<view><text>猜數字游戲</text><form wx:if="{{isGame==true}}"><input  bindblur="getNumber" type="number" placeholder="請輸入1-100你要猜的數"></input><button bindtap="guess" form-type="reset">確定</button></form><view wx:if="{{isGame==false}}"><button bindtap="regame">重新開始</button></view><text>{{tip}}</text>
</view>

game.js

Page({/*** 頁面的初始數據*/data: {},inital(){this.setData({answei:Math.round(Math.random()*100),count:0,tip:'',x:0,isGame:true});},getNumber(e){this.setData({x:e.detail.value});console.log(this.data.x)},guess(){let x=this.data.x;if(x<0){wx.showToast({title: '不能小于0',})}else if(x>100){wx.showToast({title: '不能大于100',})}else{let count=this.data.count+1;let tip=this.data.tip;if(x==this.data.answei){tip+='\n第'+count+' 回合 猜:'+x+' 對了!';this.setData({isGame:false});}else if(x>this.data.answei){tip+='\n第'+count+' 回合 猜:'+x+' 大了!';}else{tip+='\n第'+count+' 回合 猜:'+x+' 小了!';}this.setData({tip:tip,count:count})}},/*** 生命周期函數--監聽頁面加載*/onLoad: function (options) {this.inital();console.log(this.data.answei)},regame(){this.inital();},/*** 生命周期函數--監聽頁面初次渲染完成*/onReady: function () {},/*** 生命周期函數--監聽頁面顯示*/onShow: function () {},/*** 生命周期函數--監聽頁面隱藏*/onHide: function () {},/*** 生命周期函數--監聽頁面卸載*/onUnload: function () {},/*** 頁面相關事件處理函數--監聽用戶下拉動作*/onPullDownRefresh: function () {},/*** 頁面上拉觸底事件的處理函數*/onReachBottom: function () {},/*** 用戶點擊右上角分享*/onShareAppMessage: function () {}
})

index.wxml

<view><button bindtap="startGame">開始游戲</button><button bindtap="toRules">游戲規則</button>
</view>

index.js

 startGame(){wx.navigateTo({url: '/pages/game/game',})},toRules(){wx.navigateTo({url: '/pages/ru/ru',})},

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286704.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android之解決主頁面Activity監聽fragment退出問題(由NavHostFragment和RxFragment一起管理fragment)

1、 問題 app里面目前主頁面是一個activity,然后部分fragment是由NavHostFragment管理,當splash、login等頁面也放在navigation時,按手機的返回鍵這些頁面只能一頁頁回退,因為設置了 app:defaultNavHost="true" 并不能在某個頁面例如splash、login按返回鍵時退…

linux之ps命令詳解

linux中ps(process status) 命令是LINUX下最常用的也是非常強大的進程查看命令&#xff0c;運用該命令可以確定有哪些進程正在運行和運行地狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多地資源等等。 ps命令最常用的是用于監控后臺進程的工作情況。 Linux 查看進程p…

【空間數據庫】傳統數據模型(層次、網狀、關系)和空間數據模型詳解

數據模型是指數據庫的組織形式,它決定了數據庫中數據之間聯系的表達方式,即把在計算機中表示客觀事物及其聯系的數據及結構稱為數據模型。本文詳細講述傳統三大數據模型和空間數據模型。 一、數據模型概述 數據模型是指數據庫的組織形式,它決定了數據庫中數據之間聯系的表…

聊聊 C# 中的多態底層 (虛方法調用) 是怎么玩的

最近在看 C 的虛方法調用實現原理&#xff0c;大概就是說在 class 的首位置存放著一個指向 vtable array 指針數組 的指針&#xff0c;而 vtable array 中的每一個指針元素指向的就是各自的 虛方法&#xff0c;實現方式很有意思&#xff0c;哈哈&#xff0c;現在我很好奇 C# 中…

sublime text 3 安裝、添加命令行啟動、漢化、注冊碼

1. 安裝sublime&#xff1a; 下載&#xff1a;http://www.sublimetext.com/3 添加命令行啟動&#xff1a;設置環境變量->計算機->右鍵屬性->高級系統設置->環境變量->系統變量->Path->編輯&#xff0c;加入";安裝路徑"(如&#xff1a;;D:\Progr…

MVC基礎知識-View

public ActionResult Index() {ViewBag.Message "Modify this template to jump-start your ASP.NET MVC application.";//展現到視圖中數據//~/Views/Home/Index.cshtmlreturn View(); //展現指定的視圖&#xff0c;當沒有指定視圖名稱時&#xff0c;默認是指向根目…

Android之設置當前app為默認瀏覽器研究

1 需求 把當前app設置為默認瀏覽器 2 主要思路 分析競品,我們主要通過2種方式設置app為默認瀏覽器 直接跳 手機“設置默認應用”界面來讓用戶選擇 默認瀏覽器為哪個app打開一個鏈接,拉起手機所有瀏覽器,讓用戶去選擇哪個瀏覽器,并且只有點擊“始終”才會生效,僅僅點擊“…

Linux下的用戶和組

2019獨角獸企業重金招聘Python工程師標準>>> 用戶和組 GNU/Linux 通過用戶和用戶組實現訪問控制 —— 包括對文件訪問、設備使用的控制。Linux 默認的訪問控制機制相對簡單直接&#xff0c;不過還有一些更加高級的機制&#xff0c;包括 ACL 和 LDAP Authentication.…

漫畫C語言 做個聊天軟件你不懂也得懂

學完C語言做不出東西&#xff1f;不存在的&#xff0c;咱們做一個最“隱私”的聊天器&#xff0c;就倆人&#xff0c;你和我。咱們聊天的信息你知我知沒別人知。 對了&#xff0c;本文評論區點贊、收藏抽獎。 社區也有抽獎&#xff0c;本周社區抽獎帖子 &#xff1a;https://b…

【Microstation】第一章:Microstation三維模型構建概述

MicroStation 是國際上和AutoCAD齊名的二維和三維CAD設計軟件&#xff0c;第一個版本由Bentley兄弟在1986年開發完成。其專用格式是DGN&#xff0c;并兼容AutoCAD的DWG/DXF等格式。 MicroStation是Bentley 工程軟件系統有限公司在建筑、土木工程、交通運輸、加工工廠、離散制造…

libgdx游戲引擎開發筆記(十)SuperJumper游戲例子的講解(篇四)---- 主游戲界面內部框架編寫...

上一講&#xff0c;我們已經實現了點擊play進入游戲界面但僅僅是個黑屏 今天&#xff0c;我們就試著編寫代碼讓它出現游戲的一些簡單場景。還是在上一講的代碼基礎上&#xff0c;我們創建兩個類&#xff1a;World 和 WorldRenderer 1.Word類&#xff1a; 12345678910111213141…

看看《System.CommandLine》

記得之前出過幾篇.net tool工具的文章&#xff0c;當時的做法是所有工具的語法分析全部自己解釋&#xff0c;自己執行&#xff0c;語法的解釋占了大部分時間&#xff0c;反而工具的功能被弱化了。其實微軟有一個CommandLine框架在緩慢的發展著&#xff0c;至今都沒有正式發布&a…

Sublime Text 3 import Anaconda 無法正常補全模塊名解決辦法

Sublime Text 3 Anaconda配置 在安裝Sublime Text3之后我們總會安裝一些插件&#xff0c;比如Python的Anaconda自動補全插件。但是&#xff0c;裝好之后發現import 時無法像別的IDE里面那樣自動補全模塊名&#xff0c;就像圖中一樣&#xff1a; 解決辦法在Sublime Text的git…

hdu - 2586 How far away ?(最短路共同祖先問題)

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2586 最近公共祖先問題~~LAC離散算法 題目大意&#xff1a;一個村子里有n個房子&#xff0c;這n個房子用n-1條路連接起來&#xff0c;接下了有m次詢問&#xff0c;每次詢問兩個房子a,b之間的距離是多少。 很明顯…

Android之添加固定圖標到桌面

我的QQ群 1 需求 Android之添加固定圖標到桌面 2 部分實現 在AndroidManifest.xml里面添加如下權限 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="com.android.launcher.perm…

想做程序員?不同方向入門路線全解

學習計算機編程有很多方向如果你沒有一個正確的路線&#xff0c;那么就會&#xff1a; 就會跟上面所說的那樣&#xff0c;被迫成為一個全棧&#xff0c;這是比較尷尬的。 若你想比較準確的針對某個方向學習&#xff0c;那就繼續往下看吧。 一、程序員分為哪幾個方向 隨著…

【轉】OpenGL超級寶典筆記——紋理映射Mipmap

原文地址 http://my.oschina.net/sweetdark/blog/177812 , 感謝作者&#xff0c;若非法轉載請聯系本人。 目錄[-] MipmappingMipmap過濾構建Mip層Mipmaps 硬件生成LOD&#xff08;多細節層次&#xff09;偏好紋理對象管理多個紋理常駐紋理紋理優先級回顧Mipmapping Mipmap是一個…

【Microstation】第二章:Microstation三維建模基礎知識

本章的主要內容包括模型的顯示樣式(線框、光滑)、三維定位(V、T、S、F)、Microstation常見的坐標系統(世界坐標系、ACS輔助坐標系、精確繪圖坐標系、)和Microstation的工作區域(2D和3D)。 一、顯示樣式 二、三維定位 三維定位在Microstation中顯得尤為重要,常見…

xtrabackup對MySQL數據庫的備份及恢復教程

xtrabackup xtrabackup 是 percona 的一個開源項目&#xff0c;可以熱備份innodb &#xff0c;XtraDB,和MyISAM&#xff08;會鎖表&#xff09;。對MyISAM存儲引擎會鎖表&#xff0c;也是很郁悶的因為線上使用的是Innodb和MyISAM兩種存儲引擎&#xff0c;比較 頭疼&#xff01;…

實現 EF Core 6 自定義查詢標記

前言在《EF Core使用Simple Logging輸出日志》中&#xff0c;我們介紹了查詢標記 TagWith&#xff0c;它可以幫助我們快速定位到需要的日志&#xff1a;而在 .NET 6 中&#xff0c;新增了另外一個查詢標記 TagWithCallSite&#xff0c;它可以標記出代碼的位置&#xff1a;var u…