JS基础学习第二天:猜数字游戏
来源:互联网 发布:网络语卡带是什么意思 编辑:程序博客网 时间:2024/06/06 09:40
像程序员一样思考
编程中学习的最困难的事情之一不是我们需要学习的语法,而是如何应用它来解决现实世界的问题。 您需要像一个程序员一样开始思考——这通常涉及到对程序需要做什么样描述,以及实现这些东西需要什么代码特性,以及如何使它们一起工作。
这需要努力工作,编程语法的经验和实践的混合,以及一点创造力。 我们编写的代码越多,我们的本领就越好。 我们不能保证您将在5分钟内开发“程序员大脑”,但我们将给您很多机会像整个课程中的程序员一样练习思维。
考虑到这一点,让我们看看我们将在本文中构建的示例,并查看将其分解为有形任务的一般过程。
例子-猜数字游戏
在本文中。我们将演示如何构建下面看到的简单游戏
--------------------------------------------------------------------------------------------------------
我想让你创建一个可以猜数字的游戏,它会在1~100以内随机选择一个数, 然后让玩家挑战在10轮以内猜出这个数字,每一轮都要告诉玩家正确或者错误, 如果出错了,则告诉他数字是低了还是高了,并且还要告诉玩家之前猜的数字是什么。 一旦玩家猜测正确,或者他们用完了回合,游戏将结束。 游戏结束后,可以让玩家选择再次开始
---------------------------------------------------------------------------------------------------------
看到这个要求,我们可以做的第一件事是开始把它分解成简单的可操作的任务,尽可能从程序员的思维去思考:
1.生成1到100之间的随机数。
2.记录玩家在第几轮。从1开始。
3.为玩家提供一种猜测数字的方法。
4. 一旦提交了猜测,首先将它记录在某处,以便用户可以看到他们先前的猜测。
5.接下来检查它是否是正确的数字。
6. 如果是正确的:
1.显示祝贺消息。
2.阻止玩家输入更多的猜测(这会使游戏混乱)。
3.显示控制允许玩家重新开始游戏。
7.如果它错了,并且玩家有剩余轮次:
1.告诉玩家他们错了。
2.允许他们输入另一个猜测。
3.将圈数增加1。
8.如果它是错误的,并且玩家没有剩余轮次:
1.告诉玩家游戏结束。
2.阻止玩家输入更多的猜测(这会使游戏混乱)。
3.显示控制允许玩家重新开始游戏。
9一旦游戏重新启动,请确保游戏逻辑和用户界面完全重置,然后返回步骤1。
让我们继续,看看我们如何将这些步骤转换为代码,构建示例,并探索JavaScript的功能。
初始化设置
//css html { font-family: sans-serif; } body { width: 50%; max-width: 800px; min-width: 480px; margin: 0 auto; } .lastResult { color: white; padding: 3px; }
//html <h1>Number guessing game</h1> <p>We have selected a random number between 1 and 100. See if you can guess it in 10 turns or fewer. We'll tell you if your guess was too high or too low.</p> <div class="form"> <label for="guessField">Enter a guess: </label> <input type="text" id="guessField" class="guessField"> <input type="submit" value="Submit guess" class="guessSubmit"> </div> <div class="resultParas"> <p class="guesses"></p> <p class="lastResult"></p> <p class="lowOrHi"></p> </div>添加变量保存数据
//js var randomNumber = Math.floor(Math.random() * 100) + 1; console.log(randomNumber) var guesses = document.querySelector('.guesses'); var lastResult = document.querySelector('.lastResult'); var lowOrHi = document.querySelector('.lowOrHi'); var guessSubmit =document.querySelector('.guessSubmit'); var guessField =document.querySelector('.guessField'); var guessCount = 1; var resetButton;条件
function checkGuess() { var userGuess = Number(guessField.value); if (guessCount === 1) { guesses.textContent = 'prevous guesses: '; } guesses.textContent += userGuess + ' '; if (userGuess === randomNumber) { lastResult.textContent = 'Congratulations! You got it right!'; lastResult.style.backgroundColor = 'green'; lowOrHi.textContent = ''; setGameOver(); } else if (guessCount === 10) { lastResult.textContent = '!!!GAME OVER!!!'; setGameOver(); } else { lastResult.textContent = 'Wrong!'; lastResult.style.backgroundColor = 'red'; if(userGuess < randomNumber) { lowOrHi.textContent = 'Last guess was too low!'; } else if(userGuess > randomNumber) { lowOrHi.textContent = 'Last guess was too high!'; } } guessCount++; guessField.value = ''; guessField.focus(); }
事件
点击Submit按钮,检测输入的值是否等于randomNumber!
guessSubmit.addEventListener('click', checkGuess);
完善
宣布游戏结束 并重置游戏!
function setGameOver() { guessField.disabled = true; guessSubmit.disabled = true; resetButton = document.createElement('button'); resetButton.textContent = 'Start new game!'; document.body.appendChild(resetButton); resetButton.addEventListener('click',resetGame); } function resetGame() { guessCount = 1; var resetParas = document.querySelectorAll('.resultParas p'); for (var i = 0 ; i < resetParas.length ; i++) { resetParas[i].textContent = ''; }; resetButton.parentNode.removeChild(resetButton); guessField.disabled = false; guessSubmit.disabled = false; guessField.value = ''; guessField.focus(); lastResult.style.backgroundColor = 'white'; randomNumber = Math.floor(Math.random() * 100) + 1; console.log(randomNumber); }
- JS基础学习第二天:猜数字游戏
- JS猜数字游戏
- js学习第二天
- JS学习第二天
- Python学习 猜数字游戏
- JS猜数字游戏改良版
- java基础作业之猜数字游戏;
- 【基础编程】猜数字游戏的提示
- C#基础-024 猜数字游戏
- JS学习笔记第二天
- 第二天,Java基础学习
- Java基础学习第二天
- 学习第二天:java基础
- C# 基础学习第二天
- java基础学习第二天
- Java基础学习第二天
- Java基础学习第二天
- 记录基础学习第二天
- JEECMS——前言
- css控制单行文字自动显示省略号
- 云星数据---Scala实战系列(精品版)】:Scala入门教程034-Scala实战源码-Scala apply方法02 初始化对象
- HTML中 CSS去除li前面的小黑点
- 每天回顾linux命令(who)
- JS基础学习第二天:猜数字游戏
- Vue.extend构造器的延伸
- [BZOJ]4530 [BJOI2014] 大融合 LCT维护子树信息
- Javase—集合框架Set
- 关于投稿
- Lua语法学习(一)
- Java的运行机制
- JSP中的九大内置对象
- mybatis如何遍历Map的key和value