Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "primlib.h"
- #define BACKGROUND_COLOR BLACK
- #define FLOOR_COLOR YELLOW
- #define TOWERS_COLOR RED
- #define DISKS_COLOR MAGENTA
- #define FRAME_COLOR BLUE
- #define TEXT_COLOR YELLOW
- #define TOWERS_NUMBER 3
- #define DISKS_NUMBER 6
- #define TOWERS_WIDTH 6
- #define FLOOR_HEIGHT 30
- #define DISKS_WIDTH 3
- /*This variable represents the width of the smallest disk minus tower's width and divided by two*/
- #define STEP_PER_ITERATION_OF_MOVING_DISC 2
- #define DISKS_HEIGHT 10
- int how_many_disks_on_the_current_tower_tab[TOWERS_NUMBER];
- int disks_tab[DISKS_NUMBER+1][TOWERS_NUMBER]; /*In this tab we store the sizes of individual disks which occupy current position on towers */
- float nr_towers = TOWERS_NUMBER;
- float nr_disks = DISKS_NUMBER;
- void initial_position_of_disks();
- void drawing();
- int main(int argc, char* argv[])
- {
- initial_position_of_disks();
- if(initGraph())
- exit(3);
- do
- {
- drawing();
- updateScreen();
- //winning();
- //if(winning()==1)
- // break;
- // array_transport();
- //updateScreen();
- }while(isKeyDown(SDLK_ESCAPE) != 1);
- return 0;
- }
- void initial_position_of_disks(void)
- {
- int nr_row, nr_column;
- for(nr_column = 0; nr_column < TOWERS_NUMBER; nr_column ++)
- {
- for(nr_row = 0; nr_row < DISKS_NUMBER; nr_row ++)
- {
- if(nr_column == 0)
- disks_tab[nr_row][nr_column] = nr_row + 1;
- else
- disks_tab[nr_row][nr_column]= 0;
- }
- }
- }
- void drawing(void)
- {
- int nr_row, nr_column;
- filledRect(0, 0, screenWidth(), screenHeight(), BACKGROUND_COLOR);
- filledRect(0, screenHeight()-FLOOR_HEIGHT, screenWidth(), screenHeight(), FLOOR_COLOR);
- for(nr_column = 0; nr_column < TOWERS_NUMBER; nr_column ++)
- {
- filledRect((nr_column*2+1)*screenWidth()/(nr_towers*2)-TOWERS_WIDTH/2, screenHeight()-((nr_disks+1)*DISKS_HEIGHT+FLOOR_HEIGHT), (nr_column*2+1)*screenWidth()/(nr_towers*2)+TOWERS_WIDTH/2, screenHeight()-FLOOR_HEIGHT-1, TOWERS_COLOR);
- }
- for(nr_column = 0; nr_column < TOWERS_NUMBER; nr_column ++)
- {
- for(nr_row = 0; nr_row < DISKS_NUMBER; nr_row++)
- {
- if(disks_tab[nr_row][nr_column]!=0)
- {
- filledRect(screenWidth()/(nr_towers*2)*(1+2*nr_column)-DISKS_WIDTH*disks_tab[nr_row][nr_column]-TOWERS_WIDTH/2, screenHeight()-(nr_disks-nr_row)*DISKS_HEIGHT-FLOOR_HEIGHT, screenWidth()/(nr_towers*2)*(1+2*nr_column)+DISKS_WIDTH*disks_tab[nr_row][nr_column]+TOWERS_WIDTH/2, screenHeight()-((nr_disks-nr_row-1)*DISKS_HEIGHT)-FLOOR_HEIGHT-1, DISKS_COLOR);
- rect(screenWidth()/(nr_towers*2)*(1+2*nr_column)-DISKS_WIDTH*disks_tab[nr_row][nr_column]-TOWERS_WIDTH/2,screenHeight()-(nr_disks-nr_row)*DISKS_HEIGHT-FLOOR_HEIGHT, screenWidth()/(nr_towers*2)*(1+2*nr_column)+DISKS_WIDTH*disks_tab[nr_row][nr_column]+TOWERS_WIDTH/2, screenHeight()-((nr_disks-nr_row-1)*DISKS_HEIGHT)-FLOOR_HEIGHT-1, FRAME_COLOR);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement