Prolog 'is'语句报错调试:WWESupercard卡牌对战统计逻辑问题
WWESupercard卡牌对战的Prolog实现问题
我需要实现WWESupercard游戏中的两张卡牌对战逻辑:单独比较每项属性及所有组合(共10次比较),当一方获胜次数超过50%(即6/10)时判定为胜。
目前我在使用Prolog的is语句时遇到了问题,以下是我仅用基础属性(未使用组合属性)进行测试的代码尝试:
leGana(X,Y) :- T is 0, ((A is 0, (pwr(X,Y) -> A1 is A+1)); (B is 0, (tgh(X,Y) -> B1 is B+1)); (C is 0, (spd(X,Y) -> C1 is C+1)); (D is 0, (cha(X,Y) -> D1 is D+1))), T1 is T+A1+B1+C1+D1, T1 > 2. leGana(X,Y) :- T is 0, ((pwr(X,Y) -> T is T+1); (tgh(X,Y) -> T is T+1); (spd(X,Y) -> T is T+1); (cha(X,Y) -> T is T+1)), T1 > 2.
我尝试了多种方式,但反复出现两类错误:
- 执行
T is T+1时报错,提示0 is 0+1并失败; - 在第一版代码中,执行
A1 is A+1得到1 is 0+1后,直接跳转到最后一行,出现T1 is 0+1+_1543+_1546...的未绑定变量问题。
内容的提问来源于stack exchange,提问作者ZMaru
相关产品推荐
相关产品推荐

