簡單的四位二進制運算遊戲依靠人腦計算二進制數值,階乘類型的,我使用的是python3.0+實現的。python
思路:數組
1,首先咱們要產生隨機題目,並且後續能夠擴展難度:app
2,問題有了,就要生成四個答案,其中一個爲正確答案:dom
3,問題只有一個惟一正確的答案,而由於難度不一樣答案也會不同:ide
4,再寫一個用於在cmd環境下退出的方法:函數
5,寫一下游戲的主體邏輯方法和一些小小的優化:優化
6,最後咱們加入一個異常捕捉,就大功告成了!spa
運行的結果:命令行
軟件所有的源碼:3d
1 # -*- coding: GB2312 -*- 2 import random #用來生成隨機數的函數 3 import os #支持cmd命令行 4 5 def roll_dice(numbers,points):#隨機生成題目 6 if points is None: 7 points = [] # points爲空列表,後續能夠插入新值到該列表 8 while numbers > 0: 9 point = random.randrange(0,2)#生成0-1的隨機數 10 points.append(point) # 用append()方法將point數值插入points列表中 11 numbers = numbers - 1# 完成一次,numbers減1,當小於等於0時再也不執行該循環 12 return points 13 def roll_ys(number,points_ys):#隨機的生成答案 14 numbers=3 15 if points_ys is None: 16 points_ys = [] # points爲空列表,後續能夠插入新值到該列表 17 while numbers > 0: 18 if number == 4: 19 point = random.randrange(1,17)#生成1-16的隨機數 20 elif number == 5: 21 point = random.randrange(1,33)#生成1-32的隨機數 22 elif number == 6: 23 point = random.randrange(1,65)#生成1-64的隨機數 24 elif number == 7: 25 point = random.randrange(1,129)#生成1-128的隨機數 26 elif number == 8: 27 point = random.randrange(1,257)#生成1-256的隨機數 28 if point not in points_ys: 29 points_ys.append(point) # 用append()方法將point數值插入points列表中 30 numbers = numbers - 1# 完成一次,numbers減1,當小於等於0時再也不執行該循環 31 return points_ys 32 def ex():#退出方法 33 os.system('echo 本遊戲由steven製做,版權屬於16軟件五班一組!') 34 os.system('echo 按任意鍵退出!') 35 os.system('pause>nul') 36 def suanfa(points):#計算難度的正確答案 37 if len(points)==4: 38 ppt = (1 * points[3]) + (2 * points[2]) + (4 * points[1]) + (8 * points[0]) 39 return ppt 40 if len(points)==5: 41 ppt = (1 * points[4]) + (2 * points[3]) + (4 * points[2]) + (8 * points[1])+(16 * points[0]) 42 return ppt 43 if len(points)==6: 44 ppt = (1 * points[5]) + (2 * points[4]) + (4 * points[3]) + (8 * points[2])+(16 * points[1])+(32 * points[0]) 45 return ppt 46 if len(points)==7: 47 ppt = (1 * points[6]) + (2 * points[5]) + (4 * points[4]) + (8 * points[3])+(16 * points[2])+(32 * points[1])+(64 * points[0]) 48 return ppt 49 if len(points)==8: 50 ppt = (1 * points[7]) + (2 * points[6]) + (4 * points[5]) + (8 * points[4])+(16 * points[3])+(32 * points[2])+(64 * points[1])+(128 * points[0]) 51 return ppt 52 def start_game():#開始遊戲 53 #定義須要的數組 54 zcl = 0 55 cwl = 0 56 cs = 0 57 zc = 0 58 cw = 0 59 lu = 1 60 #提示語句 61 print ("本遊戲由steven製做,版權屬於16軟件五班一組!") 62 print ("-----二進制遊戲?想考的好?不存在的!------") 63 print ('----- 遊戲如今正式開始 -----') 64 number = int(input('請輸入挑戰的等級(4-8)')) 65 while 1:#遊戲主循環 66 points = roll_dice(number,points = None) 67 pt = suanfa(points) 68 points_ys = roll_ys(number,points_ys = None) 69 if pt == 0:#判斷是否爲空值 70 continue 71 if pt in points_ys:#檢測pt在points_ys是否存在,存在即隨機增長數值po插入 72 po = random.randrange(3,6) 73 po+=pt 74 points_ys.append(po) 75 else: 76 points_ys.append(pt) 77 points_ys.sort() 78 print ('第%s輪,給出的二進制是:'%lu,points) 79 print ('結果的數字多是是:',points_ys) 80 if lu >= 2:#退出語句判斷條件 81 print ("如今,你能夠輸入5167來退出遊戲") 82 your_choice = input('請回答:') #賦值爲points_ys值,用戶需輸入爲正確數值才能夠 83 if your_choice == "5167" :#結算條件 84 zcl = (zc/cs)*100 85 cwl = (cw/cs)*100 86 print ("本次挑戰: \n \t 正確率爲%s"%zcl+"%"+"\n \t 錯誤率爲%s"%cwl+"%") 87 if 100 >= zcl > 90: 88 print ("你真的很不錯,期待下一次你依舊能夠創造奇蹟!") 89 ex() 90 exit() 91 elif 90 >zcl >= 50: 92 print ("你還須要努力,加油少年!") 93 ex() 94 exit() 95 96 else: 97 print ("佩服佩服,你的數學是體育老師教的麼?") 98 ex() 99 exit() 100 101 if int(your_choice) == pt:#判斷正確 102 print ("正確") 103 float(zcl) 104 lu+=1 105 cs+=1 106 zc+=1 107 zcl = (zc/cs)*100 108 print ("正確率爲%s"%zcl+"%") 109 print ("請再接再礪!") 110 continue 111 else:#判斷錯誤 112 print ("錯誤") 113 float(cwl) 114 cs+=1 115 cw+=1 116 lu+=1 117 cwl = (cw/cs)*100 118 print ("錯誤率爲%s"%cwl+"%") 119 print ("正確答案爲%s"%pt) 120 continue 121 122 123 try:#異常捕捉 124 os.system('title 本遊戲由steven製做,版權屬於16軟件五班一組!版本v0.5') 125 start_game() 126 except ValueError:#防止亂輸入的問題 127 print ("輸入有誤,請從新輸入!") 128 start_game()
本文全部權利歸山河故我全部,轉載請標明出處!