微信小程序----猜数字游戏.

news2024/11/19 14:40:22

目标:简单猜字游戏,系统随机生成一个数,玩家可以猜8次,8次未猜对,游戏结束;未到8次猜对,游戏结束。

思路和要求:

  创建四个页面,“首页”,“开始游戏”,“游戏规则”,“关于我们”。

(1)“首页”:可以点击“开始游戏”、“游戏规则”、“关于我们”,分别跳转到相应页面;

(2)“开始游戏”:初始化以后,随机生成一个数字,玩家可以猜8次,在8次之内猜对,游戏结束,可重新开始;未在8次之内猜对,游戏结束;

(3)“游戏规则”:用文字说明游戏的要求;

(4)“关于我们”:关于游戏开发人员等内容。

注意:创建不使用云服务的js模板的项目。

效果图:

第一步  app.json里面创建了四个页面。

index —— “首页”

game —— “开始游戏”

about —— “关于我们”

rules —— “游戏规则”

接着对页面进行设计,再进行功能设计。

第二步 对每个界面进行设计以及界面的逻辑

        (1)分别自定义每个页面的导航栏的标题

分析:不是全局变量,是局部变量,即分别在页面的json文件自定义导航栏标题。

        (2)设置全局样式,为微信小程序页面设置全局样式。

设置全局样式,为微信小程序页面设置全局样式。

(3)“首页”界面设计

效果图:

        (4)"游戏规则"页面设计

需要组件:text组件。

效果图如下:

        (5)“关于我们”页面进行设计

要求:text组件,主要是为了描述开发者等信息。

效果图:

        (6)“开始游戏”页面设计

划分为:三个板块,分别是:部欢迎语句、表单----输入框and提交按钮、提示语句;

        关键点:样式+内容

        样式如下:

        效果如下:

        页面逻辑:在js文件里面对游戏初始化:

        进入游戏界面,需要随机生成一个数,这个数是正确答案(answer),用户输入框可以输入数字(x),有8次机会,每提交一次(Count)需要有提示语句(tip),判断游戏状态(isGameStart),当正确答案与输入的数值相同时,结束游戏。

页面加载后调用初始化函数:

页面逻辑:

当游戏结束后,不能再输入数字,跳转到一个页面可以重新开始游戏,游戏又回到初始化。

解决办法:

使用block组件,可以使代码为一个整体,通过判断游戏是否结束(使用if else),来显示不同的内容。

效果图:

js代码:

// pages/game/game.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },
   /**
   * 数据初始化
   */
  initial:function () {
    this.setData({
      answer: Math.round(Math.random() * 100),    //随机数
      count: 0,     // 回合数
      tip : '',     //提示语句
      x : -1,       //用户猜的数
      isGageState : true  //游戏状态
    }
    )  
  },

  /*获取用户输入的数字*/
  getNumber(e){
    //console.log(e.detail.value)
    this.setData({x :e.detail.value})
  },

  /*开始猜数字*/
  guess(){
    //获取用户输入的数字
    let x = this.data.x;
    //console.log(x);
    //重置x未获得新数字状态
    this.setData({x: -1});
    if(x < 0){
      wx.showToast({
        title: '不能小于0',
      });
    }else if(x > 100){
      wx.showToast({
        title: '不能大于100',
      });
    }else{
      //回合数增加1
      let count = this.data.count + 1;
      //获取当前提示消息
      let tip = this.data.tip;
      //获取正确答案
      let answer = this.data.answer;
      //判断是否为正确答案
      if(x == answer)
      {
        tip = tip + '\n第' + count + '回合' + x +',猜对了!';
        this.setData({isGageState : false});    //游戏结束
      }else if(x > answer){
        tip = tip + '\n第' + count + '回合' + x +',大了';
      }else{
        tip = tip + '\n第' + count + '回合' + x +',小了!';
      }
      //如果次数为8,游戏结束
      if(count == 8){
        tip = tip + '\n 游戏结束';
        this.setData({isGageState : false});    //游戏结束
      }
      //每次都需要更新原来的值,提示语句和回合数
      this.setData({
        tip : tip,
        count : count
      });
    }
  },
  /* 重新开始
   */
  restartGame(){
    this.initial();
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.initial();

  }
})

总结知识点:

1、<view class = "样式"></view>
2、<button type = "类型" form-type = "reset是将所有输入内容置为初始状态" bindtap = “点击按钮的事件”>内容<button>
3、设置全局样式,如果全局样式需要在这个页面显示

即:使用view组件:<view class = "container"> <view>
4、<text id = "内容,写样式时,需加#">内容<text>
5、<text id = "内容,写样式时,需加#">{{内容未变量时,要将变量放在两个大括号}}<text>
6、<form>表单里面有按钮,点击后提交内容</form>
7、<input bindinput = "输入框事件,一般未获取输入框里面的内容" type = "类型" placeholder = "输入框未输入显示的内容"></input>
js文件里面的知识点总结:
1、在js文件里面调用函数,格式:this.函数名称();
2.js文件初始化,可以写一个初始化函数,使用 this.setData({初始化1,初始化2});setData函数为其赋值。
3、改变变量的值:this.setData({变量名称: 值})
4、想要获取输入框里面的内容,不知道输入框内容是哪一个变量时,可以使用console.log(e)把事件打印出来,通过输入写代码。
5、获取变量:this.data.变量名称
6、使用轻度提示:
        wx.showToast({
                title: '需要提示的·内容,
              });

第三步 四个界面之间的关系

index.wxml代码:

分别点击“开始游戏”、“游戏规则”、“关于我们”字样跳转到对应页面。

index.js代码如下:

Page({

  /**
   * 页面的初始数据
   */
  data: {
    
  },
 goToGame(){
   wx.navigateTo(
     {
       url:'/pages/game/game'
     }
   )
 },

 goToRules(){
  wx.navigateTo(
    {
      url:'/pages/rules/rules'
    }
  )
},
goToAbout(){
  wx.navigateTo(
    {
      url:'/pages/about/about'
    }
  )
}
})

以上为全部内容,如有不正确的地方,敬请批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1540066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AJAX介绍使用案例

文章目录 一、AJAX概念二、AJAX快速入门1、编写AjaxServlet&#xff0c;并使用response输出字符&#xff08;后台代码&#xff09;2、创建XMLHttpRequest对象&#xff1a;用于和服务器交换数据 & 3、向服务器发送请求 & 4、获取服务器响应数据 三、案例-验证用户是否存…

以太坊基金会JUSTIN DRAKE确认出席Hack.Summit() 2024区块链开发者大会

以太坊基金会JUSTIN DRAKE确认将出席由Hack VC主办&#xff0c;AltLayer、Berachain协办&#xff0c;并获得了Solana、The Graph、Blockchain Academy、ScalingX、0G、SNZ以及数码港的大力支持&#xff0c;本次大会由Techub News承办的Hack.Summit() 2024区块链开发者盛会。 Ju…

在Sequence中缓存Niagara粒子轨道

当Sequence中粒子特效较多时&#xff0c;播放检查起来较为麻烦&#xff0c;而使用Niagara缓存功能可将粒子特效方便的缓存起来&#xff0c;并且还可以更改播放速度与正反播放方向&#xff0c;便于修改。 1.使用Niagara缓存需要先在插件里打开NiagaraSimCaching 2.创建一个常…

Linux的学习之路:2、基础指令(1)

一、ls指令 上篇文章已经说了一点点的ls指令&#xff0c;不过那还是不够的&#xff0c;这篇文章会介绍更多的指令&#xff0c;最起码能使用命令行进行一些简单的操作&#xff0c;下面开始介绍了 ls常用选项 -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文件。 -d…

AIGC——ComfyUI SDXL多种风格预设提示词插件安装与使用

概述 SDXL Prompt Styler可以预先给SDXL模型提供了各种预设风格的提示词插件&#xff0c;相当于预先设定好了多种不同风格的词语。使用这个插件&#xff0c;只需从中选取所需的风格&#xff0c;它会自动将选定的风格词汇添加到我们的提示中。 安装 插件地址&#xff1a;http…

鸿蒙一次开发,多端部署(十三)功能开发的一多能力介绍

应用开发至少包含两部分工作&#xff1a; UI页面开发和底层功能开发&#xff08;部分需要联网的应用还会涉及服务端开发&#xff09;。前面章节介绍了如何解决页面适配的问题&#xff0c;本章节主要介绍应用如何解决设备系统能力差异的兼容问题。 系统能力 系统能力&#xff…

基于python+vue电影院订票信息管理系统flask-django-php-nodejs

根据此问题&#xff0c;研发一套电影院订票信息管理系统&#xff0c;既能够大大提高信息的检索、变更与维护的工作效率&#xff0c;也能够方便信息系统的管理运用&#xff0c;从而减少信息管理成本&#xff0c;提高效率。 该电影院订票信息管理系统采用B/S架构、前后端分离以及…

GuLi商城-商品服务-API-三级分类-网关统一配置跨域

参考文档&#xff1a; https://tangzhi.blog.csdn.net/article/details/126754515 https://github.com/OYCodeSite/gulimall-learning/blob/master/docs/%E8%B0%B7%E7%B2%92%E5%95%86%E5%9F%8E%E2%80%94%E5%88%86%E5%B8%83%E5%BC%8F%E5%9F%BA%E7%A1%80.md 谷粒商城-day04-完…

是德科技N9020A信号分析仪

181/2461/8938产品概述&#xff1a; N9020A MXA信号分析仪通过增加针对新一代技术的信号分析和频谱分析能力&#xff0c;具备了中档分析仪的更高性能。它突破了以往分析仪的极限&#xff0c;支持业界更快的信号和频谱分析,实现了速度与性能的更佳优化。 速度 测试速度超过其它…

电子电器架构 —— 诊断数据DTC起始篇(下)

电子电器架构 —— 诊断数据DTC起始篇(下) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再…

Docker学习笔记 - 常用命令

目录 基本概念常用命令使用docker compose启动脚本创建自己的image Docker命令文档 1. 下载一个image 从hub.docker.com下载一个image。 docker pull [image name]下载时指定image的tag。 docker pull [image name]:<tag>举例&#xff0c;下载postgre的tag为alpine…

JetBrains产品激活码激活(IntelliJ IDEA,PyCharm,PhpStorm,WebStorm,CLion,GoLand等)

&#xff08;以 IntelliJ IDEA为例&#xff09; 1.进入激活网址 https://jetbra.in/s 2.选择一个没有安全警告提示的网址进入 3.下载激活文件并解压&#xff08;建议放在与IntelliJ IDEA同级目录下&#xff09; 4.进入IDEA/bin下修改配置文件 &#xff0c;添加下述三行&…

分享:vue3+OpenTiny UI+cesium 实现三维地球

效果图 使用vue3 OpenTiny UI cesium 实现三维地球 node.js > v16.0 opentiny vue3 ui安装指南 https://opentiny.design/tiny-vue/zh-CN/os-theme/docs/installation yarn add opentiny/vue3 项目依赖 "dependencies": {"opentiny/vue": "3…

【LabVIEW FPGA入门】FPGA寄存器(Register)

当您需要从多个时钟域或设计的不同部分访问数据&#xff0c;并且需要编写可重复使用的代码时&#xff0c;可使用寄存器项来存储数据。与 FIFO 相比&#xff0c;寄存器项消耗的 FPGA 逻辑资源更少&#xff0c;而且不消耗块存储器&#xff0c;而块存储器是最有限的 FPGA 资源类型…

AbstractQueuedSynchronizer 独占式源码阅读

概述 ● 一个int成员变量 state 表示同步状态 ● 通过内置的FIFO队列来完成资源获取线程的排队工作 属性 AbstractQueuedSynchronizer属性 /*** 同步队列的头节点 */private transient volatile Node head;/*** 同步队列尾节点&#xff0c;enq 加入*/private transient …

水果销售管理网站|jsp+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

深度学习(二)安装tensorflow深度学习框架

0.前言 速度更新新的一期&#xff0c;快夸奖我。前情提要这是我在window10系统下完成的操作&#xff0c;并不是ubuntu&#xff0c;所以有相应的区别。 1.安装tensorflow和d2l 这里默认大家已经安装好了anconda或者miniconda并且以及创建了虚拟环境。 conda create -n huahuaji…

JavaScript 权威指南第七版(GPT 重译)(六)

第十五章&#xff1a;JavaScript 在 Web 浏览器中 JavaScript 语言是在 1994 年创建的&#xff0c;旨在使 Web 浏览器显示的文档具有动态行为。自那时以来&#xff0c;该语言已经发生了显著的演变&#xff0c;与此同时&#xff0c;Web 平台的范围和功能也迅速增长。今天&#…

浮点数在计算机中的存储

1. 引言 我们知道&#xff0c;整数在计算机中是以二进制补码的形式存储的&#xff0c;那么浮点数呢&#xff1f; 考虑到这个问题&#xff0c;你会感到十分苦恼&#xff0c;因为你并不知道要如何将一个浮点数转化成一段二进制序列。 那我们不妨先来验证一下&#xff0c;整数与…

【Node.js】npx

概述 npx 可以使用户在不安装全局包的情况下&#xff0c;运行已安装在本地项目中的包或者远程仓库中的包。 高版本npm会自带npx命令。 它可以直接运行 node_modules/.bin 下的 exe 可执行文件。而不像之前&#xff0c;我们需要在 scripts 里面配置&#xff0c;然后 npm run …