24点纸牌游戏

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

作业提示:
用穷举法列出四个数加上三个运算符号所构成的表达式所有可能的结果,或 实现一个简单的计算器判断用户的输入是否正确(用栈来实现)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值