Это серьезная задача, своими силами вы такую задачу не решите (иначе уже бы решили). Рекомендую нанять профессионалов по созданию СКС.
То есть надо из def promo() переместить balance в def profile()
class Cannon:
def __init__(self):
self.cannonImg = pg.image.load('images/cannon.png')
self.cannonImg = pg.transform.scale(self.cannonImg, [self.cannonImg.get_width() // 2, self.cannonImg.get_height() // 2])
self.cannonRect = self.cannonImg.get_rect()
self.cannonRect.x = WIDTH // 2 - self.cannonImg.get_width() // 2
self.cannonRect.y = HEIGHT - self.cannonImg.get_height()
self.cannonSpeed = 0.1
self.dx = 0