Προσθήκη Score

28-01-2020 10:50:59
- από τον χρήστη Διαχειριστής Πλατφόρμας

Για να προσθέσουμε κείμενο πάνω στην οθόνη γραφικών ακολουθούμε 3 βήματα

1. Καθορισμός γραμματοσειράς: font = pygame.font.Font(None, 36)  (εδώ έχουμε ορίσει μόνο το μέγεθος της γραμματοσειράς)

2. Δημιουργία κειμένου : text = font.render(str(score),False,(0,128,0),(128,0,0)) ( το περιεχόμενο της μεταβλητής score που είναι αριθμός

μετατρέπεται σε χαρακτήρες str(score) . Στη συνέχεια γίνεται χρήση των χρωμάτων (0,128,0) σαν χρώμα κειμένου και το (128,0,0) σαν

χρώμα φόντου , για τη μετατροπή του κειμένου σε γραφικό.

3. Τοποθετείται το γραφικό κειμένου στη θέση 1,1 :  screen.blit(text,(1,1))

Μια μεταβλητή που ελέγχει το score πριν την επανάληψη γίνεται 0 : score = 0

Κάθε φορά που συγκρούονται οι μπάλες δηλ. ( x=x1 και y = y1 ) το score αυξάνεται κατά 1 και εμφανίζεται στην οθόνη.

if x == x1 and y==y1 :
        score += 1

Μορφή κώδικα μετά τις μεταβολές :

<pre>

import pygame
import os
import random

_image_library = {}


def get_image(path):
    global _image_library
    image = _image_library.get(path)
    if image == None:
        canonicalized_path = path.replace('/', os.sep).replace('\\', os.sep)
        image = pygame.image.load(canonicalized_path)
        _image_library[path] = image
    return image


pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False
clock = pygame.time.Clock()
x = 30
y = 30
x1 = 3
y1 = 3
d = 1
score = 0
font = pygame.font.Font(None, 36)
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    pressed = pygame.key.get_pressed()
    if pressed[pygame.K_UP]: y -= 3
    if pressed[pygame.K_DOWN]: y += 3
    if pressed[pygame.K_LEFT]: x -= 3
    if pressed[pygame.K_RIGHT]: x += 3
    x1 += d*3
    if x>=400 : x=3
    if x<=0 : x=400
    if y>=300 : y=3
    if y<=0 : y=300
    if x1>=400 or x1<=0:
        d = (-1)*d
        y1 +=3
    if y1>300 : y1=0
    
    if x == x1 and y==y1 :
        score += 1
    
    text = font.render(str(score),False,(0,128,0),(128,0,0))
    screen.fill((0, 0, 0))
    screen.blit(get_image('ball.png'), (x, y))
    screen.blit(get_image('ball.png'), (x1, y1))
    screen.blit(text,(1,1))
    pygame.display.flip()
    clock.tick(60)

</pre>