宠物胜利判断
上一节
下一节
区块宠物胜利了
有了 winCount 和 lossCount,我们可以根据区块宠物的斗舞局输赢来更新这两个数值。
在之前的步骤里我们计算出来一个0到100的随机数。现在让我们用这个随机数来公平的决定谁赢谁输。
在我们处理输赢的时候,还需要用到之前提到的if else和? :等 solidity 流程控制语句
三元表达式 ? :语句
三元表达式语句的语法在 Solidity 中,与在 JavaScript 中差不多:
expr1) ? (expr2) : (expr3)
在 expr1 值为 TRUE 时的值为 expr2,在 expr1 值为 FALSE 时的值为 expr3。
// sumOfAdd - 10 < 0 时,sumOfAdd = 0,否则sumOfAdd = sumOfAdd - 10 sumOfAdd = sumOfAdd -10 < 0 ? 0 : sumOfAdd - 10;
实战演习
1.创建一个 if 语句来检查 rand 是不是 小于等于 battleVictoryProbability。
2.如果以上条件为 true, 我们的区块宠物就赢了!所以:
a. 增加 myPet 的 winCount
b. 增加 myPet 的 level(升级啦!!!!!!!)
c. 增加 enemyPet 的 lossCount (输家!!!!!!)
d. 三元表达式计算enemyPet的strength,如果此时strength减去输掉比赛的2的结果小于0则strength等于0,否则strength减去2
e. 增加if判断,判断myPet的strength是否大于0
f.判断结构内部调用mateAndMulitply,参数分别为_petId, enemyPet.dna, "pet"


