Skip to content

Commit cdcd06e

Browse files
committed
How To Add Score And Health Bar - Python #PyGame Lesson 7
How To Add Score And Health Bar - Python #PyGame Lesson 7
1 parent e386eaa commit cdcd06e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+316
-0
lines changed

.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/.name

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/python____project.iml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python PyGame/L1.png

4.16 KB

Python PyGame/L10E.png

1.53 KB

Python PyGame/L11E.png

1.5 KB

Python PyGame/L1E.png

1.41 KB

Python PyGame/L2.png

4.85 KB

Python PyGame/L2E.png

1.56 KB

Python PyGame/L3.png

4.81 KB

Python PyGame/L3E.png

1.43 KB

Python PyGame/L4.png

4.76 KB

Python PyGame/L4E.png

1.34 KB

Python PyGame/L5.png

4.91 KB

Python PyGame/L5E.png

1.35 KB

Python PyGame/L6.png

4.3 KB

Python PyGame/L6E.png

1.4 KB

Python PyGame/L7.png

4.15 KB

Python PyGame/L7E.png

1.46 KB

Python PyGame/L8.png

4.77 KB

Python PyGame/L8E.png

1.38 KB

Python PyGame/L9.png

4.24 KB

Python PyGame/L9E.png

1.57 KB

Python PyGame/R1.png

4.09 KB

Python PyGame/R10E.png

1.55 KB

Python PyGame/R11E.png

1.47 KB

Python PyGame/R1E.png

1.38 KB

Python PyGame/R2.png

4.85 KB

Python PyGame/R2E.png

1.36 KB

Python PyGame/R3.png

4.74 KB

Python PyGame/R3E.png

1.39 KB

Python PyGame/R4.png

4.68 KB

Python PyGame/R4E.png

1.44 KB

Python PyGame/R5.png

4.74 KB

Python PyGame/R5E.png

1.58 KB

Python PyGame/R6.png

4.22 KB

Python PyGame/R6E.png

1.42 KB

Python PyGame/R7.png

4.14 KB

Python PyGame/R7E.png

1.42 KB

Python PyGame/R8.png

4.78 KB

Python PyGame/R8E.png

1.36 KB

Python PyGame/R9.png

4.11 KB

Python PyGame/R9E.png

1.55 KB

Python PyGame/bg.jpg

15.5 KB

Python PyGame/bullet.mp3

34 KB
Binary file not shown.

Python PyGame/hit.mp3

2.57 KB
Binary file not shown.

Python PyGame/main.py

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
import pygame
2+
pygame.init()
3+
window = pygame.display.set_mode((500,480))
4+
pygame.display.set_caption("Turtle Code")
5+
6+
walkRight = [pygame.image.load('R1.png'),
7+
pygame.image.load('R2.png'),
8+
pygame.image.load('R3.png'),
9+
pygame.image.load('R4.png'),
10+
pygame.image.load('R5.png'),
11+
pygame.image.load('R6.png'),
12+
pygame.image.load('R7.png'),
13+
pygame.image.load('R8.png'),
14+
pygame.image.load('R9.png')]
15+
16+
17+
walkLeft = [pygame.image.load('L1.png'),
18+
pygame.image.load('L2.png'),
19+
pygame.image.load('L3.png'),
20+
pygame.image.load('L4.png'),
21+
pygame.image.load('L5.png'),
22+
pygame.image.load('L6.png'),
23+
pygame.image.load('L7.png'),
24+
pygame.image.load('L8.png'),
25+
pygame.image.load('L9.png')
26+
]
27+
28+
29+
bg = pygame.image.load('bg.jpg')
30+
char = pygame.image.load('standing.png')
31+
32+
clock = pygame.time.Clock()
33+
34+
score = 0 #new
35+
36+
class player(object):
37+
def __init__(self, x, y, width, height):
38+
self.x = x
39+
self.y = y
40+
self.width = width
41+
self.height = height
42+
self.mov = 5
43+
self.isJump = False
44+
self.left = False
45+
self.right = False
46+
self.walkCount = 0
47+
self.jumpCount = 10
48+
self.standing = True
49+
self.hitbox = (self.x + 17, self.y + 11, 29,52)
50+
51+
def draw(self, window):
52+
if self.walkCount + 1 >= 27:
53+
self.walkCount = 0
54+
55+
if not (self.standing):
56+
57+
if self.left:
58+
window.blit(walkLeft[self.walkCount // 3], (self.x, self.y))
59+
self.walkCount += 1
60+
elif self.right:
61+
window.blit(walkRight[self.walkCount // 3], (self.x, self.y))
62+
self.walkCount += 1
63+
else:
64+
if self.right:
65+
window.blit(walkRight[0], (self.x, self.y))
66+
else:
67+
window.blit(walkLeft[0], (self.x, self.y))
68+
69+
self.hitbox = (self.x + 17, self.y + 11, 29, 52)
70+
#pygame.draw.rect(window, (255,0,0), self.hitbox, 2)
71+
72+
class projectile(object):
73+
def __init__(self, x, y, radius, color, facing):
74+
self.x = x
75+
self.y = y
76+
self.radius = radius
77+
self.color = color
78+
self.facing = facing
79+
self.vel = 8 * facing
80+
81+
def draw(self, window):
82+
pygame.draw.circle(window, self.color, (self.x, self.y), self.radius)
83+
84+
85+
class enemy(object):
86+
walkRight = [pygame.image.load('R1E.png'),
87+
pygame.image.load('R2E.png'),
88+
pygame.image.load('R3E.png'),
89+
pygame.image.load('R4E.png'),
90+
pygame.image.load('R5E.png'),
91+
pygame.image.load('R6E.png'),
92+
pygame.image.load('R7E.png'),
93+
pygame.image.load('R8E.png'),
94+
pygame.image.load('R9E.png'),
95+
pygame.image.load('R10E.png'),
96+
pygame.image.load('R11E.png')]
97+
98+
walkLeft = [pygame.image.load('L1E.png'),
99+
pygame.image.load('L2E.png'),
100+
pygame.image.load('L3E.png'),
101+
pygame.image.load('L4E.png'),
102+
pygame.image.load('L5E.png'),
103+
pygame.image.load('L6E.png'),
104+
pygame.image.load('L7E.png'),
105+
pygame.image.load('L8E.png'),
106+
pygame.image.load('L9E.png'),
107+
pygame.image.load('L10E.png'),
108+
pygame.image.load('L11E.png')]
109+
110+
def __init__(self, x, y, width, height, end):
111+
self.x = x
112+
self.y = y
113+
self.width = width
114+
self.height = height
115+
self.path = [x, end]
116+
self.walkCount = 0
117+
self.vel = 3
118+
self.hitbox = (self.x + 17, self.y + 2, 31, 57)
119+
self.health = 10 #new
120+
self.visible = True #new
121+
122+
def draw(self, win):
123+
self.move()
124+
125+
if self.visible: # NEW
126+
if self.walkCount + 1 >= 33:
127+
self.walkCount = 0
128+
129+
if self.vel > 0:
130+
win.blit(self.walkRight[self.walkCount // 3], (self.x, self.y))
131+
self.walkCount += 1
132+
else:
133+
win.blit(self.walkLeft[self.walkCount // 3], (self.x, self.y))
134+
self.walkCount += 1
135+
136+
pygame.draw.rect(win, (255, 0, 0), (self.hitbox[0],
137+
self.hitbox[1] - 20, 50, 10)) # NEW
138+
pygame.draw.rect(win, (0, 128, 0),
139+
(self.hitbox[0], self.hitbox[1] - 20, 50 - (5 *
140+
(10 - self.health)), 10)) # NEW
141+
142+
self.hitbox = (self.x + 17, self.y + 2, 31, 57)
143+
#pygame.draw.rect(window, (255,0,0), self.hitbox, 2)
144+
145+
def move(self):
146+
if self.vel > 0:
147+
if self.x + self.vel < self.path[1]:
148+
self.x += self.vel
149+
else:
150+
self.vel = self.vel * -1
151+
self.walkCount = 0
152+
else:
153+
if self.x - self.vel > self.path[0]:
154+
self.x += self.vel
155+
else:
156+
self.vel = self.vel * -1
157+
self.walkCount = 0
158+
159+
def hit(self): #new
160+
if self.health > 0:
161+
self.health -= 1
162+
else:
163+
self.visible = False
164+
print('hit')
165+
166+
167+
def redrawGameWindow():
168+
window.blit(bg, (0, 0))
169+
text = font.render('Score: ' + str(score), 1, (0, 0, 0)) #new
170+
window.blit(text, (350, 10)) #new
171+
man.draw(window)
172+
goblin.draw(window)
173+
for bullet in bullets:
174+
bullet.draw(window)
175+
pygame.display.update()
176+
177+
178+
font = pygame.font.SysFont('comicsans', 30, True) #new
179+
man = player(200, 410, 64, 64)
180+
goblin = enemy(100, 410, 64, 64, 300) #NEW
181+
shootLoop = 0
182+
run = True
183+
bullets = []
184+
while run:
185+
clock.tick(27)
186+
187+
if shootLoop > 0:
188+
shootLoop += 1
189+
if shootLoop > 3:
190+
shootLoop = 0
191+
192+
for event in pygame.event.get():
193+
if event.type == pygame.QUIT:
194+
run = False
195+
196+
for bullet in bullets:
197+
if bullet.y - bullet.radius < goblin.hitbox[1] + goblin.hitbox[3] and \
198+
bullet.y + bullet.radius > goblin.hitbox[1]:
199+
200+
if bullet.x + bullet.radius > goblin.hitbox[0] and bullet.x - \
201+
bullet.radius < goblin.hitbox[0] + \
202+
goblin.hitbox[2]:
203+
goblin.hit()
204+
score += 1 #new
205+
bullets.pop(bullets.index(bullet))
206+
207+
if bullet.x < 500 and bullet.x > 0:
208+
bullet.x += bullet.vel
209+
210+
else:
211+
bullets.pop(bullets.index(bullet))
212+
213+
keys = pygame.key.get_pressed()
214+
215+
if keys[pygame.K_SPACE] and shootLoop == 0:
216+
if man.left:
217+
facing = -1
218+
else:
219+
facing = 1
220+
221+
if len(bullets) < 5:
222+
bullets.append(
223+
projectile(round(man.x + man.width // 2),
224+
round(man.y + man.height // 2),
225+
6, (0,0,0), facing))
226+
shootLoop = 1
227+
228+
if keys[pygame.K_LEFT] and man.x > man.mov:
229+
man.x -= man.mov
230+
man.left = True
231+
man.right = False
232+
man.standing = False
233+
234+
elif keys[pygame.K_RIGHT] and man.x < 500 - man.mov - man.width:
235+
man.x +=man.mov
236+
man.left = False
237+
man.right = True
238+
man.standing = False
239+
240+
else:
241+
man.standing = True
242+
man.walkCount = 0
243+
244+
if not(man.isJump):
245+
if keys[pygame.K_UP]:
246+
man.isJump = True
247+
man.left = False
248+
man.right = False
249+
man.walkCount = 0
250+
251+
else:
252+
if man.jumpCount >= -10:
253+
neg = 1
254+
if man.jumpCount < 0:
255+
neg = -1
256+
man.y -= (man.jumpCount ** 2) * 0.5 * neg
257+
man.jumpCount -= 1
258+
else:
259+
man.isJump = False
260+
man.jumpCount = 10
261+
262+
redrawGameWindow()
263+
264+
pygame.quit()

Python PyGame/music.mp3

6.36 MB
Binary file not shown.

Python PyGame/standing.png

4.78 KB

0 commit comments

Comments
 (0)