私はこのサイトを初めて利用していますので、間違っていると私を許してください。私はプロジェクトに取り組んでおり、特定の鉱山を持ち、星座の形を作るバージョンのMinesweeperを作ろうとしています。グリッドを破棄して新しいものを作成する方法
私たちは、プレイヤーが勝った場合、次のレベルに進むレベルのように見せようとしています。唯一の問題は、勝利関数では、新しい鉱山で新しいグリッドを作成し、フレーム全体を積み重ねたり破壊したりせずに古いグリッドを削除する方法を理解できないということです。また、最新のコードを持っているhttps://github.com/Riddler6897/Star-Minesweeper
TestRun.py
というファイルにあるが、すべての画像がimages
フォルダにあります。
あなたは私たちのgithubのアカウントから画像ファイルを取得することができます。ここで
みんなの利便性、ここ4つの.GIFイメージは以下のとおりです。
plaintile.gif:
clickedtile.gif:
minetile.gif:
flagtile.gif:
from Tkinter import * #We could also use pygame#
from time import time #To set a timer#
from time import sleep #To make the RGBs turn on and off#
#import RPi.GPIO as GPIO
class Minesweeper(Frame):
def __init__(self, master):
self.images = [PhotoImage(file = "images/plaintile.gif"),
PhotoImage(file = "images/clickedtile.gif"),
PhotoImage(file = "images/minetile.gif"),
PhotoImage(file = "images/flagtile.gif")]
self.NoTile = []
Frame.__init__(self, master)
self.master = master
#populates NoTile with images corresponding to the number of mines adjacent to each tile
#for x in range (1,9):
#self.NoTile.append(PhotoImage(file = "images/tile_"+str(x)+".gif"))
self.button = []
#arrays containing the position of each mine that will make the shape of the constellations
self.Libra = [23, 63, 102, 124, 154, 161, 197, 209]
self.Orion = [0, 2, 16, 30, 62, 66, 73, 89, 93, 103, 113, 118, 125, 132, 139, 146, 153, 211, 217]
self.Phoenix = [22, 44, 45, 78, 85, 121, 148, 169, 203]
self.Taurus = [3, 30, 35, 64, 67, 83, 95, 99, 113, 129, 146, 163, 178, 204, 223]
self.CanisMajor = [21, 49, 69, 73, 81, 101, 140, 144, 186, 197, 203, 212]
self.Draco = [32, 51, 63, 67, 96, 127, 157, 161, 167, 173, 193, 195, 198, 212, 224]
self.CanesVenatici = [42, 182]
self.Chameleon = [66, 104, 106, 133, 140]
self.Crater = [4, 22, 98, 120, 142, 153, 164, 220]
self.Vulpecula = [2, 51, 61, 83, 114, 145, 178, 209]
self.levels = [self.CanesVenatici, self.Chameleon, self.Libra, self.Crater, self.Vulpecula, self.Phoenix, self.CanisMajor, self.Taurus, self.Draco, self.Orion]
#an array containing all the constellations in order of "difficulty"
self.level = 0
self.score = 1
self.pressed = 0
self.tiles = 225-len(self.levels[self.level])
#labels showing the current level and the number of mines in the level
self.label1 = Label(master, text = "Mines: "+str(len(self.levels[self.level])))
self.label1.grid(row = 16, column = 0, columnspan = 5)
self.label2 = Label(master, text = "Level: "+ str(self.score))
self.label2.grid(row = 16, column = 5, columnspan = 5)
self.label3 = Label(master, text = "Tiles Left: "+str(self.pressed))
self.label3.grid(row = 16, column = 10, columnspan = 5)
def buttonPressed(self, i):
self.pressed += 1
self.tiles -= 1
self.label3 = Label(self.master, text = "Tiles Left: "+str(self.tiles))
self.label3.grid(row = 16, column = 10, columnspan = 5)
self.button[i].config(image = self.images[1], state=DISABLED)
if self.tiles == 200:
self.win()
def minePressed(self, i):
self.button[i].config(image=self.images[2])
#self.lose()
def constellation_plot(self):
for i in self.levels[self.level]:
self.button[i].config(command = lambda i=i: self.minePressed(i))
#def update_mine(self):
#pass
def win(self):
self.master.grid_forget()
self.score += 1
self.level += 1
self.pressed = 0
self.tiles = 225-len(self.levels[self.level])
self.grid()
def grid(self): #This will make the grid#
i = 0
for r in range(15):
for c in range(15):
self.mGrid = Button(self.master, image=self.images[0], command = lambda i=i :self.buttonPressed((i)))
self.button.append(self.mGrid)
self.mGrid.image = self.images[0]
self.mGrid.grid(row=r, column=c)
i += 1
self.constellation_plot()
def play(): #Will actually run the game#
pass
#def lose(self): #Will use GPIO for RGBs and allow the player to start the same level over#
#quit(1)
def time_out(): #timer. When the time goes out, the whole program will stop running while still showing score.#
pass
def sound(): #To play a sound if they win or lose. Can be put under the lose function#
pass
window = Tk()
minesweeper = Minesweeper(window)
window.title("Minesweeper")
minesweeper.grid()
window.mainloop()
他の誰かがあなたのコードを実行しようとすると、参照されている4つの.gif画像のコピーがあったと便利です。あなたはあなたの質問にそれらをまだ埋め込むことはできないので、私はそれらをそれぞれhttp://imgur.comのような無料のオンライン画像共有サイトにアップロードし、あなたの質問にリンクを追加することをお勧めします。 – martineau
githubアカウントの仕事へのリンクを送信しますか? –
はい、私はあなたの質問を編集してリンクを追加すると思います。 – martineau