Hello all! I've been trying to create a game in Python Processing where a 
spaceship moves horizontally in order to miss a collision with an asteroid. I'm 
having difficulty making it so that the game quits when an asteroid hits the 
spaceship, could anybody help? Here is my code. As you can see, I tried using 
globals in order use variables from previous classes, but nothing has worked. 
For this specific approach, no error message popped up, but nothing happened 
either. Thanks so much!

COLORS = {"black":"#000000", "white":"#FFFFFF",
          "red":"#FF0000", "green":"#00FF00",
          "blue":"#D1F5FF", "yellow":"#FFFF00",
          "orange":"#FFA500", "hendrixorange":"#F58025",
          "purple":"#9B30FF", "gray":"#808080", "lightgray": "#CACACA",
          "darkgray":"#A9A9A9"}
import random
asteroid = []
spaceship = []
stars = []
justPressed = False
aX = 0
aY = 0
x = 0
y = 0

def setup():
    global aX, aY, X, Y
    size(640, 480)
    for s in range(1):
        X = 320
        Y = 440
        spaceship.append(Space(X, Y, COLORS["orange"]))
    for a in range(4):
        aX = random.randint(0, 640)
        aY = 0
        asteroid.append(Asteroid(aX, aY, COLORS["orange"]))
    for d in range(100):
        randX = random.randint(0, 640)
        randY = random.randint(0, 480)
        stars.append(Star(randX, randY, COLORS["orange"]))



class Space:
    def __init__(self, x, y, color):
        self.x = x
        self.y = y
        self.color = color   

    def spaceship(self):
        fill(COLORS["blue"])
        stroke(COLORS["white"])
        ellipse(self.x, self.y, 75, 75) #body
        fill(COLORS["green"])
        fill(COLORS["gray"])
        stroke(COLORS["green"])
        ellipse(self.x, self.y + 20, 120, 35)
        stroke(COLORS["orange"])
        fill(COLORS["purple"])
        ellipse(self.x, self.y + 20, 10, 10)
        ellipse(self.x + 30, self.y + 20, 10, 10)
        ellipse(self.x - 30, self.y + 20, 10, 10)
    
    def move(self, dx, dy):
        self.x += dx
        self.y += dy

class Asteroid:
    def __init__(self, x, y, color):
        self.x = x
        self.y = y
        self.color = color
            
    def update(self):
        self.velx = 0
        self.vely = random.randint(1, 5)
        self.x += self.velx
        self.y += self.vely
        if self.y > 480:
            self.y = 0
            self.x = random.randint(1,640)
        
    def asteroid(self):
        fill(COLORS["lightgray"])
        stroke(COLORS["white"])
        ellipse(self.x, self.y, 50, 50)
        fill(COLORS["gray"])
        ellipse(self.x +15, self.y + 6, 15, 15)
        ellipse(self.x -12, self.y + 7, 10, 10)
        ellipse(self.x + 5, self.y - 13, 11, 11)
        ellipse(self.x - 12, self.y - 9, 7, 7)
        ellipse(self.x + 2, self.y + 18, 7, 7)
            
class Star:
    def __init__(self, x, y, color):
        self.x = x
        self.y = y
        self.color = color   

    def star(self):
        fill(COLORS["white"])
        ellipse(self.x, self.y, 3, 3)


def draw():
    global justPressed
    background(COLORS["black"])
    for f in stars:
        f.star()
    for f in spaceship:
        f.spaceship()
        if f.x < 60:
            f.move(3, 0)
        elif f.x > 580:
            f.move(-3, 0)
        elif justPressed :
            if key == 'd':
                f.move(3, 0)
            elif key == 'a':
                f.move(-3, 0)
    for f in asteroid:
        f.asteroid() 
        f.update()
        #collision detection 'for' loop
        distance = sqrt(((aX - X)**2) + ((aY - Y)**2))
        for f in asteroid:
            if distance < 62.5:
                background(COLORS["red"])
        
            
def keyTyped():
    global justPressed
    justPressed = True
    print("typed", key)
            
def keyPressed():
    global justPressed
    justPressed = True
    print("pressed", key)

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to