国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

用python寫掃雷游戲實例代碼分享

2020-02-15 21:31:38
字體:
來源:轉載
供稿:網友

掃雷是一個非常經典的WIN游戲,我們教給大家用python語言來寫出這個游戲,以下是全部實例代碼:

#!/usr/bin/python#coding:utf-8#python 寫的掃雷游戲import sysimport randomclass MineSweeping():  #掃雷主程序  def __init__(self,row = 8 ,line= 8,mineNum = 15):    self.row = row    self.line = line    self.score = 0 #分數    self.mineNum = mineNum    self.xy_list = [[0 for i in range(self.line)] for i in range(self.row)]  def initData(self):    # 初始化狀態值    # 游戲開始的時候狀態值為清零(再重新設置狀態值)    self.xy_list = [[0 for i in range(self.line)] for i in range(self.row)]    # 設置雷的數量    maxMine = self.mineNum    while maxMine > 0 :      num_x = random.randint(0,self.row-1)      num_y = random.randint(0,self.line-1)      if self.xy_list[num_x][num_y] == 0:        self.xy_list[num_x][num_y] = 1        maxMine -= 1  #獲取x坐標  def get_pos(self,str_pos):    #獲取x坐標    while 1:      try:        num_x = raw_input(str_pos)        if int(num_x) in range(self.line) and num_x :          break        else:          print u'輸入無效值'      except:        pass    return int(num_x)  #進行掃雷  def mine_clear(self,x,y):    # 設置顯示進行掃過的數目    # 設置數字    # 0 表示掃過的雷    # 1 表示類    # 2 表示掃過的類    #獲取坐標的數字    pos = self.xy_list[x][y]    if pos == 0 :      self.xy_list[x][y] = 2      return 0    elif pos == 2 :      return 2    else:      return 1  #界面的顯示  def mineFace(self,state):    #顯示界面的內容    #設置游戲的狀態    #1 表示運行的狀態    #2 表示輸出的狀態    #3 表示游戲結束的狀態    #4 表示游戲獲得了完勝    if state == 1:      print '+=================+'      print '   Game start  '      print '+=================+'      tt = ' #'      print '**************************'      for i in range(self.line):        str_t = ''        for t in xrange(self.row):          str_t += tt        print "|%s|"%(str_t,)      print '**************************'      print 'Please input values of x,y(0-7):'    #刷新用戶界面    if state == 2:      tt = ' #'      print '**************************'      for i in range(self.line):        str_t = ''        for t in xrange(self.row):          if self.xy_list[i][t] == 2:            str_t += str(self.xy_list[i][t]).rjust(2)          else:            str_t += tt        print "|%s|"%(str_t,)      print '**************************'    if state == 3:      print '**************************'      for i in range(self.line):        str_t = ''        for t in xrange(self.row):          if int(self.xy_list[i][t]) != 1:            str_t += ' 2'          else:            str_t += ' *'        print "|%s|"%(str_t,)      print '**************************'    if state == 4:      tt = ' #'      print '**************************'      for i in range(self.line):        str_t = ''        for t in xrange(self.row):          if self.xy_list[i][t] == 2:            str_t += str(self.xy_list[i][t]).rjust(2)          else:            str_t += ' @'        print "|%s|"%(str_t,)      print '**************************'  def MainLoop(self):    #創建游戲主循環    #創建界面的運行    self.mineFace(1)    self.score = 0    self.initData()    #print self.xy_list    # 進入主循環    while 1:      #獲取坐標的位置      x = self.get_pos(' X = ')      y = self.get_pos(' Y = ')      num = self.mine_clear(x,y)      #判斷是不過的了完勝      win = True      for i in self.xy_list:        if 0 in i:          win = False          break      if win:        num = 4      #執行刷新界面的函數      if num == 0:        self.mineFace(2)        self.score += 10      elif num == 2:        print u'這個位置已經被排過了,證實沒有雷'      elif num == 1:        print '+=================+'        print '   Game over  '        print '+=================+'        print u'分數 : ', self.score        self.mineFace(3)        # 是不是進行下一句        next = raw_input(u'是夠進行下一局:Y or N ')        if next.upper().startswith('Y'):          print u'下一局開始'          self.nextGame()        else:          print '>>> Game exit'          break      else:        self.score += 10        print u'恭喜您獲得的完全的勝利'        print u'分數 : ', self.score        self.mineFace(4)        next = raw_input(u'是夠進行下一局:Y or N ')        if next.upper().startswith('Y'):          print u'下一局開始'          self.nextGame()        else:          print '>>> Game exit'          break  # 下一局初始化信息  def nextGame(self):    self.mineFace(1)    self.score = 0    self.initData()if __name__ == '__main__':  mi = MineSweeping(10,10,20)  mi.MainLoop()  sys.exit()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安阳县| 池州市| 成安县| 洞头县| 裕民县| 景宁| 滨海县| 托里县| 福海县| 克什克腾旗| 哈尔滨市| 武穴市| 华坪县| 宜章县| 湘阴县| 监利县| 莱西市| 长丰县| 黄骅市| 樟树市| 永春县| 鹤峰县| 桂林市| 南木林县| 彭泽县| 鲁甸县| 陇川县| 辽阳县| 多伦县| 拜泉县| 宜春市| 怀柔区| 水富县| 铜山县| 扎囊县| 安国市| 日照市| 陆川县| 桃江县| 南通市| 广饶县|