Traceback (most recent call last):
File "D:/GRY/2/Run.py", line 87, in <module>
G = Game()
File "D:/GRY/2/Run.py", line 16, in __init__
self.player = Player(self)
File "D:\GRY\2\Sprites.py", line 18, in __init__
self.image = self.G.ss.get_image(0,0,320,320)
AttributeError: 'Game' object has no attribute 'ss'
otóż taki błąd mi się wyświetla co mam zrobić pomóżcie
Tutaj kod :
import pygame as pg
import random
from Settings import *
from Sprites import *
from os import path
from Menu import *
class Game:
def __init__(self):
#Inicjacja Okna Itp.
pg.init()
pg.mixer.init()
self.Display = pg.display.set_mode((W,H))
pg.display.set_caption(TITLE)
self.clock = pg.time.Clock()
self.menu = Button1()
self.player = Player(self)
self.block = Blocks
self.running = True
self.menu_sprites = pg.sprite.Group()
self.all_sprites = pg.sprite.Group()
self.blocks = pg.sprite.Group()
self.load_data()
self.Lvl = LVL
self.Chapter = CHAPTER
def load_data(self):
self.dir = path.dirname(__file__)
img_dir = path.join(self.dir , 'Images')
self.ss = Spritesheet(path.join(img_dir, SPRITESHEET))
def New(self):
#Nowa Gra
if self.Lvl == 0:
self.blocks.remove(self.block)
self.all_sprites.remove(self.player)
self.menu_sprites.add(self.menu)
if self.Lvl == 1:
self.menu_sprites.remove(self.menu)
for B in BLOCKS_LIST:
self.block = Blocks(*B)
self.blocks.add(self.block)
self.all_sprites.add(self.player)
self.Run()
def Run(self):
#GameLoop
while self.running:
self.player.Update()
self.menu.Update()
self.clock.tick(FPS)
self.Events()
self.Update()
self.Draw()
def Update(self):
#Update
self.menu_sprites.update()
self.all_sprites.update()
self.blocks.update()
if self.player.vel.y > 0:
Hits = pg.sprite.spritecollide(self.player,self.blocks,False)
if Hits:
self.player.pos.y = Hits[0].rect.top
self.player.vel.y = 0
def Events(self):
#Eventy
for event in pg.event.get():
if event.type == pg.QUIT:
self.running = False
if event.type == pg.KEYDOWN:
if event.key == pg.K_ESCAPE:
if self.Lvl == 0:
self.Lvl = 1
else:
self.Lvl = 0
def Draw(self):
#Rysowanie
self.Display.fill(BLACK)
self.all_sprites.draw(self.Display)
self.menu_sprites.draw(self.Display)
self.blocks.draw(self.Display)
pg.display.flip()
def Show_Start_Screen(self):
#Start Screen
pass
def Show_Go_Screen(self):
#Game Over Screen
pass
G = Game()
G.Show_Start_Screen()
while G.running:
G.New()
G.Show_Go_Screen()
pg.quit()
import pygame as pg
from Settings import *
vec = pg.math.Vector2
class Spritesheet:
#Load Spritesheet
def __init__(self,filename):
self.ss = pg.image.load(filename).convert()
def get_image(self,x,y,w,h):
image = pg.Surface((w,h))
image.blit(self.ss, (0,0) , (x,y,w,h))
image = pg.transform.scale(image,(w//2,h//2))
return image
class Player(pg.sprite.Sprite):
def __init__(self,G):
pg.sprite.Sprite.__init__(self)
self.G = G
self.image = self.G.ss.get_image(0,0,320,320)
self.image.set_colorkey(BLACK)
self.image.fill(GREEN)
self.rect = self.image.get_rect()
self.rect.center = (W/2,H/2)
self.pos = vec(W/2,H/2)
self.vel = vec(0,0)
self.acc = vec(0,0)
def Update(self):
self.acc = vec(0,PLAYER_GRAVITY)
Keys = pg.key.get_pressed()
#Chód W Prawo
if Keys[pg.K_d]:
self.acc.x = PLAYER_ACC
#Chód W Lewo
if Keys[pg.K_a]:
self.acc.x = - PLAYER_ACC
#Skok
if Keys[pg.K_SPACE] or Keys[pg.K_w]:
self.rect.x+=1
Hits = pg.sprite.spritecollide(self, self.G.blocks, False)
self.rect.x -= 1
if Hits:
self.vel.y = -H/18
self.acc += self.vel * PLAYER_FRICTION
self.vel += self.acc
self.pos += self.vel + 0.5 * self.acc
self.rect.midbottom = self.pos
class Blocks(pg.sprite.Sprite):
def __init__(self,x,y,w,h):
pg.sprite.Sprite.__init__(self)
self.image = pg.Surface((w,h))
self.image.fill(RED)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y =