• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > JS猜数字游戏如何判断一个数字是否被猜过?

JS猜数字游戏如何判断一个数字是否被猜过?

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含等相关知识,匿名希望在学习及工作中可以帮助到您
写一个竞猜游戏,用户必须猜一个秘密的数字,在每次猜完后程序会告诉用户他猜的数是太大了还是太小了,直到猜测正确,最后打印出猜测的次数。如果用户连续猜测同一个数字则只算一次。

我就是不知道怎么实现“如果用户连续猜测同一个数字则只算一次。”

没有思路,下面附上我写的代码,就是不知道实现最后一句。

如果有大神看到的话帮忙回答下,真的是想不出来。

回复内容:

涉及到javascript中的一个很有用的点:把object当hash来用

/** * * 用object当做hash来记录猜过的数字 * 假设把所有猜过的数字存在一个array中, 其中有重复的数字 * [1, 2, 5, 6, 3, 5, 1, 6, 2, 6] * */ var guesses = [1, 2, 5, 6, 3, 5, 1, 6, 2, 6]; var guessesHash = {}; var guessesCount = 0; // total guess count exclude duplicated guesses for (var i = 0; i < guesses.length; i++) { if (!guessesHash[guesses[i]]) { guessesHash[guesses[i]] = true; guessesCount++; } } console.log(guessesCount); // should be 5 /** * * 当for loop中的i = 4时,guessesHash为: * { * ‘1’: true, * '2': true, * '3': true, * '5': true, * '6': true, * } * 当for loop中的i = 5时,因为guessesHash[guesses[i]]是true, * 所以guessesCount++不会执行。 * 换句话说,for loop中一旦遇到重复的数字guessesCount++就不会执行 * * * */ 用数组或者object把输入过的数存起来即可。
var history={}, secret=4; // https://www.xkcd.com/221/ do { var input=parseInt(prompt('输入数字: ')); history[input]=true; if(input>secret) alert('比这个小'); else if(input<secret) alert('比这个大'); } while(input!==secret); var count=0; for(var _ in history) count++; alert('你猜了 '+count+' 次'); })(); 定义个全局变量,记录用户每次输入的值,一样的值不做重复记录,不一样的记录。最后看看这个变量的数。。。。 第一种方法:建个数组,用户输入时检查数组最后一个数是否和输入相等,不相等就push进去。最后输出数组的长度就好了。
第二种方法:不管用户输入是否有连续重复的数字,都push到一个数组里,最后把连续的数字剔除掉之后的长度就好了。这样问题就变成了:实现一个函数,用户输入:[1,2,2,2,3,3,4,4,4,5,5],要求输出为5 (即[1,2,3,4,5]的长度)。
function getLength(arr) { return arr.filter(function(v,i,arr){ return v!==arr[i-1]; }).length; } console.log(getLength(arr)); // 5 var n=0;
var lastAnswer=null;
//var 答案数组=[];//题主的问题里没有要求记录用户输入的答案,如果有需求的话,就加上这个。
function 用户输入之后的处理函数(int 用户输入的值){
if(lastAnswer!=用户输入的值){
n++;
lastAnswer=用户输入的值;
//答案数组.push(用户输入的值);//题主的问题里没有要求记录用户输入的答案,如果有需求的话,就加上这个。
//和正确答案比较。
}
else{
//连续猜测同一个数字;
}
} 不知道间隔猜测同样的数字算不算你说的连续输入相同的数字 ?不过原理是一样的 :
声明一个数组 ,里面放之前猜测过的数字,每次输入新数字时到数组中查找是否已存在,已经存在的,则跳过。 参考数组去重,很简单实现 把每次数字存入数组,对比数字和数组最后一个数是否相等。 hash虽说不太懂大概意思就是再弄一个数组 专门放这个数字猜没猜过? 这不是很简单么,两个变量的事,一个答案,一个是上次的值

您可能想查找下面的文章:

相关文章

  • 2018-12-03想学习 HTML5 ,应该怎么入门? 有什么好点的书推荐的吗?
  • 2017-08-06HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
  • 2018-12-03HTML5中的article标签是什么?HTML5中的article元素用在什么地方?
  • 2018-12-03HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍_html5教程技巧
  • 2018-12-03HTML5 Canvas绘图使用详解
  • 2018-12-03利用JS+HTML5实现图片上传预览效果(实例)
  • 2018-12-03H5启动APP原生页面的实例方法
  • 2018-12-03HTML5应用-欢乐老虎机的实现代码
  • 2018-12-03 HTML5中classList属性
  • 2017-08-06HTML5中的强制下载属性download使用实例解析

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 如何解决微信通过H5页面直接打开本地app
    • HTML5新特性之Web Worker
    • 5个Java开发人员必须重视HTML5的理由
    • 基于HTML5的可预览多图片Ajax上传
    • HTML5 WebSocket实现聊天室的代码示例
    • 有关变幻的课程推荐4篇
    • vue实现图片滚动效果
    • html5的新增的标签和废除的标签简要概述
    • HTML5语音识别标签写法附图
    • html5指南-5.使用web storage存储键值对的数据_html5教程技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有