Sie sind auf Seite 1von 7

1.

/*C program to design flying characters Screen Saver.*/

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>

/*will return character based on passed number*/


char getCHAR(int n)
{
char ok[]="~!@#$%^&*:;'\",{}|<>=";
return ok[n];
}

/*function to identify that any key hit by the keyboard*/


int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;

tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);

ch = getchar();

tcsetattr(STDIN_FILENO, TCSANOW, &oldt);


fcntl(STDIN_FILENO, F_SETFL, oldf);

if(ch != EOF)
{
ungetc(ch, stdin);
return 1;
}

return 0;
}

/*move cursor on specified position on screen*/


void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}

int main(void) {
int x,y;
long int i,j;
i=j=0;

x=1; y=20;
system("clear");

/*program will run until any key hit*/


while(!kbhit())
{
x=rand()%((150-1+1)+1);
y=rand()%((50-1+1)+1);
gotoxy(x,y);
printf("%c", getCHAR(rand()%((20-1+1)+1))); fflush(stdout);
++i;
if(i==10000) {++j; i=0;}
if(j==100000){ i=0;}
if(j<=100)
usleep(30000);
if(j<=1000)
usleep(3000);
if(j<=10000)
usleep(300);
}
return 0;
}

2. /*C program to design a TIC TAC TOE game.*/

#include <stdio.h>
#include <stdlib.h>

/*print matrix*/
void printMatrix(char val);
/*update value in matrix*/
void insertValue(int i,int j,unsigned char user);
/*check matrix is full or not*/
unsigned char isFull(void);
/*check game is completed or not.*/
unsigned char isOver(void);
unsigned char mat[3][3]={'_','_','_','_','_','_','_','_','_'};
unsigned char usertern=0;
unsigned char onlyOnce=0;

int main()
{
unsigned char user1[30],user2[30],winner;
int ival,jval;

printf("\nEnter name of user1 :");


gets(user1);
fflush(stdin);

printf("Enter name of user2 :");


gets(user2);
fflush(stdin);

again:
system("clear");
printf("\n\n\n\n");
if(!onlyOnce) {printMatrix(0); onlyOnce=1;}
else { printMatrix(1);}
winner=isOver();

if(winner)
{
printf("\n *** Congratulations Dear %s ,\n You have won the
game . !!!!",((winner=='X')?user1:user2));
goto end;
}

if(!isFull()) {printf("\n *** Game Over ."); goto end;}

repeat:
fflush(stdin);
printf("\n *** %s , Enter value (00-22) seperated by space :",
(usertern==0x00?user1:user2));
scanf("%d%d",&ival,&jval);
if( (ival>2 || ival<0) || (jval>2 || jval<0)) {
printf("\n *** ERROR : Invalid index, try again !!!");
goto repeat;
}
if(mat[ival][jval]!='_'){printf("\n *** ERROR : Already filled,try
again !!!"); goto repeat;}
insertValue(ival,jval,usertern);
usertern=!usertern;
goto again;
end:
printf("\n");return 0;
}

void printMatrix(char val)


{
unsigned char i,j;
if(!val){
/*For blank matrix*/

for(i=0;i<3;i++){
printf("\t\t\t");
for(j=0;j<3;j++){printf("[%3c ] ",mat[i][j]);} printf("\n");
}

return;
}
for(i=0;i<3;i++){
printf("\t\t\t");
for(j=0;j<3;j++){printf("[%3c ] ",mat[i][j]);} printf("\n");
}
return;
}

void insertValue(int i,int j,unsigned char user){


// printf("\n ##### %d, %d ###\n",i,j);
mat[i][j]=((user==0x00)?'X':'O');
}

unsigned char isFull(void){


unsigned char i,j,count=0;;
for(i=0;i<3;i++)
for(j=0;j<3;j++){ if(mat[i][j]=='_') ++count; }
return count;
}

unsigned char isOver(void){

unsigned char i,j,user;


unsigned char storeChar=0,flag;
int sum=0;
// case 1
/*sum of 'X'+'X'+'X' = 264 and sum of 'O'+'O'+'O' =237*/
flag=0;
for(i=0;i<3;i++)
{ sum=0;
for(j=0;j<3;j++)
{
if(mat[i][j]=='_') break;
sum+=mat[i][j];
storeChar=mat[i][j];
}

if(sum==237||sum==264){return storeChar;}
}

// case 2
for(i=0;i<3;i++)
{ sum=0;
for(j=0;j<3;j++)
{
if(mat[j][i]=='_') break;
sum+=mat[j][i];
storeChar=mat[j][i];
}

if(sum==237||sum==264){return storeChar;}
}

// case 3

for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<3;j++)
{
if(i==j){
if(mat[i][j]=='_') break;
sum+=mat[i][j];
storeChar=mat[i][j];
}
}
if(sum==237||sum==264){ return storeChar;}
}

return 0;

3.

/*C program to store date in an integer variable.*/


#include <stdio.h>

int main()
{
int dd,mm,yy;
int date;

printf("Enter date (dd/mm/yy) format: ");


scanf("%d/%d/%d",&dd,&mm,&yy);

printf("\nEntered date is: %02d/%02d/%04d\n",dd,mm,yy);

/*adding dd,mm,yy into date*/


/*an integer has 4 bytes and dd range is 1 to 31 , mm range is 1 to 12
which
*can be stored in 1 byte, 1 byte and in rest of 2 bytes
*we can store year.*/

date=0;
date |= (dd&0xff); /*dd storing in byte 0*/
date |= (mm&0xff)<<8; /*mm storing in byte 1*/
date |= (yy&0xffff)<<16; /*yy storing in byte 2 and 3*/

printf("Date in single variable: %d [Hex: %08X] \n",date,date);

/*Extracting dd,mm,yy from date (an integer value)*/

dd = (date &0xff); /*dd from byte 0*/


mm = ((date>>8)& 0xff); /*mm from byte 1*/
yy = ((date>>16)&0xffff); /*yy from byte 2 and 3*/

printf("Date after extracting: %02d/%02d/%04d\n",dd,mm,yy);

return 0;
}

4.

/*C program to format/extract ip address octets.*/

#include <stdio.h>
#include <string.h>
/*
Function : extractIpAddress
Arguments :
1) sourceString - String pointer that contains ip address
2) ipAddress - Target variable short type array pointer that will store ip
address octets
*/
void extractIpAddress(unsigned char *sourceString,short *ipAddress)
{
unsigned short len=0;
unsigned char oct[4]={0},cnt=0,cnt1=0,i,buf[5];

len=strlen(sourceString);
for(i=0;i<len;i++)
{
if(sourceString[i]!='.'){
buf[cnt++] =sourceString[i];
}
if(sourceString[i]=='.' || i==len-1){
buf[cnt]='\0';
cnt=0;
oct[cnt1++]=atoi(buf);
}
}
ipAddress[0]=oct[0];
ipAddress[1]=oct[1];
ipAddress[2]=oct[2];
ipAddress[3]=oct[3];
}
int main()
{
unsigned char ip[]={0};
short ipAddress[4];

printf("Enter IP Address (xxx.xxx.xxx.xxx format): ");


gets(ip);

extractIpAddress(ip,&ipAddress[0]);

printf("\nIp Address: %03d. %03d. %03d.


%03d\n",ipAddress[0],ipAddress[1],ipAddress[2],ipAddress[3]);

return 0;
}

Das könnte Ihnen auch gefallen