//main.cpp
#include<iostream>
#include<string>
#include"Life.h"
using namespace std;
void main() {
cout << "**********************************One-Dimensional Life Game**************************************" << endl;
cout << "please enter the point you want it to live at the beginning(press -1 to end)" << endl;
cout << "Appendex:the range is 1-30" << endl;
Life example;
example.Initialized();
example.Print();
char key = 'y';
bool flag = 1;
while(key!='n'&&key!='N') {
if(flag) cout << "Do you want to continue?(enter \"y\" to continue)" << endl;
else cout << "Respond with y or n" << endl;
cin >> key;
if (key == 'y' ||key== 'Y') {
example.UpDate();
example.Print();
}
else flag = 0;
}
}
//Life.h
#pragma once
#include<iostream>
using namespace std;
const int Max = 30;
class Life
{
public:
Life() {
for (int i = 0; i < Max + 4; i++)
arr[i] = 0;
};
void Print();
void UpDate();
void Initialized();
private:
int neighbour_count(int);
int arr[Max + 4];
};
//Life.cpp
#include"Life.h"
#include<iostream>
#include<string>
using namespace std;
void Life::Initialized() {
int k;
cin >> k;
while (k != -1) {
arr[k+1] = 1;
cin >> k;
}
}
void Life::Print() {
system("cls");
for (int i =2; i <= Max+1; i++) {
if (arr[i] == 1)cout << '*';
else cout << '-';
}
cout << endl;
}
void Life::UpDate() {
int new_arr[Max + 4];
for (int i = 0; i < Max + 4; i++)
new_arr[i]=0;
for (int i = 2; i <= Max+1; i++)
{
// cout << neighbour_count(i)<<' ';
switch (neighbour_count(i))
{
case 2:
new_arr[i] = 1;
break;
case 3:
if (arr[i] == 1) new_arr[i] = 0;
else new_arr[i] = 1;
break;
default:
new_arr[i] = 0;
}
}
for (int i = 0; i < Max + 4; i++) {
//cout << new_arr[i];
arr[i] = new_arr[i];
}
}
int Life::neighbour_count(int k) {
int sum = 0;
for (int i = k-2; i <=k+2 ; i++)
if (arr[i] == 1)sum++;
if (arr[k] == 1)return (sum - 1);
else return sum;
}