首页 > > 详细

辅导 FIT9136 Task 1 - Robbie the Map Reader讲解 留学生SQL 程序

Task 1 - Robbie the Map Reader

Background

Robbie, our dear robot, was assigned a mission to explore Mars. He is very excited about this mission.

His first task is to explore the map of Mars. For simplicity, the map of Mars is represented by a 2D grid of n_rows rows and n_cols columns. A location on the map at row Y and column X is denoted by a pair (Y,X). This grid's origin location (0, 0) is the top left corner, with (n_rows-1, n_cols-1) being the bottom right corner.

Robbie was given a file geo_features.txt containing the size of the map and its geological features. This file employs comma-separated values and has the following format:

· The first line contains two (2) integer numbers for n_rows and n_cols, respectively.

· Each of the remaining lines of the file contains information about a geological feature, including:

o Two integers represent the location of this geological feature.

o A string (in lowercase) represents the type of this geological feature. There are 3 types: mountain, lake, or crater.

o A string (in lowercase) represents the name of this geological feature.

o An integer represents:

§ the mountain height if this is a mountain.

§ the depth of the lake if this is a lake.

§ the perimeter of the crater if this is a crater.

An example of geo_features.txt file:

4,5

1,1,mountain,olympus mons,21

2,4,lake,eridania,10

3,2,crater,huygens,45

Your tasks

You will write the code in the following files to assist Robbie's mission.

# geo_features.py

The geological_features.py module provides the base class and subclasses for geological features. The GeoFeature class will be the overarching abstract base class for all geological features. This class will have child classes Mountain, Lake, and Crater.

# task1.py

The task1.py module provides user interaction with Robbie.

If this module has "__main__" as it's __name__ value, it should load geo_features.txt before displaying a prompt > (greater sign and a whitespace) for user input.

· The user can input show map to show the map. The map is represented by letters, where a . showing a location without a geological feature, m for a mountain, l for a lake, and c for a crater (see example 1).

· The user can input info  where  and  are integers corresponding to a location (Y,X) that Robbie wants to inspect. If a geological feature exists at this location, its details will be displayed. Otherwise, a message no information found will be shown (see example 2).

· The user can input quit. The program should print goodbye and finish running normally.

You can assume that  and  correspond to a valid location on the map.

You can assume that all user inputs are valid.

You are allowed to modify the import statements in the scaffold, but you are not allowed to import any modules which were not originally imported in the scaffold.

Examples

Example 1

> show map

.....

.m...

....l

..c..

> quit

goodbye

Example 2

> info 1 1

mountain olympus mons, height 21

> info 2 4

lake eridania, depth 10

> info 3 2

crater huygens, perimeter 45

> info 2 2

no information found

> quit

goodbye

Task1

Geo_features.txt :

4,5

1,1,mountain,olympus mons,21

2,4,lake,eridania,10

3,2,crater,huygens,45

Task1.py:

import geo_features

if __name__ == "__main__":

pass

Geo_features.py :

from abc import ABC, abstractmethod

from dataclasses import dataclass

@dataclass

class Location:

Y: int = 0

X: int = 0

def __str__(self):

return f"({self.Y},{self.X})"

@dataclass

class Size:

height: int = 0

width: int = 0

class GeoFeature(ABC):

pass

class Mountain(GeoFeature):

pass

class Lake(GeoFeature):

pass

class Crater(GeoFeature):

pass



联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!