24點遊戲是經典的紙牌益智遊戲。
我的思路是把這4個數分成2部分,前兩個數一起,後兩個數一起,先計算除前兩個數所有可能的結果和後兩個數所有可能的結果。最後將它們的結果互相計算,結果與24比較,如果等於24則成功。
建立使用者類,整個遊戲的體系就是建立乙個使用者類來儲存使用者的資訊,如姓名,生命值,分數等,在類裡定義函式引導使用者輸入算術式進行遊戲
**如下:
from random import randint
import time
poker_dict =
cal_list =
['+'
,'-'
,'*'
,'/'
]tmp_list1 =
# 存放前兩個數所有計算結果
tmp_list2 =
# 存放後兩個數計算結果
results =
# 存放運算結果=24的所有式子
num_list =
class
user()
:def
__init__
(self, name)
: self.name = name
self.life =
3 self.score =
0 self.nums =
defuser_input
(self)
:return
input
("\n歡迎您"
+ name +
"\n請輸入包含這四個牌的運算表示式(你有60s時間輸入,否則失敗!如果表示式的結果為24,你將贏得該局!)\n"
)def
poker
(self)
:for i in
range(4
):element = randint(1,
13)print
(self.nums)
return self.nums
defjudge
(self)
:while
true
: flag =
true
start_time = time.time(
) str_inp = self.user_input(
) end_time = time.time()if
(end_time-start_time)
<60:
for i in self.nums:
ifstr
(i)not
in str_inp:
flag =
false
print
(flag)
if flag is
true:if
eval
(str_inp)
==24
:print
("恭喜贏得本局勝利!"
) self.score +=
10else
:print
("很遺憾,計算的結果不等於24。"
) self.life -=
1break
else
:print
("輸入的數必須是你的牌數!"
)else
: self.life -=
1print
("您超時了 生命值-1"
)
下面定義的函式就是計算兩個數之間所有可能的計算結果:
def
cal(num_1, num_2, temp_list,
*args)
:for j in cal_list:
if args and
eval
(str
(num_1)
+ j +
str(num_2))==
24:# 如果引數args存在說明是進行最後的運算,需要判斷是否等於24
str(num_1)
+ j +
str(num_2)
)elif
len(args)==0
:# 如果沒有傳入args引數說明只是第一次運算,將結果存入相應的字典就可以
temp_list[
str(num_1)
+ j +
str(num_2)]=
(eval
(str
(num_1)
+ j +
str(num_2)))
ifeval
(str
(num_1)
+ j +
str(num_2))!=
eval
(str
(num_2)
+ j +
str(num_1)):
temp_list[
str(num_2)
+ j +
str(num_1)]=
(eval
(str
(num_2)
+ j +
str(num_1)
))
判斷是否等於24:
def
is24()
: i =
0while i <3:
if i ==0:
# 將前兩個數的所有計算結果以及表示式存入字典
cal(num_list[i]
, num_list[i +1]
, tmp_list1) tmp_list1
else
:# 將後兩個數的所有計算結果以及表示式存入字典
cal(num_list[i]
, num_list[i +1]
, tmp_list2) tmp_list2
i +=
2for i in tmp_list1:
for j in tmp_list2:
# 對這兩個字典進行迴圈,計算這兩個之間所有的結果 如果等於24將其表示式存入results列表
cal(i, j, results,
1)
在main方法裡對使用者例項化並呼叫方法開始遊戲:
if __name__ ==
'__main__'
: name =
input
("請輸入你的名字:"
) user = user(name)
poke = user.poker(
)print
("你抽到的四張牌是:"
)for i in poke:
print
(poker_dict.get(i)
, end=
" "
)while user.life >0:
user.judge(
)print
(num_list)
is24()if
len(results)==0
:print
("這四個數無法組成等於24的算術式"
)else
:print
("您的三次機會用完,下面是所有答案"
)for i in results:
print
(i)
1.使用者勝利:
2.輸入結果不等於24:
3.三次輸入錯誤程式列出所有可能性:
4.超時輸入:
Javascript實現24點遊戲
你有 4 張寫有 1 到 9 數字的牌。你需要判斷是否能通過 的運算得到 241.除法運算子 表示實數除法,而不是整數除法。例如 4 1 2 3 12 2.每個運算子對兩個數進行運算。特別是我們不能用 作為一元運算子。例如,1,1,1,1 作為輸入時,表示式 1 1 1 1 是不允許的 3.你不能將...
Python 「24點遊戲的簡單實現「
問題描述 從撲克中每次取出4張牌。使用加減乘除,第乙個能得出24者為贏。其中,j代表11,q代表12,k代表13,a代表1 按照要求程式設計解決24點遊戲。思路 1 隨機產生四個數 1 13 將其排列組合結果去重新增到乙個列表中 2 列舉計算並去重 3 顯示 author yyx date 2018...
24點遊戲的java實現
1 計算方式的改變 引入分數計算概念 求24點涉及到除法,所以必須轉變直接計算的思路。經過一段時間的摸索,本人發現可以採用分數計算。任何兩個數的計算都可以轉換成對應的分數計算形式。例如 3 8 可以轉換成 3 1 8 1 1.1 待計算數字的初始化 於是待計算的4個值必須先轉換成分數 private...