From 54e2cde882bae68f495b55134c6e39ba98a93fe9 Mon Sep 17 00:00:00 2001 From: Kevin Thomas Date: Tue, 15 Jun 2021 08:45:31 -0400 Subject: [PATCH] Added files for 2nd course --- Part_12_Hello_World/main.py | 1 - Part_13_Debugging_Hello_World/main.py | 2 - Part_14_IO/main.py | 2 - Part_15_Debugging_IO/main.py | 3 - Part_1_Basic_IO/0001_hello_world_repl.py | 1 + Part_1_Basic_IO/0002_hello_world.py | 3 + Part_1_Basic_IO/0003_hello_world_talk.py | 8 ++ Part_1_Basic_IO/0004_basic_io_repl.py | 14 +++ .../p_0001_candy_name_generator.py | 4 + .../p_0001_candy_name_generator_ec.py | 12 ++ Part_21_Integer_Primitive_Data_Type/main.py | 4 - Part_22_Float_Primitive_Data_Type/main.py | 4 - Part_23_String_Primitive_Data_Type/main.py | 3 - Part_24_Bool_Primitive_Data_Type/main.py | 14 --- Part_25_Bytes_Primitive_Data_Type/main.py | 5 - Part_26_Bytearray_Primitive_Data_Type/main.py | 35 ------ Part_27_Variables/main.py | 25 ---- .../0002_heads_or_tails_game.py | 13 -- .../0005_calculator_repl.py | 11 +- .../0006_square_footage_repl.py | 9 ++ .../0007_final_score_talk_repl.py | 15 +++ .../p_0002_talking_madlibs.py | 15 +++ Part_32_Classes/0007_escape_room/main.py | 70 ----------- .../0007_escape_room/.idea/workspace.xml | 113 ------------------ Part_33_Unittest/0007_escape_room/inventory | 0 Part_33_Unittest/0007_escape_room/main.py | 70 ----------- .../0007_escape_room/tests/inventory | 0 .../0008_career_councelor_repl.drawio | 1 + .../0008_career_councelor_repl.png | Bin 0 -> 24232 bytes .../0008_career_councelor_repl.py.py | 0 .../0009_heads_or_tails_game.drawio | 1 + .../0009_heads_or_tails_game.png | Bin 0 -> 25957 bytes .../0009_heads_or_tails_game.py | 23 ++++ ...p_0003_talking_number_guessing_game.drawio | 1 + .../p_0003_talking_number_guessing_game.png | Bin 0 -> 32849 bytes .../p_0003_talking_number_guessing_game.py | 43 +++++++ Part_3_Hello_World/main.py | 4 - Part_4_FUN_With_Images/main_1.py | 3 - Part_4_FUN_With_Images/main_2.py | 9 -- .../0010_rock_paper_scissors_ar | 0 .../0010_rock_paper_scissors_repl.py | 0 .../0011_journal_ar | 0 .../0011_journal_repl.py | 4 +- .../0012_high_score_ar | 0 .../0012_high_score_repl.py | 0 ...alking_caramel_chocolate_adventure_game.py | 79 ++++++++++++ ...alking_caramel_chocolate_adventure_game_ar | 32 +++++ Part_5_FUN_With_Numbers/main.py | 11 -- .../0013_number_guessing_game_ar | 0 .../0013_number_guessing_game_repl.py | 0 ...er_guessing_game_repl_WITH_LOGIC_ERRORS.py | 0 .../p_0005_wonka_chocolate_machine/data.py | 0 .../p_0005_wonka_chocolate_machine/funcs.py | 11 ++ .../p_0005_wonka_chocolate_machine/main.py | 1 + .../p_0005_wonka_chocolate_machine_ar | 0 .../0014_escape_room}/EscapeRoomPlayer.py | 0 .../0014_escape_room}/FileManager.py | 0 .../0014_escape_room}/Game.py | 2 +- .../0014_escape_room}/Grid.py | 12 +- .../0014_escape_room}/Player.py | 0 .../0014_escape_room}/data.py | 12 +- Part_6_Classes/0014_escape_room/main.py | 89 ++++++++++++++ .../0014_escape_room_ar | 4 +- .../class_person_example.py | 0 .../ChocolateMachine.py | 0 .../p_0006_wonka_chocolate_machine/Machine.py | 0 .../p_0006_wonka_chocolate_machine/data.py | 0 .../p_0006_wonka_chocolate_machine/main.py | 0 Part_6_FUN_With_Words/main.py | 6 - Part_7_FUN_With_Word_Lists/main.py | 12 -- .../0013_number_guessing_game_repl/funcs.py | 0 .../0013_number_guessing_game_repl/main.py | 0 .../tests/test_funcs.py | 0 .../0014_escape_room}/EscapeRoomPlayer.py | 0 .../0014_escape_room}/FileManager.py | 0 .../0014_escape_room}/Game.py | 2 +- .../0014_escape_room}/Grid.py | 12 +- .../0014_escape_room}/Player.py | 0 .../0014_escape_room}/data.py | 12 +- Part_7_Unittest/0014_escape_room/main.py | 89 ++++++++++++++ .../0014_escape_room/tests}/inventory | 0 .../tests/test_EscapeRoomPlayer.py | 0 .../tests/test_FileManager.py | 0 .../0014_escape_room}/tests/test_Game.py | 0 .../0014_escape_room}/tests/test_Grid.py | 0 .../0014_escape_room}/tests/test_Player.py | 0 .../p_0005_wonka_chocolate_machine/data.py | 0 .../p_0005_wonka_chocolate_machine/funcs.py | 0 .../p_0005_wonka_chocolate_machine/main.py | 0 .../tests/test_funcs.py | 0 .../data/__pycache__/__init__.cpython-39.pyc | Bin .../data/__pycache__/data.cpython-39.pyc | Bin .../data/data.py | 0 .../lib/ChocolateMachine.py | 0 .../lib/Machine.py | 0 .../ChocolateMachine.cpython-39.pyc | Bin .../lib/__pycache__/Machine.cpython-39.pyc | Bin .../p_0006_wonka_chocolate_machine/main.py | 0 .../tests/test_ChocolateMachine.py | 0 .../tests/test_Machine.py | 0 Part_8_FUN_With_Music/main.py | 3 - 101 files changed, 473 insertions(+), 461 deletions(-) delete mode 100644 Part_12_Hello_World/main.py delete mode 100644 Part_13_Debugging_Hello_World/main.py delete mode 100644 Part_14_IO/main.py delete mode 100644 Part_15_Debugging_IO/main.py create mode 100644 Part_1_Basic_IO/0001_hello_world_repl.py create mode 100644 Part_1_Basic_IO/0002_hello_world.py create mode 100644 Part_1_Basic_IO/0003_hello_world_talk.py create mode 100644 Part_1_Basic_IO/0004_basic_io_repl.py create mode 100644 Part_1_Basic_IO/p_0001_candy_name_generator.py create mode 100644 Part_1_Basic_IO/p_0001_candy_name_generator_ec.py delete mode 100644 Part_21_Integer_Primitive_Data_Type/main.py delete mode 100644 Part_22_Float_Primitive_Data_Type/main.py delete mode 100644 Part_23_String_Primitive_Data_Type/main.py delete mode 100644 Part_24_Bool_Primitive_Data_Type/main.py delete mode 100644 Part_25_Bytes_Primitive_Data_Type/main.py delete mode 100644 Part_26_Bytearray_Primitive_Data_Type/main.py delete mode 100644 Part_27_Variables/main.py delete mode 100644 Part_29_Conditional_Logic/0002_heads_or_tails_game.py rename Part_28_Mathematical_Operations/main.py => Part_2_DataTypes_+_Numbers/0005_calculator_repl.py (79%) create mode 100644 Part_2_DataTypes_+_Numbers/0006_square_footage_repl.py create mode 100644 Part_2_DataTypes_+_Numbers/0007_final_score_talk_repl.py create mode 100644 Part_2_DataTypes_+_Numbers/p_0002_talking_madlibs.py delete mode 100644 Part_32_Classes/0007_escape_room/main.py delete mode 100644 Part_33_Unittest/0007_escape_room/.idea/workspace.xml delete mode 100644 Part_33_Unittest/0007_escape_room/inventory delete mode 100644 Part_33_Unittest/0007_escape_room/main.py delete mode 100644 Part_33_Unittest/0007_escape_room/tests/inventory create mode 100644 Part_3_Conditional_Logic/0008_career_councelor_repl.drawio create mode 100644 Part_3_Conditional_Logic/0008_career_councelor_repl.png rename Part_29_Conditional_Logic/0001_career_councelor.py => Part_3_Conditional_Logic/0008_career_councelor_repl.py.py (100%) create mode 100644 Part_3_Conditional_Logic/0009_heads_or_tails_game.drawio create mode 100644 Part_3_Conditional_Logic/0009_heads_or_tails_game.png create mode 100644 Part_3_Conditional_Logic/0009_heads_or_tails_game.py create mode 100644 Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.drawio create mode 100644 Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.png create mode 100644 Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.py delete mode 100644 Part_3_Hello_World/main.py delete mode 100644 Part_4_FUN_With_Images/main_1.py delete mode 100644 Part_4_FUN_With_Images/main_2.py rename Part_30_Lists_Tuples_Dictionaries_Loops/0003_rock_paper_scissors_ar => Part_4_Lists_Tuples_Dictionaries_Loops/0010_rock_paper_scissors_ar (100%) rename Part_30_Lists_Tuples_Dictionaries_Loops/0003_rock_paper_scissors.py => Part_4_Lists_Tuples_Dictionaries_Loops/0010_rock_paper_scissors_repl.py (100%) rename Part_30_Lists_Tuples_Dictionaries_Loops/0004_journal_ar => Part_4_Lists_Tuples_Dictionaries_Loops/0011_journal_ar (100%) rename Part_30_Lists_Tuples_Dictionaries_Loops/0004_journal.py => Part_4_Lists_Tuples_Dictionaries_Loops/0011_journal_repl.py (77%) rename Part_30_Lists_Tuples_Dictionaries_Loops/0005_high_score_ar => Part_4_Lists_Tuples_Dictionaries_Loops/0012_high_score_ar (100%) rename Part_30_Lists_Tuples_Dictionaries_Loops/0005_high_score.py => Part_4_Lists_Tuples_Dictionaries_Loops/0012_high_score_repl.py (100%) create mode 100644 Part_4_Lists_Tuples_Dictionaries_Loops/p_0004_talking_caramel_chocolate_adventure_game.py create mode 100644 Part_4_Lists_Tuples_Dictionaries_Loops/p_0004_talking_caramel_chocolate_adventure_game_ar delete mode 100644 Part_5_FUN_With_Numbers/main.py rename {Part_31_Functions => Part_5_Functions}/0013_number_guessing_game_ar (100%) rename {Part_31_Functions => Part_5_Functions}/0013_number_guessing_game_repl.py (100%) rename {Part_31_Functions => Part_5_Functions}/0013_number_guessing_game_repl_WITH_LOGIC_ERRORS.py (100%) rename {Part_31_Functions => Part_5_Functions}/p_0005_wonka_chocolate_machine/data.py (100%) rename {Part_31_Functions => Part_5_Functions}/p_0005_wonka_chocolate_machine/funcs.py (99%) rename {Part_33_Unittest => Part_5_Functions}/p_0005_wonka_chocolate_machine/main.py (99%) rename {Part_31_Functions => Part_5_Functions}/p_0005_wonka_chocolate_machine_ar (100%) rename {Part_32_Classes/0007_escape_room => Part_6_Classes/0014_escape_room}/EscapeRoomPlayer.py (100%) rename {Part_32_Classes/0007_escape_room => Part_6_Classes/0014_escape_room}/FileManager.py (100%) rename {Part_32_Classes/0007_escape_room => Part_6_Classes/0014_escape_room}/Game.py (99%) rename {Part_32_Classes/0007_escape_room => Part_6_Classes/0014_escape_room}/Grid.py (88%) rename {Part_32_Classes/0007_escape_room => Part_6_Classes/0014_escape_room}/Player.py (100%) rename {Part_32_Classes/0007_escape_room => Part_6_Classes/0014_escape_room}/data.py (84%) create mode 100644 Part_6_Classes/0014_escape_room/main.py rename Part_32_Classes/0007_escape_room_ar => Part_6_Classes/0014_escape_room_ar (90%) rename {Part_32_Classes => Part_6_Classes}/class_person_example.py (100%) rename {Part_32_Classes => Part_6_Classes}/p_0006_wonka_chocolate_machine/ChocolateMachine.py (100%) rename {Part_32_Classes => Part_6_Classes}/p_0006_wonka_chocolate_machine/Machine.py (100%) rename {Part_32_Classes => Part_6_Classes}/p_0006_wonka_chocolate_machine/data.py (100%) rename {Part_32_Classes => Part_6_Classes}/p_0006_wonka_chocolate_machine/main.py (100%) delete mode 100644 Part_6_FUN_With_Words/main.py delete mode 100644 Part_7_FUN_With_Word_Lists/main.py rename {Part_33_Unittest => Part_7_Unittest}/0013_number_guessing_game_repl/funcs.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/0013_number_guessing_game_repl/main.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/0013_number_guessing_game_repl/tests/test_funcs.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/EscapeRoomPlayer.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/FileManager.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/Game.py (99%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/Grid.py (88%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/Player.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/data.py (84%) create mode 100644 Part_7_Unittest/0014_escape_room/main.py rename {Part_32_Classes/0007_escape_room => Part_7_Unittest/0014_escape_room/tests}/inventory (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/tests/test_EscapeRoomPlayer.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/tests/test_FileManager.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/tests/test_Game.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/tests/test_Grid.py (100%) rename {Part_33_Unittest/0007_escape_room => Part_7_Unittest/0014_escape_room}/tests/test_Player.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0005_wonka_chocolate_machine/data.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0005_wonka_chocolate_machine/funcs.py (100%) rename {Part_31_Functions => Part_7_Unittest}/p_0005_wonka_chocolate_machine/main.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0005_wonka_chocolate_machine/tests/test_funcs.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/data/__pycache__/__init__.cpython-39.pyc (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/data/__pycache__/data.cpython-39.pyc (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/data/data.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/lib/ChocolateMachine.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/lib/Machine.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/lib/__pycache__/ChocolateMachine.cpython-39.pyc (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/lib/__pycache__/Machine.cpython-39.pyc (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/main.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/tests/test_ChocolateMachine.py (100%) rename {Part_33_Unittest => Part_7_Unittest}/p_0006_wonka_chocolate_machine/tests/test_Machine.py (100%) delete mode 100644 Part_8_FUN_With_Music/main.py diff --git a/Part_12_Hello_World/main.py b/Part_12_Hello_World/main.py deleted file mode 100644 index bc4200d..0000000 --- a/Part_12_Hello_World/main.py +++ /dev/null @@ -1 +0,0 @@ -print('Hello, World!') \ No newline at end of file diff --git a/Part_13_Debugging_Hello_World/main.py b/Part_13_Debugging_Hello_World/main.py deleted file mode 100644 index 0e69652..0000000 --- a/Part_13_Debugging_Hello_World/main.py +++ /dev/null @@ -1,2 +0,0 @@ -import pdb;pdb.set_trace() -print('Hello, World!') \ No newline at end of file diff --git a/Part_14_IO/main.py b/Part_14_IO/main.py deleted file mode 100644 index ba6c777..0000000 --- a/Part_14_IO/main.py +++ /dev/null @@ -1,2 +0,0 @@ -name = input('Tell Me Your Name: ') -print(f'Hi {name}!') \ No newline at end of file diff --git a/Part_15_Debugging_IO/main.py b/Part_15_Debugging_IO/main.py deleted file mode 100644 index 850313a..0000000 --- a/Part_15_Debugging_IO/main.py +++ /dev/null @@ -1,3 +0,0 @@ -import pdb;pdb.set_trace() -name = input('Tell Me Your Name: ') -print(f'Hi {name}!') \ No newline at end of file diff --git a/Part_1_Basic_IO/0001_hello_world_repl.py b/Part_1_Basic_IO/0001_hello_world_repl.py new file mode 100644 index 0000000..73fb7c3 --- /dev/null +++ b/Part_1_Basic_IO/0001_hello_world_repl.py @@ -0,0 +1 @@ +print('Hello World!') diff --git a/Part_1_Basic_IO/0002_hello_world.py b/Part_1_Basic_IO/0002_hello_world.py new file mode 100644 index 0000000..25098ab --- /dev/null +++ b/Part_1_Basic_IO/0002_hello_world.py @@ -0,0 +1,3 @@ +from microbit import display + +display.scroll('Hello World!') diff --git a/Part_1_Basic_IO/0003_hello_world_talk.py b/Part_1_Basic_IO/0003_hello_world_talk.py new file mode 100644 index 0000000..2adc5e7 --- /dev/null +++ b/Part_1_Basic_IO/0003_hello_world_talk.py @@ -0,0 +1,8 @@ +from microbit import display, Image +from speech import say + +SPEED = 95 + +display.show(Image.SURPRISED) +say('Hello World!', speed=SPEED) +display.show(Image.HAPPY) diff --git a/Part_1_Basic_IO/0004_basic_io_repl.py b/Part_1_Basic_IO/0004_basic_io_repl.py new file mode 100644 index 0000000..6b76d52 --- /dev/null +++ b/Part_1_Basic_IO/0004_basic_io_repl.py @@ -0,0 +1,14 @@ +# We introduce the concept of a variable to which +# we reserve a little box in our computer's memory +# to hold the string which we are going to type +# when prompted to provide our favorite food and +# favorite drink +favorite_food = input('What is your favorite food? ') +favorite_drink = input('What is your favorite drink? ') + +# Here we use MicroPython's built-in format method +# which is part of the string module's Formatter +# class as the following line of code will provide +# a response back based to the console based on +# our two variables which we inputted above +print('I love {0} and {1} as well!'.format(favorite_food, favorite_drink)) diff --git a/Part_1_Basic_IO/p_0001_candy_name_generator.py b/Part_1_Basic_IO/p_0001_candy_name_generator.py new file mode 100644 index 0000000..e1bccbb --- /dev/null +++ b/Part_1_Basic_IO/p_0001_candy_name_generator.py @@ -0,0 +1,4 @@ +candy_title = input('What is the candy title? ') +candy_flavor = input('What is the candy flavor? ') + +print('It shall be called {0} {1}!'.format(candy_title, candy_flavor)) diff --git a/Part_1_Basic_IO/p_0001_candy_name_generator_ec.py b/Part_1_Basic_IO/p_0001_candy_name_generator_ec.py new file mode 100644 index 0000000..7c8bee3 --- /dev/null +++ b/Part_1_Basic_IO/p_0001_candy_name_generator_ec.py @@ -0,0 +1,12 @@ +from microbit import display, Image +from speech import say + +SPEED = 95 + +candy_title = input('What is the candy title? ') +candy_flavor = input('What is the candy flavor? ') + +display.show(Image.SURPRISED) +print('It shall be called {0} {1}!'.format(candy_title, candy_flavor)) +say('It shall be called {0} {1}!'.format(candy_title, candy_flavor)) +display.show(Image.HAPPY) diff --git a/Part_21_Integer_Primitive_Data_Type/main.py b/Part_21_Integer_Primitive_Data_Type/main.py deleted file mode 100644 index 07aff6b..0000000 --- a/Part_21_Integer_Primitive_Data_Type/main.py +++ /dev/null @@ -1,4 +0,0 @@ -x = 10 -y = -10 - -print(x / y) \ No newline at end of file diff --git a/Part_22_Float_Primitive_Data_Type/main.py b/Part_22_Float_Primitive_Data_Type/main.py deleted file mode 100644 index 2b9456a..0000000 --- a/Part_22_Float_Primitive_Data_Type/main.py +++ /dev/null @@ -1,4 +0,0 @@ -x = 10.1 -y = -9.5 - -print(x / y) \ No newline at end of file diff --git a/Part_23_String_Primitive_Data_Type/main.py b/Part_23_String_Primitive_Data_Type/main.py deleted file mode 100644 index 0ac0c43..0000000 --- a/Part_23_String_Primitive_Data_Type/main.py +++ /dev/null @@ -1,3 +0,0 @@ -greeting = 'Hello World!' - -print(greeting) \ No newline at end of file diff --git a/Part_24_Bool_Primitive_Data_Type/main.py b/Part_24_Bool_Primitive_Data_Type/main.py deleted file mode 100644 index 45328af..0000000 --- a/Part_24_Bool_Primitive_Data_Type/main.py +++ /dev/null @@ -1,14 +0,0 @@ -is_hungry = True - -print(type(is_hungry)) - -print(is_hungry > 0) -print(is_hungry <= 0) - -# When you compare two values, the expression is eval to either True -# or false -print(100 > 1) -print(100 < 10) -print(42 == 42) -print(42 != 42) -print(42 == 4) \ No newline at end of file diff --git a/Part_25_Bytes_Primitive_Data_Type/main.py b/Part_25_Bytes_Primitive_Data_Type/main.py deleted file mode 100644 index f497a8b..0000000 --- a/Part_25_Bytes_Primitive_Data_Type/main.py +++ /dev/null @@ -1,5 +0,0 @@ -b_str = 'Hello world!' - -b_arr = bytes(b_str, 'utf-8') - -print(b_arr) \ No newline at end of file diff --git a/Part_26_Bytearray_Primitive_Data_Type/main.py b/Part_26_Bytearray_Primitive_Data_Type/main.py deleted file mode 100644 index f12d36f..0000000 --- a/Part_26_Bytearray_Primitive_Data_Type/main.py +++ /dev/null @@ -1,35 +0,0 @@ -# Array of bytes from an int -# when an int is passed as an arg it creates an array -# of that size and init the area to null bytes -magic_number = 42 - -ba = bytearray(magic_number) - -print(ba) - - -# Array of bytes from a str -# when a str is passed we have to provide the encoding -# so we will use utf-8 -magic_str = "forty-two" - -# Provide the encoding along with string -ba = bytearray(magic_str, 'utf-8') - -print(ba) - - -# Array of bytes from a list -# when a list is passed it returns the mutable sequence of bytes -magic_list = [42, 255, 6] - -ba = bytearray(magic_list) - -print(ba) - - -# No param -# when no praram is passed it creates an array of size 0 or empty -ba = bytearray() - -print(ba) \ No newline at end of file diff --git a/Part_27_Variables/main.py b/Part_27_Variables/main.py deleted file mode 100644 index ebf318f..0000000 --- a/Part_27_Variables/main.py +++ /dev/null @@ -1,25 +0,0 @@ -name = 'Kevin' - -print(name) - - -# name[0] = 'L' -# Traceback (most recent call last): -# File "c:\users\kevin\mu_code\main.py", line 5, in -# name[0] = 'L' -#TypeError: 'str' object does not support item assignment -# >>> - - -name = 'Keith' - -print(name) - - -print(type(name)) - - -name = 42 - -print(name) -print(type(name)) \ No newline at end of file diff --git a/Part_29_Conditional_Logic/0002_heads_or_tails_game.py b/Part_29_Conditional_Logic/0002_heads_or_tails_game.py deleted file mode 100644 index c17f193..0000000 --- a/Part_29_Conditional_Logic/0002_heads_or_tails_game.py +++ /dev/null @@ -1,13 +0,0 @@ -from random import randint - -random_number = randint(1, 2) - -choice = input('Enter A - Heads OR B - Tails: ').lower() -if random_number == 1 and choice == 'a': - print('You WON!') -elif random_number == 1 and choice == 'b': - print('You Lost') -elif random_number == 2 and choice == 'b': - print('You Won!') -else: - print('You Lost') \ No newline at end of file diff --git a/Part_28_Mathematical_Operations/main.py b/Part_2_DataTypes_+_Numbers/0005_calculator_repl.py similarity index 79% rename from Part_28_Mathematical_Operations/main.py rename to Part_2_DataTypes_+_Numbers/0005_calculator_repl.py index e40fa2d..4ed9d7d 100644 --- a/Part_28_Mathematical_Operations/main.py +++ b/Part_2_DataTypes_+_Numbers/0005_calculator_repl.py @@ -1,22 +1,15 @@ -print(5 * (9 + 5) / 3 - 3) - -# First: (9 + 5) = 14 -# Second: 5 * 14 = 70 -# Third: 70 / 3 = 23.33334 -# Fourth: 23.33334 - 3 = 20.33334 - - first_number = int(input('Enter First Number: ')) second_number = int(input('Enter Second Number: ')) + my_addition = first_number + second_number my_subtraction = first_number - second_number my_multiplication = first_number * second_number my_division = first_number / second_number + print('Addition = {0}'.format(my_addition)) print('Subtraction = {0}'.format(my_subtraction)) print('Multiplication = {0}'.format(my_multiplication)) print('Division = {0}'.format(my_division)) print(type(my_division)) - diff --git a/Part_2_DataTypes_+_Numbers/0006_square_footage_repl.py b/Part_2_DataTypes_+_Numbers/0006_square_footage_repl.py new file mode 100644 index 0000000..f7a9981 --- /dev/null +++ b/Part_2_DataTypes_+_Numbers/0006_square_footage_repl.py @@ -0,0 +1,9 @@ +from microbit import display + +length = float(input('Enter length: ')) +width = float(input('Enter width: ')) + +square_footage = length * width + +print('Your room size is {0} square feet.'.format(square_footage)) +display.scroll('Your room size is {0} square feet.'.format(square_footage)) diff --git a/Part_2_DataTypes_+_Numbers/0007_final_score_talk_repl.py b/Part_2_DataTypes_+_Numbers/0007_final_score_talk_repl.py new file mode 100644 index 0000000..5f17515 --- /dev/null +++ b/Part_2_DataTypes_+_Numbers/0007_final_score_talk_repl.py @@ -0,0 +1,15 @@ +from microbit import display, Image +from speech import say + +SPEED = 95 + +player_score = int(input('Enter Player Score: ')) +player_score_bonus = int(input('Enter Player Score Bonus: ')) +player_has_golden_ticket = True + +player_final_score = player_score + player_score_bonus + +display.show(Image.SURPRISED) +print('Player final score is {0} and has golden ticket is {1}.'.format(player_final_score, player_has_golden_ticket)) +say('Player final score is {0} and has golden ticket is {1}.'.format(player_final_score, player_has_golden_ticket)) +display.show(Image.HAPPY) \ No newline at end of file diff --git a/Part_2_DataTypes_+_Numbers/p_0002_talking_madlibs.py b/Part_2_DataTypes_+_Numbers/p_0002_talking_madlibs.py new file mode 100644 index 0000000..08b7332 --- /dev/null +++ b/Part_2_DataTypes_+_Numbers/p_0002_talking_madlibs.py @@ -0,0 +1,15 @@ +from microbit import display, Image +from speech import say + +SPEED = 95 + +noun = input('Enter Noun: ') +verb = input('Enter Verb: ') +miles = int(input('Enter Miles: ')) + +display.show(Image.SURPRISED) +print('My {0} are {1}!'.format(noun, verb)) +say('My {0} are {1}!'.format(noun, verb)) +print('It traveled {0} miles!'.format(miles)) +say('It traveled {0} miles!'.format(miles)) +display.show(Image.HAPPY) diff --git a/Part_32_Classes/0007_escape_room/main.py b/Part_32_Classes/0007_escape_room/main.py deleted file mode 100644 index 5d9099e..0000000 --- a/Part_32_Classes/0007_escape_room/main.py +++ /dev/null @@ -1,70 +0,0 @@ -from time import sleep -from data import questions -from Grid import Grid -from EscapeRoomPlayer import EscapeRoomPlayer -from FileManager import FileManager -from Game import Game - -grid = Grid(5, 5) -player = EscapeRoomPlayer() -file_manager = FileManager() -game = Game() - -if __name__ == '__main__': - player_location = None - response = None - final_question = False - - while True: - # To ensure we do not generate a question if the player is hitting a wall - # or not entering a valid move - previous_player_location = player_location - clear_screen = grid.clear_screen() - update_grid = grid.update(player) - print(clear_screen) - print(update_grid) - key = input('Enter A, D, W, S: ') - if key == 'a': - player_location = player.move_west(grid) - elif key == 'd': - player_location = player.move_east(grid) - elif key == 'w': - player_location = player.move_north(grid) - elif key == 's': - player_location = player.move_south(grid) - else: - pass - random_location = (x, y) = game.generate_random_numbers(grid) - if random_location == player_location and random_location != previous_player_location: - random_question, answer_1, answer_2, answer_3, correct_answer_index, correct_answer \ - = game.ask_random_question(questions) - print(random_question) - print('Press 1 for {0}.'.format(answer_1)) - print('Press 2 for {0}.'.format(answer_2)) - print('Press 3 for {0}.'.format(answer_3)) - while True: - try: - response = int(input('ENTER: ')) - break - except ValueError: - print('Enter ONLY 1, 2 or 3!') - if response == correct_answer_index + 1: - print(game.correct_answer_response()) - inventory = player.get_inventory(file_manager) - player.inventory.append(inventory) - if 'Red Key' in player.inventory: - final_question = True - if 'Red Key' not in player.inventory and not final_question: - receive_red_key = game.generate_random_number(grid) - if receive_red_key == 2: - print(player.pick_up_red_key(file_manager)) - final_question = True - else: - print(player.without_red_key()) - elif final_question: - print(game.win(file_manager)) - sleep(3) - break - else: - print(game.incorrect_answer_response(correct_answer)) - sleep(3) diff --git a/Part_33_Unittest/0007_escape_room/.idea/workspace.xml b/Part_33_Unittest/0007_escape_room/.idea/workspace.xml deleted file mode 100644 index 47131a6..0000000 --- a/Part_33_Unittest/0007_escape_room/.idea/workspace.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1613302042689 - - - - - - - - file://$PROJECT_DIR$/main.py - 69 - - - - - \ No newline at end of file diff --git a/Part_33_Unittest/0007_escape_room/inventory b/Part_33_Unittest/0007_escape_room/inventory deleted file mode 100644 index e69de29..0000000 diff --git a/Part_33_Unittest/0007_escape_room/main.py b/Part_33_Unittest/0007_escape_room/main.py deleted file mode 100644 index 5d9099e..0000000 --- a/Part_33_Unittest/0007_escape_room/main.py +++ /dev/null @@ -1,70 +0,0 @@ -from time import sleep -from data import questions -from Grid import Grid -from EscapeRoomPlayer import EscapeRoomPlayer -from FileManager import FileManager -from Game import Game - -grid = Grid(5, 5) -player = EscapeRoomPlayer() -file_manager = FileManager() -game = Game() - -if __name__ == '__main__': - player_location = None - response = None - final_question = False - - while True: - # To ensure we do not generate a question if the player is hitting a wall - # or not entering a valid move - previous_player_location = player_location - clear_screen = grid.clear_screen() - update_grid = grid.update(player) - print(clear_screen) - print(update_grid) - key = input('Enter A, D, W, S: ') - if key == 'a': - player_location = player.move_west(grid) - elif key == 'd': - player_location = player.move_east(grid) - elif key == 'w': - player_location = player.move_north(grid) - elif key == 's': - player_location = player.move_south(grid) - else: - pass - random_location = (x, y) = game.generate_random_numbers(grid) - if random_location == player_location and random_location != previous_player_location: - random_question, answer_1, answer_2, answer_3, correct_answer_index, correct_answer \ - = game.ask_random_question(questions) - print(random_question) - print('Press 1 for {0}.'.format(answer_1)) - print('Press 2 for {0}.'.format(answer_2)) - print('Press 3 for {0}.'.format(answer_3)) - while True: - try: - response = int(input('ENTER: ')) - break - except ValueError: - print('Enter ONLY 1, 2 or 3!') - if response == correct_answer_index + 1: - print(game.correct_answer_response()) - inventory = player.get_inventory(file_manager) - player.inventory.append(inventory) - if 'Red Key' in player.inventory: - final_question = True - if 'Red Key' not in player.inventory and not final_question: - receive_red_key = game.generate_random_number(grid) - if receive_red_key == 2: - print(player.pick_up_red_key(file_manager)) - final_question = True - else: - print(player.without_red_key()) - elif final_question: - print(game.win(file_manager)) - sleep(3) - break - else: - print(game.incorrect_answer_response(correct_answer)) - sleep(3) diff --git a/Part_33_Unittest/0007_escape_room/tests/inventory b/Part_33_Unittest/0007_escape_room/tests/inventory deleted file mode 100644 index e69de29..0000000 diff --git a/Part_3_Conditional_Logic/0008_career_councelor_repl.drawio b/Part_3_Conditional_Logic/0008_career_councelor_repl.drawio new file mode 100644 index 0000000..0967e4c --- /dev/null +++ b/Part_3_Conditional_Logic/0008_career_councelor_repl.drawio @@ -0,0 +1 @@ +7VnbctowFPwaHtPxBUzyWG5J2jTTNhfaR8UWtopsUVlg6Nf3CMs3pISkDWGG8ALW0ZFl7ersytBy+/HynKNZ9IUFmLYcK1i23EHLcWzL8eBLRlZ5pHPWzgMhJ4FKqgI35A8uRqronAQ4bSQKxqggs2bQZ0mCfdGIIc5Z1kybMNqcdYZCrAVufET16JgEIsqjp063il9gEkbFzLZ3lvfEqEhWK0kjFLCsFnKHLbfPGRP5VbzsYyrBK3AZX67G9GrqnX/6lv5Gd73Pt9f3J/nNRi8ZUi6B40T8862zpZOl7hQvg8u70x8X8T0dnKsh1gLRucJLrVWsCgBxAHiqJuMiYiFLEB1W0R5n8yTAchoLWlXOFWMzCNoQ/IWFWKnNgeaCQSgSMVW9+Zxyog3OtixY5aVszn38RJ6r9h3iIX7qfl7JKpQDZjEWfAXjOKZIkEXz4ZDal2GZV2EPFwr+F7DsalSMIyTkqFTuxtV6PEbyPjdsIjIABy6HSUgSjDlJQllEEMS85Y40FiuOJOBZRAS+maE1ahkUfpOPCUuEIssGQHohRWmq6E0FZ9OylGR2WRdWSeVzmVtgLvCyhqsOftHbUVtVyVBbNbOqpu0iFtXq+dT6f7qMlWNrdB1i5XjPrBzbMrP36qVj5MI5clHL6+5TxTyNigGTVcvm8EnJVGoWnAdImOSKhWbyHGDQq4jFD/N0u1Y11EcK1wjFhEqVuMB0gQXxkUHREIUngIYP1EjBNMkaTCmf0R14Vet2vRdO2rtUOrvTUDrb06WuPF3Vpa7Uv1cntauR+h3DgtK6AR2c47StpuOUmNctxzHw8Bo0GGVOPyEcoswVMG/3HGefntM+ktFIfKSY3sZ1bP09Rrcdn2N4FOk6HoWl9B5As7xQXmX4Qb0KHr1ow4vcD92mHblGO3I+dAyG5O7KkGz99P11BcWTQGzEAd+TYRLA9QBsirLZAbpTeSoofpYx0LIzd3pCjs2c9JA/PXhKNg8Mbauz5wNDR2Pkmmmww+rEhoyt8eszykCNBglLpFVNCKUbIU24JFagcfSj6ohJEKx9zkRm0/seAfu5PD1Kitvefooz/W7g7IoT/QXp3XNiKpQ35UR/v/kJJ4H3RUqJbuHzzp4L5exIikZKZ3fqBc3qr4x1X+0PIXf4Fw== \ No newline at end of file diff --git a/Part_3_Conditional_Logic/0008_career_councelor_repl.png b/Part_3_Conditional_Logic/0008_career_councelor_repl.png new file mode 100644 index 0000000000000000000000000000000000000000..4a29b012b0b6882c9e744444f781e453ea8f66cb GIT binary patch literal 24232 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 Wd>W3eUWEjDs*9TX8bmd0$bSGEe~8Qg literal 0 HcmV?d00001 diff --git a/Part_29_Conditional_Logic/0001_career_councelor.py b/Part_3_Conditional_Logic/0008_career_councelor_repl.py.py similarity index 100% rename from Part_29_Conditional_Logic/0001_career_councelor.py rename to Part_3_Conditional_Logic/0008_career_councelor_repl.py.py diff --git a/Part_3_Conditional_Logic/0009_heads_or_tails_game.drawio b/Part_3_Conditional_Logic/0009_heads_or_tails_game.drawio new file mode 100644 index 0000000..35f1f6e --- /dev/null +++ b/Part_3_Conditional_Logic/0009_heads_or_tails_game.drawio @@ -0,0 +1 @@ +7VpdU+IwFP0t+8AjOyT9AB8F/Fpdd3dYV/FlJ9LYRtMG01TAX78JpLQlBXFnoCq8YHKTNMk995x7i9SsTjg+4WgYfGcepjXY8MY1q1uDEDSgK/8oy2RmcQ7smcHnxNOTMkOPvOB0pbYmxMNxYaJgjAoyLBoHLIrwQBRsiHM2Kk67Z7S46xD52DD0Boia1mviiWBmbcFmZj/FxA/SnYF7MBsJUTpZ3yQOkMdGOZN1VLM6nDExa4XjDqbKealfrs8m1/Ti0T359it+Qlft89+Xf+qzhx2/Zcn8ChxH4r8fHXCrI27xz2b/5mj866l19tJ+qqdXE5PUX9iT7tNdxkXAfBYhepRZ25wlkYfVUxuyl825YGwojUAaH7AQEx0LKBFMmgIRUj2Kx0Tc6OWq3Vftr47udce5oe4k7USCT26yiarbz49ly6a9dN3sfupSC+Hwii/1vJglfIBXzLN0SCPu41XPc+cBI5mGWYjlIeU6jikS5Ll4OKRD3p/Py2CVDY3sG1AGVaIMPifKI+/4of7Q+9s/77E27+Kr2wtSb2wJ5VWHfEY00TuFZMAlKod3RCiFDRiLpRTLrdWZUOSxUDaiJLzDXDbusBhhHMkWUHMiT37Cr0boZIGhkB0FRODeEE3dN5IppBgE9ywSOkKA9EzbpyiONWix4OxxLspq9lxhM0zXhfAZc4HHOQebKOhR6GjRSxOa7o6y7ABa2hbkMoPd2BA7YaUaPGdkPzfysdjprqnBoFJ6ugY9u0RRLImn7BtyHCtuigDLz0PFx0QIFtWsY5OCAQvvkvh1+hUIpbh4jEJCFS6nmD5jQQaohKSIEl/u2x1IeOTZSpkqtySRL3tu1vs9jb26vUHyOk6BuwCWkNcpIS+wNsVe24C1CjpvmmJpNf9qBgSwykKnuQcjD8ZBlXqXntIQvLKqpLQgAXvtK2hfsW6xQIn2uWXaBzalfWbF+cHptryoX4NtcFvSt+qU65UX7X15UUox262yvliu4QVcr2aIXv+4/GJC98Ffzhb8b5e9nFkl/oebcj+Ay/x/wWLx6fwPmwtJJi24twFAaY5xdiLHpLd6PclU+kWi+Q6722DYVWZ8aErTGwtsuM/+xexfZYW9IsJ2Jv3bzfeW/6EpeZ85/7ut95b/W4b/++p/GAt+l9cTC+o0dWCHUSZFphuxSKWee0LpgsnQI+UsKV30UA+ExPOmeasMzWIuW+LtdYFaisrc45OFKi2Hir1NUMyXkt0DxbHfGSglX7jtHiqLVLFL3uC3iwrYowId572hYtbOl2zHQJl7N831dtWgmN8n7xworrU1UGQ3+/HadCz3E0Dr6B8= \ No newline at end of file diff --git a/Part_3_Conditional_Logic/0009_heads_or_tails_game.png b/Part_3_Conditional_Logic/0009_heads_or_tails_game.png new file mode 100644 index 0000000000000000000000000000000000000000..b747d514a372900cdfe6f495a9670fe70102dd48 GIT binary patch literal 25957 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 Dy#!m| literal 0 HcmV?d00001 diff --git a/Part_3_Conditional_Logic/0009_heads_or_tails_game.py b/Part_3_Conditional_Logic/0009_heads_or_tails_game.py new file mode 100644 index 0000000..c0b9823 --- /dev/null +++ b/Part_3_Conditional_Logic/0009_heads_or_tails_game.py @@ -0,0 +1,23 @@ +from random import randint +from microbit import display, button_a, button_b + +display.scroll('Heads = A') +display.scroll('Tails = B') +random_number = randint(1, 2) + +while True: + if button_a.is_pressed(): + if random_number == 1: + display.scroll('You WON!') + break + else: + display.scroll('You Lost') + break + + if button_b.is_pressed(): + if random_number == 2: + display.scroll('You WON!') + break + else: + display.scroll('You Lost') + break \ No newline at end of file diff --git a/Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.drawio b/Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.drawio new file mode 100644 index 0000000..9bc282d --- /dev/null +++ b/Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.drawio @@ -0,0 +1 @@ +7Vvblto2FP0aHjML3+ER5tZJ06w2tJ3OU5ewNbaDbDmSGCBfH8mWb8gMTCbG3J6wjo9leW/tc3SjZ1xHy3sCkuAP7EHU0/vesmfc9HRd79s6/xGWVWbRNMvMLD4JPWkrDZPwO5TGvrTOQw/SmiPDGLEwqRtdHMfQZTUbIAQv6m7PGNXfmgAfKoaJC5BqfQw9FmTWge6U9t9g6Af5mzV7mN2JQO4sv4QGwMOLism47RnXBGOWXUXLa4gEejkujw+rR/RpZt9//It+A/+Mf//7878fssru3vJI8QkExuynq74f0C/eZPrx8ctoptlf777TyeyDIcmkbJUDBj2OnyxiwgLs4xig29I6Jngee1BU2+el0ucTxgk3atz4FTK2kp0BzBnmpoBFSN6Fy5D9Jx6/smTpqXLnZilrTgsrWcjaKRq3xusWUKQfxXPiwleQkCQzQHzIXvHTC+a5ZiCOICMr/hyBCLDwpd44IPuuX/iV/PALSdEb6JKNfAFonn8Lbyx/O4g9HPGLeB5NIblSSC0pEygvgpDBSQJSQBZc+HV6nnHMJHca/9axjwClkgbKCJ4VShLehSxKll4gYXD5EzypuMpaDFPjfSWtKQ9EEotFKWrNlC5BRdBGvyUuDOtYpMOBJ6vKQ6L4VL1XPpaW9iU5fUfJOV1KTlckN0kllynt/wTTkIU4PgfJOZ1Lzr5I7n2Sc3bNchv6xn405yiai0KXcFpG01BojyYQzKgYXIIIispirpG5K3RIT1CI+Yg7z3xGgw7zQWpVh2ZbOrRNhaAuhNl6fsrnK9vUYg06zVCawsZNSBMEVkWaEqicUaIqpmydZSrLUDh54rPgdeg5EqyOb4bhNUaYcEuMY6GU5xChNRNAoR/zosuR4/waY4FryKe9I3kjCj0vlVkToXXptUWMqdUDl9lAi9kQt/S2WHEGZxG3LHvHuOXYXcatvJm1uOVxw5ymEaun20ioY8oLti+uEgKpSPujnnGnEFePPvqarAKQCL9o6Yt1rqtnhBduAAi78qAbUh4XNyilLW1ow349ZA0bQla/QRyF8derY3ge6th1DOx0Ou+01EHwjuoYH786LPPg1GGro6yTVMdgR3VYwy7VYVsXNtRc2hkbaiY/bza6zRzqKLeaOTalDcTRPv7MYdj1OcchZA51LniS6hjuqI5sS7mztcULG3U8OmXDappzZBGKJiDOY9QDfW3gSyGC6eIvN4BIRJd4SrMgk7nyplVrU2toeif8Ngei/Zy5ppeSeEvtNZuIqxu8Tyrcmk17RHsOt7rSpTbsHriYEN5x3rki2h60dg1au28p0A5tFdn2Vv3VGelnrGB34kuajrG21mx0vahpqyH07GgxtIOjxXlrGOr9otM7bWFsmfVQb/VVhPcajxx1F/LsOr4aj5po2W/HV5dmLltfVsO4aK+sDAYKA/s4OlMcg+lVD8GUZ2K6Ogaz6w7Zu8/BpI+OCEk343OHBIcxo5Wa/xSGsvdodn3527SsagfY6q8b1lqHyVpQdp/iU96hc3XR7yF2CYxgfPC5TBusAWw2TFuajtS0dmBg4HSiT3m0Lb+uqHP70TbtwDR9JGfbGvb14JHIxjIOTjbqrtz5DTb0td1Ss+sh4OBy+omLZbg3Vnix/BtSlt/Lf3MZtz8A \ No newline at end of file diff --git a/Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.png b/Part_3_Conditional_Logic/p_0003_talking_number_guessing_game.png new file mode 100644 index 0000000000000000000000000000000000000000..6843de78e88e1a739a1be5b7ced1d8a6d515f664 GIT binary patch literal 32849 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 0: + display.show(room_number) + if button_a.was_pressed(): + if room_number == 5: + pass + else: + room_number += 1 + display.show(room_number) + if button_b.was_pressed(): + if room_number == 1: + pass + else: + room_number -= 1 + display.show(room_number) + if pin_logo.is_touched(): + if rooms[room_number] == 'caramel': + display.show(Image.SURPRISED) + say('You found the caramel chocolate! Great job!', speed=SPEED) + display.show(Image.HAPPY) + break + else: + display.show(Image.SURPRISED) + say('Sorry this room has {0} chocolate.'.format(rooms[room_number]), speed=SPEED) + display.show(Image.HAPPY) + sleep(1) + guesses -= 1 + +if guesses <= 0: + display.show(Image.SURPRISED) + say('Sorry about that. Please try again by click the reset button.', speed=SPEED) + display.show(Image.HAPPY) + sleep(1) +else: + display.show(Image.SURPRISED) + say('Click the reset button to play again.', speed=SPEED) + display.show(Image.HAPPY) + sleep(1) + diff --git a/Part_4_Lists_Tuples_Dictionaries_Loops/p_0004_talking_caramel_chocolate_adventure_game_ar b/Part_4_Lists_Tuples_Dictionaries_Loops/p_0004_talking_caramel_chocolate_adventure_game_ar new file mode 100644 index 0000000..abe53a3 --- /dev/null +++ b/Part_4_Lists_Tuples_Dictionaries_Loops/p_0004_talking_caramel_chocolate_adventure_game_ar @@ -0,0 +1,32 @@ +Talking Caramel Chocolate Adventure Game Application Requirements +----------------------------------------------------------------- +1. Define the purpose of the application. + a. Create a game where a computer randomly chooses a chocolate + from a pre-defined list and the player cycles through a series + of rooms and once they choose their selected room they press the + logo and if the chocolate in that room is caramel the player + wins otherwise gets another guess. If after that second + guess and still does not find the room the player loses. +2. Define the rules of the application. + a. Find the room with the caramel chocolate and press the logo. +3. Define the logical steps of the application. + a. Create a SPEED constant and init to 95. + b. Create a chocolates list and populate it with milk, dark, + caramel and mint strings. + c. Create an empty rooms dictionary. + d. Create a room_number variable and init to 1. + e. Create a guesses variable and init to 2. + f. Create a for loop to handle the choosing of the + winning room. + g. Create a talking sequence to intro the player to + the game. + h. Create a series of sequences with pauses to + explain or speak the rules to the player. + i. Create a while loop based on guesses. + j. Within the scope create a button_a, button_b and + pin_logo logic where button_a advances the rooms + and button_b decreases the room and add bounds and + the pin_logo locks in the player's choice and + create logic to win or lose and break out of + while loop. + k. Create logic based on win or lose to replay. diff --git a/Part_5_FUN_With_Numbers/main.py b/Part_5_FUN_With_Numbers/main.py deleted file mode 100644 index bcfec50..0000000 --- a/Part_5_FUN_With_Numbers/main.py +++ /dev/null @@ -1,11 +0,0 @@ -from microbit import * - -counter = 0 - -while True: - if button_a.was_pressed(): - counter = counter + 1 - display.scroll(str(counter)) - if button_b.was_pressed(): - counter = counter - 1 - display.scroll(str(counter)) \ No newline at end of file diff --git a/Part_31_Functions/0013_number_guessing_game_ar b/Part_5_Functions/0013_number_guessing_game_ar similarity index 100% rename from Part_31_Functions/0013_number_guessing_game_ar rename to Part_5_Functions/0013_number_guessing_game_ar diff --git a/Part_31_Functions/0013_number_guessing_game_repl.py b/Part_5_Functions/0013_number_guessing_game_repl.py similarity index 100% rename from Part_31_Functions/0013_number_guessing_game_repl.py rename to Part_5_Functions/0013_number_guessing_game_repl.py diff --git a/Part_31_Functions/0013_number_guessing_game_repl_WITH_LOGIC_ERRORS.py b/Part_5_Functions/0013_number_guessing_game_repl_WITH_LOGIC_ERRORS.py similarity index 100% rename from Part_31_Functions/0013_number_guessing_game_repl_WITH_LOGIC_ERRORS.py rename to Part_5_Functions/0013_number_guessing_game_repl_WITH_LOGIC_ERRORS.py diff --git a/Part_31_Functions/p_0005_wonka_chocolate_machine/data.py b/Part_5_Functions/p_0005_wonka_chocolate_machine/data.py similarity index 100% rename from Part_31_Functions/p_0005_wonka_chocolate_machine/data.py rename to Part_5_Functions/p_0005_wonka_chocolate_machine/data.py diff --git a/Part_31_Functions/p_0005_wonka_chocolate_machine/funcs.py b/Part_5_Functions/p_0005_wonka_chocolate_machine/funcs.py similarity index 99% rename from Part_31_Functions/p_0005_wonka_chocolate_machine/funcs.py rename to Part_5_Functions/p_0005_wonka_chocolate_machine/funcs.py index a72309c..9ff53ff 100644 --- a/Part_31_Functions/p_0005_wonka_chocolate_machine/funcs.py +++ b/Part_5_Functions/p_0005_wonka_chocolate_machine/funcs.py @@ -1,8 +1,10 @@ def has_raw_materials(f_raw_materials, d_raw_materials): """Check if there are enough raw materials in the machine + Params: f_raw_materials: dict d_raw_materials: dict + Returns: str or bool """ @@ -18,8 +20,10 @@ def has_raw_materials(f_raw_materials, d_raw_materials): def collect_money(f_max_value, f_quarters, f_dimes, f_nickels): """Collect money into the machine + Params: f_max_value: float + Returns: float or str """ @@ -37,9 +41,11 @@ def collect_money(f_max_value, f_quarters, f_dimes, f_nickels): def has_enough_money(f_money_collected, f_chocolate_price, f_total_money_collected): """Check to see if customer put in enough money into the machine + Params: f_money_collected: float f_chocolate_price: float + Returns: str, int """ @@ -54,10 +60,12 @@ def has_enough_money(f_money_collected, f_chocolate_price, f_total_money_collect def bake_chocolate_bar(f_chocolate_choice, f_raw_materials, d_raw_materials): """Bake chocolate bar from raw materials + Params: f_chocolate_choice: str f_raw_materials: dict d_raw_materials: dict + Returns: str """ @@ -69,9 +77,11 @@ def bake_chocolate_bar(f_chocolate_choice, f_raw_materials, d_raw_materials): def stats(d_raw_materials, f_total_money_collected): """ Show machine statistics + Params: d_raw_materials: dict f_money_collected: float + Returns: str """ @@ -87,3 +97,4 @@ def stats(d_raw_materials, f_total_money_collected): cm_stats += 'Reese\'s Pieces {0} tablespoons remaining\n'.format(d_raw_materials['Reese\'s Pieces']) cm_stats += 'Total Money Collected: ${0:.2f}\n'.format(f_total_money_collected) return cm_stats + diff --git a/Part_33_Unittest/p_0005_wonka_chocolate_machine/main.py b/Part_5_Functions/p_0005_wonka_chocolate_machine/main.py similarity index 99% rename from Part_33_Unittest/p_0005_wonka_chocolate_machine/main.py rename to Part_5_Functions/p_0005_wonka_chocolate_machine/main.py index 48b9844..bb95caf 100644 --- a/Part_33_Unittest/p_0005_wonka_chocolate_machine/main.py +++ b/Part_5_Functions/p_0005_wonka_chocolate_machine/main.py @@ -47,3 +47,4 @@ machine_active = False print('We are going down for maintenance...') + diff --git a/Part_31_Functions/p_0005_wonka_chocolate_machine_ar b/Part_5_Functions/p_0005_wonka_chocolate_machine_ar similarity index 100% rename from Part_31_Functions/p_0005_wonka_chocolate_machine_ar rename to Part_5_Functions/p_0005_wonka_chocolate_machine_ar diff --git a/Part_32_Classes/0007_escape_room/EscapeRoomPlayer.py b/Part_6_Classes/0014_escape_room/EscapeRoomPlayer.py similarity index 100% rename from Part_32_Classes/0007_escape_room/EscapeRoomPlayer.py rename to Part_6_Classes/0014_escape_room/EscapeRoomPlayer.py diff --git a/Part_32_Classes/0007_escape_room/FileManager.py b/Part_6_Classes/0014_escape_room/FileManager.py similarity index 100% rename from Part_32_Classes/0007_escape_room/FileManager.py rename to Part_6_Classes/0014_escape_room/FileManager.py diff --git a/Part_32_Classes/0007_escape_room/Game.py b/Part_6_Classes/0014_escape_room/Game.py similarity index 99% rename from Part_32_Classes/0007_escape_room/Game.py rename to Part_6_Classes/0014_escape_room/Game.py index a23e444..884a792 100644 --- a/Part_32_Classes/0007_escape_room/Game.py +++ b/Part_6_Classes/0014_escape_room/Game.py @@ -16,7 +16,7 @@ def generate_random_number(grid): grid: object Returns: - int, int + int """ x = randint(1, grid.available_width) return x diff --git a/Part_32_Classes/0007_escape_room/Grid.py b/Part_6_Classes/0014_escape_room/Grid.py similarity index 88% rename from Part_32_Classes/0007_escape_room/Grid.py rename to Part_6_Classes/0014_escape_room/Grid.py index cd86e17..96f1524 100644 --- a/Part_32_Classes/0007_escape_room/Grid.py +++ b/Part_6_Classes/0014_escape_room/Grid.py @@ -3,7 +3,7 @@ class Grid: Class to represent a generic grid """ - def __init__(self, led_height=0, led_width=0, led_on='*', led_off=' '): + def __init__(self, led_height=0, led_width=0, led_on='9', led_off='0'): """ Attrs: led_height: int @@ -18,16 +18,6 @@ def __init__(self, led_height=0, led_width=0, led_on='*', led_off=' '): self.available_height = led_height - 2 self.available_width = led_width - 2 - @staticmethod - def clear_screen(): - """ - Method to clear terminal - - Returns: - str - """ - return '\n' * 100 - def __create(self): """ Private method to create a grid diff --git a/Part_32_Classes/0007_escape_room/Player.py b/Part_6_Classes/0014_escape_room/Player.py similarity index 100% rename from Part_32_Classes/0007_escape_room/Player.py rename to Part_6_Classes/0014_escape_room/Player.py diff --git a/Part_32_Classes/0007_escape_room/data.py b/Part_6_Classes/0014_escape_room/data.py similarity index 84% rename from Part_32_Classes/0007_escape_room/data.py rename to Part_6_Classes/0014_escape_room/data.py index 13278b9..4dcbc8a 100644 --- a/Part_32_Classes/0007_escape_room/data.py +++ b/Part_6_Classes/0014_escape_room/data.py @@ -1,11 +1,11 @@ questions = { 'What year was the MicroBit educational foundation created?': - [ - '2016', - '2014', - '2017', - 0 - ], + [ + '2016', + '2014', + '2017', + 0 + ], 'What year was the first computer invented?': [ '1954', diff --git a/Part_6_Classes/0014_escape_room/main.py b/Part_6_Classes/0014_escape_room/main.py new file mode 100644 index 0000000..7544920 --- /dev/null +++ b/Part_6_Classes/0014_escape_room/main.py @@ -0,0 +1,89 @@ +from microbit import display, Image, button_a, button_b, pin_logo, pin2 +from Grid import Grid +from EscapeRoomPlayer import EscapeRoomPlayer +from data import questions +from FileManager import FileManager +from Game import Game +from speech import say +import music + +grid = Grid(5, 5) +player = EscapeRoomPlayer() +file_manager = FileManager() +game = Game() + +player_location = None +response = None +final_question = False +SPEED = 95 + +previous_player_location = player_location +update_grid = grid.update(player) + +while True: + # To ensure we do not generate a question if the player is hitting a wall + # or not entering a valid move + previous_player_location = player_location + display.show(Image(update_grid)) + while True: + if button_a.is_pressed(): + player_location = player.move_west(grid) + update_grid = grid.update(player) + break + elif button_b.is_pressed(): + player_location = player.move_east(grid) + update_grid = grid.update(player) + break + elif pin_logo.is_touched(): + player_location = player.move_north(grid) + update_grid = grid.update(player) + break + elif pin2.is_touched(): + player_location = player.move_south(grid) + update_grid = grid.update(player) + break + random_location = (x, y) = game.generate_random_numbers(grid) + if random_location == player_location and random_location != previous_player_location: + random_question, answer_1, answer_2, answer_3, correct_answer_index, correct_answer \ + = game.ask_random_question(questions) + display.show(Image.SURPRISED) + say(random_question, speed=SPEED) + say('Press the aay button for {0}.'.format(answer_1), speed=SPEED) + say('Press the logo for {0}.'.format(answer_2), speed=SPEED) + say('Press the bee button for {0}.'.format(answer_3), speed=SPEED) + display.show(Image.HAPPY) + while True: + if button_a.is_pressed(): + response = 1 + break + elif pin_logo.is_touched(): + response = 2 + break + elif button_b.is_pressed(): + response = 3 + break + if response == correct_answer_index + 1: + display.show(Image.SURPRISED) + say(game.correct_answer_response(), speed=SPEED) + inventory = player.get_inventory(file_manager) + player.inventory.append(inventory) + if 'Red Key' in player.inventory: + final_question = True + if 'Red Key' not in player.inventory and not final_question: + receive_red_key = game.generate_random_number(grid) + if receive_red_key == 2: + display.show(Image.SURPRISED) + say(player.pick_up_red_key(file_manager), speed=SPEED) + final_question = True + else: + display.show(Image.SURPRISED) + say(player.without_red_key(), speed=SPEED) + elif final_question: + display.show(Image.SURPRISED) + say(game.win(file_manager), speed=SPEED) + music.play(music.POWER_UP) + display.show(Image.ALL_CLOCKS, loop=False, delay=100) + break + else: + display.show(Image.SURPRISED) + say(game.incorrect_answer_response(correct_answer), speed=SPEED) diff --git a/Part_32_Classes/0007_escape_room_ar b/Part_6_Classes/0014_escape_room_ar similarity index 90% rename from Part_32_Classes/0007_escape_room_ar rename to Part_6_Classes/0014_escape_room_ar index d82e09d..ed17ecc 100644 --- a/Part_32_Classes/0007_escape_room_ar +++ b/Part_6_Classes/0014_escape_room_ar @@ -2,13 +2,13 @@ Escape Room Application Requirements ------------------------------------ 1. Define the purpose of the application. a. Create a game where we build an escape room style adventure game with - our python with questions as we are placed inside a mountain cave + our micro:bit with questions as we are placed inside a mountain cave and work our way through different places in the cave where we randomly stumble upon a question space and one of the questions spaces when answered correctly gives us a red key which we will need for the other randomly placed question. Once you answer the question which gives you the red key you can then answer the question that will let you out of the - cave or room to the outside world. The console will show an + cave or room to the outside world. The micro:bit display will show an outline of the cave and the player moving around a map. 2. Define the rules of the application. a. If the player answers a correct question and that question has the red key diff --git a/Part_32_Classes/class_person_example.py b/Part_6_Classes/class_person_example.py similarity index 100% rename from Part_32_Classes/class_person_example.py rename to Part_6_Classes/class_person_example.py diff --git a/Part_32_Classes/p_0006_wonka_chocolate_machine/ChocolateMachine.py b/Part_6_Classes/p_0006_wonka_chocolate_machine/ChocolateMachine.py similarity index 100% rename from Part_32_Classes/p_0006_wonka_chocolate_machine/ChocolateMachine.py rename to Part_6_Classes/p_0006_wonka_chocolate_machine/ChocolateMachine.py diff --git a/Part_32_Classes/p_0006_wonka_chocolate_machine/Machine.py b/Part_6_Classes/p_0006_wonka_chocolate_machine/Machine.py similarity index 100% rename from Part_32_Classes/p_0006_wonka_chocolate_machine/Machine.py rename to Part_6_Classes/p_0006_wonka_chocolate_machine/Machine.py diff --git a/Part_32_Classes/p_0006_wonka_chocolate_machine/data.py b/Part_6_Classes/p_0006_wonka_chocolate_machine/data.py similarity index 100% rename from Part_32_Classes/p_0006_wonka_chocolate_machine/data.py rename to Part_6_Classes/p_0006_wonka_chocolate_machine/data.py diff --git a/Part_32_Classes/p_0006_wonka_chocolate_machine/main.py b/Part_6_Classes/p_0006_wonka_chocolate_machine/main.py similarity index 100% rename from Part_32_Classes/p_0006_wonka_chocolate_machine/main.py rename to Part_6_Classes/p_0006_wonka_chocolate_machine/main.py diff --git a/Part_6_FUN_With_Words/main.py b/Part_6_FUN_With_Words/main.py deleted file mode 100644 index 6141bad..0000000 --- a/Part_6_FUN_With_Words/main.py +++ /dev/null @@ -1,6 +0,0 @@ -from microbit import * - -name = 'Kevin' - -while True: - display.scroll('Hi ' + name + '!') diff --git a/Part_7_FUN_With_Word_Lists/main.py b/Part_7_FUN_With_Word_Lists/main.py deleted file mode 100644 index 734306d..0000000 --- a/Part_7_FUN_With_Word_Lists/main.py +++ /dev/null @@ -1,12 +0,0 @@ -from microbit import * - -favorite_foods = ['pizza', 'ice cream', 'cookies'] - -while True: - display.scroll( - 'I love to eat ' + - favorite_foods[0] + ', ' + - favorite_foods[1] + ', ' + - 'and ' + - favorite_foods[2] + '!' - ) diff --git a/Part_33_Unittest/0013_number_guessing_game_repl/funcs.py b/Part_7_Unittest/0013_number_guessing_game_repl/funcs.py similarity index 100% rename from Part_33_Unittest/0013_number_guessing_game_repl/funcs.py rename to Part_7_Unittest/0013_number_guessing_game_repl/funcs.py diff --git a/Part_33_Unittest/0013_number_guessing_game_repl/main.py b/Part_7_Unittest/0013_number_guessing_game_repl/main.py similarity index 100% rename from Part_33_Unittest/0013_number_guessing_game_repl/main.py rename to Part_7_Unittest/0013_number_guessing_game_repl/main.py diff --git a/Part_33_Unittest/0013_number_guessing_game_repl/tests/test_funcs.py b/Part_7_Unittest/0013_number_guessing_game_repl/tests/test_funcs.py similarity index 100% rename from Part_33_Unittest/0013_number_guessing_game_repl/tests/test_funcs.py rename to Part_7_Unittest/0013_number_guessing_game_repl/tests/test_funcs.py diff --git a/Part_33_Unittest/0007_escape_room/EscapeRoomPlayer.py b/Part_7_Unittest/0014_escape_room/EscapeRoomPlayer.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/EscapeRoomPlayer.py rename to Part_7_Unittest/0014_escape_room/EscapeRoomPlayer.py diff --git a/Part_33_Unittest/0007_escape_room/FileManager.py b/Part_7_Unittest/0014_escape_room/FileManager.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/FileManager.py rename to Part_7_Unittest/0014_escape_room/FileManager.py diff --git a/Part_33_Unittest/0007_escape_room/Game.py b/Part_7_Unittest/0014_escape_room/Game.py similarity index 99% rename from Part_33_Unittest/0007_escape_room/Game.py rename to Part_7_Unittest/0014_escape_room/Game.py index a23e444..884a792 100644 --- a/Part_33_Unittest/0007_escape_room/Game.py +++ b/Part_7_Unittest/0014_escape_room/Game.py @@ -16,7 +16,7 @@ def generate_random_number(grid): grid: object Returns: - int, int + int """ x = randint(1, grid.available_width) return x diff --git a/Part_33_Unittest/0007_escape_room/Grid.py b/Part_7_Unittest/0014_escape_room/Grid.py similarity index 88% rename from Part_33_Unittest/0007_escape_room/Grid.py rename to Part_7_Unittest/0014_escape_room/Grid.py index cd86e17..96f1524 100644 --- a/Part_33_Unittest/0007_escape_room/Grid.py +++ b/Part_7_Unittest/0014_escape_room/Grid.py @@ -3,7 +3,7 @@ class Grid: Class to represent a generic grid """ - def __init__(self, led_height=0, led_width=0, led_on='*', led_off=' '): + def __init__(self, led_height=0, led_width=0, led_on='9', led_off='0'): """ Attrs: led_height: int @@ -18,16 +18,6 @@ def __init__(self, led_height=0, led_width=0, led_on='*', led_off=' '): self.available_height = led_height - 2 self.available_width = led_width - 2 - @staticmethod - def clear_screen(): - """ - Method to clear terminal - - Returns: - str - """ - return '\n' * 100 - def __create(self): """ Private method to create a grid diff --git a/Part_33_Unittest/0007_escape_room/Player.py b/Part_7_Unittest/0014_escape_room/Player.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/Player.py rename to Part_7_Unittest/0014_escape_room/Player.py diff --git a/Part_33_Unittest/0007_escape_room/data.py b/Part_7_Unittest/0014_escape_room/data.py similarity index 84% rename from Part_33_Unittest/0007_escape_room/data.py rename to Part_7_Unittest/0014_escape_room/data.py index 13278b9..4dcbc8a 100644 --- a/Part_33_Unittest/0007_escape_room/data.py +++ b/Part_7_Unittest/0014_escape_room/data.py @@ -1,11 +1,11 @@ questions = { 'What year was the MicroBit educational foundation created?': - [ - '2016', - '2014', - '2017', - 0 - ], + [ + '2016', + '2014', + '2017', + 0 + ], 'What year was the first computer invented?': [ '1954', diff --git a/Part_7_Unittest/0014_escape_room/main.py b/Part_7_Unittest/0014_escape_room/main.py new file mode 100644 index 0000000..7544920 --- /dev/null +++ b/Part_7_Unittest/0014_escape_room/main.py @@ -0,0 +1,89 @@ +from microbit import display, Image, button_a, button_b, pin_logo, pin2 +from Grid import Grid +from EscapeRoomPlayer import EscapeRoomPlayer +from data import questions +from FileManager import FileManager +from Game import Game +from speech import say +import music + +grid = Grid(5, 5) +player = EscapeRoomPlayer() +file_manager = FileManager() +game = Game() + +player_location = None +response = None +final_question = False +SPEED = 95 + +previous_player_location = player_location +update_grid = grid.update(player) + +while True: + # To ensure we do not generate a question if the player is hitting a wall + # or not entering a valid move + previous_player_location = player_location + display.show(Image(update_grid)) + while True: + if button_a.is_pressed(): + player_location = player.move_west(grid) + update_grid = grid.update(player) + break + elif button_b.is_pressed(): + player_location = player.move_east(grid) + update_grid = grid.update(player) + break + elif pin_logo.is_touched(): + player_location = player.move_north(grid) + update_grid = grid.update(player) + break + elif pin2.is_touched(): + player_location = player.move_south(grid) + update_grid = grid.update(player) + break + random_location = (x, y) = game.generate_random_numbers(grid) + if random_location == player_location and random_location != previous_player_location: + random_question, answer_1, answer_2, answer_3, correct_answer_index, correct_answer \ + = game.ask_random_question(questions) + display.show(Image.SURPRISED) + say(random_question, speed=SPEED) + say('Press the aay button for {0}.'.format(answer_1), speed=SPEED) + say('Press the logo for {0}.'.format(answer_2), speed=SPEED) + say('Press the bee button for {0}.'.format(answer_3), speed=SPEED) + display.show(Image.HAPPY) + while True: + if button_a.is_pressed(): + response = 1 + break + elif pin_logo.is_touched(): + response = 2 + break + elif button_b.is_pressed(): + response = 3 + break + if response == correct_answer_index + 1: + display.show(Image.SURPRISED) + say(game.correct_answer_response(), speed=SPEED) + inventory = player.get_inventory(file_manager) + player.inventory.append(inventory) + if 'Red Key' in player.inventory: + final_question = True + if 'Red Key' not in player.inventory and not final_question: + receive_red_key = game.generate_random_number(grid) + if receive_red_key == 2: + display.show(Image.SURPRISED) + say(player.pick_up_red_key(file_manager), speed=SPEED) + final_question = True + else: + display.show(Image.SURPRISED) + say(player.without_red_key(), speed=SPEED) + elif final_question: + display.show(Image.SURPRISED) + say(game.win(file_manager), speed=SPEED) + music.play(music.POWER_UP) + display.show(Image.ALL_CLOCKS, loop=False, delay=100) + break + else: + display.show(Image.SURPRISED) + say(game.incorrect_answer_response(correct_answer), speed=SPEED) diff --git a/Part_32_Classes/0007_escape_room/inventory b/Part_7_Unittest/0014_escape_room/tests/inventory similarity index 100% rename from Part_32_Classes/0007_escape_room/inventory rename to Part_7_Unittest/0014_escape_room/tests/inventory diff --git a/Part_33_Unittest/0007_escape_room/tests/test_EscapeRoomPlayer.py b/Part_7_Unittest/0014_escape_room/tests/test_EscapeRoomPlayer.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/tests/test_EscapeRoomPlayer.py rename to Part_7_Unittest/0014_escape_room/tests/test_EscapeRoomPlayer.py diff --git a/Part_33_Unittest/0007_escape_room/tests/test_FileManager.py b/Part_7_Unittest/0014_escape_room/tests/test_FileManager.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/tests/test_FileManager.py rename to Part_7_Unittest/0014_escape_room/tests/test_FileManager.py diff --git a/Part_33_Unittest/0007_escape_room/tests/test_Game.py b/Part_7_Unittest/0014_escape_room/tests/test_Game.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/tests/test_Game.py rename to Part_7_Unittest/0014_escape_room/tests/test_Game.py diff --git a/Part_33_Unittest/0007_escape_room/tests/test_Grid.py b/Part_7_Unittest/0014_escape_room/tests/test_Grid.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/tests/test_Grid.py rename to Part_7_Unittest/0014_escape_room/tests/test_Grid.py diff --git a/Part_33_Unittest/0007_escape_room/tests/test_Player.py b/Part_7_Unittest/0014_escape_room/tests/test_Player.py similarity index 100% rename from Part_33_Unittest/0007_escape_room/tests/test_Player.py rename to Part_7_Unittest/0014_escape_room/tests/test_Player.py diff --git a/Part_33_Unittest/p_0005_wonka_chocolate_machine/data.py b/Part_7_Unittest/p_0005_wonka_chocolate_machine/data.py similarity index 100% rename from Part_33_Unittest/p_0005_wonka_chocolate_machine/data.py rename to Part_7_Unittest/p_0005_wonka_chocolate_machine/data.py diff --git a/Part_33_Unittest/p_0005_wonka_chocolate_machine/funcs.py b/Part_7_Unittest/p_0005_wonka_chocolate_machine/funcs.py similarity index 100% rename from Part_33_Unittest/p_0005_wonka_chocolate_machine/funcs.py rename to Part_7_Unittest/p_0005_wonka_chocolate_machine/funcs.py diff --git a/Part_31_Functions/p_0005_wonka_chocolate_machine/main.py b/Part_7_Unittest/p_0005_wonka_chocolate_machine/main.py similarity index 100% rename from Part_31_Functions/p_0005_wonka_chocolate_machine/main.py rename to Part_7_Unittest/p_0005_wonka_chocolate_machine/main.py diff --git a/Part_33_Unittest/p_0005_wonka_chocolate_machine/tests/test_funcs.py b/Part_7_Unittest/p_0005_wonka_chocolate_machine/tests/test_funcs.py similarity index 100% rename from Part_33_Unittest/p_0005_wonka_chocolate_machine/tests/test_funcs.py rename to Part_7_Unittest/p_0005_wonka_chocolate_machine/tests/test_funcs.py diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/__init__.cpython-39.pyc b/Part_7_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/__init__.cpython-39.pyc similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/__init__.cpython-39.pyc rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/__init__.cpython-39.pyc diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/data.cpython-39.pyc b/Part_7_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/data.cpython-39.pyc similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/data.cpython-39.pyc rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/data/__pycache__/data.cpython-39.pyc diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/data/data.py b/Part_7_Unittest/p_0006_wonka_chocolate_machine/data/data.py similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/data/data.py rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/data/data.py diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/ChocolateMachine.py b/Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/ChocolateMachine.py similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/ChocolateMachine.py rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/ChocolateMachine.py diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/Machine.py b/Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/Machine.py similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/Machine.py rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/Machine.py diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/ChocolateMachine.cpython-39.pyc b/Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/ChocolateMachine.cpython-39.pyc similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/ChocolateMachine.cpython-39.pyc rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/ChocolateMachine.cpython-39.pyc diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/Machine.cpython-39.pyc b/Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/Machine.cpython-39.pyc similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/Machine.cpython-39.pyc rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/lib/__pycache__/Machine.cpython-39.pyc diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/main.py b/Part_7_Unittest/p_0006_wonka_chocolate_machine/main.py similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/main.py rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/main.py diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/tests/test_ChocolateMachine.py b/Part_7_Unittest/p_0006_wonka_chocolate_machine/tests/test_ChocolateMachine.py similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/tests/test_ChocolateMachine.py rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/tests/test_ChocolateMachine.py diff --git a/Part_33_Unittest/p_0006_wonka_chocolate_machine/tests/test_Machine.py b/Part_7_Unittest/p_0006_wonka_chocolate_machine/tests/test_Machine.py similarity index 100% rename from Part_33_Unittest/p_0006_wonka_chocolate_machine/tests/test_Machine.py rename to Part_7_Unittest/p_0006_wonka_chocolate_machine/tests/test_Machine.py diff --git a/Part_8_FUN_With_Music/main.py b/Part_8_FUN_With_Music/main.py deleted file mode 100644 index 9927e07..0000000 --- a/Part_8_FUN_With_Music/main.py +++ /dev/null @@ -1,3 +0,0 @@ -from music import * - -play(NYAN) \ No newline at end of file