-
Notifications
You must be signed in to change notification settings - Fork 1
/
Sprite.py
75 lines (74 loc) · 2.88 KB
/
Sprite.py
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
#background movement for game
import pygame
import os
from gesture_recognizer import GestureRecognizer as gr
from settings import *
# import gesture recognizer class
class Player(object): # represents the character, not the game
def __init__(self):
""" The constructor of the class """
# self.image = pygame.image.load("assets/Circle.png")
self.sprite = pygame.sprite.Sprite()
self.sprite.image = pygame.image.load("assets/Circle.png").convert_alpha()
self.sprite.image = pygame.transform.scale(self.sprite.image, (20,20))
self.sprite.rect = self.sprite.image.get_rect()
self.sprite.rect.move_ip(70,70)
# self.image = pygame.transform.scale(self.image, (50, 50))
# the character's position
self.prev_x = 0
self.prev_y = 0
self.prev_x_dir = 0
self.prev_y_dir = 0
def handle_keys(self, list):
""" Handles Keys """
key = pygame.key.get_pressed()
dist = 10
if key[pygame.K_DOWN]: # down key
self.sprite.rect.centery += dist # move down
elif key[pygame.K_UP]: # up key
self.sprite.rect.centery -= dist # move up
if key[pygame.K_RIGHT]: # right key
self.sprite.rect.centerx += dist # move right
elif key[pygame.K_LEFT]: # left key
self.sprite.rect.centerx -= dist # move left
if self.sprite.rect.collidelist(list) > 1:
print('collided')
self.sprite.rect.centerx = self.prev_x
self.sprite.rect.centery = self.prev_y
self.prev_x = self.sprite.rect.centerx
self.prev_y = self.sprite.rect.centery
def handle_gestures(self, x_dir, y_dir, rect_list):
dist = 10
if x_dir == 0 and y_dir == 0:
# still
print("still")
if x_dir > 0.5:
# moving right
print("moving right")
self.sprite.rect.centerx += dist*x_dir
elif x_dir < -0.5:
# moving left
print("moving left")
self.sprite.rect.centerx -= dist*x_dir
if y_dir > 0.5:
# moving up
print("moving up")
self.sprite.rect.centery -= dist*y_dir
elif y_dir < -0.5:
# moving down
print("moving down")
self.sprite.rect.centery += dist*y_dir
if self.sprite.rect.collidelist(rect_list) > 1:
print('collided')
self.sprite.rect.centerx = self.prev_x
self.sprite.rect.centery = self.prev_y
self.prev_x_dir = x_dir
self.prev_y_dir = y_dir
self.prev_x = self.sprite.rect.centerx
self.prev_y = self.sprite.rect.centery
# print('x_dir', x_dir)
# print('y_dir', y_dir)
def draw(self, surface):
""" Draw on surface """
# blit yourself at your current position
surface.blit(self.sprite.image, self.sprite.rect.topleft)