日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python扫雷程序

發布時間:2024/1/1 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python扫雷程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import os import random # 0-9表示周圍零的數量并且可以展示 # -1表示雷 # -2表示不可以展示class Map:line = 0column = 0mines = 0relieve = 0find = 0traps = []map = []outside = []def __init__(self,line=8,column=8,mines=10):self.line=lineself.column=columnself.mines=minesself.relieve=0self.find=0self.traps=[]self.map=[]self.outside=[]for i in range(0,24):self.map.append([0 for j in range(0,24)])self.outside.append([0 for j in range(0,24)])self.trapsDown(self.mines)for i in range(0,len(self.map)):for j in range(0,len(self.map[i])):self.outside[i][j]=-2def randomPoint(self):while True:trap = (random.randint(0, self.line-1), random.randint(0, self.column-1))if trap not in self.traps:return trapdef diffusion(self,trap,default=1):self.map[trap[0]][trap[1]] = -1try:if self.map[trap[0] + 1][trap[1]] != -1:self.map[trap[0] + 1][trap[1]] += defaultexcept:passtry:if self.map[trap[0] - 1][trap[1]] != -1:self.map[trap[0] - 1][trap[1]] += defaultexcept:passtry:if self.map[trap[0]][trap[1] + 1] != -1:self.map[trap[0]][trap[1] + 1] += defaultexcept:passtry:if self.map[trap[0]][trap[1] - 1] != -1:self.map[trap[0]][trap[1] - 1] += defaultexcept:passtry:if self.map[trap[0] + 1][trap[1] + 1] != -1:self.map[trap[0] + 1][trap[1] + 1] += defaultexcept:passtry:if self.map[trap[0] - 1][trap[1] + 1] != -1:self.map[trap[0] - 1][trap[1] + 1] += defaultexcept:passtry:if self.map[trap[0] - 1][trap[1] - 1] != -1:self.map[trap[0] - 1][trap[1] - 1] += defaultexcept:passtry:if self.map[trap[0] + 1][trap[1] - 1] != -1:self.map[trap[0] + 1][trap[1] - 1] += defaultexcept:passdef trapsDown(self,mines):for i in range(0,mines):trap = self.randomPoint()self.traps.append(trap)self.diffusion(trap)def show(self,map):os.system("cls")print(" ",end="")for i in range(0,self.line):print(" %2d "%(i+1),end="")print()print(" ",end="")for i in range(0,self.line):print("+---",end="")print("+")for i in range(0,self.line):print("%2d|"%(i+1),end="")for j in range(0,self.column):if map[i][j]==-2:print(" ",end="|")elif map[i][j]==-1:print(" * ",end="|")else:print("%2d"%(map[i][j]),end=" |")print()print(" |",end="")for i in range(0, self.line):print("---", end="+")print()print(" relieve:%3d,mines:%3d,last:%3d"%(self.relieve,self.mines-self.find,self.mines-self.find))def unfold(self,i,j):if i < 0 or i >= self.line or j < 0 or j >= self.column or self.outside[i][j]!=-2:returnif self.map[i][j]>0:self.outside[i][j]=self.map[i][j]self.relieve+=1elif self.map[i][j]<0:returnelse:self.outside[i][j] = self.map[i][j]self.relieve+=1self.unfold(i, j+1)self.unfold(i+1, j)self.unfold(i-1, j)self.unfold(i, j-1)self.unfold(i+1, j+1)self.unfold(i+1, j-1)self.unfold(i-1, j+1)self.unfold(i-1, j-1)def round(self,trap,default=1):self.map[trap[0]][trap[1]] = 0try:if self.map[trap[0] + 1][trap[1]] == -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0] - 1][trap[1]] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0]][trap[1] + 1] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0]][trap[1] - 1] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0] + 1][trap[1] + 1] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0] - 1][trap[1] + 1] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0] - 1][trap[1] - 1] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passtry:if self.map[trap[0] + 1][trap[1] - 1] != -1:self.map[trap[0]][trap[1]] += defaultexcept:passdef game(self):firstClick = Truewhile True:try:self.show(self.outside)print("1. click")print("2. flag")print("3. exit")dos = input("Please enter your move:")if dos == "3":breakif dos.split(" ")[0] not in ["1","2"]:continue# print(dos.split(" "))if int(dos.split(" ")[0]) == 2:if self.outside[int(dos.split(" ")[1]) - 1][int(dos.split(" ")[2]) - 1]>=0:print("flag is not allowed")elif self.outside[int(dos.split(" ")[1]) - 1][int(dos.split(" ")[2]) - 1] == -1:self.find-=1self.outside[int(dos.split(" ")[1]) - 1][int(dos.split(" ")[2]) - 1] = -2else:self.find+=1self.outside[int(dos.split(" ")[1]) - 1][int(dos.split(" ")[2]) - 1] = -1else:# firstClick = Falseif self.map[int(dos.split(" ")[1]) - 1][int(dos.split(" ")[2]) - 1] == -1:if firstClick:trap = self.randomPoint()self.traps.append(trap)self.diffusion(trap)trap = (int(dos.split(" ")[1]) - 1,int(dos.split(" ")[2]) - 1)self.diffusion(trap,-1)self.traps.remove(trap)self.round(trap)self.show(self.map)os.system("color 4")print("u lose")input("Enter and go")breakelse:self.unfold(int(dos.split(" ")[1]) - 1, int(dos.split(" ")[2]) - 1)if self.relieve + self.mines == self.line*self.column:print("\t*******************")print("\t* Wonderful try *")print("\t*******************")input("Enter for go on")firstClick = False# input("Enter and go")# input("Enter and go")except:passdef mode(self):while True:os.system("cls")os.system("color 7")print("Welcome to Minesweeper")print("Please choose your difficulty:")print(" 1: Beginner 8 x 8 grid with 10 mines")print(" 2: Intermediate 16 x 16 grid with 40 mines")print(" 3: Expert 24 x 24 grid with 99 mines")print(" 0. Exit")choice = input("input>")if choice=="1":self.__init__(8,8,10)elif choice=="2":self.__init__(16,16,40)elif choice=="3":self.__init__(24,24,99)elif choice=="0":exit(0)self.game() map=Map() map.mode()

總結

以上是生活随笔為你收集整理的python扫雷程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。