Reference no: EM131939197
Building IT Systems Assignment Part A: Cityscapes
Motivation - One of the most basic functions of any IT system is to process a given data set to produce some form of human-readable output. This assignment requires you to produce a visual image by following instructions stored in a list. It tests your abilities to:
- Process lists of data values;
- Design a solution to a highly-repetitive computational problem;
- Display information in a visual form; and
- Produce maintainable, reusable code.
In particular, because this task is highly-repetitive it would be extremely tedious to solve it in a "brute-force" manner using lots of duplicated code. Instead you will need to think carefully about how to reuse parts of your solution, via well-planned function definitions and the use of iterative code, to make your own workload lighter and the resulting program more concise and easier to understand and maintain.
Goal - Working at QUT's inner-city Gardens Point campus gives us a good view of Brisbane's cityscape, consisting of numerous high-rise buildings in many different styles and of many different heights. In this assignment you are required to use Python's Turtle graphics module to draw such a cityscape. To do so you must follow a set of instructions, in the form of a Python list, which specify where each building is to be placed, the specific style of the building, and the number of floors. Most importantly, this "city plan" will be generated randomly, so your solution must be sufficiently general that it can work correctly for any possible plan in this format.
Requirements - To complete this part of the assignment you are required to extend the provided cityscapes.py Python file by completing function build_city so that it can draw buildings at the sites and heights specified by the data sets generated by the random_plan function.
Your build_city function must work correctly for any values returned by the random_plan function.
Your submitted solution will consist of a single Python 3 file, and must satisfy the following criteria. Percentage marks available are as shown.
1. Drawing four entirely distinct building styles - Your program must be able to draw four distinct styles of building, each consisting of multiple floors and a roof structure, such that each building is clearly distinct in all elements from the other styles of building. Each floor and roof structure must be of a reasonable degree of complexity, involving multiple Turtle shapes. It must be easy to distinguish each floor from those above and/or below it, so that the number of floors in any particular building can be counted. Similarly, the roof structures must be clearly distinct from the floors below. Also, the buildings must be made sufficiently distinct, either by drawing borders and/or varying their colours, so that they can be distinguished from one another even when they overlap on the canvas.
Beyond these requirements you are free to add other variations to your building designs, such as varying the width of the floors, making the ground floor different from the others, adding different features for different floors, etc.
2. Positioning buildings - Your code must be capable of drawing each of the four styles of building at any of the marked building sites, as dictated by the data set provided to function build_city. The buildings must be centred precisely on the specified coordinates. The drawings of the buildings must preserve their integrity no matter where they are drawn, with no spurious additional or missing lines. Your solution for relocating the buildings must work correctly for any values returned by the random_plan function.
3. Resizing buildings - Your code must be capable of drawing each of the four building styles at any height, as specified by the number of floors in the data set provided to function build_city. The correct number of floors must be drawn and always be topped by the appropriate roof structure. The individual parts of the building must preserve their integrity no matter how tall or short it is, with no spurious additional or missing lines. Your solution for resizing the buildings must work correctly for any values returned by the random_plan function.
4. Code quality and presentation - Your program code, for both Parts A and B of the assignment, must be presented in a professional manner. See the coding guidelines in the IFB104 Code Presentation Guide (on Blackboard under Assessment) for suggestions on how to achieve this. In particular, given the obscure and repetitive nature of the code needed to draw complex images using Turtle graphics, each significant code segment must be clearly commented to say what it does, e.g., "Draw door", "Draw ghost's head", etc. Similarly, the names of your functions and variables should be indicative of their purpose, not just "i", "j", etc. Also, you must use function definitions and loops to avoid unnecessary duplication of similar or identical code segments.
You must complete the assignment using basic Turtle graphics and maths functions only. You may not import any additional modules or files into your program other than those already included in the given cityscapes.py template. In particular, you may not import any image files for use in creating your drawing.
Finally, you are not required to copy the example shown in this document. Instead you are strongly encouraged to be creative in the design of your buildings. Surprise us!
Attachment:- Assignment Files.rar