Example #1
0
def waitingLoop(canvas):
    canvas.draw_text('waiting for player 2', (150, 200), 30, "Magenta")

    simplegui_lib_draw.draw_rect(canvas, (250, 250), (100, 100),
                                 1,
                                 'Black',
                                 fill_color='Black')
Example #2
0
    def draw(self, canvas, cam):

        self.particle.draw(canvas, cam)
        if SHOW_MONSTER_THOUGHTS:
            ratio = cam.ratioToCam()

            percentage = -self.life / self.totalLife
            simplegui_lib_draw.draw_rect(
                canvas,
                self.particle.pos.copy().add(Vector(
                    0, -100)).transformToCam(cam).getP(),
                Vector(100, 20).multiplyVector(Vector(
                    percentage, 0.2)).multiplyVector(ratio).getP(),
                1,
                'Red',
                fill_color='red')

        if SHOW_MONSTER_THOUGHTS:
            ratio = cam.ratioToCam()

            radius1 = int(self.attackRange * ratio.getX())
            radius2 = int(self.followDistance * ratio.getX())
            canvas.draw_circle(
                self.particle.pos.copy().transformToCam(cam).getP(), radius1,
                1, 'Red')
            canvas.draw_circle(
                self.particle.pos.copy().transformToCam(cam).getP(), radius2,
                1, 'Pink')
            simplegui_lib_draw.draw_rect(
                canvas,
                self.operationOrigin.copy().transformToCam(cam).subtract(
                    self.operationRange.copy().multiplyVector(ratio)).getP(),
                self.operationRange.copy().add(
                    self.operationRange).multiplyVector(ratio).getP(),
                1,
                'White',
                fill_color=None)
Example #3
0
    def draw(self, canvas, cam):
        # ---------TESTING PURPOSES-----DO NOT REMOVE------
        # ratio = cam.dimCanv.copy().divideVector(cam.dim)
        # self.radius*=ratio.getX()
        # canvas.draw_circle(self.pos.getP(), self.radius, 1, 'White')
        # -------------------------------------------------

        distance = cam.origin.copy().subtract(self.pos)
        if distance.getX() < 0:
            distance.x *= -1
        if distance.getY() < 0:
            distance.y *= -1
        distance.subtract(
            self.spriteSheet.animator.dimCamera.copy().multiply(2))
        if distance.getX() < cam.dim.getX() / 2 and distance.getY(
        ) < cam.dim.getY() / 2:
            # --------TESTING PURPOSES----DO NOT REMOVE-------------
            #cam.dim = Vector(2600*2, 1400*2)
            objectPos = self.pos.copy().transformToCam(cam)
            self.spriteSheet.draw(canvas, cam, objectPos, self.angle)
            #1cam.dim=Vector(1300,700)

        # DEVELOPER OPTION:
        if (DEVELOPER_OPTIONS):
            ratio = cam.ratioToCam()
            radius = self.radius * ratio.getX()
            canvas.draw_circle(self.pos.copy().transformToCam(cam).getP(),
                               radius, 1, 'White')
            simplegui_lib_draw.draw_rect(
                canvas,
                self.pos.copy().transformToCam(cam).subtract(
                    self.dim.copy().divide(2).multiplyVector(ratio)).getP(),
                self.dim.copy().multiplyVector(ratio).getP(),
                1,
                'White',
                fill_color=None)
def draw_play_space(canvas):

    global snake
    global snake_speed

    for i in range(
            25
    ):  # merely draws the red grid. Temporary and for visual ref of dev only.
        #Not to be included in finalized project

        canvas.draw_line((((i + 1) * LENGTH) / 25, 0),
                         (((i + 1) * LENGTH) / 25, HEIGHT), 1, "Red")
        canvas.draw_line((0, ((i + 1) * HEIGHT) / 25),
                         (LENGTH, ((i + 1) * HEIGHT) / 25), 1, "Red")

    snake.head.prev_x_pos = snake.head.x_pos
    snake.head.prev_y_pos = snake.head.y_pos

    snake.head.x_pos += snake.head.x_vel
    snake.head.y_pos += snake.head.y_vel

    draw.draw_rect(canvas, [snake.head.x_pos, snake.head.y_pos], [20, 20], 1,
                   "Red", "Green")
    draw.draw_rect(canvas, [fruit.x_pos, fruit.y_pos], [20, 20], 1, "Red",
                   "Blue")

    for segment in snake.segments:

        if segment is snake.tail:
            segment.x_pos = segment.ahead.prev_x_pos
            segment.y_pos = segment.ahead.prev_y_pos

            draw.draw_rect(canvas, [segment.x_pos, segment.y_pos], [20, 20], 1,
                           "Red", "Yellow")

        else:
            segment.prev_x_pos = segment.x_pos
            segment.prev_y_pos = segment.y_pos

            segment.x_pos = segment.ahead.prev_x_pos
            segment.y_pos = segment.ahead.prev_y_pos

            draw.draw_rect(canvas, [segment.x_pos, segment.y_pos], [20, 20], 1,
                           "Red", "Blue")

    clock.tick(
        snake_speed
    )  # this is where the frame rate of the game is being controlled

    new_pos = [i for i in range(0, 400, 20)]

    for segment in snake.segments:  #This ensures that the fruit doesn't appear on the snake
        if segment.x_pos in new_pos:
            new_pos.remove(segment.x_pos)
        if segment.y_pos in new_pos:
            new_pos.remove(segment.y_pos)
        else:
            pass

    if fruit.x_pos == snake.head.x_pos and fruit.y_pos == snake.head.y_pos:
        fruit.update_pos(
            random.choice(new_pos), random.choice(new_pos)
        )  #updates the position of the fruit each time the snake eats it
        snake.addSegment()

    snake.collision(
    )  # WallCollision calls game_over when the condition is satisfied
def draw_play_space(canvas):

    global snake
    global snake_speed
    canvas.draw_image(image, (500 / 2, 500 / 2), (500, 500), (250, 250),
                      (500, 500))
    '''
	for i in range(25):		# merely draws the red grid. Temporary and for visual ref of dev only. 
							#Not to be included in finalized project

		canvas.draw_line((((i+1)*LENGTH)/25, 0), (((i+1)*LENGTH)/25, HEIGHT), 1, "Red")
		canvas.draw_line((0, ((i+1)*HEIGHT)/25), (LENGTH, ((i+1)*HEIGHT)/25), 1, "Red")
	'''
    snake.head.prev_x_pos = snake.head.x_pos
    snake.head.prev_y_pos = snake.head.y_pos

    snake.head.x_pos += snake.head.x_vel
    snake.head.y_pos += snake.head.y_vel

    draw.draw_rect(canvas, [snake.head.x_pos, snake.head.y_pos], [20, 20], 1,
                   "Green", "Green")
    if displayed:
        draw.draw_rect(canvas, [fruit.x_pos, fruit.y_pos], [20, 20], 1, "Red",
                       "Red")

    for segment in snake.segments:

        if segment is snake.tail:
            segment.x_pos = segment.ahead.prev_x_pos
            segment.y_pos = segment.ahead.prev_y_pos

            draw.draw_rect(canvas, [segment.x_pos, segment.y_pos], [20, 20], 1,
                           "Yellow", "Yellow")

        else:
            segment.prev_x_pos = segment.x_pos
            segment.prev_y_pos = segment.y_pos

            segment.x_pos = segment.ahead.prev_x_pos
            segment.y_pos = segment.ahead.prev_y_pos

            draw.draw_rect(canvas, [segment.x_pos, segment.y_pos], [20, 20], 1,
                           "Blue", "Blue")

    clock.tick(
        snake_speed
    )  # this is where the frame rate of the game is being controlled

    def check(x_pos, y_pos,
              segments):  # ensures that the fruit does not appear on the snake

        for segment in segments:
            if (x_pos == segment.x_pos) and (y_pos == segment.y_pos):
                return False

        return True

    x_pos = random.randint(0, 24) * 20
    y_pos = random.randint(0, 24) * 20

    while not check(x_pos, y_pos, snake.segments):
        x_pos = random.randint(0, 24) * 20
        y_pos = random.randint(0, 24) * 20

    if fruit.x_pos == snake.head.x_pos and fruit.y_pos == snake.head.y_pos:
        global score
        score = score + 10 * (
            int(snake_speed / 3)
        )  #Updates score based on snake speed (Each difficulty corresponds to 10 points)
        score_display.set_text("Score: " + str(score))
        eating_sound_effect.play()  # adds sound
        fruit.update_pos(
            x_pos, y_pos
        )  #updates the position of the fruit each time the snake eats it
        snake_speed += 0.2
        snake.addSegment()

    snake.collision(
    )  # WallCollision calls game_over when the condition is satisfied