Minesweeper Problem
Verfasst: Sonntag 15. September 2019, 12:11
Hi
Ich versuche momentan Hobbymäßig Python zu lernen.
Dafür habe ich mir eine Youtube Tutorial Reihe vorgenommen welche ich einmal komplett durcharbeite und auch selbst modifizieren will.
In dem einen Teil geht es darum ein Minesweeper Programm zu schreiben (ist unten verlinkt)
Ich bin jetzt bis zu Minute 54 gekommen. Ab dem Zeitpunkt sollte die Grundsätzliche Spiel Visualisierung vorhanden sein, heißt die Bomben werden in dem Feld verteilt und jedes Kästchen wird abgefragt wie viel bomben um es rum hat und passt dem entspechend seine zahl an.
Bis zu den Bomben klappt alles einwandfrei nur Stimmen meine Zahlen nicht. Ich hab den Code jetzt schon mehrmals mit dem im Video verglichen (dort stimmt es), finde allerdings den unterschied/fehler nicht...
Schonmal Danke im voraus
Hier sieht man das die Zahlen nicht stimmen



Das Video um welches es sich handelt:
https://www.youtube.com/watch?v=diuLxpU2pWg&t=3241s
Mein Code auf github:
https://github.com/Kurmuro/lernen
Oder direkt hier:
Ich versuche momentan Hobbymäßig Python zu lernen.
Dafür habe ich mir eine Youtube Tutorial Reihe vorgenommen welche ich einmal komplett durcharbeite und auch selbst modifizieren will.
In dem einen Teil geht es darum ein Minesweeper Programm zu schreiben (ist unten verlinkt)
Ich bin jetzt bis zu Minute 54 gekommen. Ab dem Zeitpunkt sollte die Grundsätzliche Spiel Visualisierung vorhanden sein, heißt die Bomben werden in dem Feld verteilt und jedes Kästchen wird abgefragt wie viel bomben um es rum hat und passt dem entspechend seine zahl an.
Bis zu den Bomben klappt alles einwandfrei nur Stimmen meine Zahlen nicht. Ich hab den Code jetzt schon mehrmals mit dem im Video verglichen (dort stimmt es), finde allerdings den unterschied/fehler nicht...
Schonmal Danke im voraus

Hier sieht man das die Zahlen nicht stimmen



Das Video um welches es sich handelt:
https://www.youtube.com/watch?v=diuLxpU2pWg&t=3241s
Mein Code auf github:
https://github.com/Kurmuro/lernen
Oder direkt hier:
Code: Alles auswählen
import pygame as pg
from dataclasses import dataclass
import random as rnd
auflösung = 500
raster = 9
anzMinen = 10
abstand = auflösung // raster
pg.init()
pg.display.set_caption('Minesweeper')
screen = pg.display.set_mode([auflösung, auflösung])
cell_normal = pg.transform.scale(pg.image.load(
'Teil_10_ms_cell_normal.gif'), (abstand, abstand))
cell_marked = pg.transform.scale(pg.image.load(
'Teil_10_ms_cell_marked.gif'), (abstand, abstand))
cell_mine = pg.transform.scale(pg.image.load(
'Teil_10_ms_cell_mine.gif'), (abstand, abstand))
cell_selected = []
for n in range(9):
cell_selected.append(pg.transform.scale(pg.image.load(
f'Teil_10_ms_cell_{n}.gif'), (abstand, abstand)))
matrix = []
benachbarteFelder = [(-1, -1), (-1, 0), (-1, 1), (0, -1),
(0, 1), (1, -1), (1, 0), (1, 1)]
@dataclass
class Cell():
spalte: int
zeile: int
mine: bool = False
selected: bool = False
flagged: bool = False
anzMinenDrumRum: int = 0
def show(self):
pos = (self.spalte*abstand, self.zeile*abstand)
if self.selected:
if self.mine:
screen.blit(cell_mine, pos)
else:
screen.blit(cell_selected[self.anzMinenDrumRum], pos)
else:
if self.flagged:
screen.blit(cell_marked, pos)
else:
screen.blit(cell_normal, pos)
def anzMinenErmitteln(self):
for pos in benachbarteFelder:
neueZeile = self.zeile + pos[0]
neueSpalte = self.spalte + pos[1]
if neueZeile >= 0 and neueZeile < raster and neueSpalte >= 0 and neueSpalte < raster:
if matrix[neueZeile*raster+neueSpalte].mine:
self.anzMinenDrumRum += 1
for n in range(raster*raster):
matrix.append(Cell(n // raster, n % raster))
while anzMinen > 0:
x = rnd.randrange(raster*raster)
if not matrix[x].mine:
matrix[x].mine = True
anzMinen -= 1
for objekt in matrix:
objekt.anzMinenErmitteln()
weitermachen = True
while weitermachen:
for event in pg.event.get():
if event.type == pg.QUIT:
weitermachen = False
for objekt in matrix:
objekt.selected = True
objekt.show()
pg.display.flip()
pg.quit()