不簡單的二進制運算遊戲-python3.0

簡單的四位二進制運算遊戲依靠人腦計算二進制數值,階乘類型的,我使用的是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()
View Code

 

本文全部權利歸山河故我全部,轉載請標明出處!

相關文章
相關標籤/搜索