SHOW:
|
|
- or go back to the newest paste.
1 | import pygame | |
2 | ||
3 | BLACK = [0, 0, 0] | |
4 | WHITE = [255, 255, 255] | |
5 | ||
6 | W, H = 800, 600 | |
7 | HH = int(H / 2) | |
8 | ||
9 | pygame.init() | |
10 | DS = pygame.display.set_mode((W, H)) | |
11 | ||
12 | # player starting position | |
13 | playerImage = pygame.image.load("player.png").convert_alpha() | |
14 | playerY = HH | |
15 | - | playerSize = 25 |
15 | + | |
16 | ||
17 | ||
18 | # bullet list and speed | |
19 | bulletImage = pygame.image.load("bullet.png").convert_alpha() | |
20 | bullets = [] | |
21 | bulletSpeed = 20 | |
22 | ||
23 | # fire button pressed toggle | |
24 | fireButtonPressed = False | |
25 | ||
26 | # main program loop | |
27 | while True: | |
28 | e = pygame.event.get() # read events but do nothing | |
29 | - | pygame.draw.rect(DS, WHITE, [playerX, playerY, playerSize, playerSize]) # draw a rectangle as the player |
29 | + | |
30 | DS.fill(BLACK) | |
31 | DS.blit(playerImage, (playerX, playerY)) # blit the player image to the display surface | |
32 | ||
33 | ||
34 | # press escape to quit, window controls don't work | |
35 | k = pygame.key.get_pressed() | |
36 | if k[pygame.K_ESCAPE]: break | |
37 | ||
38 | # use the arrow keys UP and DOWN | |
39 | if k[pygame.K_UP]: | |
40 | playerY -= 10 | |
41 | elif k[pygame.K_DOWN]: | |
42 | playerY += 10 | |
43 | ||
44 | # space bar fires bullets | |
45 | - | bullets.append([playerX + int(playerSize / 2), playerY + int(playerSize / 2)]) # add new bullet to the list |
45 | + | |
46 | if k[pygame.K_SPACE] and not fireButtonPressed: | |
47 | fireButtonPressed = True | |
48 | bullets.append([playerX + int(playerImage.get_width() / 2), playerY + int(playerImage.get_height() / 2)]) # add new bullet to the list | |
49 | elif not k[pygame.K_SPACE] and fireButtonPressed: | |
50 | fireButtonPressed = False | |
51 | ||
52 | - | pygame.draw.circle(DS, WHITE, b, 10) # draw the bullet as a circle |
52 | + | |
53 | # cycle through the active bullets | |
54 | for b in bullets: | |
55 | DS.blit(bulletImage, b) # blit the bullet to the display surface | |
56 | b[0] += bulletSpeed # add bullet speed to the bullets x position | |
57 | if b[0] > W: # if bullet exits the right side of the screen | |
58 | deleteBullets.append(b) # add to bullet delete list | |
59 | ||
60 | # delete all the "dead" bullets | |
61 | for db in deleteBullets: | |
62 | bullets.remove(db) # remove it from the bullet list | |
63 | ||
64 | pygame.display.update() # update the display | |
65 | pygame.time.Clock().tick(27) # limit the frame rate to 27 fps | |
66 | ||
67 | pygame.quit() |