Showing posts with label Drawing letters using C Program. Show all posts
Showing posts with label Drawing letters using C Program. Show all posts

Wednesday, December 23, 2015

Star Message Print using C Program


Program #35


Description:
Print the Message in a 4 different angle and approximately like a Star !!.  And print will happen one after another in Multi-Color.  This Program will Indefinitely print (Slow Motion using Delay) until User press any Key. 

#include <conio.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>

/* Global Constant */
#define PRINT_SPEED 50

/* Global Variable Declaration */
char inputStr[25];
int col, row;

/* Global Prototype Declaration */
void identifyCoOrdinates(int);

int main(void){

  /* Local Variable Declaration */
  int i, yPos;

  /* Local Prototype Declaration */
  void validateStrLength();
  void printHorizontal();
  void printVertical();
  void printVerticalFromTopLeft();
  void printVerticalFromTopRight();
  void printVerticalFromBottomLeft();
  clrscr();

  /* get Input String */
  printf("Please Enter a Message:\n");
  gets(inputStr);

  /*  Validate Character Length */
  validateStrLength();
  for (; !kbhit(); ){

    /* Clear the Screen */
    clrscr();

    /* Print Horizontal Message */
    printHorizontal();

    /* Print Vertical Message */
    printVertical();

    /* Print Vertical Message From Left */
    printVerticalFromTopLeft();

    /* Print Vertical Message From Right */
    printVerticalFromTopRight();
  }
  getch();
  return 0;
}

void setColor(){
  int color, colorCode[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
  color = random(15);
  textcolor( colorCode[color] );
}

/* Validate String Lengh */
void validateStrLength(){
  if ( strlen(inputStr) > 25){
    clrscr();
    cprintf("Invalid Input! Bye!!");
    getch();
    exit(0);
  }
}

/* Print Message in Vertical-from-right */
void printVerticalFromTopRight(){
 int speed, i, colVal, rowVal;
 speed = PRINT_SPEED;

 /* setColor */
 setColor();

 /* Identify Position */
 identifyCoOrdinates(4);

 /* get Column Value */
 colVal = col;

 /* get Row Value */
 rowVal = row;

 for (i=0; i< strlen(inputStr); i++){
   gotoxy(colVal--, rowVal++);
   cprintf("%c", inputStr[i]);
   delay(speed);
 }
}

/* Print Message in Vertical-from-left */
void printVerticalFromTopLeft(){
 int speed, i, colVal, rowVal;
 speed = PRINT_SPEED;

 /* setColor */
 setColor();

 /* Identify Position */
 identifyCoOrdinates(3);

 /* get Column Value */
 colVal = col;

 /* get Row Value */
 rowVal = row;
 for (i=0; i< strlen(inputStr); i++){
   gotoxy(colVal++, rowVal++);
   cprintf("%c", inputStr[i]);
   delay(speed);
 }
}

/* Print Message in Vertical */
void printVertical(){
 int speed, i, colVal, rowVal;
 speed = PRINT_SPEED;

 /* setColor */
 setColor();

 /* Identify Position */
 identifyCoOrdinates(2);

 /* get Column Value */
 colVal = col;

 /* get Row Value */
 rowVal = row;
 for (i=0; i< strlen(inputStr); i++){
   gotoxy(colVal, rowVal++);
   cprintf("%c", inputStr[i]);
   delay(speed);
 }
}

/* Identify Right Co-Ordinate */
void identifyCoOrdinates(int Place){
  int rowCalc=12, colCalc=39;

  /* Horizontal */
  if (Place == 1){
    colCalc = strlen(inputStr);
    colCalc = 80 - colCalc;
    colCalc = (int)(colCalc/2);

    /* Assign to Global Column Variable */
    col = colCalc-strlen(inputStr)/2+1;

    /* Assign to Global Row Variable */
    row = rowCalc;
  }

  /* Vertical */
  else if (Place == 2){
    rowCalc = strlen(inputStr);
    rowCalc = 25 - rowCalc;
    rowCalc = (int)(rowCalc/2);

    /* Assign to Global Column Variable */
    col = colCalc;

    /* Assign to Global Row Variable */
    row = rowCalc;
  }

  /* Vertical From Left */
  else if (Place == 3){
    rowCalc = strlen(inputStr);
    rowCalc = 25 - rowCalc;
    rowCalc = (int)(rowCalc/2);

    colCalc = strlen(inputStr);
    colCalc = 80 - colCalc;
    colCalc = (int)(colCalc/2);

    /* Assign to Global Column Variable */
    col = colCalc;

    /* Assign to Global Row Variable */
    row = rowCalc;
  }

  /* Vertical From Right */
  else if (Place == 4){
    rowCalc = strlen(inputStr);
    rowCalc = 25 - rowCalc;
    rowCalc = (int)(rowCalc/2);

    colCalc = strlen(inputStr);
    colCalc = 80 - colCalc;
    colCalc = (int)(colCalc/2);

    /* Assign to Global Column Variable */
    col = colCalc+strlen(inputStr);

    /* Assign to Global Row Variable */
    row = rowCalc;
  }

}

/* Print Message in Horizontal */
void printHorizontal(){
 int speed, i, colVal, rowVal;
 speed = PRINT_SPEED;

 /* setColor */
 setColor();

 /* Identify Position */
 identifyCoOrdinates(1);

 /* get Column Value */
 colVal = col;

 /* get Row Value */
 rowVal = row;
 for (i=0; i< strlen(inputStr); i++){
   gotoxy(colVal, rowVal);
   cprintf("%c", inputStr[i]);
   colVal += 2;
   delay(speed);
 }
}







 

Sunday, December 13, 2015

Dynamic positioning x,y with Progress Bar using C Program

Program #30

Description:
Make 5 dots randomly in different (x,y) positions in the Screen.  Also Program will dynamically show the current progress using Progress Bar Logic (illusion progress bar as well as completion progress bar) using C Program.


/*
 Make 5 dots randomly in different (x,y) positions in the Screen
 Also Program will dynamically show the progress using Progress Bar Logic
 using C Program
*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>

/* Defined constants */
#define MAXDOTS 5;
#define ASCII_POSITION  122;
#define PROGRESS_ROW     13
#define PROGRESS_COLUMN  28

/* !Important!
This Program defines the Progress Bar ASCII Positions as
79, 80, 81 and 122
79  - illusion Progress Bar
122 - Completion Progress Bar
*/

/* Global variable declaration */
int row=1, col=1, rowTrack[5], colTrack[5];

/* Global function declaration */
char getAscii(int);
int main(){

  /* Local variable declaration */
  int counter=0, dupCheck=0, maxDots;
  char asciiChar;

  /* Function Prototype declaration */
  void getX();
  void getY();
  int duplicateCheck(int, int);
  void printCoOrdinates();
  void initialMessage();
  void drawProgressBar(int);
  void percentCompleted();
  void illusionProgressBar();

  /* Clear the Screen */
  clrscr();

  /* Print Initial Message to the User */
  initialMessage();

  /* Print illusion Progress Bar */
  illusionProgressBar();

  /* Indefinite loop */
  for (;!kbhit(); ){

    /* Randomize */
    randomize();

    /* get a next random (x,y) position */
    getX();
    getY();

    /* Initial value to Duplicate check */
    dupCheck = 0;

    /* Track Positions, avoid duplicate co-ordinates */
    if ( !duplicateCheck(row, col) ){

      /* no duplicate matched */
      dupCheck = 1;
    }
    if (dupCheck == 1){

      /* Sets current position to Positioning Array */
      rowTrack[counter] = row;
      colTrack[counter] = col;

      /* Increase DOT counter */
      counter++;
    }

    /* Draw Progress Bar about the Processing */
    drawProgressBar(counter);

    /* Print Percentage Completed */
    percentCompleted(counter);
    if (dupCheck == 1){
      /* Move Cursor to random position */
      gotoxy(col, row);
      printf("*");
    }
    maxDots = MAXDOTS;

    /* program ends, once counter reaches MAXDOTS */

    if (counter==maxDots){

      /* Print Dynamic Co-Ordinates */
      printCoOrdinates();
      break;
    }
  }
  getch();
  return 1;
}

/* Print illusion Progress Bar, for User Friendly ;) */
void illusionProgressBar(){
 int i, columnPos, rowPos, dynamicProgress;
 char asciiVal;

 /* get Default Row, Column Position */
  columnPos = PROGRESS_COLUMN;
  rowPos    = PROGRESS_ROW;

  /* Dynamic Progress Bar length using Completion % */
  dynamicProgress = 25;

  /* Get Ascii character */
  asciiVal = getAscii(79);

  /* default progress bar position */
  for(i=0; i<dynamicProgress; i++){
   gotoxy(columnPos++, rowPos);
   printf("%c",asciiVal);

   /* Add delay to draw illusion progress bar, smoothly */
   delay(10);
  }

  /* Delay after illusion progress Bar */
  delay(300);
}

/* Print Percentage Completion */
void percentCompleted(int completion){
 int columnPos, rowPos, dynamicProgress;

 /* get Default Row, Column Position */
  columnPos = PROGRESS_COLUMN + 27;
  rowPos    = PROGRESS_ROW;

  /* Dynamic Progress Bar length using Completion % */
  dynamicProgress = completion * 20;

  /* Positioning % completion */
  gotoxy(columnPos, rowPos);
  printf("%d% Completed", dynamicProgress);
}

/* Draw Progress Bar to show Current Completion status to the User */
void drawProgressBar(int completion){
  int i, columnPos, rowPos, dynamicProgress;
  char asciiVal;

  /* get Default Row, Column Position */
  columnPos = PROGRESS_COLUMN;
  rowPos    = PROGRESS_ROW;

  /* Dynamic Progress Bar length using Completion % */
  dynamicProgress = completion * 5;

  /* Get Ascii character */
  asciiVal = getAscii(0);

  /* default progress bar position */
  gotoxy(columnPos, rowPos);
  for(i=0; i<dynamicProgress; i++){
   gotoxy(columnPos++, 13);
   printf("%c",asciiVal);

   /* Add delay to draw progress bar, smoothly */
   delay(100);
  }
}

/* Print Intial Message to the User */
void initialMessage(){
  char *plsMessage = "Please wait ... (Press ANY Key to Exit)";
  int i, columnPos=20;
  for(i=0; i<strlen(plsMessage); i++){
    gotoxy(columnPos++,12);
    printf("%c",plsMessage[i]);
    delay(50);
  }
}

/* Print dynamic co-ordinates */
void printCoOrdinates(){
  int i=0;

  /* Print the Result from 1st Row to 5th Row */
  for (; i<5; i++) {
    gotoxy(1,(i+1));
    printf("Dynamic Position #%d: (%d,%d)", (i+1), colTrack[i], rowTrack[i]);
  }
}

/*
  get Random x position
  'x' means column value
*/
void getX() {
  int x=1;
  x = random(80);

  /* randVal range from 0 to 99
   but we are expecting COLUMN value
   but it ranges from 1 to 80 only */
  if (x<1 || x>80){
    getX();
  }
  col = x;
}

/*
  get Random y position
  'y' means row value
*/
void getY() {
  int y=1;

  /* get random for Row */
  y = random(25);

  /* randVal range from 0 to 99
   but we are expecting ROW value
   but it ranges from 1 to 25 only */
  if (y<1 || y>25){
    getY();
  }
  row = y;
}

/* Duplicate Position Check */
int duplicateCheck(int r, int c) {
  int i;
  int rowMatch=0, colMatch=0;

  /* check Row Value match with Existing Value */
  for (i=0; i<5; i++) {
     if (rowTrack[i] == r){
       rowMatch = 1;
     }
  }

  /* check Column Value match with Existing Value */
  for (i=0; i<5; i++) {
     if (colTrack[i] == c){
       colMatch = 1;
     }
  }
  if (rowMatch == 0 && colMatch == 0) {
    return 0;
  }
  return 1;
}

/* Iterate the loop until expected ASCII character */
char getAscii(int overWritePos){
  int i, ascii_pos;

  /* Default position to the Ascii, !Important! */
  char cc='a';

  /* Assign default character position */
  ascii_pos = ASCII_POSITION;

  /* Overwrite Ascii Position, if function gets some position */
  if (overWritePos != 0){
    ascii_pos = overWritePos;
  }
  for (i=0; i<256; i++) {

    /*  Break the Loop, once we got the Character */
    if (i == ascii_pos)  break;
    cc = cc + 1;
  }
  return cc;
}





 

Saturday, December 12, 2015

Simple Animation using Arrow Keys in C Program

Program #25

Description:
Write simple animation using Arrow key (Up, Down, Left and Right) only in C Program.


/* Arrow Programming in C Program
UP Arrow    - 72
DOWN Arrow  - 80
LEFT Arrow  - 75
RIGHT Arrow - 77
*/

#include<conio.h>

/* Global variable declaration, Row and Column */
int row=13, col=40;
void main(){
  /* Local variable declaration */
  char inputKey, arrowKey;

 /* Prototype declaration */
  void moveUp();
  void moveDown();
  void moveLeft();
  void moveRight();
 
/* Clear the Screen */
  clrscr();
 
/* Move Cursor to Center of the Screen by Default */
  gotoxy(col, row);

  /* Detect Arrow Keys in C Program
     Press ESCAPE - 27 to
     Get out from the Indefinite loop
  */

  while ( (inputKey = getch()) != 27){

    /* Find Arrow Key or not */
    if (inputKey == '\0'){

      /* Extract actual Arrow Key */
      arrowKey = getch();
      switch(arrowKey){
 case 72:
    //printf("UP");
    moveUp();
    break;

 case 80:
    //printf("DOWN");
    moveDown();
    break;

 case 75:
    //printf("LEFT");
    moveLeft();
    break;

 case 77:
    //printf("RIGHT");
    moveRight();
    break;
      }
    }
  }
}

/* Move Cursor - Upward */
void moveUp(){
 if (row != 1){
   row--;
 } else if (row < 1){
   row = 1;
 }

/* Move the Cursor and Print */
 gotoxy(col, row);
 printf("*");
}

/* Move Cursor - Downward */
void moveDown(){
 if (row != 25){
   row++;
 } else if (row > 25){
   row = 25;
 }

 /* Move the Cursor and Print */
 gotoxy(col, row);
 printf("*");
}

/* Move Cursor - Left Side */
void moveLeft(){
 if (col != 1){
   col--;
 } else if (col < 1){
   col = 1;
 }

 /* Move the Cursor and Print */
 gotoxy(col, row);
 printf("*");
}


/* Move Cursor - Right Side */
void moveRight(){
 if (col != 80){
   col++;
 } else if (col > 80){
   col = 80;
 }
 
/* Move the Cursor and Print */
 gotoxy(col, row);
 printf("*");
}



 

Popular Posts