首页 > 解决方案 > 根据玩家的尝试次数更新分数

问题描述

早上好,伙计们,我早些时候在做这个项目时遇到了这个问题,它是这样的:我需要改变这个游戏中玩家的分数,这取决于玩家是否猜到了写在第一次尝试他得到 3 分,第二次得到 2 分,鞭打得到 1 分,为了清楚地看到这就是我的代码的样子:

#!/bin/bash

tentative=3
cpt=0
score=0

echo "Votre nombre de tentative est 3"
cut -d: -f3 Facile.txt       
MotCorrect=$(cut -d: -f2 Facile.txt )        
while [ $cpt -lt 3 ] 
                do         
                        echo "QuiSuisJe?"
                        read QuiSuisJe
                    `enter code here`cpt=`expr $cpt + 1`

                    if [ $QuiSuisJe == $MotCorrect ]                       
                        then
                        echo "Correct"
                        cptScore=`expr $cptScore+3`
                         score=$((score+3))
                        echo "$score"
                break                 
                    else
                     tentative=`expr $tentative - $cpt`
                    echo "Votre reponse n'est pas Correct."
                    fi


            done 

标签: bashshell

解决方案


您描述的功能“尝试次数”->“分数”是score(tries) = 4 - tries

tries    score    4 - tries
  1        3          3  
  2        2          2
  3        1          1

您当前的代码维护$cptvar 中的尝试次数,因此我将从该变量中得出分数:

score=$(( 4 - cpt ))

作为旁注,您似乎在滥用该$tentative变量。据我所知,它应该描述最大尝试次数,在这种情况下:

  • 它不应该在你的 else 块中更新;无论您是否失败,最大尝试次数保持不变(这是当前的尝试次数发生了变化,但您已经$cpt在 if/else 之外处理了它)
  • 它应该用在两个地方:第一个echo输出用户尝试了多少次,在while's 条件下测试用户是否已达到最大尝试次数。

推荐阅读