Question: Part 1 : Implementation You have several flasks, each with a capacity limit of 4 units. Alongside, you possess a collection of chemicals, where each

Part 1: Implementation
You have several flasks, each with a capacity limit of 4 units. Alongside, you possess a collection of chemicals, where each chemical type is available in quantities of 3 units. The file chemicals.txt is read and chemicals are queued into a bounded queue. From that bounded queue, the chemicals are distributed into flasks. Each flask should be implemented as a bounded stack. The first line of the file indicates the number of flasks and the number of chemicals respectively, separated by a space. After the first line, the text file contains two types of lines:
1: Name of the chemical. For example AA or BB or CC. Each chemical should be enqueued into a bounded queue.
2: F. This means to dequeue x chemicals from the queue, and add them to flask y one at a time.
Here is a sample text file to demonstrate.
32
BB
AA
BB
BB
AA
2F1
AA
AA
4F3For your assignment, you may use this text file for 4 flasks 3 chemicals and this text file for 8 flasks 6 chemicals.
You must use a bounded queue of size 4 to store the chemical once you have read it from the file. You must check if the queue is full when adding chemicals. If it is full and the text file tells you to add another chemical, discard that chemical and move on to the next line. For the input file given above your bounded queue should look like this:Bounded queue after each line
[BB]
[BB, AA]
[BB, AA, BB]
[BB, AA, BB, BB]
[BB, AA, BB, BB](Bounded queue is full, so AA is discarded)
[BB, BB](Dequeue 2 chemicals and add to flask 1)
[BB, BB, AA, AA]
[](Dequeue 4 chemicals and add to flask 3)After reading the file, your flasks should now each contain 0-4 mixed chemicals and should look like this:
|||||AA|
|||||AA|
|AA||||BB|
|BB||||BB|
+--++--++--+
123
Take 2 inputs from the user. The user can enter an int from 1 to the number of flasks for the source and destination flasks, or can enter 'exit' for either at any time to terminate the program. If the user does not enter an int from 1 to the number of flasks or exit, print the error message Invalid input. Try again. If the source flask is empty or sealed, print the error message Cannot pour from that flask. Try again. If your destination flask is full or sealed, print the message Cannot pour into that flask. Try again. Lastly, if the user tries to pour into the same flask theyre pouring out of, print the error message Cannot pour into the same flask. Try again. If all inputs are correct, then the topmost chemical from the source flask will be removed from the source flask, and added to the top of the destination flask. The flask seals after it contains only three of the same chemicals. Flask 1 below should seal, flask 2 should not. Flask two will seal once the top chemical (BB) is removed.Part 2: Incorporating ANSI escape commands
In this phase of the implementation, you will be implementing ANSI escape commands.
First, when you start your program, clear the screen. The first line should say Magical Flask Game. The third line should say Select Source Flask: The fourth line should say Select Destination Flask: Starting from the sixth line the initial status of the flasks after the initial random distribution of the chemicals should be shown.
We will change how the inputs are displayed, this will be similar to Lab 6. The prompts below should be displayed on lines 3 and 4 respectively. The inputs should be taken one space after the prompt for lines 3 and 4. For any of these lines, if the user gives an invalid input, the input should be cleared and the input should be taken repeatedly until the user gives a valid input. Your cursor should not move to the next line until valid input has been given. For each invalid input, print the error message Invalid Input. Try Again on line 5, and clear the error message once valid input has been entered.Lastly, add some colour to your game by adding a coloured background to the chemical units. The background colours should be as follows:
Chemical A: Red
Chemical B: Blue
Chemical C: Green
Chemical D: Orange
Chemical E: Yellow
Chemical F: MagentaYou are going to submit 3 Python files: bstack.py, bqueue.py, and assignment3.py
 Part 1: Implementation You have several flasks, each with a capacity

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!