-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpellets.py
72 lines (62 loc) · 2.3 KB
/
pellets.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
import pygame
from vector import Vector2
from constants import *
import numpy as np
class Pellet(object):
def __init__(self, row, column):
self.name = PELLET
self.position = Vector2(column*TILEWIDTH, row*TILEHEIGHT)
self.color = WHITE
#self.radius = int(4 * TILEWIDTH / 16)
#self.collideRadius = int(4 * TILEWIDTH / 16)
self.radius = int(2 * TILEWIDTH / 16)
self.collideRadius = int(2 * TILEWIDTH / 16)
self.points = 10
self.visible = True
def render(self, screen):
if self.visible:
#p = self.position.asInt()
adjust = Vector2(TILEWIDTH, TILEHEIGHT) / 2
p = self.position + adjust
pygame.draw.circle(screen, self.color, p.asInt(), self.radius)
class PowerPellet(Pellet):
def __init__(self, row, column):
Pellet.__init__(self, row, column)
self.name = POWERPELLET
self.radius = int(8 * TILEWIDTH / 16)
self.points = 50
self.flashTime = 0.2
self.timer= 0
def update(self, dt):
self.timer += dt
if self.timer >= self.flashTime:
self.visible = not self.visible
self.timer = 0
class PelletGroup(object):
def __init__(self, pelletfile):
self.pelletList = []
self.powerpellets = []
self.createPelletList(pelletfile)
self.numEaten = 0
def update(self, dt):
for powerpellet in self.powerpellets:
powerpellet.update(dt)
def createPelletList(self, pelletfile):
data = self.readPelletfile(pelletfile)
for row in range(data.shape[0]):
for col in range(data.shape[1]):
if data[row][col] in ['.', '+']:
self.pelletList.append(Pellet(row, col))
elif data[row][col] in ['P', 'p']:
pp = PowerPellet(row, col)
self.pelletList.append(pp)
self.powerpellets.append(pp)
def readPelletfile(self, textfile):
return np.loadtxt(textfile, dtype='<U1')
def isEmpty(self):
if len(self.pelletList) == 0:
return True
return False
def render(self, screen):
for pellet in self.pelletList:
pellet.render(screen)