Exemplo n.º 1
0
def blackHoles(field):

    # Create a list of numbers that could be X and Y coordinates
    numbers = []
    for i in range(60, 360, 40):
        numbers.append(i)

    # From that list, ceate first blackhole coordinates
    blackX1 = int(choice(numbers))
    blackY1 = int(choice(numbers))

    # Create second blackhole coordinates
    blackX2 = int(choice(numbers))
    blackY2 = int(choice(numbers))

    # Draw the black holes
    black1 = Circle(Point(blackX1, blackY1), 5)
    black1.setFill('black')
    black1.draw(field)
    black2 = Circle(Point(blackX2, blackY2), 5)
    black2.setFill('black')
    black2.draw(field)

    # Get the centers of the circles
    blackcenter1 = black1.getCenter()
    blackcenter2 = black2.getCenter()

    # Return the center locations for the black holes
    return blackcenter1, blackcenter2
Exemplo n.º 2
0
class ShotTracker:
    def __init__(self, win, angle, velocity, height):
        """win is the GraphWin to display the shot. angle, velocity,
            and height are initial projectile parameters.
        """

        self.proj = Projectile(angle, velocity, height)
        self.marker = Circle(Point(0, height), 3)
        self.marker.setFill("red")
        self.marker.setOutline("red")
        self.marker.draw(win)

    def update(self, dt):
        """Move the shot dt seconds farther along its flight """

        # Update the projectile
        self.proj.update(dt)

        # Moves the circle to the new projectile location
        center = self.marker.getCenter()
        dx = self.proj.getX() - center.getX()
        dy = self.proj.getY() - center.getY()
        self.marker.move(dx, dy)

    def getX(self):
        """ return the current x coordinate of the shot's center """
        return self.proj.getX()

    def getY(self):
        """ return the current y coordinate of the  shot's center """
        return self.proj.getY()

    def undraw(self):
        """ undraw the shot """
        self.marker.undraw()
Exemplo n.º 3
0
class Wheel():

    def __init__(self, center, wheel_radius, tire_radius):
        self.tire_circle = Circle(center, tire_radius)
        self.wheel_circle = Circle(center, wheel_radius)

    def draw(self, win): 
        self.tire_circle.draw(win) 
        self.wheel_circle.draw(win) 

    def move(self, dx, dy): 
        self.tire_circle.move(dx, dy) 
        self.wheel_circle.move(dx, dy)

    def set_color(self, wheel_color, tire_color):
        self.tire_circle.setFill(tire_color) 
        self.wheel_circle.setFill(wheel_color)

    def undraw(self): 
        self.tire_circle .undraw() 
        self.wheel_circle .undraw() 

    def get_size(self):
        return self.tire_circle.getRadius()

    def get_center(self):
        return self.tire_circle.getCenter()

    def animate(self, win, dx, dy, n):
        if n > 0:
            self.move(dx, dy)
            win.after(100, self.animate, win, dx, dy, n - 1)
Exemplo n.º 4
0
class Asteroid:
    def __init__(self, pos, dest, win, vel, type):
        self.pos = pos
        self.dest = Point(dest.getX() - pos.getX(), dest.getY() - pos.getY())
        self.vel = vel
        self.type = type
        self.aliveFlag = True
        self.outOfBounds = False

        r = 25 * type
        self.object = Circle(self.pos, r)
        self.object.setFill(color_rgb(randrange(100, 255), 240, 90))

        self.draw(win)

    def draw(self, win):
        self.object.draw(win)

    def undraw(self):
        self.object.undraw()

    def update(self, dt, win):
        #normalize values
        dest = norm(self.dest.getX(), self.dest.getY())

        #calculate x and y movement
        x = dest.getX() * self.vel * dt
        y = dest.getY() * self.vel * dt

        self.object.move(x, y)
        self.pos = self.object.getCenter()

        if self.pos.getX() < -100:
            self.outOfBounds = True

    def getAliveFlag(self):
        return self.aliveFlag

    def setAliveFlag(self, statement=True):
        self.aliveFlag = statement

    def getOutOfBounds(self):
        return self.outOfBounds

    def getType(self):
        return self.type

    def getObject(self):
        return self.object
Exemplo n.º 5
0
class Bullet:
    def __init__(self, pos, win, r, dest, vel=1.0, c=color_rgb(255, 255, 255)):
        self.pos = pos  #position
        self.dest = Point(dest.getX() - pos.getX(),
                          dest.getY() - pos.getY())  #destination
        self.radius = r  #radius
        self.vel = vel  #velocity

        self.object = Circle(self.pos, r)  #Circle
        self.object.setFill(c)  #set colour
        self.object.setOutline('black')
        self.draw(win)  #draw

        self.aliveFlag = True

    def getAliveFlag(self):
        return self.aliveFlag

    def update(self, dt, win):
        #normalize values
        dest = norm(self.dest.getX(), self.dest.getY())

        #calculate x and y movement
        x = dest.getX() * self.vel * dt
        y = dest.getY() * self.vel * dt

        #move object
        self.object.move(x, y)

        #set position
        self.pos = self.object.getCenter()

        #Split into two if statements for readability
        if self.pos.getX() > win.getWidth() or self.pos.getY() > win.getHeight(
        ):
            self.aliveFlag = False
        elif self.pos.getX() < 0 or self.pos.getY() < 0:
            self.aliveFlag = False

    def getObject(self):
        return self.object

    def draw(self, win):
        self.object.draw(win)

    #remove object from screen
    def undraw(self):
        self.object.undraw()
Exemplo n.º 6
0
class ShotTracker:
    def __init__(self, win, angle, velocity, height):
        self.proj = Projectile(angle, velocity, height)
        self.marker = Circle(Point(0, height), 3)  # 圆心, 半径
        self.marker.setFill('red')
        self.marker.setOutline('red')
        self.marker.draw(win)

    def update(self, dt):
        self.proj.update(dt)

        center = self.marker.getCenter()
        dx = self.proj.getX() - center.getX()
        dy = self.proj.getY() - center.getY()
        self.marker.move(dx, dy)

    def getX(self):
        return self.proj.getX()

    def getY(self):
        return self.proj.getY()

    def undraw(self):
        self.marker.undraw()
Exemplo n.º 7
0
class Player:
    def __init__(self, pos, r, vel=1.0, c=color_rgb(255, 255, 255)):
        self.pos = pos  #position
        self.radius = r  #radius
        self.vel = vel  #velocity
        self.colour = c

        self.object = Circle(self.pos, r)
        self.object.setFill(c)
        self.object.setOutline('black')
        self.bullets = []  #bullet list

        self.score = 0

        print(self.object.getRadius())

    def modifyScore(self, value):
        self.score += value
        #print("Score:"+str(self.score))

    def getScore(self):
        return self.score

    def update(self, dt, win):
        x = 0.0
        y = 0.0
        if k.kUp():  #If key up is pressed
            y -= self.vel * dt
        if k.kDown():  #If key down is pressed
            y += self.vel * dt
        if k.kLeft():  #If key left is pressed
            x -= self.vel * dt
        if k.kRight():  #If key right is pressed
            x += self.vel * dt

        #Check if mouse has been clicked
        mouse = k.kMouseLeft(win)
        if mouse != None:
            #print(mouse)
            self.bullets.append(
                Bullet(self.pos, win, 10, Point(mouse.getX(), mouse.getY()),
                       1000, self.colour))

        #Update bullets and check if out of bounds
        for bullet in self.bullets:
            bullet.update(dt, win)
            if bullet.getAliveFlag() != True:
                bullet.undraw()
                self.bullets.remove(bullet)

        self.object.move(x, y)
        self.pos = self.object.getCenter()

    def getBullets(self):
        return self.bullets

    def getObject(self):
        return self.object

    def getRadius(self):
        return self.object.getRadius()

    def getPos(self):
        return self.pos

    def draw(self, win):
        self.object.draw(win)

    #undraw object
    def undraw(self):
        self.object.undraw()
Exemplo n.º 8
0
num_snowballs = 75
for i in range(num_snowballs):
    x = randint(0, 199)
    y = randint(0, 199)
    p = Point(x, y)
    snowball = Circle(p, randint(2, 3))
    snowball.setFill("white")
    snowball.draw(win)
    snowballs.append(snowball)

# Freeze between frames in seconds
animation_delay = 0.1

frames_to_render = 20
for i in range(frames_to_render):
    for snowball in snowballs:
        snowball.move(0, randint(1, 3))
        if snowball.getCenter().getY() > 199:
            snowball.undraw()
            snowball.move(0, -200)
            snowball.draw(win)
    # time.sleep(animation_delay)

label = Text(Point(99, 99), "Happy SNOW DAY!")
label.setFill("white")
label.setSize(18)
label.draw(win)

win.getMouse()
win.close()