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 BLACK
- #define TEXT_COLOR YELLOW
- #define TOWERS_NUMBER 6
- #define DISKS_NUMBER 13
- #define TOWERS_WIDTH 6
- #define FLOOR_HEIGHT 30
- #define TOWERS_HIGHT 300
- #define DISKS_WIDTH 3
- #define STEP_PER_ITERATION_OF_MOVING_DISC 2
- #define DISKS_HEIGHT 10
- #define SPACE_BTW_TOWERS screenWidth()/TOWERS_NUMBER
- #define GROUND_HEIGHT = screenHeight() - 50
- int how_many_disks_on_the_current_tower_tab[TOWERS_NUMBER];
- int disks_tab[DISKS_NUMBER + 1][TOWERS_NUMBER];
- float number_of_towers = TOWERS_NUMBER;
- float nuber_of_disks = DISKS_NUMBER;
- void makingDistanceBetweenTowers();
- void checkingBoundry();
- void drawingBackgraund();
- void drawingTowers();
- void drawingDisks();
- void initialingPositionOfDisks();
- int main(int argc, char* argv[])
- {
- if(initGraph())
- {
- exit(3);
- }
- do
- {
- checkingBoundry();
- drawingBackgraund();
- drawingTowers();
- drawingDisks();
- initialingPositionOfDisks();
- updateScreen();
- //mowing
- //moving in 3 ways
- //winning
- }while(isKeyDown(SDLK_ESCAPE) != 1);
- return 0;
- }
- void checkingBoundry()
- {
- if(DISKS_NUMBER < 3 || TOWERS_NUMBER > 10)
- {
- printf("Invalid number of Towers \n");
- exit(3);
- }
- if(DISKS_NUMBER < 3 || DISKS_NUMBER >15)
- {
- printf("Invalid number of Disks.\n");
- exit(3);
- }
- }
- void drawingBackgraund(void)
- {
- int number_of_row, number_of_column;
- filledRect(0, 0, screenWidth(), screenHeight(), BACKGROUND_COLOR);
- filledRect(0, screenHeight()-FLOOR_HEIGHT, screenWidth(), screenHeight(), FLOOR_COLOR);
- }
- double makingDistanceBetweenTowers()
- {
- double distance_between_towers = screenWidth() / (TOWERS_NUMBER + 1);
- return distance_between_towers;
- }
- void drawingTowers(void)
- {
- double distance_between_towers = makingDistanceBetweenTowers();
- int iteration_number;
- for(iteration_number = 1; iteration_number <= TOWERS_NUMBER; iteration_number++)
- {
- filledRect(( distance_between_towers * iteration_number) - TOWERS_WIDTH,
- GROUND_HEIGHT - 1,
- (distance_between_towers * iteration_number) + TOWERS_WIDTH,
- GROUND_HEIGHT - TOWERS_HIGHT, BLUE);
- }
- }
- void drawingDisks(void)
- {
- int number_of_row, number_of_column;
- for(number_of_column = 0; number_of_column < TOWERS_NUMBER; number_of_column ++)
- {
- for(number_of_row = 0; number_of_row < DISKS_NUMBER; number_of_row++)
- {
- if(disks_tab[number_of_row][number_of_column]!=0)
- {
- filledRect(screenWidth()/(number_of_towers * 2)*(1 + 2 * number_of_column) - DISKS_WIDTH * disks_tab[number_of_row][number_of_column]-TOWERS_WIDTH/2, screenHeight()-(nuber_of_disks-number_of_row)*DISKS_HEIGHT-FLOOR_HEIGHT, screenWidth()/(number_of_towers * 2) * ( 1 + 2 * number_of_column) + DISKS_WIDTH*disks_tab[number_of_row][number_of_column]+TOWERS_WIDTH / 2, screenHeight()-((nuber_of_disks-number_of_row-1)*DISKS_HEIGHT)-FLOOR_HEIGHT-1, DISKS_COLOR);
- rect(screenWidth()/(number_of_towers * 2) * (1 + 2 * number_of_column)-DISKS_WIDTH*disks_tab[number_of_row][number_of_column]-TOWERS_WIDTH/2,screenHeight()-(nuber_of_disks-number_of_row)*DISKS_HEIGHT-FLOOR_HEIGHT, screenWidth()/(number_of_towers * 2) * (1 + 2 * number_of_column)+DISKS_WIDTH*disks_tab[number_of_row][number_of_column]+TOWERS_WIDTH / 2, screenHeight()-((nuber_of_disks-number_of_row-1)*DISKS_HEIGHT)-FLOOR_HEIGHT-1, FRAME_COLOR);
- }
- }
- }
- }
- void initialingPositionOfDisks(void)
- {
- int number_of_row, number_of_column;
- for(number_of_column = 0; number_of_column < TOWERS_NUMBER; number_of_column ++)
- {
- for(number_of_row = 0; number_of_row < DISKS_NUMBER; number_of_row ++)
- {
- if(number_of_column == 0)
- {
- disks_tab[number_of_row][number_of_column] = number_of_row + 1;
- }
- else
- {
- disks_tab[number_of_row][number_of_column]= 0;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement