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:
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
PD: es mi primera vez en pygame
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
PD: es mi primera vez en pygame
Valora esta pregunta
0