Skip to content

Commit 39c0b89

Browse files
authored
Merge pull request #591 from prashantgo/master
Game Development in Python using Pygame
2 parents bb9ede7 + c3e066b commit 39c0b89

File tree

4 files changed

+228
-2
lines changed

4 files changed

+228
-2
lines changed
598 Bytes
Loading
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
import random
2+
import pygame
3+
4+
pygame.init()
5+
6+
white = (255, 255, 255)
7+
black = (0, 0, 0)
8+
red = (255, 0, 0)
9+
green = (0, 255, 0)
10+
11+
display_width = 900
12+
display_height = 600
13+
block_size = 30
14+
speed = 30
15+
apple_thickness = 30
16+
17+
gameDisplay = pygame.display.set_mode((display_width, display_height))
18+
pygame.display.set_caption('Slither')
19+
apple_img = pygame.image.load('apple2.png')
20+
snakeHead = pygame.image.load('snakehead.png')
21+
pygame.display.set_icon(apple_img)
22+
clock = pygame.time.Clock()
23+
24+
FPS = 15
25+
small_font = pygame.font.SysFont(None, 25)
26+
med_font = pygame.font.SysFont(None, 50)
27+
large_font = pygame.font.SysFont(None, 80)
28+
29+
30+
def pause():
31+
32+
paused = True
33+
message_to_screen("Game Paused", red, -100, "large")
34+
message_to_screen("press C to continue,R to restart and Q to quit", black, 25)
35+
pygame.display.update()
36+
while paused:
37+
for event in pygame.event.get():
38+
if event.type == pygame.KEYDOWN:
39+
if event.key == pygame.K_q:
40+
pygame.quit()
41+
quit()
42+
elif event.key == pygame.K_c:
43+
paused = False
44+
elif event.key == pygame.K_r:
45+
paused = False
46+
game_loop()
47+
elif event.type == pygame.QUIT:
48+
pygame.quit()
49+
quit()
50+
51+
52+
def score(underscore):
53+
text = small_font.render("score: " + str(underscore), True, black)
54+
gameDisplay.blit(text, [10, 10])
55+
56+
57+
def snake(snake_list, direction):
58+
if direction == 'right':
59+
head = pygame.transform.rotate(snakeHead, 270)
60+
elif direction == 'left':
61+
head = pygame.transform.rotate(snakeHead, 90)
62+
elif direction == 'top':
63+
head = pygame.transform.rotate(snakeHead, 0)
64+
else:
65+
head = pygame.transform.rotate(snakeHead, 180)
66+
gameDisplay.blit(head, [snake_list[-1][0], snake_list[-1][1]])
67+
for xny in snake_list[:-1]:
68+
pygame.draw.rect(gameDisplay, green, [xny[0], xny[1], block_size, block_size])
69+
70+
71+
def text_objects(text, color, size):
72+
text_surf = small_font.render(text, True, color)
73+
if size == "small":
74+
text_surf = small_font.render(text, True, color)
75+
elif size == "medium":
76+
text_surf = med_font.render(text, True, color)
77+
elif size == "large":
78+
text_surf = large_font.render(text, True, color)
79+
return text_surf, text_surf.get_rect()
80+
81+
82+
def message_to_screen(msg, color, y_displace=0, size='small'):
83+
text_surf, text_rect = text_objects(msg, color, size)
84+
text_rect.center = (display_width / 2), (display_height / 2) + y_displace
85+
gameDisplay.blit(text_surf, text_rect)
86+
87+
88+
def game_intro():
89+
intro = True
90+
91+
while intro:
92+
gameDisplay.fill(white)
93+
message_to_screen("Welcome to Slither", green, -100, "large")
94+
message_to_screen("Press C to play, P to pause, R to restart and Q to exit", black, -20, "small")
95+
pygame.display.update()
96+
clock.tick(5)
97+
98+
for event in pygame.event.get():
99+
if event.type == pygame.KEYDOWN:
100+
if event.key == pygame.K_q:
101+
pygame.quit()
102+
quit()
103+
elif event.key == pygame.K_c:
104+
intro = False
105+
elif event.type == pygame.QUIT:
106+
pygame.quit()
107+
quit()
108+
109+
110+
def game_loop():
111+
112+
game_exit = False
113+
game_over = False
114+
115+
lead_x = display_width / 2
116+
lead_y = display_height / 2
117+
118+
lead_x_change = speed
119+
lead_y_change = 0
120+
121+
snake_list = []
122+
snake_length = 1
123+
124+
rand_apple_x = random.randrange(0, display_width - apple_thickness + 1, 30)
125+
rand_apple_y = random.randrange(0, display_height - apple_thickness + 1, 30)
126+
127+
direction = 'right'
128+
129+
while not game_exit:
130+
131+
if game_over:
132+
message_to_screen("Game over ", red, y_displace=-50, size="large")
133+
message_to_screen("Your score is: " + str(snake_length - 1), green, y_displace=10, size="medium")
134+
message_to_screen("press C to continue, Q to quit", black, y_displace=60, size="medium")
135+
pygame.display.update()
136+
137+
while game_over:
138+
for event in pygame.event.get():
139+
if event.type == pygame.KEYDOWN:
140+
if event.key == pygame.K_q:
141+
game_exit = True
142+
game_over = False
143+
elif event.key == pygame.K_c:
144+
game_loop()
145+
elif event.type == pygame.QUIT:
146+
game_exit = True
147+
game_over = False
148+
149+
for event in pygame.event.get():
150+
if event.type == pygame.QUIT:
151+
game_exit = True
152+
elif event.type == pygame.KEYDOWN:
153+
if event.key == pygame.K_q:
154+
game_exit = True
155+
game_over = False
156+
elif event.key == pygame.K_LEFT:
157+
lead_x_change = -speed
158+
lead_y_change = 0
159+
direction = 'left'
160+
elif event.key == pygame.K_RIGHT:
161+
lead_x_change = speed
162+
lead_y_change = 0
163+
direction = 'right'
164+
elif event.key == pygame.K_UP:
165+
lead_y_change = -speed
166+
lead_x_change = 0
167+
direction = 'top'
168+
elif event.key == pygame.K_DOWN:
169+
lead_y_change = speed
170+
lead_x_change = 0
171+
direction = 'down'
172+
elif event.key == pygame.K_p:
173+
pause()
174+
elif event.key == pygame.K_r:
175+
game_loop()
176+
177+
if lead_x < 0 or lead_x > display_width - block_size or lead_y < 0 or lead_y > display_height - block_size:
178+
game_over = True
179+
180+
lead_x += lead_x_change
181+
lead_y += lead_y_change
182+
gameDisplay.fill(white)
183+
while [rand_apple_x, rand_apple_y] in snake_list:
184+
rand_apple_x = random.randrange(0, display_width - apple_thickness + 1, 30)
185+
rand_apple_y = random.randrange(0, display_height - apple_thickness + 1, 30)
186+
gameDisplay.blit(apple_img, (rand_apple_x, rand_apple_y))
187+
188+
snake_head = list()
189+
snake_head.append(lead_x)
190+
snake_head.append(lead_y)
191+
snake_list.append(snake_head)
192+
193+
for each in snake_list[:-2]:
194+
if each == snake_head:
195+
game_over = True
196+
197+
if len(snake_list) > snake_length:
198+
del snake_list[0]
199+
200+
snake(snake_list, direction)
201+
score(snake_length - 1)
202+
pygame.display.update()
203+
204+
if rand_apple_x <= lead_x < rand_apple_x + apple_thickness:
205+
if rand_apple_y <= lead_y < rand_apple_y + apple_thickness or rand_apple_y <= lead_y + block_size - 1 < \
206+
rand_apple_y + apple_thickness:
207+
rand_apple_x = random.randrange(0, display_width - apple_thickness + 1, 30)
208+
rand_apple_y = random.randrange(0, display_height - apple_thickness + 1, 30)
209+
snake_length += 1
210+
211+
elif rand_apple_y <= lead_y < rand_apple_y + apple_thickness:
212+
if rand_apple_x <= lead_x + block_size - 1 < rand_apple_x + apple_thickness or rand_apple_x <= lead_x < \
213+
rand_apple_x + apple_thickness:
214+
rand_apple_x = random.randrange(0, display_width - apple_thickness + 1, 30)
215+
rand_apple_y = random.randrange(0, display_height - apple_thickness + 1, 30)
216+
snake_length += 1
217+
clock.tick(FPS)
218+
219+
pygame.quit()
220+
quit()
221+
222+
game_intro()
223+
game_loop()
447 Bytes
Loading

fibonacci/python/Fibonacci-with-Memoization.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
# Array for saving calculated ones
7-
fib_mem = [0 for i in range(100000)]
7+
fib_mem = [0]*100000
88
fib_mem[0] = 0
99
fib_mem[1] = 1
1010

@@ -29,10 +29,13 @@ def main():
2929

3030
# Take input
3131
n = int(input("Enter the number of terms: \n"))
32+
33+
# setting the values of array
34+
temp = fibonacci(n)
3235

3336
# loop an print the series
3437
for i in range(n):
35-
print(fibonacci(i))
38+
print(fib_mem[i])
3639

3740
# Run the script
3841
main()

0 commit comments

Comments
 (0)