tBKwtWS 3 недель назад
Родитель
Сommit
bd0ef29ca0
1 измененных файлов с 149 добавлено и 45 удалено
  1. 149 45
      README.md

+ 149 - 45
README.md

@@ -185,20 +185,6 @@ my_karel = draw_karel(canvas, colour="red", background="blue")
 my_karel = erase_asset(my_karel)
 my_karel = erase_asset(my_karel)
 ```
 ```
 
 
-### Generating a random asset
-To generate a random asset, use generate_random_asset(canvas, karel_prevelance:int=3, centre_x="random", centre_y="random", size="random"):
-```
-my_asset = generate_random_asset(canvas)
-```
-By default there will be approximately 1 beeper for every two karels, this can be changed with the karel_prevelance argument.
-Draw approximately 50% beepers and 50% Karels:
-```
-my_asset = generate_random_asset(canvas, karel_prevelance:int=2)
-```
-In case the preference is to only have random orientations and colours, optionally the size and or centre_x & centre_y coordiantes can be specified.
-
-### Generating a random asset outside the canvas
-
 ### Generating a random karel
 ### Generating a random karel
 To draw a Karel with a rondom properties, use generate_random_karel(canvas, centre_x="random", centre_y="random", size="random"):
 To draw a Karel with a rondom properties, use generate_random_karel(canvas, centre_x="random", centre_y="random", size="random"):
 ```
 ```
@@ -207,34 +193,84 @@ my_karel = generate_random_karel(canvas)
 Optionally the coordiantes and/or size can be specified.
 Optionally the coordiantes and/or size can be specified.
 
 
 ### Generating a Karel outside the canvas
 ### Generating a Karel outside the canvas
-To draw a Karel outside of the canvas, to perhaps be later slid into view, use generate_outofbounds_random_karel(canvas, side):
+To draw a Karel outside of the canvas, to perhaps be later slid into view, use generate_outofbounds_random_karel(canvas, side)
+Side options:
+* top
+* left
+* bottom
+* right
+To generate a Karel left of teh canvas:
 ```
 ```
 my_karel = generate_outofbounds_random_karel(canvas, "left")
 my_karel = generate_outofbounds_random_karel(canvas, "left")
 ```
 ```
 
 
+### Drawing a beeper
+Works the same as drawing a Karel, available arguments:
+* canvas
+* centre_x
+* centre_y
+* size
+* orientation
+* colour
+* background
+* transparent
+Draw a beeper:
+```
+my_beeper = draw_beeper(canvas)
+```
 
 
+### Generating a random beeper
+Works the same as generating a random Karel, use generate_random_beeper(canvas, centre_x="random", centre_y="random", size="random"):
+```
+generate_random_beeper(canvas)
+```
+Optionally the coordiantes and/or size can be specified.
 
 
+### Generating a random beeper outside the canvas
+To generate a beeper outside of the canvas, to slide it into it later, use generate_outofbounds_random_beeper(canvas, side)
+Side options:
+* top
+* left
+* bottom
+* right
+To draw a beeper under(south of) the canvas:
+```
+generate_outofbounds_random_beeper(canvas, "bottom")
+```
 
 
+### Generating a random asset
+To generate a random asset, use generate_random_asset(canvas, karel_prevelance:int=4, centre_x="random", centre_y="random", size="random"):
+```
+my_asset = generate_random_asset(canvas)
+```
+Optionally the coordiantes and/or size can be specified.
 
 
-### Drawing and generating a beeper
-Works the same as drawing and generating a karel, available commands:
-* draw_beeper(canvas, centre_x:int=25, centre_y:int=25, size:int=50, orientation:str="east", colour:str="black", background:str="cyan", transparent:bool=False)
-* generate_random_beeper(canvas)
-* generate_outofbounds_random_beeper(canvas, side:str)
-
-### Generating a random out of bounds asset
-To draw a Karel outside of the canvas. Possible use is to slide it into the canvas.
-Works the same as drawing and generating a karel, available commands:
-* generate_random_asset(canvas)
-* generate_outofbounds_random_asset(canvas, side:str)
+By default there will be approximately 1 in four assets will be a beeper the remaining three will be Karels, this can be changed with the karel_prevelance argument.
+Draw approximately 50% beepers and 50% Karels:
+```
+my_asset = generate_random_asset(canvas, karel_prevelance:int=2)
+```
+In case the preference is to only have random orientations and colours, optionally the size and or centre_x & centre_y coordiantes can be specified.
+Generate a random asset in the middle of the canvas:
+```
+my_asset = generate_random_asset(canvas, centre_x=int(canvas.width / 2), centre_y=int(canvas.height / 2))
+```
 
 
-### Generating a random colour
-To get a random colour value to use in your own graphical shape, use generate_random_colour().
+### Generating a random asset outside the canvas
+To generate a random asset outside of the canvas, use generate_outofbounds_random_asset(canvas, side, karel_prevelance:int=4)
 Side options:
 Side options:
 * top
 * top
 * left
 * left
 * bottom
 * bottom
 * right
 * right
+Generate an asset above the canvas:
+```
+my_asset = generate_outofbounds_random_asset(canvas, "top")
+```
+
+### Generating a random colour
+To get a random colour value to use in your own graphical shape, use generate_random_colour().
+
 To generate a random HEX colour:
 To generate a random HEX colour:
 ```
 ```
 my_colour = generate_random_colour()
 my_colour = generate_random_colour()
@@ -244,11 +280,13 @@ To generate a random RGB colour:
 ```
 ```
 my_colour = generate_random_colour("rgb")
 my_colour = generate_random_colour("rgb")
 ```
 ```
-To generate a random ANSI colour:
+To generate a random ANSI colour as print statement:
 ```
 ```
 print("White or default")
 print("White or default")
+generate_random_colour("print-ansi")
+print("Some colour")
 colour = generate_random_colour("ansi")
 colour = generate_random_colour("ansi")
-print(f"{colour}Some colour")
+print(f"{colour}Some other colour")
 
 
 print(f"{generate_random_colour("ansi")}Some {generate_random_colour("ansi")}other {generate_random_colour("ansi")}colour {generate_random_colour("ansi")}for {generate_random_colour("ansi")}each {generate_random_colour("ansi")}word{generate_random_colour("ansi")}.")
 print(f"{generate_random_colour("ansi")}Some {generate_random_colour("ansi")}other {generate_random_colour("ansi")}colour {generate_random_colour("ansi")}for {generate_random_colour("ansi")}each {generate_random_colour("ansi")}word{generate_random_colour("ansi")}.")
 
 
@@ -263,7 +301,7 @@ background = generate_random_background(canvas)
 ## Example
 ## Example
 ```
 ```
 from graphics import Canvas
 from graphics import Canvas
-from karel_asset import *
+from karel_asset import *   # https://git.h0v1n8.nl/Stanford/karel_asset
 from time import sleep
 from time import sleep
 
 
 # Constants    
 # Constants    
@@ -271,14 +309,20 @@ CANVAS_WIDTH = 200
 CANVAS_HEIGHT = 200
 CANVAS_HEIGHT = 200
 
 
 def main():
 def main():
-    canvas = Canvas(CANVAS_WIDTH, CANVAS_HEIGHT)
-    
-    # Create a background
-    background = generate_random_background(canvas)
-    
     # Demo loop
     # Demo loop
     while True:    # Keep repeating the following code forever
     while True:    # Keep repeating the following code forever
-    
+        # Into text in random colour
+        generate_random_colour("print-ansi")
+        print("Welcome")
+        print(generate_random_colour("ansi") + "To", generate_random_colour("ansi") + "the", generate_random_colour("ansi") + "demo" + generate_random_colour("ansi") + "!")
+        
+
+        canvas = Canvas(CANVAS_WIDTH, CANVAS_HEIGHT)    # Create the canvas
+        
+        # Create a random background
+        background = generate_random_background(canvas)
+        
+        
         # Draw four Karels
         # Draw four Karels
         karel_east = draw_karel(canvas, 35, 35)
         karel_east = draw_karel(canvas, 35, 35)
         karel_east_mirrored = draw_karel(canvas, 85, 35, orientation="east-flipped", colour="red")
         karel_east_mirrored = draw_karel(canvas, 85, 35, orientation="east-flipped", colour="red")
@@ -288,22 +332,75 @@ def main():
         # Draw a beeper
         # Draw a beeper
         my_beeper = draw_beeper(canvas, 100, 100)
         my_beeper = draw_beeper(canvas, 100, 100)
         
         
-        # Wait five seconds
-        sleep(5)
+        # Wait two seconds
+        sleep(2)
         
         
         # Change the colour of one Karel to random colours
         # Change the colour of one Karel to random colours
         karel_east = recolour_asset(karel_east, "random", "random")
         karel_east = recolour_asset(karel_east, "random", "random")
+
+        # Wait half a second
+        sleep(.5)
+        
+        # Move one Karel relative to its position
+        karel_east_mirrored = relative_move_asset(karel_east_mirrored, 10, 120)
+
+        # Wait half a second
+        sleep(.5)
         
         
-        # Move one Karel
-        karel_east_mirrored = move_asset(karel_east_mirrored, 10, 10)
+        # Move another Karel to new coordinates
+        karel_west_mirrored = absolute_move_asset(karel_west_mirrored, 150, 150)
+
+        # Wait half a second
+        sleep(.5)
+        
+        # Move another Karel forward
+        karel_west = orientation_move_asset(karel_west, "forward", 10)
+
+        # Wait half a second
+        sleep(.5)
         
         
         # Rotate another karel eight times, and wait one second after each time
         # Rotate another karel eight times, and wait one second after each time
         for i in range(8):
         for i in range(8):
-            rotate_asset(karel_east_mirrored, "right")
-            sleep(1)
+            karel_east_mirrored = rotate_asset(karel_east_mirrored, "right")
+            sleep(.5)
+        
+        # Change the colour of a Karel to a random colour
+        karel_east = recolour_asset(karel_east, "random")
+
+        # Wait half a second
+        sleep(.5)
         
         
-        # Wait five seconds
-        sleep(5)
+        # Generate a random Karel
+        random_karel = generate_random_karel(canvas)
+        
+        # Wait half a second
+        sleep(.5)
+        
+        # Shrink the random Karel
+        for i in range(random_karel[1][3]):
+            random_karel = relative_resize_asset(random_karel, -1)
+            sleep(0.01)
+        
+        # Wait half a second
+        sleep(.5)
+        
+        # Set the size of the random Karel to 25
+        random_karel = absolute_resize_asset(random_karel, 25)
+
+        # Wait half a second
+        sleep(.5)
+        
+        # Generate a random asset
+        random_asset = generate_random_asset(canvas)
+        
+        # Draw a random asset outside the canvas and slide it into the canvas
+        random_OOB_asset = generate_outofbounds_random_asset(canvas, "left")
+        for i in range(random_OOB_asset[1][3] + 5):
+            random_OOB_asset = relative_move_asset(random_OOB_asset, x=1)
+            sleep(0.01)
+        
+        # Wait half a second
+        sleep(.5)
         
         
         # Erase four Karels
         # Erase four Karels
         erase_asset(karel_east)
         erase_asset(karel_east)
@@ -311,6 +408,13 @@ def main():
         erase_asset(karel_west)
         erase_asset(karel_west)
         erase_asset(karel_west_mirrored)
         erase_asset(karel_west_mirrored)
 
 
+        # Wait half a second
+        sleep(.5)
+
+        # Clear the canvas
+        for obj_id in list(canvas.shapes.keys()):
+            canvas.delete(obj_id)
+
 
 
 if __name__ == '__main__':
 if __name__ == '__main__':
     main()
     main()