Citat:
Ursprungligen postat av
kodsnickrarn
Kod:
class newgrid():
def __init__(self, grid, play)
self.grid = grid
self.play = play
def play():
print("You are now in play()")
def grid():
print("You are now in grid()")
ng = newgrid(grid, play)
ng.play()
ng.grid()
Fast, det är ett lite okonventionellt sätt att göra det på. Normalt så definierar du metoderna _i_ klassen:
Kod:
class newgrid():
def __init__(self)
pass
def play(self):
print("You are now in newgrid::play()")
def grid(self):
print("You are now in newgrid::grid()")
ng = newgrid()
ng.play()
ng.grid()
/K
Här är hela koden:
Kod:
import random
class matrix(object):
value = 0 #Attributen sätts alltid till 0 när ett objekt skapas.
selected = False
mine = False
#Set up the grid;
class grid(object):
def __init__(self, mines, grid_size):
self.mines = mines
self.grid = [['0' for i in range(int(grid_size))] for i in range(int(grid_size))] #"null matrix list"
mines = place_mines(grid, mines) #place where the mines should be randomly
for i,j in mines:
grid[i][j]="x" #i row, j colomn
grid=number(grid)
return (grid, mines)
def show_grid(object):
grid=len(grid)
horizon= " " + (4 * grid * "-")+"-" #the string "-" is a deafult value at first, but gets a value when we add our parameters: som isbn
toplabel = toplabel + i + " "
print(toplabel + "\n" + horizon)
for idx, i in enumerate(grid): #denna kod som gör så att vi får den här matrisen
for j in i:
row = row + " "+ j + " |" # det där absolutbeloppet som separerar 'matrisen' upp det.
print(row + '\n' + horizon)
print()
def random_cell(grid):
grid=len(grid)
random=randomint(0, grid -1) #randomly select a number
return()
def next(grid, x,y):
grid=len(grid)
next=[]
for i in range(-1, 2):
for j in range(-1, 2):
if i == 0 and j == 0:
continue
elif -1 < (x + i) < grid and -1 < (y + j) < grid:
next.append((x + i, y + j))
return next # hitta alla celler "bredvid" den man klickat på
def place_mines(grid, mines):
mines = []
next = next(grid, *start)
for i in range(mines):
cell = random_cell(grid)
while cell == start or cell in mines or cell in next:
cell = random_cell(grid)
mines.append(cell)
return() # alla slumpmässiga celler (vart minorna ligger)
def num(grid):
for x, rad in enumerate(grid):
for y, cell in enumerate(row):
if cell != 'x': # får värden av 'grannarna'
var = [grid[r][c] for r, c in next(grid, x, y)] # räknar hur många som är minor då
grid[x][y] = str(var.count('x')) # hur många runt "kanten" som är minor
return()
def display_cells(grid, curr_grid, x, y): # avslutar den om cellen liksom redan har visats
if curr_grid[x][y] != " ":
return
currutnat[x_kordinat][y_kordinat] = rutnat[x_kordinat][y_kordinat] # visa nuvarande cell
if rutnat[x_kordinat][y_kordinat] == '0': # få grannarna om cellerna runt om är tom
for r, c in next(rutnat, x, y): # Upprepar för varje granne
if curr_grid[r][c] != "F":
display_cell(grid, curr_grid, r, c)
def play_again():
val = input("Play again? y/n")
return val.lower() == 'y'
def play_game():
grid_size = int(input("Choose the Width of the board: "))
num = int(input("Choose the number of mines: "))
#game_over = False
#winner = False
self.mines = mines
mines = place_mines(grid, mines)
grid1 = grid(grid_size, self.mines)
while not gameOver:
print(grid)
print("Make your move:")
x = int(input("x: "))
y = int(input("y: "))
grid.makeMove(x, y)
gameOver = grid.hitMine(x, y)
if grid.isWinner() and gameOver == False:
gameOver = True
winner = True
print(grid)
if winner:
print("Congratulations. You Win!")
else:
print("You hit a mine. Game Over!")
#Först skriver du klassen.
#Sen skapar du ett objekt av klassen
#och använder objektet för att anropa metoden play_game.
#class newgrid(object):
# def __init__(self, grid, play):
# self.grid = grid
# self.play=play
#def play(self, play):
# self.play
#play()