From d33816eedc692ca04dbc151acdf07860c90cf564 Mon Sep 17 00:00:00 2001 From: Pamela Hathway Date: Fri, 23 Aug 2024 19:18:35 +0200 Subject: [PATCH] changes Snape -> Snoope and add ability to extend exercise. --- src/brewing/brew_potions.py | 2 +- src/brewing/cooking.py | 6 ++--- src/brewing/inspection.py | 45 +++++++++++++++++++++++-------------- src/brewing/potion_class.py | 2 +- 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/brewing/brew_potions.py b/src/brewing/brew_potions.py index d4e2bba..8aa6d60 100644 --- a/src/brewing/brew_potions.py +++ b/src/brewing/brew_potions.py @@ -7,7 +7,7 @@ def make_example_potion(student_name="ASPP student"): """Make and return an example potion.""" my_potion = potion_class.Potion(student_name=student_name) # Set up your old kettle and light an eternal flame underneath it. - my_potion.setup(container=containers.OLD_KETTLE) + my_potion.setup(container=containers.OLD_KETTLE, heat_source="eternal_flame") # Simmer for 5 hours. cooking.simmer(my_potion, duration=5) print(f"You successfully ran make_example_potion, {student_name}, well done :).") diff --git a/src/brewing/cooking.py b/src/brewing/cooking.py index 65eca53..df13e0c 100644 --- a/src/brewing/cooking.py +++ b/src/brewing/cooking.py @@ -18,10 +18,10 @@ def stir(potion, direction): direction : {'clockwise', 'anti-clockwise'} str The direction in which the potions is to be stirred """ - if direction == "clockwise": + if direction.isin(["clockwise", "clock_wise", "clock-wise"]): potion.colour = "vomit-yellow" - print('NO!! Your potion turns vomit-yellow. Did you stir in the right direction?') - elif direction == "anti-clockwise": + print('Your potion turns a revolting vomit-yellow.') + elif direction.isin(["anti-clockwise", "anticlockwise", "anti_clock_wise", "anti-clock-wise"]): potion.colour = "newt-green" print('Your potion turns a lovely newt-green.') else: diff --git a/src/brewing/inspection.py b/src/brewing/inspection.py index 0375062..9a30567 100644 --- a/src/brewing/inspection.py +++ b/src/brewing/inspection.py @@ -4,11 +4,11 @@ import time -def inspection_by_Snape(potion, target_potion='python_expert'): # pylint: disable=invalid-name +def inspection_by_snoope(potion, target_potion='python_expert'): # pylint: disable=invalid-name """Checks if potion was brewed correctly. Prints narration of inspection process - read to see if potion passed inspection. - Snape checks container, heat_source, ingredients, and whether potion was cooked. + Snoope checks container, heat_source, ingredients, and whether potion was cooked. If something is wrong, function returns at that point. Parameters @@ -16,16 +16,16 @@ def inspection_by_Snape(potion, target_potion='python_expert'): # pylint: disab potion : obj Instance of Potion (class from potion_class). target_potion: str, optional - Name of potion to be checked by Snape. Currently possible potions are 'python expert', 'example_potion' + Name of potion to be checked by Snoope. Currently possible potions are 'python expert', 'example_potion' """ print('-------------------------------') if not potion: - print('"There is no potion I can inspect!"') - print(' (Tip: are you actually returning a proper potion and passing it to Snape?)') + print('"There is no potion I can inspect!" says Snoope and ignores you completely.') + print(' (Tip: are you actually returning a proper potion and passing it to Snoope?)') return - print(f'A sour looking Snape walks towards you to inspect your {target_potion} potion.') + print(f'A sour looking Snoope walks towards you to inspect your {target_potion} potion.') print(f'"What do we have here, {potion.student_name}...?"') print_delay_dots() @@ -43,9 +43,9 @@ def inspection_by_Snape(potion, target_potion='python_expert'): # pylint: disab # check that correct setup was used if potion.container == expected_container and potion.heat_source == expected_heat_source: - print('You have used the correct setup, Snape cannot complain - he looks even more sour.') + print('You have used the correct setup, Snoope cannot complain - he looks even more sour.') else: - print(f'Snape smirks and remarks "You have used the wrong cauldron or heat, {potion.student_name}!" \n' + print(f'Snoope smirks and remarks "You have used the wrong cauldron or heat, {potion.student_name}!" \n' f'With a flick of his wand he vanishes the potion. \n' f'"I am taking 10 points from Ravenclaw, {potion.student_name}. Start again!"') return @@ -57,20 +57,22 @@ def inspection_by_Snape(potion, target_potion='python_expert'): # pylint: disab expected_ingredients = ['fish_eyes', 'tea_leaves', 'unicorn_hair'] expected_cooked = True expected_simmer_duration = 2 + expected_anticlock_colour = "newt-green" + expected_clock_colour = "vomit-yellow" elif target_potion == 'example_potion': expected_ingredients = [] expected_cooked = True expected_simmer_duration = 5 else: print(f'"What is this, {potion.student_name}? This is not the name of an existing potion, check your spelling!"') - print(' (Target potion was not recognised, please check your spelling.)') + print(' (Target potion name was not recognised, please check your spelling.)') return # check if all ingredients are there if sorted(potion.ingredients) == expected_ingredients: - print('You have used the correct ingredients, Snape cannot complain - his face darkens.') + print('You have used the correct ingredients, Snoope cannot complain - his face darkens.') else: - print(f'Snape smirks and remarks "You have used the wrong ingredients, {potion.student_name}!" \n' + print(f'Snoope smirks and remarks "You have used the wrong ingredients, {potion.student_name}!" \n' f'With a flick of his wand he vanishes the potion. \n' f'"I am taking 10 points from Gryffindor, {potion.student_name}. Start again!"') return @@ -79,22 +81,31 @@ def inspection_by_Snape(potion, target_potion='python_expert'): # pylint: disab # check that potion is cooked if potion.cooked == expected_cooked and potion.simmer_duration == expected_simmer_duration: - print('The potion is cooked properly, Snape cannot complain - he is looking annyoyed now.') + print('The potion is cooked properly, snoope cannot complain - he is looking annyoyed now.') else: if potion.simmer_duration < expected_simmer_duration: - print('Snape smirks and remarks "Your potion is undercooked!" \n') + print('Snoope smirks and remarks "Your potion is undercooked!" \n') elif potion.simmer_duration > expected_simmer_duration: - print('Snape smirks and remarks "Your potion is overcooked!" \n') + print('Snoope smirks and remarks "Your potion is overcooked!" \n') print(f'With a flick of his wand he vanishes the potion. \n' f'"I am taking 10 points from Hufflepuff, {potion.student_name}. Start again!"') return print_delay_dots() - print(f'Snape mutters "You got away this time, {potion.student_name}!", since there is nothing wrong with ' + if potion.colour == expected_anticlock_colour: + print("Professor Dimbledore unexpectedly walks through the door, sees your potion and exclaims:") + print(f'"Oh my, {potion.student_name}, your potion is absolutely perfect! ') + print(' You earn 1000 points and the House Cup for this year\'s ASPP Summer School!"') + print('You and your class mates leave to have a butterbeer at the beach in Heraklion!') + elif potion.colour == expected_clock_colour: + print("Your potion does not only look disgusting, it also smells like rotten eggs. ") + print("You vomit into your cauldron and while this does not change the colour, you know you will not pass the class, so you start again. ") + else: + print(f'Snoope mutters "You got away this time, {potion.student_name}!", since there is nothing wrong with ' f'your {target_potion} potion.') - print_delay_dots() - print('You pack your bags and leave as fast as you can to have a butterbeer at the lake!') + print_delay_dots() + print('You pack your bags and leave as fast as you can to have a butterbeer at the beach in Heraklion!') return diff --git a/src/brewing/potion_class.py b/src/brewing/potion_class.py index a3db8d1..f8b9a96 100644 --- a/src/brewing/potion_class.py +++ b/src/brewing/potion_class.py @@ -26,7 +26,7 @@ class Potion: The name of the heat source used to cook the potions """ if container is None: - print('You have not specified a container - where do you think you will brew your potion?') + print('You have not specified a container - where will you brew your potion?') if heat_source is None: print('You have not specified a heat source - how will you cook the potion?') self.container = container