Showing posts with label Indefinite loop in C Program. Show all posts
Showing posts with label Indefinite loop in C Program. Show all posts

Saturday, December 19, 2015

Draw Triangle Wave using C Program

Program #34


/*
//////////////////////////////////////
// **** DRAW TRIANGLE WAVE ****** //
//////////////////////////////////////
This Program will Indefinitely Draw Triangle (Sample Sin) Wave in Multi-Colors
Also Additional information will keeps on show the Current Drawing Position
*/

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"

/* Defined Constants */
#define WAVE_SPEED   100
#define DEFAULT_ROW   12
#define DEFAULT_COLUMN 1

/* Global Variable */
int column=5, row=12;

/* Global Function Prototypes */
void goStraight();
void goDown();
void goUp();
void drawCurrentPosition();
void drawSquareWave();
void drawUpperPortion();
void drawLowerPortion();
void setColor();
int main(){

  /* Local Function Prototypes */
  int checkColumn();

  /* Clear Screen */
  clrscr();

  /* Set Row and Column values */
  row    = DEFAULT_ROW;
  column = DEFAULT_COLUMN;

  /* Position the Cursor */
  gotoxy(column, row);

  /* Initiate Drawing Square Wave */
  drawSquareWave();
  return 1;
}

/* Initiate Indefinite Drawing */
void drawSquareWave(){
 for(; !kbhit(); ){
    goStraight();
    drawUpperPortion();
    goStraight();
    drawLowerPortion();
  }
}

/* Print Current Position */
void printCurrentPosition(int position){
 /* 1. Straight */
 if (position == 1){
  gotoxy(35, 20);
  printf("Draw Straight! ", column, row);
 }
 /* 2. Up */
 else if (position == 2){
  gotoxy(35, 20);
  printf("Draw Up!       ", column, row);
 }
 /* 3. Down */
 else if (position == 3) {
  gotoxy(35, 20);
  printf("Draw Down!     ", column, row);
 }
 /* 4. End of the Wave */
 else if (position == 4){
   gotoxy(30, 20);
   printf("Square Wave Completed !!");
 }
}

/* Check Column */
int checkColumn(){
  if ( (column+5) > 80) {
    printCurrentPosition(4);
    /* Clear the Screen and Continue the Indefinite Wave */
    clrscr();
    /* Reset the Square Wave Position once again */
    row    = DEFAULT_ROW;
    column = DEFAULT_COLUMN;
    gotoxy(column, row);
    /* Call Drawing Once again */
    drawSquareWave();
  }

  /* Ok, Valid Column */
  return 1;
}

/* Go Straight */
void goStraight(){
  int col, i, waveSpeed;
  /* Set Color */
  setColor();
  col = column;
  waveSpeed = WAVE_SPEED;
  if( checkColumn() ){
    for (i=col; i< (col+4); i++){
      /* increase column */
      column++;
      /* Print Position */
      printCurrentPosition(1);
      /* draw Wave */
      gotoxy(i, row);
      cprintf("*");
      /* Add Delay */
      delay(waveSpeed);
    }
  }
}

/* Draw Upper Portion */
void drawUpperPortion(){
  goUp();
  goDown();
}
/* Draw Lower Portion */
void drawLowerPortion(){
  goDown();
  goUp();
}

/* Go Up */
void goUp(){
  int rows, i, waveSpeed;
  /* Set Color */
  setColor();
  rows = row;
  waveSpeed = WAVE_SPEED;
  if( checkColumn() ){
    for (i=rows; i > (rows-4); i--){
      /* Print Position */
      printCurrentPosition(2);
      /* Draw Wave */
      gotoxy(column++, i);
      cprintf("*");
      /* Add Delay */
      delay( waveSpeed );
      /* decrease row */
      row--;
    }
  }
}

/* Go Down */
void goDown(){
  int rows, i, waveSpeed;
  /* Set Color */
  setColor();
  rows = row;
  waveSpeed = WAVE_SPEED;
  if( checkColumn() ){
    for (i=rows; i< (rows+4); i++){
      /* Print Position */
      printCurrentPosition(3);
      /* Draw Wave */
      gotoxy(column++, i);
      cprintf("*");
      /* Add Delay */
      delay(waveSpeed);
      /* increase row */
      row++;
    }
  }
}

/* getColor */
void setColor(){
 int color;
 int colorArray[14] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
 color = random(14);
 /* Restrict Zero - BLACK color */
 color = colorArray[color];
 textcolor(color);
}







 

Draw Square Wave using C Program

Program #33

/*
//////////////////////////////////////////
// **** DRAW SQUARE WAVE ****** //
//////////////////////////////////////////
This Program will Indefinitely Draw Square Wave in Multi-Colors
Also Additional information will keeps on show the Current Drawing Position
*/
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"

/* Defined Constants */
#define WAVE_SPEED   100
#define DEFAULT_ROW   12
#define DEFAULT_COLUMN 1

/* Global Variable */
int column=5, row=12;

/* Global Function Prototypes */
void goStraight();
void goDown();
void goUp();
void drawCurrentPosition();
void drawSquareWave();
void drawUpperPortion();
void drawLowerPortion();
void setColor();

int main(){

  /* Local Function Prototypes */
  int checkColumn();

  /* Clear Screen */
  clrscr();

  /* Set Row and Column values */
  row    = DEFAULT_ROW;
  column = DEFAULT_COLUMN;

  /* Position the Cursor */
  gotoxy(column, row);

  /* Initiate Drawing Square Wave */
  drawSquareWave();
  return 1;
}

/* Initiate Indefinite Drawing */
void drawSquareWave(){
 for(; !kbhit(); ){
    goStraight();
    drawUpperPortion();
    goStraight();
    drawLowerPortion();
  }
}

/* Print Current Position */
void printCurrentPosition(int position){
 /* 1. Straight */
 if (position == 1){
  gotoxy(35, 20);
  printf("Draw Straight! ", column, row);
 }
 /* 2. Up */
 else if (position == 2){
  gotoxy(35, 20);
  printf("Draw Up!       ", column, row);
 }
 /* 3. Down */
 else if (position == 3) {
  gotoxy(35, 20);
  printf("Draw Down!     ", column, row);
 }
 /* 4. End of the Wave */
 else if (position == 4){
   gotoxy(30, 20);
   printf("Square Wave Completed !!");
 }
}

/* Check Column */
int checkColumn(){
  if ( (column+5) > 80) {
    printCurrentPosition(4);
    /* Clear the Screen and Continue the Indefinite Wave */
    clrscr();
    /* Reset the Square Wave Position once again */
    row    = DEFAULT_ROW;
    column = DEFAULT_COLUMN;
    gotoxy(column, row);
    /* Call Drawing Once again */
    drawSquareWave();
  }
  /* Ok, Valid Column */
  return 1;
}

/* Draw Upper Portion */
void drawUpperPortion(){
  goUp();
  goStraight();
  goDown();
}

/* Draw Lower Portion */
void drawLowerPortion(){
  goDown();
  goStraight();
  goUp();
}

/* Go Straight */
void goStraight(){
  int col, i, waveSpeed;
  /* Set Color */
  setColor();
  col = column;
  waveSpeed = WAVE_SPEED;
  if( checkColumn() ){
    for (i=col; i< (col+4); i++){
      /* increase column */
      column++;
      /* Print Position */
      printCurrentPosition(1);
      /* draw Wave */
      gotoxy(i, row);
      cprintf("*");
      /* Add Delay */
      delay(waveSpeed);
    }
  }
}

/* Go Up */
void goUp(){
  int rows, i, waveSpeed;
  /* Set Color */
  setColor();
  rows = row;
  waveSpeed = WAVE_SPEED;
  if( checkColumn() ){
    for (i=rows; i > (rows-4); i--){
      /* Print Position */
      printCurrentPosition(2);
      /* Draw Wave */
      gotoxy(column, i);
      cprintf("*");
      /* Add Delay */
      delay( waveSpeed );
      /* decrease row */
      row--;
    }
  }
}

/* Go Down */
void goDown(){
  int rows, i, waveSpeed;
  /* Set Color */
  setColor();
  rows = row;
  waveSpeed = WAVE_SPEED;
  if( checkColumn() ){
    for (i=rows; i< (rows+4); i++){
      /* Print Position */
      printCurrentPosition(3);
      /* Draw Wave */
      gotoxy(column, i);
      cprintf("*");
      /* Add Delay */
      delay(waveSpeed);
      /* increase row */
      row++;
    }
  }
}

/* getColor */
void setColor(){
 int color;
 int colorArray[14] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
 color = random(14);
 /* Restrict Zero - BLACK color */
 color = colorArray[color];
 textcolor(color);
}






 

Saturday, December 12, 2015

Get Random Row y position using C Program

Program #27

Description:
Get a random Y (Row) position using C Program.

#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
void main(){

  /* Local variable declaration */
  int randVal;

  /* Clear the Screen */
  clrscr();

  for (;!kbhit();){

    /* get random for Column */
    randVal = ( rand() % 100 );

    /* randVal range from 0 to 99
    but we are expecting ROW value
    but it ranges from 1 to 25 only */

    if (randVal >= 1 && randVal <= 25){
      printf("%d\t", randVal%100);
      delay(25);
    }
  }
  getch();
}


 

Get Random Column x position using C Program

Program #26

Description:
Get a random X (Column) position using C Program.

#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
void main(){
  /* Local variable Declaration */
  int randVal;
 
  /* Clear the Screen */
  clrscr();

  for (;!kbhit();){

    /* get random for Column */
    randVal = ( rand() % 100 );
   
 /* randVal range from 0 to 99,
 but we need value range from 1 to 80
 because of COLUMN position range from 1 to 80
 */
    if (randVal >= 1 && randVal <= 80){
      printf("%d\t", randVal%100);
     
   /* Add some delay to see the Random number in the Output screen */
   delay(25);
    }
  }

  getch();
}


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("*");
}



 

To Detect or Recognize Arrow Keys in C Program


Program #23

Description:
To Detect/Recognize Arrow Keys in C Program


/* Program to Detect Arrow Keys in C Program
UP Arrow    - 72
DOWN Arrow  - 80
LEFT Arrow  - 75
RIGHT Arrow - 77
*/

void main(){
  char inputKey, arrowKey;

 /* Clear the Screen */
  clrscr();
 
/* 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"); break;
 case 80: printf("DOWN"); break;
 case 75: printf("LEFT"); break;
 case 77: printf("RIGHT"); break;
      }
    }
  }
}



 

Detect Function Keys in C Program

Program #22

Description:
To get the Function key values using getch()


void main(){
  char inputKey;
 
/* Clear the Screen */
  clrscr();

  /* Detect Function Keys in C Program */
  while ( (inputKey = getch()) != '\r'){
    printf("%c:%d\n", inputKey, inputKey);
  }
}

 

Simple Animation - Drawing Border using C Program


Program #21

Description:
To draw Border in the Screen using dots.  All dots are in multi-colors. Once the border drawing completed.  System will prints success message.


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

/* global prototype declaration */
void setTextColor();

int main(){
  int leftPos=1, rightPos=25;
  int botPos=1, topPos=80;

 /* prototype declaration */
  void drawLeftBorder(int);
  void drawRightBorder(int);
  void drawTopBorder(int);
  void drawBottomBorder(int);
  void initialMessage();
  void finalMessage();
 
/* Clear Screen */
  clrscr();

  /* Initial Message */
  initialMessage();

  for(;!kbhit();){

     /* take a random color */
     setTextColor();

     if (botPos == 1 && topPos == 80 && leftPos <= 25 && rightPos >= 1){
       drawLeftBorder(leftPos++);
       drawRightBorder(rightPos--);
     }
     if (leftPos == 25 && rightPos == 1 && topPos >= 1 && botPos <= 80){
       drawBottomBorder(botPos++);
       drawTopBorder(topPos--);
     }

     if(leftPos == 25 && rightPos == 1 && botPos == 80 && topPos == 1){
       finalMessage();
       getch();

       /* End the Program Execution */
       return 0;
     }
  }
  getch();
  return 0;
}

/*  Draw Left Border */
void drawLeftBorder(int leftPos){
 gotoxy(1,leftPos);
 cprintf("*",leftPos);
 delay(100);
}

/*  Draw Right Border */
void drawRightBorder(int rightPos){
 gotoxy(80,rightPos);
 cprintf("*",rightPos);
 delay(100);
}

/*  Draw Top Border */
void drawTopBorder(int topPos){
 gotoxy(topPos,1);
 cprintf("*",topPos);
 delay(100);
}

/*  Draw Bottom Border */
void drawBottomBorder(int bottomPos){
 gotoxy(bottomPos, 25);
 cprintf("*",bottomPos);
 delay(100);
}

void finalMessage(){
  int i;
  gotoxy(30,12);
  setTextColor();
  cprintf("Border Drawing Completed!");
  gotoxy(30,13);
  for(i=1;i<=25;i++){
    printf("_");
    delay(100);
  }
}

void initialMessage(){
  int i;
  gotoxy(30,13);
  setTextColor();
  cprintf("Press any Key to EXIT!");
  gotoxy(30,14);
  for(i=1;i<=22;i++){
    printf("-");
    delay(100);
  }
}

void setTextColor(){
  int a;
  a = random(15);
  if (a == 0) {
    /* Restrict BLACK color */
    setTextColor();
  } else {
    textcolor(a);
  }
}



 

Friday, December 11, 2015

Get number input using C Program


Program #20

Description:
Get number [0-9] only as input from the user.  Even if user press characters, system will ignore and wait for valid input.  Once input reaches MAXLENGTH (user defined length) program will stop the execution.


#include<stdio.h>
#include<conio.h>
#include<dos.h>

/* user defined Constant to restrict max length */
#define MAXLENGTH 10

/* Global String Array */
char userInput[MAXLENGTH];
int main(){
 int i, charCounter=0;
 char c=' ';

 /* prototype declaration */
 void printReceivedInputs(int);

 clrscr();
 printf("\n!Important: Maximum %d valid characters only.\n", MAXLENGTH);
 for(i=1; i<46; i++){
   printf("-");
   delay(100);
 }
 printf("\nPlease Enter Integer value [0-9]:\n");

 for(;!kbhit();){
    c = getch();

    /* Stop getting input, If user press below keys
     Enter Key - 13
     ESC Key   - 27
     TAB Key   -  9
     Space Bar - 32
     Backspace -  8
    */

    if (charCounter == MAXLENGTH){
      printf("\n\n\nThanks for your Input!\n");
      for (i=0; i<22; i++){
 printf("_");
 delay(100);
      }
      break;
    } else if (c == 13 || c == 27 || c == 9 || c == 32 || c == 8){
      printf("\nUser Intruption !!");
      getch();
      return 0;
    }
   
/* Accept only Numbers, else ignore */
    else if (c >= 48 && c <= 57){
      userInput[charCounter++] = c;
     
/* Dynamically print the user input */
      printReceivedInputs(charCounter);
    }
 }

 printf("\n\nInput #\n%s", userInput);
 getch();
 return 0;
}

void printReceivedInputs(int charLen){
  int i;
  gotoxy(15,8);
 
  /* Clear the Output area */
  printf("          ");
 
  /* Start to print on perfect position */
  gotoxy(15,8);
  for (i=0; i<charLen; i++){
    printf("%c",userInput[i]);
  }
}


 

 

Identify Key Press using C program


Program #19


Description:
Identify Key Press using C program

int main(){
 char c=' ';
 clrscr();
 printf("\nPlease press a SPACE Bar to EXIT:\n");
 for(;!kbhit();){
    c = getch();
    if (c == ' '){
      return 0;
    } else {
      printf("%c:%d\t",c,c);
    }
 }
 getch();
 return 0;
}


 

Simple Animation using C Program


Program #17

Description:
Randomly move the position and rotate {/ \ | } symbols.


#include<conio.h>
#include<stdlib.h>
#include<dos.h>
void main(){
  int counter=0, rowValue=1, colValue=1, colorValue;

 /* function prototype declaration */
  int getRow();
  int getColumn();

 /* Clear the Screen */
  clrscr();

 /* Iterate Indefinite loop */
  for(;!kbhit();){
   
/* Move the Rotation every 32766 counter */
    if (counter%32766 == 0){
   /* Get New Row and Column */
      rowValue = getRow();
      colValue = getColumn();
     
/* Re-initialize counter as 0 once it reaches INT max value */
      if (counter == 32766){
 counter = 0;

/* Delay for a while in Milliseconds */
 delay(100);
      }
  
 /* Clear the Screen, and show a fresh as Rotation */
      //clrscr();
    }

   /* Increase the Counter */
    counter++;

    colorValue = getColor();
    textcolor(colorValue);
    gotoxy(colValue, rowValue);
    cprintf("|");
    gotoxy(colValue, rowValue);
    cprintf("/");
    gotoxy(colValue, rowValue);
    cprintf("\\");
   }
}

int getRow(){
  int rowNum=1, i=0;
  for(;i<25;i++){
   /* getting a randow row, if system gives 0, trying next number */
   rowNum = random(25);
    if (rowNum!=0){
      return rowNum;
    }
  }
  /* worst case, hope it won't return */
  return rowNum;
}

int getColumn(){
  int colNum=1, i=0;
  for(;i<80;i++){
   /* getting a randow column, if system gives 0, trying next number */
   colNum = random(80);
    if (colNum!=0){
      return colNum;
    }
  }
  /* worst case, hope it won't return */
  return colNum;
}

int getColor(){
   int color;
   /* getting a randow color */
   color = random(15);
   return color;
}


 

Indefinite loop in C Program


Program #16

Description:
To iterate indefinite loop until user press any keyboard characters.

void main(){
clrscr();
 /*
 Indefinite loop using kbhit() function
 kb  - KeyBoard
 hit - Type/Enter
 */
 for(;!kbhit();){
    printf(" * \t @ \t & \t %");
 }
 getch();
}

Note:
kbhit() functionality will not obey for few keyboard characters.. I am expecting the answer from blog readers.  Once you know the key.. Reply it.!!

Popular Posts