Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write a C++ program Please follow the requirements ***When declaring variables, array names, use a meaningful name; don't just use x, y, a, b, etc.

Write a C++ program

Please follow the requirements

***When declaring variables, array names, use a meaningful name; don't just use x, y, a, b, etc. Don't just use variables with single character. (-30 points)

***Declare all the variables inside of function(s) except constant variables.

***Declare all the arrays in the main() function.

***Match the output below

This is part 3 of game of life

1. Change the size of the arrays:

const int MAX_ROW = 40; const int MAX_COL = 80;

***Make sure that only global variables you have in your program are Max_ROW and MAX_COL. Move any global variables you declared to a function or functions.

***Make sure to update setNextGenArray(). Use the variable names, not 40 or 80.

***For testing, I will be changing the array size. Your program should work by only modifying the array size.

2. Use two-dimensional arrays (tempArray, currentArray) of type char, instead of type int.

3. Choose a character for live cells, and a character for dead cells.

4. When you start your program, it should display only dead cells.

5. Modify the menu to include the followings (you may change the menu and descriptions, but must contain all the following options):

Initial - 'I' to load the 'U' pattern.

Play - 'P' to play the game.

Stop - 'S' to stop the game.

Clear - 'C' to set the arrays to the dead cells.

Quit - 'Q' to exit the program

1) pattern1 name - '1' to load the pattern1.txt file to the screen. (Replace pattern1 name with an actual pattern name you have, ex: 1) spaceship ). The location of the loaded pattern should be randomized.

2) pattern2 name - '2' to load the pattern2.txt file to the screen. (Replace pattern2 name with actual pattern name you have, ex: 2) snake ). The location of the loaded pattern should be randomized.

3) pattern3 name - '3' to load the pattern3.txt file to the screen. (Replace pattern3 name with actual pattern name you have, ex: 3) phython ). The location of the loaded pattern should be randomized.

Custom - 'T' to create a pattern from the user's input (collect row and column numbers) and set each cell to a live cell.

Save - 'A' to save the current live cell pattern of the currentArray to a file; save the row and column numbers of the live cells. (You may allow the user to type a file name.)

Load - 'L' to load a saved file. (You may allow the user to type the file name the user wish to load.)

***Allow the user to type uppercase or lowercase characters.

6. Add three more patterns except the 'U' pattern. See the file below (do not use block and tub), or you may create your own patterns. Present the different patterns (at least 3 using files - pattern1.txt, pattern2.txt, pattern3.txt. Select the patterns that change.) to the user in the menu (see 5), then allow the user to load those files; create a function to access each file (pass filename as a parameter to the function). Each file contains the row and column numbers of live cells.

7. Define variables and functions as necessary.

This is my part 2 code, you just need to add more code to it

#include #include #include #include #include using namespace std; const int MAX_ROW = 25; const int MAX_COL = 60; const int PATTERN_HEIGHT = 6; const int PATTERN_WIDTH = 7; void displayMenu(); void displayArray(const int array[MAX_ROW][MAX_COL]); void copyArray(const int fromArray[MAX_ROW][MAX_COL], int toArray[MAX_ROW][MAX_COL]); void setZeroArray(int array[MAX_ROW][MAX_COL]); void setInitialPatternArray(int array[MAX_ROW][MAX_COL]); void setNextGenArray(const int fromArray[MAX_ROW][MAX_COL], int toArray[MAX_ROW][MAX_COL]); int main() { char option; int start = 0; int currentArray[MAX_ROW][MAX_COL]; int tempArray[MAX_ROW][MAX_COL]; srand(time(NULL)); do { setZeroArray(tempArray); setInitialPatternArray(tempArray); copyArray(tempArray, currentArray); displayArray(currentArray); while(true) { system("cls"); displayMenu(); displayArray(currentArray); Sleep(1000); if(kbhit()) { option = getch(); if(option == 'p'){ start = 1; } if(option == 'q'){ break; } } if(start == 1) { setNextGenArray(currentArray, tempArray); copyArray(tempArray, currentArray); } } }while(option != 'q'); return 0; } void displayMenu() { cout << "[P]lay - Press 'P' to play. " "[Q]uit - Press 'Q' to exit. " " "; } void displayArray(const int array[MAX_ROW][MAX_COL]) { for(int coordX = 0; coordX < MAX_ROW; coordX++) { for(int coordY = 0; coordY < MAX_COL; coordY++) { cout << array[coordX][coordY]; } cout << " "; } } void copyArray(const int fromArray[MAX_ROW][MAX_COL], int toArray[MAX_ROW][MAX_COL]) { for(int coordX = 0; coordX < MAX_ROW; coordX++) { for(int coordY = 0; coordY < MAX_COL; coordY++) { toArray[coordX][coordY] = fromArray[coordX][coordY]; } } } void setZeroArray(int array[MAX_ROW][MAX_COL]) { for(int coordX = 0; coordX < MAX_ROW; coordX++) { for(int coordY = 0; coordY < MAX_COL; coordY++) { array[coordX][coordY] = 0; } } } void setInitialPatternArray(int array[MAX_ROW][MAX_COL]) { int startRow = rand() % (MAX_ROW - PATTERN_HEIGHT); int startCol = rand() % (MAX_COL - PATTERN_WIDTH); for(int len = 0; len < PATTERN_HEIGHT; len++) { array[startRow + len][startCol] = 1; array[startRow + len][startCol + (PATTERN_WIDTH - 1)] = 1; } for(int len = 0; len < PATTERN_WIDTH; len++) { array[startRow + (PATTERN_HEIGHT - 1)][startCol + len] = 1; } } void setNextGenArray(const int fromArray[MAX_ROW][MAX_COL], int toArray[MAX_ROW][MAX_COL]) { for(int coordX = 0; coordX < MAX_ROW; coordX++) { for(int coordY = 0; coordY < MAX_COL; coordY++) { int alive = 0; if((coordX == 0) && (coordY == 0)) { if(fromArray[0][1] == 1) alive++; if(fromArray[1][1] == 1) alive++; if(fromArray[1][0] == 1) alive++; } else if((coordX == 0) && (coordY == (MAX_COL - 1))) { if(fromArray[0][MAX_COL - 2] == 1) alive++; if(fromArray[1][MAX_COL - 2] == 1) alive++; if(fromArray[1][MAX_COL - 1] == 1) alive++; } else if((coordX == (MAX_ROW - 1)) && (coordY == 0)) { if(fromArray[MAX_ROW - 1][1] == 1) alive++; if(fromArray[MAX_ROW - 2][1] == 1) alive++; if(fromArray[MAX_ROW - 2][0] == 1) alive++; } else if((coordX == (MAX_ROW - 1)) && (coordY == (MAX_COL - 1))) { if(fromArray[MAX_ROW - 1][MAX_COL - 2] == 1) alive++; if(fromArray[MAX_ROW - 2][MAX_COL - 2] == 1) alive++; if(fromArray[MAX_ROW - 2][MAX_COL - 1] == 1) alive++; } else if(coordX == 0) { if(fromArray[0][coordY - 1] == 1) alive++; if(fromArray[1][coordY - 1] == 1) alive++; if(fromArray[1][coordY] == 1) alive++; if(fromArray[1][coordY + 1] == 1) alive++; if(fromArray[0][coordY + 1] == 1) alive++; } else if(coordX == (MAX_ROW - 1)) { if(fromArray[MAX_ROW - 1][coordY - 1] == 1) alive++; if(fromArray[MAX_ROW - 2][coordY - 1] == 1) alive++; if(fromArray[MAX_ROW - 2][coordY] == 1) alive++; if(fromArray[MAX_ROW - 2][coordY + 1] == 1) alive++; if(fromArray[MAX_ROW - 1][coordY + 1] == 1) alive++; } else if(coordY == 0) { if(fromArray[coordX - 1][0] == 1) alive++; if(fromArray[coordX - 1][1] == 1) alive++; if(fromArray[coordX][1] == 1) alive++; if(fromArray[coordX + 1][1] == 1) alive++; if(fromArray[coordX + 1][0] == 1) alive++; } else if(coordY == (MAX_COL - 1)) { if(fromArray[coordX - 1][MAX_COL - 1] == 1) alive++; if(fromArray[coordX - 1][MAX_COL - 2] == 1) alive++; if(fromArray[coordX][MAX_COL - 2] == 1) alive++; if(fromArray[coordX + 1][MAX_COL - 2] == 1) alive++; if(fromArray[coordX + 1][MAX_COL - 1] == 1) alive++; } else { if(fromArray[coordX - 1][coordY - 1] == 1) alive++; if(fromArray[coordX - 1][coordY] == 1) alive++; if(fromArray[coordX - 1][coordY + 1] == 1) alive++; if(fromArray[coordX][coordY + 1] == 1) alive++; if(fromArray[coordX + 1][coordY + 1] == 1) alive++; if(fromArray[coordX + 1][coordY] == 1) alive++; if(fromArray[coordX + 1][coordY - 1] == 1) alive++; if(fromArray[coordX][coordY - 1] == 1) alive++; } if(fromArray[coordX][coordY] == 1) { if((alive == 2) || (alive == 3)) { toArray[coordX][coordY] = 1; } else { toArray[coordX][coordY] = 0; } } else { if(alive == 3) { toArray[coordX][coordY] = 1; } else { toArray[coordX][coordY] = 0; } } } } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Big Data And Hadoop Fundamentals Tools And Techniques For Data Driven Success

Authors: Mayank Bhushan

2nd Edition

9355516665, 978-9355516664

More Books

Students also viewed these Databases questions

Question

fscanf retums a special value EOF that stands for...

Answered: 1 week ago