Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.87 KB | None | 0 0
  1. #include "Board.h"
  2. #include "Cell.h"
  3. #include "Save.h"
  4. #include <SDL.h>
  5. #include <stdio.h>
  6. #define INF 1000000000
  7.  
  8.  
  9.  
  10. void SaveCurrent(Board board)
  11. {
  12.     FILE *out = fopen("last_saved.txt", "w");
  13.     int i, num;
  14.     Cell *head;
  15.     num = board.numberColors;
  16.     fprintf(out, "%d\n", num);
  17.     for (i = 0; i < num; i++)
  18.     {
  19.         fprintf(out, "%d %d %d %d\n", board.colors[i].r, board.colors[i].g, board.colors[i].b, board.colorDirections[i]);
  20.     }
  21.     fprintf(out, "%d %d %d %d %d\n", board.ant.x, board.ant.y, board.ant.dirIndex, board.ant.dirX, board.ant.dirY);
  22.     fprintf(out, "%d %d %d %d %d %d %d\n", board.x, board.y, board.height, board.width, board.screenHeight, board.screenWidth, board.step);
  23.     for (i = 0; i < MAXHASH; i++)
  24.     {
  25.         head = board.hashTable[i];
  26.         num = 0;
  27.         while (head != NULL)
  28.         {
  29.             if((head->x!=INF) && (head->x != -INF)) num++;
  30.             head = head->next;
  31.         }
  32.         fprintf(out, "%d ", num);
  33.         head = board.hashTable[i];
  34.         while (head != NULL)
  35.         {
  36.             if ((head->x != INF) && (head->x != -INF)) fprintf(out, "%d %d %d ", head->x, head->y, head->value);
  37.             head = head->next;
  38.         }
  39.         fprintf(out, "\n");
  40.     }
  41.     fclose(out);
  42. }
  43.  
  44. void LoadCurrent(Board *board)
  45. {
  46.     FILE *in = fopen("last_saved.txt", "r");
  47.     if (in == NULL)
  48.     {
  49.         printf("Niste sacuvali nijednu simulaciju!\n");
  50.         return;
  51.     }
  52.     int i, j, num,x,y,value;
  53.     Cell *head;
  54.     fscanf(in, "%d\n",&board->numberColors);
  55.     num = board->numberColors;
  56.     board->colors = (SDL_Color *)malloc(num * sizeof(SDL_Color));
  57.     board->colorDirections = (int *)malloc(num * sizeof(int));
  58.     for (i = 0; i < num; i++)
  59.     {
  60.         fscanf(in, "%d %d %d %d\n", &board->colors[i].r, &board->colors[i].g, &board->colors[i].b, &board->colorDirections[i]);
  61.     }
  62.     fscanf(in, "%d %d %d %d %d\n", &board->ant.x, &board->ant.y, &board->ant.dirIndex, &board->ant.dirX, &board->ant.dirY);
  63.     fscanf(in, "%d %d %d %d %d %d %d\n", &board->x, &board->y, &board->height, &board->width, &board->screenHeight, &board->screenWidth, &board->step);
  64.     board->hashTable = (Cell **)malloc(MAXHASH * sizeof(Cell *));
  65.     for (i = 0; i < MAXHASH; i++)
  66.     {
  67.         board->hashTable[i] = CreateCell(INF, INF, 0);
  68.         board->hashTable[i]->next = CreateCell(-INF, -INF, 0);
  69.         head = board->hashTable[i];
  70.         fscanf(in, "%d", &num);
  71.         for (j = 0; j<num; j++)
  72.         {
  73.             fscanf(in, "%d %d %d", &x, &y, &value);
  74.             InsertCell(head, x, y, value);
  75.         }
  76.     }
  77.     fclose(in);
  78. }
  79.  
  80. void SaveConfig()
  81. {
  82.     const SDL_Color c1 = { 0x00,0xFF,0x00 };//green
  83.     const SDL_Color c2 = { 0xFF,0x00,0x00 };//red
  84.     const SDL_Color c3 = { 0x00,0x00,0xFF };//blue
  85.     const SDL_Color c4 = { 0xFF,0xFF,0x00 };//yellow
  86.     const SDL_Color c5 = { 0x66,0x00,0x66 };//purple
  87.     const SDL_Color c6 = { 0xFF,0x99,0x00 };//orange
  88.     const SDL_Color c7 = { 0x33,0xCC,0xCC };//cyan
  89.     const SDL_Color c8 = { 0xFF,0xFF,0xFF };//white
  90.     FILE *config = fopen("config.txt", "w");
  91.     int num, sw, sh, step;
  92.     printf("Choose default settings to be put in the config.txt file:\n");
  93.     char col[30], smer[10];
  94.     printf("Input the number of colours to be used including the background(max 20): \n");
  95.     scanf("%d", &num);
  96.     fprintf(config, "%d\n", num);
  97.     printf("Input the screen width, heigth and step: \n");
  98.     scanf("%d %d %d", &sw, &sh, &step);
  99.     fprintf(config,"%d %d %d\n",sw,sh,step);
  100.     printf("Begin input (ex. red left)\n Readymade colors:\n Green\n Red\n Blue\n Yellow\n Purple\n Orange\n Cyan\n White\n New \n ");
  101.     for (int i = 0; i < num; i++)
  102.     {
  103.         scanf("%s %s", &col, &smer);
  104.         char helpc = tolower(col[0]);
  105.         switch (helpc)
  106.         {
  107.         case 'g': fprintf(config, "%d %d %d\n", c1.r, c1.b, c1.g);
  108.             break;
  109.         case 'r':fprintf(config, "%d %d %d\n", c2.r, c2.b, c2.g);
  110.             break;
  111.         case 'b':fprintf(config, "%d %d %d\n", c3.r, c3.b, c3.g);
  112.             break;
  113.         case 'y':fprintf(config, "%d %d %d\n", c4.r, c4.b, c4.g);
  114.             break;
  115.         case 'p':fprintf(config, "%d %d %d\n", c5.r, c5.b, c5.g);
  116.             break;
  117.         case 'o':fprintf(config, "%d %d %d\n", c6.r, c6.b, c6.g);
  118.             break;
  119.         case 'c':fprintf(config, "%d %d %d\n", c7.r, c7.b, c7.g);
  120.             break;
  121.         case 'w':fprintf(config, "%d %d %d\n", c8.r, c8.b, c8.g);
  122.             break;
  123.         case 'n':
  124.         {
  125.             int r, g, b;
  126.             printf("Insert RGB: \n");
  127.             scanf("%d %d %d", &r, &g, &b);
  128.             fprintf(config, "%d %d %d\n", r, g, b);
  129.         }
  130.         }
  131.         helpc = tolower(smer[0]);
  132.         switch (helpc)
  133.         {
  134.         case 'l': fprintf(config,"0\n");
  135.             break;
  136.         case 'r': fprintf(config, "1\n");
  137.             break;
  138.         default:
  139.             break;
  140.         }
  141.     }
  142.     fclose(config);
  143. }
  144.  
  145. void LoadConfig(Board *board)
  146. {
  147.     FILE *config = fopen("config.txt", "r");
  148.     int colCount,r,g,b,colorDirections[20],dir,sw,sh,step;
  149.     SDL_Color colors[20];
  150.     fscanf(config,"%d", &colCount);
  151.     fscanf(config,"%d %d %d", &sw, &sh, &step);
  152.     for (int i = 0; i < colCount; i++)
  153.     {
  154.         fscanf(config,"%d %d %d", &r, &g, &b);
  155.         SDL_Color cn = { r,g,b };
  156.         colors[i] = cn;
  157.         fscanf(config, "%d", &dir);
  158.         colorDirections[i] = dir;
  159.     }
  160.     fclose(config);
  161.     *board = CreateBoard(sw,sh,step,colCount,colors,colorDirections);
  162.     fclose(config);
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement