1. 程式人生 > >微信小程式 之 初體驗(24點遊戲)

微信小程式 之 初體驗(24點遊戲)

根據網上的教程,申請了小程式開發,試著玩玩哈。

主要熟悉了一下小程式開發,熟悉了下各個元件

   主要寫了個九九乘法表、和24點計算大笑

介面

    

{
  "pages": [
      "page/index/index",
      "page/poker/poker"
  ],
  "window": {
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#787878",
    "navigationBarTitleText": "嘀嘀打仁",
    "navigationBarTextStyle":"white"
  },
  "tabBar": {
    "color": "#dddddd",
    "selectedColor": "#3cc51f",
    "borderStyle": "black",
    "backgroundColor": "#787878",
    "list": [{
       "pagePath": "page/index/index",
        "text": "首頁",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      }
      ,{
        "pagePath": "page/poker/poker",
        "text": "24點",
        "iconPath": "image/wechat.png",
        "selectedIconPath": "image/wechatHL.png"
      }]
  }
}

注意點:

1.引用js

    1.1在工具js的中加

       module.exports = {
         calCommonExp: calCommonExp
       }

      calCommonExp 是對應的方法

    1.2 引用的js中

         var rpn = require('../../util/rpn.js');//引用js, 執行表示式js 代替eval

     1.3使用

           ret = rpn.calCommonExp(_exp);//計算表示式

 2.在小程式中不能使用 eval  在網上找到 用rpn.js代替,具體其中程式碼沒有細看哈

function isOperator(value) {
	var operatorString = '+-*/()×÷';
	return operatorString.indexOf(value) > -1;
}

function getPrioraty(value) {
	if(value == '-' || value == '+') {
		return 1;
	} else if(value == '*' || value == '/' || value == '×' || value == '÷' ) {
		return 2;
	} else{
		return 0;
	}
}

function prioraty(v1, v2) {
	return getPrioraty(v1) <= getPrioraty(v2);
}

function outputRpn(exp) {
	var inputStack = [];
	var outputStack = [];
	var outputQueue = [];
	var firstIsOperator = false;
	exp.replace(/\s/g,'');
	if(isOperator(exp[0])){
		exp = exp.substring(1);
		firstIsOperator = true;
	}
	for(var i = 0, max = exp.length; i < max; i++) {
		if(!isOperator(exp[i]) && !isOperator(exp[i-1]) && (i != 0)) {
			inputStack[inputStack.length-1] = inputStack[inputStack.length-1] + exp[i] + '';
		} else {
			inputStack.push(exp[i]);
		}
	}
	if(firstIsOperator) {
		inputStack[0] = -inputStack[0] 
	}
	while(inputStack.length > 0) {
		var cur = inputStack.shift();
		if(isOperator(cur)) {
			if (cur == '(') {
				outputStack.push(cur);
			} else if (cur == ')') {
				var po = outputStack.pop();
				while(po != '(' && outputStack.length > 0) {
					outputQueue.push(po);
					po = outputStack.pop();
				}
			} else {
				while(prioraty(cur,outputStack[outputStack.length - 1]) && outputStack.length > 0) {
					outputQueue.push(outputStack.pop());
				}
				outputStack.push(cur)
			}
		} else {
			outputQueue.push(Number(cur));
		}
	}
	if(outputStack.length > 0){
		while (outputStack.length > 0) {
			outputQueue.push(outputStack.pop());
		}
	}
	return outputQueue;
}

function calRpnExp(rpnArr) {
	var stack = [];
	for(var i = 0, max = rpnArr.length; i < max; i++) {
		if(!isOperator(rpnArr[i])) {
			stack.push(rpnArr[i]);
		} else {
			var num1 = stack.pop();
			var num2 = stack.pop();
			if(rpnArr[i] == '-') {
				var num = num2 - num1;
			} else if(rpnArr[i] == '+') {
				var num = num2 + num1;
			} else if(rpnArr[i] == '*' || rpnArr[i] == '×') {
				var num = num2 * num1;
			} else if(rpnArr[i] == '/' || rpnArr[i] == '÷') {
				var num = num2/num1;
			}
			stack.push(num);
		}
	}
	return stack[0];
}

function calCommonExp(exp) {
	var rpnArr = outputRpn(exp);
	return calRpnExp(rpnArr)
}

module.exports = {
  calCommonExp: calCommonExp
}

3. 小程式中的input框  寬度樣式問題。

  

     這4張牌是隨機生成,也可以手動輸入,

   在寫樣式時,直接給input   設定width:23%;   發現整體的input是隻有23%的框,但是,可輸入區域也是可見區域的23%;且輸入區域在最左邊,不在中間。

   後面改成輸入框外面先套一個view ,view的寬度是23%;

4.支援水平翻轉,但是在安卓機(魅藍3)上測試有時候不行。其它機子沒測試過

翻轉動畫js

//重新整理四張撲克
function refreshPoker(that) {
  //把poker牌還原到原始狀態
  that.setData({
    pokerList:["","","",""]
  })
  var animation = wx.createAnimation({
    duration: 2000,
    timingFunction: 'ease',
  })
  animation.rotateY(-180).step({duration:0})
  that.setData({
    animationPoker:animation.export()
  })
  //重置4張牌
  for (var i = 0; i < 4; i++) {
    var randPoker = Math.floor(Math.random() * 13) + 1;
    if (randPoker == 11) {
      randPoker = "J";
    } else if (randPoker == 12) {
      randPoker = "Q";
    } else if (randPoker == 13) {
      randPoker = "K";
    }
    pokerArray[i] = randPoker;
  }
  //翻牌動畫
  animation.rotateY(-90).step({duration:1000});//前面90度不顯示資料
  that.setData({
    animationPoker:animation.export()
  })
  //轉了了90度增加資料
  setTimeout(function(){
     that.setData({
      pokerList: pokerArray
    })
  },300);
 
  //後面90度旋轉
  animation.rotateY(0).step({duration:1000});
  that.setData({
    animationPoker:animation.export()
  })
}

demo下載   《--

相關推薦

程式 體驗24遊戲

根據網上的教程,申請了小程式開發,試著玩玩哈。 主要熟悉了一下小程式開發,熟悉了下各個元件    主要寫了個九九乘法表、和24點計算 介面      { "pages": [ "page/index/index", "page/poker/

共享單車程式體驗

從Sensor裡面讀取經緯度,顯示對應的地理位置資訊 //index.wxml //相關屬性:latitude(緯度),longitude(經度) <map id='mymap' latitude='{{lat}}' longitude='{{l

Slog68_雲開發開啟全棧時代!程式雲開發-全棧時代1

ArthurSlog SLog-68 Year·1 Guangzhou·China Sep 11th 2018 常道無名 唯德以顯之 至德無本 順道而成之 禍福無門 惟人自召 善惡之報 如影隨形 開發環境MacOS(High Sierra 10.13.5)

Slog69_實現一個帶引數的雲函式GET!程式雲開發-全棧時代2

ArthurSlog SLog-69 Year·1 Guangzhou·China Sep 11th 2018 禍兮福之所倚 福兮禍之所伏 開發環境MacOS(High Sierra 10.13.5) 需要的資訊和資訊源: 前言 騰訊推出“雲開發”概

程式人臉識別2

上一篇部落格已經將人臉的照片上傳到了人臉庫,接下來需要做的就是登入時拍照儲存並與人臉庫的圖片進行對比,當score大於95即識別成功!下面是wxml程式碼,主要用的就是camera元件,點選按鈕拍照並儲存,利用開關來控制使用前置還是後置攝像頭。<!--pages/cam

程式開發——體驗

放假在家無聊,稍微研究研究小程式 註冊賬號及配置 首先需要去“微信公眾平臺”註冊一個微信小程式開發賬號 注意上面四個中只能選擇一個,輸入要填的資訊之後一直確認確認就可以了。 登入後,可以開啟標題欄中的“文件”,第一欄的“介紹”,按照這個介紹可

程式開發體驗--教你開發程式

微信小程式 微信小程式面世以來受到的關注頗多,直到最近我才動手嘗試進行了小程式的開發,總體上感覺還是不錯的,有一點不適應的就是要擺脫Web APP開發對DOM的操作。在這裡我就把我是如何利用API開發微信小程式的過程寫成教程,教大家快速上手體驗一次微信小程式的開發。 補充

Slog71_選取、上傳和顯示本地圖片GET !程式雲開發-全棧時代3

ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 道常無為而無不為 開發環境MacOS(High Sierra 10.13.5) 需要的資訊和資訊源: 前言 ”雲開發

程式按鈕去邊框button去邊框

微信小程式中的button元件預設自帶邊框,而且我們常規的給button設定border: none;或者border: 0;並不能去掉邊框。 無論是內聯樣式還是外聯樣式表都不好使。這是因為微信小程式的button元件的邊框並不在button上,而是在button::after上

程式自定義導航相容各種手機

瞭解小程式預設導航 如上圖所示,微信導航分為兩部分,第一個部分為statusBarHeight,劉海屏手機(iPhone X,小米8等)會比其他的手機高很多,第二部分為titleBarHeight,安卓和IOS的高度不同,但是IOS高度是一樣的,IOS高度是一樣的, 所以我們要實現一個相容不同手機的導

程式自定義日曆帶價格顯示

JS程式碼: var Moment = require("../../utils/moment.js"); var DATE_YEAR = new Date().getFullYear(); var DATE_MONTH = new Date().getMonth()

程式----scroll-view元件MUI索引列表滾動動畫

效果圖 實現原理 利用scroll-view的scroll-into-view屬性進行定位; 利用scroll-view的scroll-with-animation屬性實現滾動動畫

程式之間跳轉無繫結

首頁咱們先說下小程式跳轉到小程式/小遊戲的條件: 開啟同一公眾號下關聯的另一個小程式。(注:必須是同一公眾號下,而非同個 open 賬號下) 基於這個條件,小程式要想跳到一個沒有關聯的小程式或者小遊戲是不可能的。 但如果有一箇中轉站和其他小程式和小遊戲繫結,某個小程式可

程式:雲開發體驗--致我的第一個程式

背景:一直關注微信小程式的發展,看著小程式一步步完善,一步步壯大,心裡癢癢,也想做一個自己的微信小程式,但是苦於只會前端,不會服務端,所以想法一直被卡著。現在小程式有了雲開發,很輕鬆實現後端功能,寫後端跟寫前端沒啥區別,真的是前端小夥伴們的福音啊。 經過幾個晚上的熬夜奮戰,我的第一個微信小程式正式

程式登陸 —— 程式教程系列20

簡介: 微信登陸,在新建一個微信小程式Hello World專案的時候,就可以看到專案中出現了我們的微信頭像,其實這個Hello World專案,就有一個簡化版的微信登陸。只不過是,還沒有寫入到咱們自家的後臺中而已。 新建一個Hello World專案,找到a

程式側邊欄滑動實現附完整原始碼

目錄 一、效果圖 二、原理解析 三、原始碼 四、專案下載 同類文章推薦: 更多幹貨關注公眾號: 一、效果圖 講什麼都不如直接上效果圖好,所以我們先來看下實現效果如何。 通過滑動螢幕,或者點選左上角的圖示按鈕,都能實現側邊欄的劃出效果。   &nb

程式支付C#後臺統一下單

#region 生成簽名 /// <summary> /// 獲取簽名資料 ///</summary> /// <param name="strParam"></param> /// <param name="key"></par

程式控制硬體②】 開始程式旅,匯入程式Mqtt客戶端原始碼,實現簡單的驗證和通訊於伺服器!附帶原始碼

本博文由熱愛分享熱愛技術的半顆心臟原創,非官方人員、非組織名義編寫,博文如有不對或侵犯您的權益,請及時留言,第一時間糾正! 一、前言; 繼續我們的小程式控制智慧硬體(包括esp8266)學

程式——自定義分享按鈕完整版

1.宣告 onShareAppMessage 函式   onShareAppMessage() {          return {        title: '彈出分享時顯示的分享標

程式登入頁例項 —— 程式實戰系列5

提供一個登入頁的案例,供同學們使用 專案效果圖: 目錄結構: 圖片資源: name.png key.png loginLog.jpg login.wxml: <view c