i was following a tutorial and i'm trying to get my text to appear in the screen, here is my code but the text won't appear:
from __future__ import division
import math
import sys
import pygame
class MyGame(object):
def __init__(self):
pygame.mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
self.width = 800
self.height = 600
self.screen = pygame.display.set_mode((self.width, self.height))
self.bg_color = 0, 0, 0
font = pygame.font.Font(None, 100)
text = font.render("text that should appear", True, 238, 58, 140)
self.FPS = 30
self.REFRESH = pygame.USEREVENT+1
pygame.time.set_timer(self.REFRESH, 1000//self.FPS)
def run(self):
running = True
while running:
event = pygame.event.wait()
if event.type == pygame.QUIT:
running = False
elif event.type == self.REFRESH:
self.draw()
else:
pass
def draw(self):
self.screen.fill(self.bg_color)
screen.blit(text, [400,300])
pygame.display.flip()
MyGame().run()
pygame.quit()
sys.exit()
any idea why is this happening? am i forgetting to import a library or is there something off with my draw method?
It looks like you're passing the three RGB values of color in as three separate values to render. They should be passed in as a single tuple.
You're also missing some selfs. screen.blit(text, [400,300]) should be self.screen.blit(text, [400,300]), and you need to make all instances of text into self.text if you want it to be accessible in both __init__ and draw.
from __future__ import division
import math
import sys
import pygame
class MyGame(object):
def __init__(self):
pygame.mixer.init()
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
self.width = 800
self.height = 600
self.screen = pygame.display.set_mode((self.width, self.height))
self.bg_color = 0, 0, 0
font = pygame.font.Font(None, 100)
self.text = font.render("text that should appear", True, (238, 58, 140))
self.FPS = 30
self.REFRESH = pygame.USEREVENT+1
pygame.time.set_timer(self.REFRESH, 1000//self.FPS)
def run(self):
running = True
while running:
event = pygame.event.wait()
if event.type == pygame.QUIT:
running = False
elif event.type == self.REFRESH:
self.draw()
else:
pass
def draw(self):
self.screen.fill(self.bg_color)
self.screen.blit(self.text, [400,300])
pygame.display.flip()
MyGame().run()
pygame.quit()
sys.exit()
Result:

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With