Collect Coins - Mouse#
This is an example showing basic sprite usage. Collect coins with your mouse, and keep score!
Source Code#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | """ Sprite Collect Coins A simple game demonstrating an easy way to create and use sprites. Artwork from https://kenney.nl If Python and Arcade are installed, this example can be run from the command line with: python -m arcade.examples.sprite_collect_coins """ import random import arcade # --- Constants --- SPRITE_SCALING_PLAYER = 0.5 SPRITE_SCALING_COIN = .25 COIN_COUNT = 50 SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 SCREEN_TITLE = "Sprite Collect Coins Example" class MyGame(arcade.Window): """ Our custom Window Class""" def __init__(self): """ Initializer """ # Call the parent class initializer super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE) # Variables that will hold sprite lists self.player_list = None self.coin_list = None # Create a variable to hold the player sprite self.player_sprite = None # Variables to hold the score and the Text object displaying it self.score = 0 self.score_display = None # Hide the mouse cursor while it's over the window self.set_mouse_visible(False) arcade.set_background_color(arcade.color.AMAZON) def setup(self): """ Set up the game and initialize the variables. """ # Create the sprite lists self.player_list = arcade.SpriteList() self.coin_list = arcade.SpriteList() # Reset the score and the score display self.score = 0 self.score_display = arcade.Text( text="Score: 0", start_x=10, start_y=20, color=arcade.color.WHITE, font_size=14) # Set up the player # Character image from kenney.nl img = ":resources:images/animated_characters/female_person/femalePerson_idle.png" self.player_sprite = arcade.Sprite(img, SPRITE_SCALING_PLAYER) self.player_sprite.position = 50, 50 self.player_list.append(self.player_sprite) # Create the coins for i in range(COIN_COUNT): # Create the coin instance # Coin image from kenney.nl coin = arcade.Sprite(":resources:images/items/coinGold.png", SPRITE_SCALING_COIN) # Position the coin coin.center_x = random.randrange(SCREEN_WIDTH) coin.center_y = random.randrange(SCREEN_HEIGHT) # Add the coin to the lists self.coin_list.append(coin) def on_draw(self): """ Draw everything """ # Clear the screen to only show the background color self.clear() # Draw the sprites self.coin_list.draw() self.player_list.draw() # Draw the score Text object on the screen self.score_display.draw() def on_mouse_motion(self, x, y, dx, dy): """ Handle Mouse Motion """ # Move the player sprite to place its center on the mouse x, y self.player_sprite.position = x, y def on_update(self, delta_time): """ Movement and game logic """ # Generate a list of all sprites that collided with the player. coins_hit_list = arcade.check_for_collision_with_list(self.player_sprite, self.coin_list) # Keep track of the score from before collisions occur old_score = self.score # Loop through each colliding sprite, remove it, and add to the score. for coin in coins_hit_list: coin.remove_from_sprite_lists() self.score += 1 # Update the score display if the score changed this tick if old_score != self.score: self.score_display.text = f"Score: {self.score}" def main(): """ Main function """ window = MyGame() window.setup() arcade.run() if __name__ == "__main__": main() |