Python Forum
Help with drawing integers.
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help with drawing integers.
#1
import pygame, sys


class Scene:
    def __init__(self):
        self.team1 = 0
        self.team2 = 0
        self.font = pygame.font.SysFont('Cosmic Sans MS', 900)
        self.team1txt = self.font.render(str(self.team1), True, (24, 14, 89,))
        self.team2txt = self.font.render(str(self.team2), True, (31, 200, 32,))
        self.scoreboard = pygame.image.load("scoreboard.jpg")
        

    def draw(self, screen):
        screen.blit(self.scoreboard, (0, 0))
        screen.blit(self.team1txt, (500, 500))
        
    



class main:
    def __init__(self, winx, winy, caption):
        self.screen = pygame.display.set_mode((winx, winy))
        self.caption = pygame.display.set_caption(caption)
        self.clock = pygame.time.Clock()
        self.scene = Scene()
        self.black = (200, 0, 0)

    def loop(self):
        self.notDead = True
        while self.notDead:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.notDead = False
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_LEFT:
                        self.scene.team1 += 1
                        print(str(self.scene.team1))
                    if event.key == pygame.K_RIGHT:
                        self.scene.team2 += 1
                        print(str(self.scene.team2))

            self.scene.draw(self.screen)
            pygame.display.update()
            self.clock.tick(60)


if __name__ == '__main__':
    pygame.init()
    pygame.font.init()
    game = main(1920, 1080, 'Scoreboard')
    game.loop()
I can't seem to get the team1 and team2 score to show on the display. Any help is appreciated :)
Reply
#2
Quote:
    def draw(self, screen):
        screen.blit(self.scoreboard, (0, 0))
        screen.blit(self.team1txt, (500, 500))
You are only drawing one number here text1text. Duplicate that line under it and change team1txt to team2text and change the blit position tuple to something else and you wlll see both.

like:
    def draw(self, screen):
        screen.blit(self.scoreboard, (0, 0))
        screen.blit(self.team1txt, (500, 500))
        screen.blit(self.team2txt, (900, 500))
Recommended Tutorials:
Reply
#3
(Aug-21-2019, 03:43 PM)metulburr Wrote:
Quote:
    def draw(self, screen):
        screen.blit(self.scoreboard, (0, 0))
        screen.blit(self.team1txt, (500, 500))
You are only drawing one number here text1text. Duplicate that line under it and change team1txt to team2text and change the blit position tuple to something else and you wlll see both.

like:
    def draw(self, screen):
        screen.blit(self.scoreboard, (0, 0))
        screen.blit(self.team1txt, (500, 500))
        screen.blit(self.team2txt, (900, 500))

Totally forgot to blit teamtxt2 derp, thank you for the help. Also, is there any way I could let the 2 teams type their desired team name? I have this but it requires the names to be typed in the shell.

import pygame


class Scene:
    def __init__(self):
        self.team1 = 0
        self.team2 = 0
        self.font = pygame.font.SysFont('Cosmic Sans MS', 60)
        self.background = pygame.image.load("background.jpg")
        self.test = []

    def names(self):
        self.teamname1 = input()
        self.teamname2 = input()

    def update(self):
        self.team1txt = self.font.render(str(self.team1), True, (24, 14, 89,))
        self.team2txt = self.font.render(str(self.team2), True, (31, 200, 32,))
        self.team1nametxt = self.font.render(self.teamname1, True, (31, 200, 32,))
        self.team2nametxt = self.font.render(self.teamname2, True, (31, 200, 32,))
       
    def draw(self, screen):
        screen.blit(self.background, (0,0))
        screen.blit(self.team1txt, (250,550))
        screen.blit(self.team2txt, (800,550))
        screen.blit(self.team1nametxt, (900, 200))
        screen.blit(self.team2nametxt, (231, 900))

        
class main:
    def __init__(self, winx, winy, caption):
        self.screen = pygame.display.set_mode((winx, winy))
        self.caption = pygame.display.set_caption(caption)
        self.clock = pygame.time.Clock()
        self.scene = Scene()
        self.playernames = True

    def loop(self):
        self.notDead = True
        while self.notDead:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    exit()
                    self.notDead = False
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_LEFT:
                        self.scene.team1 += 1
                        pygame.mixer.music.load("dading.mp3")
                        pygame.mixer.music.play(0)
                    if event.key == pygame.K_RIGHT:
                        self.scene.team2 += 1
                        pygame.mixer.music.load("dading.mp3")
                        pygame.mixer.music.play(0)
                    if event.key == pygame.K_p:
                        pygame.quit()
                        exit()
                        
            if self.playernames == True:
                self.scene.names()
                self.playernames = False
                
            self.scene.update()
            self.scene.draw(self.screen)
            pygame.display.update()
            self.clock.tick(60)
        
if __name__ == '__main__':
    pygame.init()
    pygame.font.init()
    game = main(1920, 1080, 'Scoreboard')
    game.loop()
Reply
#4
you would need to create a prompt. Pygame does not come with a default one, so you would have to create your own or use someone else's already made.


Check out this tutorial
https://python-forum.io/Thread-PyGame-User-Interface
Recommended Tutorials:
Reply
#5
Here my example.
99 percent of computer problems exists between chair and keyboard.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020