bash - 根据玩家的尝试次数更新分数
问题描述
早上好,伙计们,我早些时候在做这个项目时遇到了这个问题,它是这样的:我需要改变这个游戏中玩家的分数,这取决于玩家是否猜到了写在第一次尝试他得到 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
解决方案
您描述的功能“尝试次数”->“分数”是score(tries) = 4 - tries
:
tries score 4 - tries
1 3 3
2 2 2
3 1 1
您当前的代码维护$cpt
var 中的尝试次数,因此我将从该变量中得出分数:
score=$(( 4 - cpt ))
作为旁注,您似乎在滥用该$tentative
变量。据我所知,它应该描述最大尝试次数,在这种情况下:
- 它不应该在你的 else 块中更新;无论您是否失败,最大尝试次数保持不变(这是当前的尝试次数发生了变化,但您已经
$cpt
在 if/else 之外处理了它) - 它应该用在两个地方:第一个
echo
输出用户尝试了多少次,在while
's 条件下测试用户是否已达到最大尝试次数。
推荐阅读
- kotlin - 如何打开自动生成的文件级类
- dart - 从字符串到可用作类型参数的类型
- python - 查询模型的外键
- vue.js - VueJS:不打印方法中返回的数据
- android - Gridlayout 显示 4 条记录,但在我更改 rowCount 并增加到 6 后,它没有在 android 中显示
- swift - SwiftUI 调整矩形以适应内容
- entity-framework-core - EF Core:自动将枚举保存为字符串,而不为每个属性调用 HasConversion
- python-3.x - 如何从 jupyter notebook 访问 HUE?
- vb.net - vb.net Randomising 独特的按钮设置按钮?
- vb.net - 如何在 VB.net 中创建 Win 应用程序设置时询问许可证文件