1
+ import pygame
2
+ import random
3
+ import math
4
+
5
+ #initialise the pygame
6
+ pygame .init ()
7
+
8
+ #create the screen
9
+ mode = [800 , 600 ]
10
+ screen = pygame .display .set_mode ((mode [0 ], mode [1 ]))
11
+
12
+ #title and icon
13
+ pygame .display .set_caption ("Space Game" )
14
+ icon = pygame .image .load ("resources/images.png" )
15
+ pygame .display .set_icon (icon )
16
+
17
+ #Other variables
18
+ white = (255 , 255 , 255 )
19
+ black = (0 , 0 , 0 )
20
+ score_value = 0
21
+ font = pygame .font .Font ("resources/PatrickHand-Regular.ttf" , 20 )
22
+ game_over = pygame .font .Font ("resources/PatrickHand-Regular.ttf" , 60 )
23
+ textXY = [10 , 10 ]
24
+
25
+ #player
26
+ playerimg = pygame .image .load ("resources/racecar.png" )
27
+ playerXY = [320 , 500 ]
28
+ playerX_change = 0
29
+
30
+ #enemy
31
+ enemyimg = []
32
+ enemyX = []
33
+ enemyY = []
34
+ enemyX_change = []
35
+ enemyY_change = []
36
+ num_of_enemies = 6
37
+
38
+ for i in range (num_of_enemies ):
39
+ enemyimg .append (pygame .image .load ("resources/enemy.png" ))
40
+ enemyX .append (random .randint (0 , mode [0 ]- 64 ))
41
+ enemyY .append (random .randint (50 , 150 ))
42
+ enemyX_change .append (0.3 )
43
+ enemyY_change .append (40 )
44
+
45
+ #bullet
46
+ bulletimg = pygame .image .load ("resources/bullet.png" )
47
+ bulletX = 0
48
+ bulletY = 500
49
+ bulletX_change = 0
50
+ bulletY_change = 0.9
51
+ bullet_state = "ready"
52
+ #Drawing the player on the screen
53
+ def player (x , y ):
54
+ screen .blit (playerimg , (x , y ))
55
+ #Drawing the enemy
56
+ def enemy (x , y , i ):
57
+ screen .blit (enemyimg [i ], (x , y ))
58
+ def show_score (x , y ):
59
+ score = font .render ("Score: " + str (score_value ), True , black )
60
+ screen .blit (score , (x , y ))
61
+
62
+ def game_over_text ():
63
+ over_text = game_over .render ("GAME OVER!!" , True , black )
64
+ screen .blit (over_text , (250 , 250 ))
65
+
66
+ def fire_bullet (x , y ):
67
+ global bullet_state
68
+ bullet_state = "Fire"
69
+ screen .blit (bulletimg , (x + 36 , y ))
70
+
71
+ def is_collision (enemyX , enemyY , bulletX , bulletY ):
72
+ distance = math .sqrt ((math .pow (enemyX - bulletX ,2 )) + (math .pow (enemyY - bulletY , 2 )))
73
+ if distance < 40 :
74
+ return True
75
+ else :
76
+ return False
77
+
78
+ running = True
79
+ while running == True :
80
+ screen .fill (white )
81
+ #exiting the game
82
+ for event in pygame .event .get ():
83
+ if event .type == pygame .QUIT :
84
+ running = False
85
+
86
+ #moving the player
87
+ if event .type == pygame .KEYDOWN :
88
+ if event .key == pygame .K_LEFT :
89
+ playerX_change = - 0.7
90
+ if event .key == pygame .K_RIGHT :
91
+ playerX_change = + 0.7
92
+ if event .key == pygame .K_SPACE :
93
+ if bullet_state == "ready" :
94
+ bulletX = playerXY [0 ]
95
+ fire_bullet (bulletX , bulletY )
96
+
97
+ if event .type == pygame .KEYUP :
98
+ if event .key == pygame .K_LEFT or event .key == pygame .K_RIGHT :
99
+ playerX_change = 0
100
+
101
+ playerXY [0 ] += playerX_change
102
+ #checking boudaries
103
+ if playerXY [0 ] <= 0 :
104
+ playerXY [0 ] = 0
105
+ elif playerXY [0 ] > mode [0 ]- 73 :
106
+ playerXY [0 ] = mode [0 ]- 73
107
+
108
+ #drawing the enemies
109
+ for i in range (num_of_enemies ):
110
+ #game over
111
+ if enemyY [i ] > 300 :
112
+ for j in range (num_of_enemies ):
113
+ enemyY [j ] = 2000
114
+ game_over_text ()
115
+ break
116
+ enemyX [i ] += enemyX_change [i ]
117
+ if enemyX [i ] <= 0 :
118
+ enemyY_change [i ] = 0.3
119
+ enemyY [i ] += enemyY_change [i ]
120
+ elif enemyX [i ] >= mode [0 ]- 64 :
121
+ enemyX_change [i ] = - 0.3
122
+ enemyY [i ] += enemyY_change [i ]
123
+
124
+ #collision
125
+ collision = is_collision (enemyX [i ], enemyY [i ], bulletX , bulletY )
126
+ if collision == True :
127
+ bulletY = 480
128
+ bullet_state = "ready"
129
+ score_value += 1
130
+ enemyX [i ] = random .randint (0 , mode [0 ]- 64 )
131
+ enemyY [i ] = random .randint (30 , 150 )
132
+
133
+ enemy (enemyX [i ], enemyY [i ], i )
134
+
135
+ #bullet movement
136
+ if bulletY <= 0 :
137
+ bulletY = 480
138
+ bullet_state = "ready"
139
+ if bullet_state == "Fire" :
140
+ fire_bullet (bulletX , bulletY )
141
+ bulletY -= bulletY_change
142
+
143
+ player (playerXY [0 ], playerXY [1 ])
144
+ show_score (textXY [0 ], textXY [1 ])
145
+ pygame .display .update ()
146
+
147
+ pygame .quit ()
0 commit comments