辅导案例-COMP 2160-Assignment 2

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
COMP 2160 – Assignment 2
Programming practices
Due October 30th, 2020 at 11:59pm
• Description
• Objectives
• Implementation Requirements
• Notes
• Submitting your assignment
• Evaluation
Objectives
• Applying the principles of Design by Contract.
Description
In this assignment you will write a program that
implements Conway's Game of Life. You will be expected to
apply the principles of Design by Contract to your code.
The rules for the Game of Life are simple. The universe
consists of a two-dimensional matrix of cells with each cell
being alive or dead. For each generation every cell determines
its next phase of life as follows:
• If the cell is alive:
1. it dies if it has 0, 1, 4 or more living neighbours
(starvation), or
2. it lives if it has 2 or 3 living neighbours (balance).
• If the cell is dead:
1. it springs to life if it has exactly 3 neighbours
(procreation).
A cycle occurs as soon as the state of the universe of the latest
generation is the same as a previous generation. You should
be able to see that once this occurs the Game of Life will
repeat the intermediate generations forever.
Implementation Requirements
All of the following conditions must be met by your solution.
• Your program must read the initial state from standard
input (redirecting files on the command line is the way to
go!). Here is a sample input file to use for testing. You
will be expected to adequately test your program -- I will
not be providing the files used by your marker. All input
will conform to the following format:
o The input will consist of starting universes for
multiple games. Play each game completely, in the
order they appear in the file.
o The first line of the game starts with an asterisk and
contains the game title.
o The second line of the game contains two numbers,
separated by a space, which indicate the number of
rows and columns for the 2-D matrix.
o Then there is one line for each row in the matrix:
▪ A blank character represents a dead cell.
▪ An 'X' represents an alive cell.
o The next game starts on the next line, until EOF.
o There are no errors in the input file format.
• For each game, your program will first print the game
title as read from the file. Print the starting universe as
read in. Then, after each generation is calculated your
program will print the current state of the universe. All
printing goes to standard output, and each universe must
be preceded by a label indicating the generation number
(where the initial state is generation 0). Here is
a sample of the output expected. You must include a
border, use '.' for dead cells and '*' for alive cells.
• Each game will run for 250 generations or until a cycle is
detected, whichever comes first. If the game ends
because of a cycle, print the numbers of the two
generations that were duplicated.
• Your program must include appropriate pre and post
conditions.
• Printing all generations may be great for debugging
purposes (and should prove mesmerizing) but the release
version should only print the initial universe, and the last
10 (or less) generations. When your program is compiled
with -DNDEBUG, the behaviour must change from
printing all generations to only printing the last 10. The
sample output linked above is run with -DNDEBUG.
Notes
The following should help point you in the right direction:
• Read the entire assignment document before starting.
• DO NOT leave this assignment until the last minute.
Otherwise, you will NOT get it done on time.
• Store the universe in a two-dimensional array, but be
careful that your program avoids subscripting your array
"out of bounds". Not checking for array boundaries may
lead to your program crashing, or worse, giving the
wrong results. Here is a document detailing what you
need to know about using two-dimensional arrays.
• You will need to store all previous generations in order to
identify a cycle. To do this, consider using a struct to
represent a generation. Then, you can employ an array of
objects to track your universe's history.
• You may assume file input lines are at most 80
characters, and a universe is at most 60x60 cells.
• Your program must run correctly both with assertions
enabled and disabled (when compiled with and without
the -DNDEBUG option).
• Please be sure to follow the programming standards; not
doing so will result in a loss of marks.
• Remember to complete the Honesty Declaration Checklist
(you will not receive scores for your assignments until the
checklist is completed).
• All submitted assignments will be scanned with
automated software to monitor for academic integrity
violations.
• Your assignment code must be handed in electronically.
See the Submitting your assignment section below for
more information.
• Late assignments are not accepted. The due date is
enforced electronically.


欢迎咨询51作业君
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468