/* * This is a cellular automaton library * * Copyright (C) 2016-2017 Antoine BARTUCCIO, Jean POREE DE RIDDER * * Licensed under the MIT License,(the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * hhttps://opensource.org/licenses/MIT * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ #include #include #include #include #include int main(){ int rule; int times; bool useSDL; bool cont = true; int col; int row; Matrix m1; Matrix m2; BooleanMatrix bmatrix; useSDL = inputYesOrNo("Do you want to use SDL library for matrix display ( interesting for big matrix only ) ?"); printf("Do you prefer : 1. A matrix with random values 2. An example matrix\n"); if (safeNumberInput(1, 2) == 2){ printf("Enter the number of columns of this matrix\n"); col = safeNumberInput(1, 30000); printf("Enter the number of rows of this matrix\n"); row = safeNumberInput(1, 30000); m1 = createMatrix(); m1 = setMatrixDim(m1,col,row); createSquare(m1); }else{ printf("A random matrix will be generated\n"); printf("Enter the number of columns of this matrix\n"); col = safeNumberInput(1, 30000); printf("Enter the number of rows of this matrix\n"); row = safeNumberInput(1, 30000); bmatrix = createBooleanMatrix(col, row); bmatrix = randomizeBooleanMatrix(bmatrix); m1 = newMatrix(bmatrix); freeBooleanMatrix(bmatrix); } displayMatrixGUI(m1, useSDL); while (cont){ printf("What rule do you want to apply to this matrix ?\n"); rule = safeNumberInput(1, 481); printf("How many times do you want the rule to be applied ?\n"); times = safeNumberInput(1, 100000); m2 = applyRules(m1,rule,times); freeMatrix(m1); displayMatrixGUI(m2, useSDL); cont = inputYesOrNo("Do you want to apply other rules on this matrix ?"); m1 = m2; } freeMatrix(m2); return 0; }