added shooting
This commit is contained in:
parent
7b27ac29e8
commit
cf21f5ff0a
4 changed files with 38 additions and 1 deletions
|
|
@ -4,6 +4,9 @@ SCREEN_HEIGHT = 720
|
|||
PLAYER_RADIUS = 20
|
||||
PLAYER_ROTATION_SPEED = 300
|
||||
PLAYER_SPEED = 200
|
||||
PLAYER_SHOOT_SPEED = 500
|
||||
|
||||
SHOT_RADIUS = 5
|
||||
|
||||
ASTEROID_MIN_RADIUS = 20
|
||||
ASTEROID_KINDS = 3
|
||||
|
|
|
|||
3
main.py
3
main.py
|
|
@ -4,6 +4,7 @@ from constants import *
|
|||
from player import Player
|
||||
from asteroidfield import AsteroidField
|
||||
from asteroid import Asteroid
|
||||
from shot import Shot
|
||||
|
||||
def main():
|
||||
|
||||
|
|
@ -22,6 +23,7 @@ def main():
|
|||
drawables = pygame.sprite.Group()
|
||||
updatables = pygame.sprite.Group()
|
||||
asteroids = pygame.sprite.Group()
|
||||
shots = pygame.sprite.Group()
|
||||
|
||||
# Set the containers of the astroids
|
||||
Asteroid.containers = (asteroids,drawables,updatables)
|
||||
|
|
@ -35,6 +37,7 @@ def main():
|
|||
# Set the position of the player
|
||||
p1 = Player(SCREEN_WIDTH/2,SCREEN_HEIGHT/2)
|
||||
|
||||
Shot.containers = (shots,drawables,updatables)
|
||||
while True:
|
||||
# if event is quit then kill the game
|
||||
for event in pygame.event.get():
|
||||
|
|
|
|||
17
player.py
17
player.py
|
|
@ -1,6 +1,7 @@
|
|||
import circleshape
|
||||
import constants
|
||||
import pygame
|
||||
from shot import Shot
|
||||
|
||||
class Player(circleshape.CircleShape):
|
||||
|
||||
|
|
@ -39,6 +40,20 @@ class Player(circleshape.CircleShape):
|
|||
self.move(dt)
|
||||
if keys[pygame.K_s]:
|
||||
self.move(-dt)
|
||||
if keys[pygame.K_SPACE]:
|
||||
self.shoot()
|
||||
|
||||
def move(self,dt):
|
||||
forward = pygame.Vector2(0, 1).rotate(self.rotation)
|
||||
self.position += forward * constants.PLAYER_SPEED * dt
|
||||
self.position += forward * constants.PLAYER_SPEED * dt
|
||||
|
||||
def shoot(self):
|
||||
# Create new shot at player position
|
||||
shot = Shot(self.position.x, self.position.y)
|
||||
|
||||
# Calculate velocity (similar to your move method)
|
||||
forward = pygame.Vector2(0, 1).rotate(self.rotation)
|
||||
shot.velocity = forward * constants.PLAYER_SHOOT_SPEED
|
||||
|
||||
# Add to container
|
||||
Shot.containers[0].add(shot)
|
||||
|
|
|
|||
16
shot.py
Normal file
16
shot.py
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import circleshape
|
||||
import pygame
|
||||
import constants
|
||||
|
||||
class Shot(circleshape.CircleShape):
|
||||
|
||||
containers = []
|
||||
|
||||
def __init__(self, x, y):
|
||||
super().__init__(x,y,constants.SHOT_RADIUS)
|
||||
|
||||
def draw(self,screen):
|
||||
pygame.draw.circle(screen,(255,255,255),self.position,self.radius,2)
|
||||
|
||||
def update(self, dt):
|
||||
self.position += self.velocity * dt
|
||||
Loading…
Add table
Add a link
Reference in a new issue