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
4F3
For 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:
here is two txt files
4f3c.txt
86
BB
BB
BB
AA
AA
4F5
AA
AA
CC
CC
BB
4F6
DD
EE
EE
DD
3F7
EE
CC
FF
3F8
FF
DD
3F4
FF
1F3
8f6c.txt
86
BB
BB
BB
AA
AA
4F5
AA
AA
CC
CC
BB
4F6
DD
EE
EE
DD
3F7
EE
CC
FF
3F8
FF
DD
3F4
FF
1F3
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.After taking input, move the chemical as specified by the user, then display your flasks. The flasks should be displayed with at most 4 in one line. If there are more than 4 flasks, the remaining should be displayed in the next row of flasks. There should be 2 spaces between each flask, and the number of the flask should be underneath the second dash of the flask. Should you need 2+ rows to display all the flasks, the rows should be separated by 1 line of space. This is what your entire display with 8 flasks should look like.
Magical Flask Game
Select source flask:
Select destination flask:
||||||||
||||||||
||||||||
||||||||
+--++--++--++--+
1234
On each turn, ask the user to enter the source and destination flask numbers. Make the changes to the flasks based on the game rules and display the flasks at the end. Display sealed flasks as such. Continue taking input and displaying the flasks until the game ends. The game ends when the u
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.
Assignment Deliverables
You 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!