Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Board.h"
- #include "Cell.h"
- #include "Save.h"
- #include <SDL.h>
- #include <stdio.h>
- #define INF 1000000000
- void SaveCurrent(Board board)
- {
- FILE *out = fopen("last_saved.txt", "w");
- int i, num;
- Cell *head;
- num = board.numberColors;
- fprintf(out, "%d\n", num);
- for (i = 0; i < num; i++)
- {
- fprintf(out, "%d %d %d %d\n", board.colors[i].r, board.colors[i].g, board.colors[i].b, board.colorDirections[i]);
- }
- fprintf(out, "%d %d %d %d %d\n", board.ant.x, board.ant.y, board.ant.dirIndex, board.ant.dirX, board.ant.dirY);
- fprintf(out, "%d %d %d %d %d %d %d\n", board.x, board.y, board.height, board.width, board.screenHeight, board.screenWidth, board.step);
- for (i = 0; i < MAXHASH; i++)
- {
- head = board.hashTable[i];
- num = 0;
- while (head != NULL)
- {
- if((head->x!=INF) && (head->x != -INF)) num++;
- head = head->next;
- }
- fprintf(out, "%d ", num);
- head = board.hashTable[i];
- while (head != NULL)
- {
- if ((head->x != INF) && (head->x != -INF)) fprintf(out, "%d %d %d ", head->x, head->y, head->value);
- head = head->next;
- }
- fprintf(out, "\n");
- }
- fclose(out);
- }
- void LoadCurrent(Board *board)
- {
- FILE *in = fopen("last_saved.txt", "r");
- if (in == NULL)
- {
- printf("Niste sacuvali nijednu simulaciju!\n");
- return;
- }
- int i, j, num,x,y,value;
- Cell *head;
- fscanf(in, "%d\n",&board->numberColors);
- num = board->numberColors;
- board->colors = (SDL_Color *)malloc(num * sizeof(SDL_Color));
- board->colorDirections = (int *)malloc(num * sizeof(int));
- for (i = 0; i < num; i++)
- {
- fscanf(in, "%d %d %d %d\n", &board->colors[i].r, &board->colors[i].g, &board->colors[i].b, &board->colorDirections[i]);
- }
- fscanf(in, "%d %d %d %d %d\n", &board->ant.x, &board->ant.y, &board->ant.dirIndex, &board->ant.dirX, &board->ant.dirY);
- fscanf(in, "%d %d %d %d %d %d %d\n", &board->x, &board->y, &board->height, &board->width, &board->screenHeight, &board->screenWidth, &board->step);
- board->hashTable = (Cell **)malloc(MAXHASH * sizeof(Cell *));
- for (i = 0; i < MAXHASH; i++)
- {
- board->hashTable[i] = CreateCell(INF, INF, 0);
- board->hashTable[i]->next = CreateCell(-INF, -INF, 0);
- head = board->hashTable[i];
- fscanf(in, "%d", &num);
- for (j = 0; j<num; j++)
- {
- fscanf(in, "%d %d %d", &x, &y, &value);
- InsertCell(head, x, y, value);
- }
- }
- fclose(in);
- }
- void SaveConfig()
- {
- const SDL_Color c1 = { 0x00,0xFF,0x00 };//green
- const SDL_Color c2 = { 0xFF,0x00,0x00 };//red
- const SDL_Color c3 = { 0x00,0x00,0xFF };//blue
- const SDL_Color c4 = { 0xFF,0xFF,0x00 };//yellow
- const SDL_Color c5 = { 0x66,0x00,0x66 };//purple
- const SDL_Color c6 = { 0xFF,0x99,0x00 };//orange
- const SDL_Color c7 = { 0x33,0xCC,0xCC };//cyan
- const SDL_Color c8 = { 0xFF,0xFF,0xFF };//white
- FILE *config = fopen("config.txt", "w");
- int num, sw, sh, step;
- printf("Choose default settings to be put in the config.txt file:\n");
- char col[30], smer[10];
- printf("Input the number of colours to be used including the background(max 20): \n");
- scanf("%d", &num);
- fprintf(config, "%d\n", num);
- printf("Input the screen width, heigth and step: \n");
- scanf("%d %d %d", &sw, &sh, &step);
- fprintf(config,"%d %d %d\n",sw,sh,step);
- 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 ");
- for (int i = 0; i < num; i++)
- {
- scanf("%s %s", &col, &smer);
- char helpc = tolower(col[0]);
- switch (helpc)
- {
- case 'g': fprintf(config, "%d %d %d\n", c1.r, c1.b, c1.g);
- break;
- case 'r':fprintf(config, "%d %d %d\n", c2.r, c2.b, c2.g);
- break;
- case 'b':fprintf(config, "%d %d %d\n", c3.r, c3.b, c3.g);
- break;
- case 'y':fprintf(config, "%d %d %d\n", c4.r, c4.b, c4.g);
- break;
- case 'p':fprintf(config, "%d %d %d\n", c5.r, c5.b, c5.g);
- break;
- case 'o':fprintf(config, "%d %d %d\n", c6.r, c6.b, c6.g);
- break;
- case 'c':fprintf(config, "%d %d %d\n", c7.r, c7.b, c7.g);
- break;
- case 'w':fprintf(config, "%d %d %d\n", c8.r, c8.b, c8.g);
- break;
- case 'n':
- {
- int r, g, b;
- printf("Insert RGB: \n");
- scanf("%d %d %d", &r, &g, &b);
- fprintf(config, "%d %d %d\n", r, g, b);
- }
- }
- helpc = tolower(smer[0]);
- switch (helpc)
- {
- case 'l': fprintf(config,"0\n");
- break;
- case 'r': fprintf(config, "1\n");
- break;
- default:
- break;
- }
- }
- fclose(config);
- }
- void LoadConfig(Board *board)
- {
- FILE *config = fopen("config.txt", "r");
- int colCount,r,g,b,colorDirections[20],dir,sw,sh,step;
- SDL_Color colors[20];
- fscanf(config,"%d", &colCount);
- fscanf(config,"%d %d %d", &sw, &sh, &step);
- for (int i = 0; i < colCount; i++)
- {
- fscanf(config,"%d %d %d", &r, &g, &b);
- SDL_Color cn = { r,g,b };
- colors[i] = cn;
- fscanf(config, "%d", &dir);
- colorDirections[i] = dir;
- }
- fclose(config);
- *board = CreateBoard(sw,sh,step,colCount,colors,colorDirections);
- fclose(config);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement