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')
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)
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