user19934942
user19934942

Reputation:

why is my class getting the wrong values?

I recently started exploring classes and I have made my first class (sort of) but it doesn't seem to be working. I have code creating the class and function, then takes the values and blits an image to certain coordinates. for some reason It takes the values from inside the class instead of what I told it to have. I am new to classes so I'm not sure what to do, please help, thanks!

import pygame

pygame.init()
Screen = pygame.display.set_mode((800, 400))

TC = pygame.image.load("TC.png").convert_alpha()
ANUM = 0


class MTC() :
  def __init__(self,) :
    self.Tx = 0
    self.Ty = 0
    
    Screen.blit(TC,(self.Tx,self.Ty))


TMTC = MTC()
TMTC.Tx = 800
TMTC.Ty = 800



while True:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
    

  
  pygame.display.update()

Upvotes: 1

Views: 52

Answers (2)

jbh
jbh

Reputation: 16

You are calling Screen.blit in the class constructor which is executed when your class is instantiated (TMTC = MTC()).

You are then setting the tx and ty after Screen.blit has already run

Upvotes: 0

Rabbid76
Rabbid76

Reputation: 210968

The image is blit in the constructor. At this point the coordinates are not yet changed. You have add a method that blits the object:

class MTC() :
    def __init__(self,) :
        self.Tx = 0
        self.Ty = 0

    def dra():
        Screen.blit(TC,(self.Tx,self.Ty))

Call the draw method in the application loop:

TMTC = MTC()
TMTC.Tx = 800
TMTC.Ty = 800

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
    
      Screen.fill((0, 0, 0))
      TMTC.draw()
      pygame.display.update()

Upvotes: 2

Related Questions