JS战舰游戏

JS战舰游戏

浏览器将战舰隐藏起来,你的任务是找到并击沉这些战舰。

目标:

通过尽可能少的猜测次数将浏览器的战舰全部击沉。将根据你的表现打分。

玩法:

浏览器将根据提示你猜测的位置,然后你输入网格位置。你猜测后,将显示结果hit、miss、或者you sank my battleship!所有战舰都被击沉后,游戏结束并显示你的得分。

流程

在这里插入图片描述

1、用户启动游戏

  • A、游戏将一艘战舰随机地放在网格中

战舰的网格是虚拟的,创建一艘战舰,并指定它在排列成一行的7个单元格中占据哪三个单元格。在这里插入图片描述

2、开始玩游戏

重复下面的步骤,直到战舰被击沉

  • A、提示用户猜测一个位置

获取用户输入,使用prompt函数。每当需要让用户猜测位置时,就使用prompt来显示一条消息,并从用户那里获取输入(一个0~6的数字)。

  • B、将用户猜测的位置与战舰的位置进行比较,确定结果是击中、未击中还是击沉。

检查用户的输入是否是战舰占据的三个单元格之一。在一个变量中记录击中的次数。

3、游戏结束

根据猜测次数给用户打分。

战舰的3个位置都被击中且击中的次数为3时游戏结束。告诉用户他猜测了多少次才将战舰击沉。

编写伪代码

  • 声明三个战舰位置变量,用于存储战舰占据的各个单元格。将这些变量命名为location1、location2、location3。
  • 声明一个存储用户猜测的表量,将其命名为guess。
  • 声明一个存储击中次数的变量,将其命名为hits,并初始化为0。
  • 声明一个存储猜测次数的变量,将其命名为guesses,并初始化为0。
  • 声明一个记录战舰是否被击沉的变量,将其命名为isSunk并初始化为false。

循环:只要战舰未被击沉

游戏逻辑
//循环开始

  • 获取用户的猜测
    将用户输入与有效的输入值进行比较

  • 如果用户的猜测无效
           就显示让用户输入有效数字

  • 否则
           将猜测次数加1

    • 如果用户猜测的是战舰战舰的位置之一
              就将击中次数 +1
      • 如果击中的次数为3
        • 就将isSunk设置为true
        • 并向用户显示You sank my battleship!
      • 如果到此结束
    • 如果到此结束
  • 否则到此结束
    //循环结束

向用户显示统计信息

        // 声明三个战舰位置变量
        var location1=3;
        var location2=4;
        var location3=5;
        // 声明一个存储用户猜测的表量
        var guess;
        // 声明一个存储击中次数的变量
        var hits=0;
        // 声明一个存储猜测次数的变量
        var guesses=0;
        // 声明一个记录战舰是否被击沉的变量
        var isSunk=false;

        // 创建循环:只要战舰未被击沉,并获取用户输入
        while(isSunk==false){  //战舰一旦被击中,isSunk=true
            // 获取用户猜测
            guess=prompt("Ready,aim,fire!(enter a number 0~6):");
            // 检查用户猜测
            if(guess<0||guess>6){
                alert("Please enter a valid cell number!");
            }else{
                guesses=guesses+1;
                
                if(guess==location1||guess==location2||guess==location3){
                    alert("HIT!");
                    hits=hits+1;
                    if(hits==3){
                        isSunk=true;
                        alert("You sank my battleship!");
                    }
                }else{
                    alert("MISS!");
                }
            }
        }
        var stats="You took"+guesses+"guesses to sink the battleship,"+"which means your shooting accuracy was "+(3/guesses);
        alert(stats);

猜你喜欢

转载自blog.csdn.net/Sonnenlicht77/article/details/104145539