24点纸牌游戏
第3章
24点游戏是经典的纸牌益智游戏。
常见游戏规则:
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。
1.程序风格良好(使用自定义注释模板)
2.列出表达式无重复。
算法设计思路:对牌的顺序、括号位置、可能的运算符穷举,直到找到解法
知识点:递归思想,python中排列组合
测试结果:
提高要求:用户初始生命值为一给定值(比如3),初始分数为0。随机生成4个代表扑克牌牌面的数字或字母,由用户输入包含这4个数字或字母的运算表达式(可包含括号),如果表达式计算结果为24则代表用户赢了此局。
1. 程序风格良好(使用自定义注释模板)
2.使用计时器要求用户在规定时间内输入表达式,如果规定时间内运算正确则加分,超时或运算错误则进入下一题并减少生命值(不扣分)。
3.所有成绩均可记录在TopList.txt文件中。
1、随机四张牌输出得分:
def main():
life = 3
score = 0
while life != 0:
# 随机四张牌
card1 = random.sample(range(1, 13), 4)
find_24(card1)
if find_24(card1):
score += 1
else:
life -= 1
print(‘得分为:’, score)
2、用户输入表达式,输出得分
def main():
life = 3
score = 0
while life != 0:
# 随机四张牌
# card1 = random.sample(range(1, 13), 4)
card = input(‘请输入所指代四张牌的数字:’)
card = card.split(’,’)
print(card)
ops = input(‘请从’’+’’、’’-’’、’’*’’、’’/’‘中选三个输入:’)
ops = ops.split(’,’)
print(ops)
find_24(card, ops)
if find_24(card, ops):
score += 1
else:
life -= 1
if life == 0:
print(‘gameover!!!’)
print(‘得分为:’, score)
请输入所指代四张牌的数字:12,8,10,1
[‘12’, ‘8’, ‘10’, ‘1’]
请从+、-、、/中选三个输入:,-,/
[’’, ‘-’, ‘/’]
计算牌:12,8,10,1
你赢了!!!(12(10-(8/1)))=24
计算牌:12,8,10,1
你赢了!!!(12*(10-(8/1)))=24
请输入所指代四张牌的数字:1,2,3,4
[‘1’, ‘2’, ‘3’, ‘4’]
请从+、-、、/中选三个输入:+,/,-
[’+’, ‘/’, ‘-’]
计算牌:1,2,3,4
没有找到解法
计算牌:1,2,3,4
没有找到解法
请输入所指代四张牌的数字:3,6,9,13
[‘3’, ‘6’, ‘9’, ‘13’]
请从+、-、、/中选三个输入:+,/,*
[’+’, ‘/’, ‘*’]
计算牌:3,6,9,13
你赢了!!!(((3+13)/6)9)=24
计算牌:3,6,9,13
你赢了!!!(((3+13)/6)9)=24
请输入所指代四张牌的数字:1,2,3,4
[‘1’, ‘2’, ‘3’, ‘4’]
请从+、-、、/中选三个输入:+,-,/
[’+’, ‘-’, ‘/’]
计算牌:1,2,3,4
没有找到解法
计算牌:1,2,3,4
没有找到解法
请输入所指代四张牌的数字:1,2,3,4
[‘1’, ‘2’, ‘3’, ‘4’]
请从+、-、、/中选三个输入:+,-,/
[’+’, ‘-’, ‘/’]
计算牌:1,2,3,4
没有找到解法
计算牌:1,2,3,4
没有找到解法
gameover!!!
得分为: 2
软件1508020145张三.rar
作业提示:
用穷举法列出四个数加上三个运算符号所构成的表达式所有可能的结果,或 实现一个简单的计算器判断用户的输入是否正确(用栈来实现)。