python - Sprites aren't appearing -
my sprites(tokens) aren't appearing on screen. included of code incase in body of code messing up. set in stars code straight had token sprites. gist of code is: 3 blocks appear on screen, , right i'm trying create either 11, 15, or 21 tokens (orange 20x20 pixel squares) appear spread out in middle circle. not showing up. ignore code arrow keys later. first priority getting sprites appearing, if have suggestions speeding or improve organizing code i'd love hear it! thanks.
import pygame, sys pygame.locals import * import pygame import time import random pygame.init() screen = pygame.display.set_mode((720, 480)) grayness = pygame.color(220, 220, 220) black = pygame.color(0, 0, 0) bluish = pygame.color(0, 0, 255) reddish = pygame.color(255, 0 ,0) white = pygame.color(255, 255, 255) t_end = time.time() + 60*15 g=0 f = open("results", "a") f.write("trial number, answer, reaction time, right answer, number of balls in left circle @ response, number of balls in middle circle @ response, number of balls in right circle @ response\n") f.close() **class tokens(pygame.sprite.sprite): def __init__(self, color, width, height): pygame.sprite.sprite.__init__(self) self.image = pygame.surface([width, height]) self.image.fill(color) self.rect = self.image.get_rect() token_list = pygame.sprite.group()** while time.time() < t_end: screen.fill(gray) pygame.draw.rect(screen, black, rect((30,140), (200,200))) pygame.draw.rect(screen, black, rect((260,140), (200,200))) pygame.draw.rect(screen, black, rect((490,140), (200,200))) pygame.display.update() **n = random.randint(1,3) if n == 1: n=11 elif n == 2: n = 15 elif n == 3: n = 21 x_coords = [35, 75, 115, 155, 195, 35, 75, 115, 155, 195, 35, 75, 115, 155, 195, 35, 75, 115, 155, 195] y_coords = [170, 170, 170, 170, 170, 210, 210, 210, 210, 210, 250, 250, 250, 250, 250, 290, 290, 290, 290, 290] in range(0,n): token = tokens((255,120,0), 20, 20) token.rect.x = x_coords[i-1] token.rect.y = y_coords[i-1] token_list.add(token)** event in pygame.event.get(): if event.type == keydown: g+=1 keys = pygame.key.get_pressed() if keys[pygame.k_left]: reply = "left" f = open("results", "a") f.write(str(g) + ", left\n") f.close() pygame.draw.rect(screen, blue, rect((30,140), (200,200))) print("you picked left!") pygame.display.update() time.sleep(1) screen.fill(black) pygame.display.update() time.sleep(1) elif keys[pygame.k_right]: reply = "right" f = open("results", "a") f.write(str(g) + ", right\n") f.close() pygame.draw.rect(screen, blue, rect((490,140), (200,200))) print("you picked right!") pygame.display.update() time.sleep(1) screen.fill(black) pygame.display.update() time.sleep(1)
you add together sprites token_list
sprite group, never draw them on.
the easiest way phone call token_list.draw(screen)
before updating screen.
also, event handling messed up. e.g. there's no need pressed keys pygame.key.get_pressed()
if grab keydown
event. check event.key
k_left
or k_right
.
python class pygame subclass sprite
No comments:
Post a Comment