# karel_asset A package to draw Karel in graphics projects. For use by students who want to make art or games with Karel as a character. * Demo [Draw Karel](https://codeinplace.stanford.edu/cip6/share/t6iMlN3l2JhVLvZW788e) * Demo [Flash Karel](https://codeinplace.stanford.edu/cip6/share/faD10zUPcOnV1ghxa1R4) ## Getting started 1. In CIP6 click on **["Code / You own"](https://codeinplace.stanford.edu/cip6/create)**, or on CIP self-guided clock on **["Code / You own"](https://codeinplace.stanford.edu/public/create)** 1. Create a new or open an existing **graphics project** 1. Go to the **Project Files** view by clicking the "**Files**" button in the ribbon on the left 1. Add the karel_asset.py file by: * Either clicking the CIP icon of a file with a plus sign (+) in it to add a new file and paste the content of [karel_asset.py](https://git.h0v1n8.nl/Stanford/karel_asset/raw/master/karel_asset.py) * Or by downloading/cloning this project and uploading the karel_asset.py file with the upload button on the CIP IDE ## Using karel_asset.py when it is added to a CIP project In your main.py or any other project file on CIP, add: `from karel_asset import *` ### Drawing Karel To simply draw a Karel in the top left corner use: `draw_karel(canvas)` But surely this will not suffice for any project so there are optional arguments to pass: * centre_x * centre_y * size * orientation * colour * background * transparent #### Coordinates To draw a Karel in the middle of X / Y coordinates 100 / 100, use the optional arguments centre_x, centre_y: ``` draw_karel(canvas, 100, 100) ``` #### Size To draw a Karel of size 200, use the optional argument size: ``` draw_karel(canvas, size=200) ``` #### Orientation To draw a Karel facing north, use the optional argument orientation: ``` draw_karel(canvas, orientation="north") ``` Orientation options: * "east" * "east-flipped" * "north" * "north-flipped" * "west" * "west-flipped" * "south" * "south-flipped" Flipped makes Karel appear upside down. #### Colour To draw a Karel in any colour use the optional argument colour: ``` draw_karel(canvas, colour="red", background="#FF8833") ``` Colour names and hex codes are accepted, just like normal for any CIP graphical object. #### Transparancy To draw a transparant Karel, which only has outlines and no fill, use the optional argument transparent: ``` draw_karel(canvas, transparent=True) ``` #### Examples Draw a Karel at 85x and 35y upside down facing east with a red outline and blue filling: ``` karel_east_mirrored = draw_karel(canvas, 85, 35, 100, "east-flipped", "red", "blue") ``` Draw a Karel at 135X and 35y, facing west with a red background: ``` karel_west = draw_karel(canvas, centre_x=135, centre_y=35, orientation="west", background="red") ``` ### Changing colour To change the colour of any created Karel, use recolour_karel(karel, colour, background). For example changing a red/blue Karel to a green/yellow Karel: ``` my_karel = draw_karel(canvas, colour="red", background="blue") my_karel = recolour_karel(my_karel, colour="green", background="yellow) ``` ### Changing position To change the position of a Karel on the canvas, use move_karel(karel, dx, dy). Where dx is the amout of pixels shifted horizontally, and dy is the amount of pixels shifted vertically. To move a Karel up 10 pixes: ``` my_karel = draw_karel(canvas, colour="red", background="blue") my_karel = move_karel(my_karel, dy=-10,) ``` To move a Karel down 10 and left 10 pixels: ``` my_karel = draw_karel(canvas, colour="red", background="blue") my_karel = move_karel(my_karel, 10, -10) ``` ### Erasing a Karel To remove a Karel from the canvas, use erase_karel(karel): ``` my_karel = draw_karel(canvas, colour="red", background="blue") my_karel = erase_karel(my_karel) ``` ### Generating a random hex colour To get a random colour value to use in your own graphical shape, use generate_random_colour() ``` my_colour = generate_random_colour() ``` ## Example ``` from graphics import Canvas from karel_asset import * from time import sleep # Constants CANVAS_WIDTH = 120 CANVAS_HEIGHT = 70 def main(): canvas = Canvas(CANVAS_WIDTH, CANVAS_HEIGHT) # Create a background rect = canvas.create_rectangle( 1, 1, CANVAS_WIDTH, CANVAS_HEIGHT, generate_random_colour(), generate_random_colour() ) # Demo loop while True: # Keep repeating the following code forever # Draw four Karels karel_east = draw_karel(canvas, 35, 35) karel_east_mirrored = draw_karel(canvas, 85, 35, orientation="east-flipped", colour="red") karel_west = draw_karel(canvas, 135, 35, orientation="west", background="red") karel_west_mirrored = draw_karel(canvas, 185, 35, orientation="west-flipped", colour="red", background="red") # Wait five seconds sleep(5) # Change the colour of one Karel to random colours karel_east = recolour_karel(big_karel_east, "random", "random") # Move one Karel karel_east_mirrored = move_karel(karel_east_mirrored, 10, 10) # Wait five seconds sleep(5) # Erase four Karels erase_karel(karel_east) erase_karel(karel_east_mirrored) erase_karel(karel_west) erase_karel(karel_west_mirrored) if __name__ == '__main__': main() ```