Minesweeper --> Konstruktor
Verfasst: Montag 2. Dezember 2019, 14:43
Hallo zusammen,
ich schreibe gerade das Spiel minesweeper für ein Schulprojekt.
Unser Lehrer hat uns ein Anfangsprogramm geschrieben, mit dem wir arbeiten können, es aber nicht müssen:
Ich habe mein eigens Programm geschrieben und möchte einen Konstruktor nach diesem Prinzip anlegen. Bei mir wird allerdings immer der Fehler:
NameError: name 'self' is not defined
anzeigt.
Hier ist meine Klasse:
Wie muss ich self definieren, dass es klappt?
Über eine Antwort würde ich mich sehr freuen
DieFragerin
ich schreibe gerade das Spiel minesweeper für ein Schulprojekt.
Unser Lehrer hat uns ein Anfangsprogramm geschrieben, mit dem wir arbeiten können, es aber nicht müssen:
Code: Alles auswählen
import pygame
from gameBase import *
class gameObject(pygame.sprite.Sprite):
#Konsturktor. Der überschriebene Konstruktor pygame.sprite.Sprite.__init__
# MUSS aufgerufen werden.
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self._image_original = pygame.image.load('images/sprite.png')
self.links = 100
self.oben = 100
self.breite = 100
self.höhe = 100
self.richtung = 0
#Rect
left_rect_posX = 50
left_rect_posY = 50
right_rect_posX = 1220
right_rect_posY = 50
left_rect_HEIGHT = 150
right_rect_HEIGHT = 150
#Circle
circle_start_posX = int(WIDTH / 2)
circle_start_posY = int(HEIGHT / 2)
circle_posY = circle_start_posY
circle_posX = circle_start_posX
#Update wird in jedem Frame vor dem Zeichnen aufgerufen.
#Hier wird das Objekt (insbes. image und rect) angepasst.
def update(self):
left_rect_can_move_upwards = True
left_rect_can_move_downwards = True
right_rect_can_move_upwards = True
right_rect_can_move_downwards = True
#Circle movement factor
cmfX = 450
cmfY = 450
#Circle movement
circle_time_passed = clock.tick(60)
circle_time_sec = circle_time_passed / 1000.0
circle_posX += cmfX * circle_time_sec
circle_posY += cmfY * circle_time_sec
NameError: name 'self' is not defined
anzeigt.
Hier ist meine Klasse:
Code: Alles auswählen
@dataclass
class Cell(self):
def __init__(self):
self.zeile = 0
self.spalte = 0
self.mine = False
self.aufgedeckt = False
self.markiert = False
self.anzMinenDrumrum = int = 0
#Zeichenroutine innerhalb der Klasse
def show(self):
pos = (self.spalte*abstand, self.zeile*abstand)
if self.aufgedeckt:
if self.mine:
screen.blit(bild_mine, pos)
else:
screen.blit(bild_aufgedeckt[self.anzMinenDrumrum], pos)
else:
if self.markiert:
screen.blit(bild_markiert, pos)
else:
screen.blit(bild_normal, pos)
#Wieviel Minen drumrum?
def anzMinenErmitteln(self):
for pos in benachbarteFelder:
neueZeile, neueSpalte = self.zeile + pos[0], self.spalte + pos[1]
if gültig(neueZeile, neueSpalte) and matrix[neueZeile*raster+neueSpalte].mine:
self.anzMinenDrumrum += 1
Über eine Antwort würde ich mich sehr freuen

DieFragerin