亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 3513 0

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

            
#!/usr/bin/python
#coding:utf-8

#python 寫的掃雷游戲


import sys
import random

class 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()



          

如果大家在測試的時候還有任何疑問,可以在下方的留言區討論,感謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 男人在线资源 | 色综合久久久久久 | 伊人免费 | 久久中文字幕2021精品 | 久久综合久久鬼色 | 亚洲天天做日日做天天欢毛片 | 日韩香蕉网 | 九九热视频精品 | 国产麻豆精品高清在线播放 | 免费色视频网站 | 国产第一区二区三区在线观看 | 97在线免费看视频 | 夜夜干天天操 | 99爱网站| 久青草国产手机在线视频 | 日日爱影视 | 国产一级爱c片免费播放 | 四虎国产精品永久免费网址 | 97手机影院| 玖玖国产在线观看 | 亚洲图欧美色综合图 | 国内精品一区二区三区最新 | 国产高清不卡视频 | 国产精品第二页在线播放 | 曰本lesxxxx在线观看视频 | 操国产美女 | 亚洲伦理精品久久 | 欧美成人毛片免费视频 | 日日做日日摸夜夜爽 | 在线成人免费观看国产精品 | 久久综合久久自在自线精品自 | 神马我不卡在线观看 | 精品国产_亚洲人成在线高清 | 8090成人午夜精品 | 久久精选| 亚洲成片观看四虎永久 | 99国产精品久久久久久久日本 | 日韩夜夜操| a亚洲欧美中文日韩在线v日本 | 综合网色| 久久精品国产免费中文 |