Eclipse - asignar funcion de score en pygame

 
Vista:
Imágen de perfil de gabmaster16
Val: 1
Ha aumentado su posición en 3 puestos en Eclipse (en relación al último mes)
Gráfica de Eclipse

asignar funcion de score en pygame

Publicado por gabmaster16 (1 intervención) el 04/04/2018 01:58:57
Buen dia gente resulta que tengo un codigo que pretende ser un memorama de mario bross jeje.
bien ire al grano, quiero añadir texto score en la parte infrior en la ventana (debajo de las tarjetas) pero no me sale y estoy atorado en esa parte. alguno podria darme una idea de como agregar un sistema de score, el chiste es que se actualice y añada 100 puntos cada que encuentras un par y lo muestre en pantalla
Este es el codigo de mi juego:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
import pygame, sys
import os.path
from pygame.locals import *
from pygame import *
import threading
import math
import random
from builtins import str
from pygame.tests.base_test import pygame_quit
from pygame.examples.aliens import Score
pygame.init()
 
#VARIABLES GLOBALES
SCREENRECT = Rect(0, 0, 640, 480)
MARGEN_TARJETA = 80
PADDING_TARJETA = 17
 
#CARPETA RAIZ, DONDE ESTAN TODOS LOS ARCHIVOS DEL JUEGO Y ESTA CLASE
main_dir = os.path.split(os.path.abspath(__file__))[0]
 
#FUNCIONES
def cargar_imagenes(*archivos):
    imgs = []
    for archivo in archivos:
        imgs.append(cargar_imagen(archivo))
    return imgs
 
 
ANCHO = 750
ALTURA = 650
TARJETA_ACTUAL = None
TARJETA_ACTUAL = None
BLANCO = (255, 255, 255)
screen = pygame.display.set_mode((ANCHO, ALTURA))
amarillo = (255, 233, 0)
 
#CARGAR IMAGEN
def cargar_imagen(nombrearchivo, transparent=False):
    try:
        imagen = pygame.image.load(nombrearchivo)
        imagen = pygame.transform.scale(imagen, (130, 130))
    except pygame.error:
        raise SystemExit
    imagen = imagen.convert()
    if transparent:
        color = imagen.get_at((0, 0))
        imagen.set_colorkey(color, RLEACCEL)
    return imagen
 
#Comprobar
def comprobar(tarjeta):
 
    global TARJETA_ACTUAL
    if TARJETA_ACTUAL == None:
        tarjeta.voltear()
        TARJETA_ACTUAL = tarjeta
    else:
        tarjeta.voltear()
        if TARJETA_ACTUAL.id == tarjeta.id:
            print("Coinciden!!!")
            TARJETA_ACTUAL.image.set_alpha(80)
            tarjeta.image.set_alpha(80)
            TARJETA_ACTUAL = None
        else:
            print("No coinciden.")
 
            def func():
                global TARJETA_ACTUAL
                tarjeta.pressed = False
                tarjeta.voltear()
                TARJETA_ACTUAL.voltear()
                TARJETA_ACTUAL.pressed = False
                TARJETA_ACTUAL = None
 
            set_timeout(func, 0.25)
#TEMPORIZADOR
def set_timeout(func, sec):
    t = None
    def func_wrapper():
        func()
        t.cancel()
    t = threading.Timer(sec, func_wrapper)
    t.start()
#CLASE TARJETA
class Tarjeta(pygame.sprite.Sprite):
    global PADDING_TARJETA
 
    def __init__(self, data):
        pygame.sprite.Sprite.__init__(self)
        self.images = []
        self.images.append(cargar_imagen("tarjeta.jpg"))
        self.images.append(cargar_imagen(data[0]))
        self.rect = self.images[0].get_rect()
        self.rect.centerx = PADDING_TARJETA
        self.rect.centery = 100
        self.image = self.images[0]
        self.volteada = False
        self.id = data[1]
        self.pressed = False
 
    def voltear(self):
        if not self.volteada:
            self.image = self.images[1]
            self.volteada = True
        else:
            self.image = self.images[0]
            self.volteada = False
 
    def mouseEvent(self, type):
            if type == "click":
                if not self.pressed:
                    comprobar(self)
                    self.pressed = True
#CLASE PRINCIPAL
def main():
    pygame.display.set_caption("Gaborama")
    background = cargar_imagen('fondo.jpg')
    background = pygame.transform.scale(background, (ANCHO, ALTURA))
    screen.blit(background, (0,0))
 
    mifuente3 = pygame.font.SysFont("Wide Latin",30)
    mitexto3 = mifuente3.render("Score",0, (255,233,0))
    screen.blit(mitexto3,(300,600))
 
    displaylist = []
    global PADDING_TARJETA
    global MARGEN_TARJETA
    tarjetas = [("tarjeta1.jpg", "shyguy"), ("tarjeta2.jpg", "shyguy"), ("tarjeta3.jpg", "gomba"), ("tarjeta4.jpg", "gomba"),
                    ("tarjeta5.jpg", "bowserjr"),("tarjeta6.jpg", "bowserjr"), ("tarjeta7.jpg", "koopa"), ("tarjeta8.jpg", "koopa"),
                    ("tarjeta9.jpg", "magic_koopa"), ("tarjeta10.jpg", "magic_koopa"), ("tarjeta11.jpg", "spin"), ("tarjeta12.jpg", "spin"),
                    ("tarjeta13.jpg", "toad"), ("tarjeta14.jpg", "toad"), ("tarjeta15.jpg", "chep-chep"), ("tarjeta16.jpg", "chep-chep"),
                    ("tarjeta17.jpg", "toad_volador"), ("tarjeta18.jpg", "toad_volador"),("tarjeta19.jpg", "bowser"),("tarjeta20.jpg", "bowser")]
 
    random.shuffle(tarjetas)
 
    for i in range(0, len(tarjetas)):
        tarjeta = Tarjeta(tarjetas[i])
        tarjeta.rect.centerx = MARGEN_TARJETA + ((i % 5) * (tarjeta.rect.width+PADDING_TARJETA))
        tarjeta.rect.centery = MARGEN_TARJETA + (math.floor(i / 5) * (tarjeta.rect.height + PADDING_TARJETA))
        displaylist.append(tarjeta)
 
 
    while True:
        for evento in pygame.event.get():
            if evento.type == QUIT:
                sys.exit(0)
            if evento.type == pygame.MOUSEBUTTONUP:
                if(evento.button == 1):
                    x, y = evento.pos
 
                    for i in range(0, len(displaylist)):
                        child = displaylist[i]
                        if child.rect.collidepoint(x, y):
                            child.mouseEvent("click")
 
        for i in range(0, len(displaylist)):
            screen.blit(displaylist[i].image, displaylist[i].rect)
 
        pygame.display.flip()
 
    return 0
 
class Score:
    def __init__(self):
        self.score = 0
        self.font = pygame.font.SysFont('Wide Latin', 30)
 
    def add(self):
        self.score += 100
 
    def val(self):
        return self.score
score = Score()


ya tengo mi clase de score y funciones pero cuando las quiero llamar me tirar errores por todos lados.
les adjunto una imagen de como se ve corriendo para que se den una idea

memorama

PD: es mi primera vez en pygame
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder