1
+ __author__ = 'Rutvik'
2
+ import pygame
3
+ import time
4
+ import random
5
+ import os
6
+
7
+ screen_x = 200
8
+ screen_y = 100
9
+ os .environ ['SDL_VIDEO_WINDOW_POS' ] = "%d,%d" % (screen_x ,screen_y )
10
+ pygame .init ()
11
+ display_size = (1080 ,720 )
12
+ game_display = pygame .display .set_mode (display_size )
13
+ pygame .display .set_caption ("Copter Chase" )
14
+ clock = pygame .time .Clock ()
15
+ controls_image = pygame .image .load ("wasd.png" )
16
+ missile_image = pygame .image .load ("missile-war-weapon_318-48046.png" )
17
+ crash_sound = pygame .mixer .Sound ("Smashing-Yuri_Santana-1233262689.wav" )
18
+ pygame .mixer .music .load ("Piano_Desire.wav" )
19
+
20
+ #Copter Values
21
+ copter_image = pygame .image .load ("copter2.png" )
22
+ copter_width = 100
23
+ copter_height = 75
24
+
25
+ #Sound Files
26
+ red = (255 ,0 ,0 )
27
+ white = (255 ,255 ,255 )
28
+ black = (0 ,0 ,0 )
29
+ green = (0 ,255 ,0 )
30
+ blue = (0 ,0 ,255 )
31
+ wood = (139 ,35 ,35 )
32
+ bg = (61 ,89 ,171 )
33
+
34
+
35
+ def missile_display (x ,y ):
36
+ game_display .blit (missile_image ,(x ,y ))
37
+
38
+
39
+ def controls_display ():
40
+ game_display .blit (controls_image ,(400 ,20 ))
41
+
42
+
43
+ def copter_display (image1 , x ,y ):
44
+ game_display .blit (image1 , (x , y ))
45
+
46
+
47
+ def title_text_function (text , font , color ):
48
+ title_text_surface = font .render (text , True , color )
49
+ return title_text_surface , title_text_surface .get_rect ()
50
+
51
+
52
+ def button_text (text , font , color ):
53
+ buttontext_surf = font .render (text ,True , color )
54
+ return buttontext_surf , buttontext_surf .get_rect ()
55
+
56
+
57
+ def title_screen (text , color ):
58
+ title_s_font = pygame .font .SysFont ("comicsansms" , 120 )
59
+ title_s_surf , title_s_rect = title_text_function (text , title_s_font , color )
60
+ title_s_rect .center = ((display_size [0 ]/ 2 ), display_size [1 ]/ 2 )
61
+ game_display .blit (title_s_surf , title_s_rect )
62
+
63
+ def credits_object (text ,font ):
64
+ cre_surf = font .render (text , True , white )
65
+ return cre_surf , cre_surf .get_rect ()
66
+
67
+ def game_credits (text ):
68
+ credits_font = pygame .font .SysFont ("comicsansms" , 15 )
69
+ credits_surf , credits_rect = credits_object (text , credits_font )
70
+ credits_rect .center = (80 , 10 )
71
+ game_display .blit (credits_surf , credits_rect )
72
+
73
+ def buttons (color_rect ,x ,y ,w ,h ,button_font_size ,text ,color_font ):
74
+ pygame .draw .rect (game_display ,color_rect ,(x ,y ,w ,h ))
75
+ button_font = pygame .font .Font ("freesansbold.ttf" , button_font_size )
76
+ button_surf , button_rect = button_text (text ,button_font ,color_font )
77
+ button_rect .center = (x + (w / 2 ), y + (h / 2 ))
78
+ game_display .blit (button_surf , button_rect )
79
+
80
+
81
+ def score_text_function (text_sc , font , color ):
82
+ score_text_f = font .render ("Score: " + text_sc , True ,color )
83
+ return score_text_f ,score_text_f .get_rect ()
84
+
85
+
86
+ def display_score (text_sc ,font_sc ,color ):
87
+ score_text = pygame .font .SysFont ("comicsansms" ,20 )
88
+ score_text_surf , score_text_rect = score_text_function (text_sc ,score_text , color )
89
+ score_text_rect .center = (50 ,20 )
90
+ game_display .blit (score_text_surf ,score_text_rect )
91
+
92
+ def crash_message ():
93
+ pygame .mixer .music .stop ()
94
+ pygame .mixer .Sound .play (crash_sound )
95
+ game_display .fill (black )
96
+ crash_text1 = pygame .font .SysFont ("comnicsansms" , 30 )
97
+ crash_text1_surf , crash_text1_rect = title_text_function ("You Crashed :(" , crash_text1 , white )
98
+ crash_text1_rect .center = (540 , 620 )
99
+ game_display .blit (crash_text1_surf , crash_text1_rect )
100
+
101
+
102
+
103
+ def game_loop ():
104
+ pygame .mixer .music .play (- 1 )
105
+ game_value = True
106
+ copter_x = 100
107
+ copter_y = 250
108
+ altitude_change = 0
109
+ horizontal_change = 0
110
+ score = 0
111
+ top_obs_x = random .randrange (1100 , 1400 )
112
+ top_obs_y = 110
113
+ top_obs_height = random .randrange (110 ,260 )
114
+ bot_obs_x = random .randrange (1100 , 1400 )
115
+ bot_obs_y = random .randrange (450 ,600 )
116
+ bot_obs_height = 600 - bot_obs_y
117
+ obs_width = random .randrange (50 ,90 )
118
+ obs_speed = 4
119
+ missile_x = 1200
120
+ missile_y = random .randrange (220 ,580 )
121
+ missile_speed = 6
122
+ missile_height = 100
123
+ missile_width = 100
124
+ copter_mis_x = copter_x + copter_width
125
+ copter_mis_y = copter_y + copter_height
126
+ missile_launch = False
127
+ crash = False
128
+ while game_value :
129
+ copter_mouse_pos = pygame .mouse .get_pos ()
130
+ copter_mouse_click = pygame .mouse .get_pressed ()
131
+ for event in pygame .event .get ():
132
+ if event .type == pygame .QUIT :
133
+ pygame .quit ()
134
+ quit ()
135
+ if event .type == pygame .KEYDOWN :
136
+ if event .key == pygame .K_w :
137
+ altitude_change -= 4
138
+ if event .type == pygame .KEYDOWN :
139
+ if event .key == pygame .K_s :
140
+ altitude_change += 4
141
+ if event .type == pygame .KEYDOWN :
142
+ if event .key == pygame .K_d :
143
+ horizontal_change += 5
144
+ if event .type == pygame .KEYDOWN :
145
+ if event .key == pygame .K_a :
146
+ horizontal_change -= 5
147
+ if event .type == pygame .KEYDOWN :
148
+ if event .key == pygame .K_v :
149
+ missile_launch = True
150
+ if event .type == pygame .KEYUP :
151
+ if event .key == pygame .K_w :
152
+ altitude_change = 0
153
+ if event .key == pygame .K_s :
154
+ altitude_change = 0
155
+ if event .key == pygame .K_d :
156
+ horizontal_change = 0
157
+ if event .key == pygame .K_a :
158
+ horizontal_change = 0
159
+ if event .key == pygame .K_v :
160
+ missile_launch = True
161
+ copter_y += altitude_change
162
+ copter_x += horizontal_change
163
+ game_display .fill (bg )
164
+ #TOP OBSTACLES~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
165
+ pygame .draw .rect (game_display , black , (0 ,0 ,1080 , 110 ))
166
+ pygame .draw .rect (game_display ,wood , (top_obs_x ,top_obs_y ,obs_width , top_obs_height ))
167
+ top_obs_x -= obs_speed
168
+ #BOTTOM OBSTACLES~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
169
+ pygame .draw .rect (game_display , black , (0 , 600 , 1080 , 150 ))
170
+ pygame .draw .rect (game_display ,wood , (bot_obs_x ,bot_obs_y ,obs_width , bot_obs_height ))
171
+ bot_obs_x -= obs_speed
172
+ #GENERATING N OBSTACLES~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
173
+ if top_obs_x + obs_width < 0 :
174
+ top_obs_x = random .randrange (1100 , 1400 )
175
+ top_obs_height = random .randrange (110 ,240 )
176
+ score += 1
177
+ if bot_obs_x + obs_width < 0 :
178
+ bot_obs_x = random .randrange (1100 , 1400 )
179
+ bot_obs_y = random .randrange (450 ,600 )
180
+ bot_obs_height = 600 - bot_obs_y
181
+ score += 1
182
+ score_str = str (score )
183
+ #GENERATING RECT BLOCKS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
184
+ missile_x = missile_x - missile_speed
185
+ missile_display (missile_x , missile_y )
186
+ #GENERATING N RECT BLOCKS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
187
+ if missile_x < 0 :
188
+ missile_x = 1200
189
+ missile_y = random .randrange (220 ,580 )
190
+ #GENERATE COPTER MISSILE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191
+ if missile_launch == True :
192
+ pygame .draw .circle (game_display ,black ,(copter_mis_x ,copter_mis_y ),8 ,0 )
193
+ copter_mis_x += 6
194
+ if copter_mis_x > 1080 :
195
+ missile_launch = False
196
+ copter_mis_x = copter_x + copter_width
197
+ copter_mis_y = copter_y + copter_height
198
+ #DETECTING COLLISIONS WITH WALL AND TOP/BOTTOM OBSTACLES~~~~~~~~~~~~~~~~~~~~~~~~
199
+ if copter_x < 0 :
200
+ crash_message ()
201
+ game_value = False
202
+ if copter_y + 50 < 110 :
203
+ crash_message ()
204
+ game_value = False
205
+ if copter_y + 50 + copter_height > 600 :
206
+ crash_message ()
207
+ game_value = False
208
+ if copter_y - 20 <= top_obs_height + 50 and top_obs_x - 60 < copter_x + copter_width < top_obs_x + obs_width :
209
+ crash_message ()
210
+ game_value = False
211
+ if copter_y + copter_height + 30 >= bot_obs_y and bot_obs_x < copter_x + copter_width + 90 < bot_obs_x + obs_width :
212
+ crash_message ()
213
+ game_value = False
214
+ #DETECTING COLLISION WITH THE MISSILE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
215
+ if copter_x < missile_x < copter_x + copter_width and copter_y < missile_y < copter_y + copter_height :
216
+ crash_message ()
217
+ game_value = False
218
+
219
+
220
+
221
+ display_score (score_str ,20 , blue )
222
+ copter_display (copter_image , copter_x , copter_y )
223
+ controls_display ()
224
+ pygame .display .update ()
225
+ clock .tick (70 )
226
+
227
+
228
+ def game_intro ():
229
+ intro_value = True
230
+ while intro_value :
231
+ for event in pygame .event .get ():
232
+ if event .type == pygame .QUIT :
233
+ pygame .quit ()
234
+ quit ()
235
+ title_screen ("Copter Chase" , red )
236
+ game_credits ("Created by: Rutvik" )
237
+ buttons (white ,200 ,550 ,100 ,50 ,25 ,"Play!" ,red )
238
+ buttons (white ,800 ,550 ,100 ,50 ,25 ,"Quit" ,red )
239
+ mouse_location = pygame .mouse .get_pos ()
240
+ mouse_clicks = pygame .mouse .get_pressed ()
241
+ for event in pygame .event .get ():
242
+ if 800 < mouse_location [0 ] < 900 and 550 < mouse_location [1 ] < 600 :
243
+ if mouse_clicks [0 ] == 1 :
244
+ pygame .quit ()
245
+ quit ()
246
+ if 200 < mouse_location [0 ] < 300 and 550 < mouse_location [1 ] < 600 :
247
+ if mouse_clicks [0 ] == 1 :
248
+ game_loop ()
249
+ pygame .display .update ()
250
+ game_intro ()
0 commit comments