Add to Favorites    Make Home Page 14709 Online  
 Language Categories  
 Our Services  

Home » C++ Home » Games Home » C++ to C ( LUDO GAME)

A D V E R T I S E M E N T

Search Projects & Source Codes:

Title C++ to C ( LUDO GAME)
Author akshay kumar srivastava
Author Email aks_mailin [at] rediffmail.com
Description Change C++ CLASS to STRUCT of C ,data members as well as
functions, using "pointers to functions".
Category C++ » Games
Hits 54321
Code Select and Copy the Code
/* Developed by "akshay kumar srivastava"*/ /* phone 09835457174 oct 2005*/ /* aks_mailin@rediffmail.com*/ /* dont press Esc key at start of game*/ #include<stdio.h> #include<graphics.h> #include<conio.h> #include<dos.h> #include<math.h> #include<stdlib.h> /* MOUSE FUNCTIONS FOR LUDO GAME */ int DetectMouse(void); void InitMouse(void); void ShowMouse(void); void HideMouse(void); void WhereMouse(int*,int*); int ButtClicked(void); int ButtReleased(void); int DetectMouse(void){ union REGS in,out; in.x.ax=0; int86(0x33,&in,&out); if(out.x.ax==0) return(0); else return(1); } void InitMouse(void) { union REGS in,out; in.x.ax=33; int86(0x33,&in,&out); return; } void HideMouse(void) { union REGS in,out; in.x.ax=2; int86(0x33,&in,&out); return; } void ShowMouse(void) { union REGS in,out; in.x.ax=1; int86(0x33,&in,&out); return; } void WhereMouse(int *x,int *y) { union REGS in,out; in.x.ax=3; int86(0x33,&in,&out); *x=(int)out.x.cx; *y=(int)out.x.dx; return; } int ButtClicked(void){ union REGS imouse,omouse; int mc,mr; imouse.x.ax = 3; int86(0x33,&imouse,&omouse); mc=omouse.x.bx; return(mc); } int ButtReleased(void){ int br; br=ButtClicked(); do{}while(ButtClicked()!=0); return br; } /* GLOBAL VARIABLES */ int background=0; int colorfortext=WHITE;//color used to display text int rec=MAGENTA;//color for border of rectangles int flagturn;//players turn=0 computer=1 int for6=0;//for 6 to come at regular intervals int dice_value_color[4]; /* USER DEFINED FUNCTIONS */ void draw_all(void); int player_chooses_house_color(void); void draw_house(int color_of_house,int top_left_x_coordinate,int top_left_y_coordinate); void draw_button_with_button_name(int top_left_x_coordinate,int top_left_y_coordinate,char* button_name); void show_mouse_click_on_button(int mouse_click_x_coordinate,int mouse_click_y_coordinate); int check_if_mouse_click_is_on_any_button (int mouse_click_x_coordinate,int mouse_click_y_coordinate); void throw1(int x_coordinate_for_dice ,int y_coordinate_for_dice,int counter_for_wait_at_last ,char dice_value); void throw2(int x_coordinate_for_dice ,int y_coordinate_for_dice,char dice_value); int throwdice(void); void messageout(char *message,int refresh_message=1); void messageclear(void); void initialise_house_with_ludos(int color_of_house); void load_path_information_in_ludos(int ludo_house_color); void winner(void); void about(void); void howtoplay(void); void redrawing(int ); int catchclickonludobutton(void) ; int forcomputer1(int); int forcomputer2(int); int forcomputer3(int); struct ludo{ int x[45]; int y[45]; int pos; int color; void (*ptr_ludo1)(int,int*,int*,ludo *); int (*ptr_check_if_ludo_move_requested_is_valid)(int ,ludo*); void (*ptr_move_ludo_to_new_position)( int ,ludo*); }; struct ludo lp[4],lc1[4],lc2[4],lc3[4]; /* ludo1 initialises the ludo class objects */ void ludo1(int col,int *ax,int *ay,ludo *node) { int i; for(i=0;i<=44;i++) { node->x[i]=*(ax); node->y[i]=*(ay); ax++;ay++; } node->color=col; node->pos=0; }//end of ludo1 int check_if_ludo_move_requested_is_valid(int dice,ludo *node) { /*return 1 move valid i.e proceed to movetopos,0 if not valid 2 if player cannot move any ludo*/ int i,j=0; if( (node->pos<=44-dice && node->pos!=0) || (node->pos==0 && dice==6) ) return(1); // ludo can move for(i=0;i<=3;i++) { if( (lp[i].pos+dice<=44 && lp[i].pos!=0) || (lp[i].pos==0 && dice==6) ) j=1;//i.e there is atleast one ludo which //can move with current dice value } if(j>0) return(2);//choose the correct ludo that can move else return(3);//no ludo can move at current dice value //and player has to skip chance }//end of check_if_ludo_move_requested_is_valid void move_ludo_to_new_position( int dice ,ludo *node) { HideMouse(); if(node->pos==0 && dice==6)//taking out of house on dice givig 6 { messageclear();dice=1;} dice=dice-1; int opos; opos=node->pos; int i; for(i=opos;i<=dice+opos;i++) { setcolor(7); circle(node->x[i],node->y[i],8); setfillstyle(1,7); floodfill(node->x[i],node->y[i],7); delay(50); {node->pos++; redrawing(node->color);} setcolor(node->color); circle(node->x[i+1],node->y[i+1],8); setfillstyle(1,node->color); floodfill(node->x[i+1],node->y[i+1],node->color); delay(50); } /*changing pos to 0 if ludo has been cut before redrawing all ludos*/ for(i=0;i<=3;i++) { if(node->x[node->pos]==lp[i].x[lp[i].pos] && node->y[node->pos]==lp[i].y[lp[i].pos] ) { if(node->color!=lp[i].color) lp[i].pos=0; } if(node->x[node->pos]==lc1[i].x[lc1[i].pos] && node->y[node->pos]==lc1[i].y[lc1[i].pos] ) { if(node->color!=lc1[i].color) lc1[i].pos=0; } if(node->x[node->pos]==lc2[i].x[lc2[i].pos] && node->y[node->pos]==lc2[i].y[lc2[i].pos] ) { if(node->color!=lc2[i].color) lc2[i].pos=0; } if(node->x[node->pos]==lc3[i].x[lc3[i].pos] && node->y[node->pos]==lc3[i].y[lc3[i].pos] ) { if(node->color!=lc3[i].color) lc3[i].pos=0; } }// end of for /* redrawing new positions of all ludos */ redrawing(lp[0].color); redrawing(lc1[0].color); redrawing(lc2[0].color); redrawing(lc3[0].color); /* to check who is the winner */ static int number_of_player_ludo_home=0; static int number_of_computer1_ludo_home=0; static int number_of_computer2_ludo_home=0; static int number_of_computer3_ludo_home=0; if(node->pos==44 && flagturn==0) number_of_player_ludo_home++; if(node->pos==44 && flagturn==1) number_of_computer1_ludo_home++; if(node->pos==44 && flagturn==2) number_of_computer2_ludo_home++; if(node->pos==44 && flagturn==3) number_of_computer3_ludo_home++; if(number_of_player_ludo_home==4) winner(); if(number_of_computer1_ludo_home==4) winner(); if(number_of_computer2_ludo_home==4) winner(); if(number_of_computer3_ludo_home==4) winner(); ShowMouse(); } //end of move_ludo_to_new_position //end of ludo class //struct ludo lp[4],lc1[4],lc2[4],lc3[4]; void changingcpptoc(void) { //struct ludo lp[4],lc1[4],lc2[4],lc3[4]; int zx; for( zx=0;zx<4;zx++) { lp[zx].ptr_ludo1=ludo1; lc1[zx].ptr_ludo1=ludo1; lc2[zx].ptr_ludo1=ludo1; lc3[zx].ptr_ludo1=ludo1; lp[zx].ptr_check_if_ludo_move_requested_is_valid=check_if_ludo_move_reques ted_is_valid; lc1[zx].ptr_check_if_ludo_move_requested_is_valid=check_if_ludo_move_reque sted_is_valid;; lc2[zx].ptr_check_if_ludo_move_requested_is_valid=check_if_ludo_move_reque sted_is_valid;; lc3[zx].ptr_check_if_ludo_move_requested_is_valid=check_if_ludo_move_reque sted_is_valid;; lp[zx].ptr_move_ludo_to_new_position=move_ludo_to_new_position; lc1[zx].ptr_move_ludo_to_new_position=move_ludo_to_new_position; lc2[zx].ptr_move_ludo_to_new_position=move_ludo_to_new_position; lc3[zx].ptr_move_ludo_to_new_position=move_ludo_to_new_position; //int (*ptr_check_if_ludo_move_requested_is_valid)(int ); //void (*ptr_move_ludo_to_new_position)( int ); }//for zx loop ends } void main() { changingcpptoc(); int colors[4]={RED,BLUE,YELLOW,GREEN}; int i,a,b,dice=0,playercolor;; draw_all(); InitMouse(); ShowMouse(); playercolor=player_chooses_house_color(); flagturn=0; dice_value_color[flagturn]=playercolor; load_path_information_in_ludos(playercolor);//gives life to correct color ludo as path depends on color /* this code helps in making the chance of throwing dice go in a clockwise mode what color may the player choose to play*/ i=3; while(i) { if(colors[i]==playercolor) break; i--; } int loop=i; while(1) { flagturn++; loop++; if(loop>=4) loop=0; load_path_information_in_ludos(colors[loop]); dice_value_color[flagturn]=colors[loop]; if(flagturn==3) break; } initialise_house_with_ludos(RED); initialise_house_with_ludos(BLUE); initialise_house_with_ludos(YELLOW); initialise_house_with_ludos(GREEN); flagturn=0; char ch; int check,tmp1=0,tmp2; enum choose {yes,nomore}; choose choose1=yes; delay(500); messageclear(); while(ch!=27) { if(kbhit()) ch=getch(); setcolor(RED); WhereMouse(&a,&b); if(ButtReleased()) { check=check_if_mouse_click_is_on_any_button (a,b); if(check>=1 && check<=4) show_mouse_click_on_button(a,b); switch(check) { case 1: {about();break;} case 4: {howtoplay(); break;} case 3: {exit(0);break;} case 2: {dice=throwdice(); break;} } //end of switch } //end of if(ButtRelease) /* players chance*/ if(flagturn==0) { messageout("PLAYER throwdice.best of luck. ",0); if(dice!=0) { if(dice==6) messageout("click on ludo button to take out of house or move"); else messageout("click on the ludo button to move"); while(choose1==yes) { choose1=nomore; tmp1=catchclickonludobutton(); tmp2=lp[tmp1].ptr_check_if_ludo_move_requested_is_valid(dice,&lp[tmp1]); switch(tmp2) { case 1: { lp[tmp1].ptr_move_ludo_to_new_position(dice,&lp[tmp1]); messageout("proceeding"); delay(1000); break; } case 2: { messageout("choose correct ludo to proceed"); delay(1000); choose1=yes; break; } case 3: { messageout("sorry,you will have to skip this time"); delay(1000); break; } }//switch ends }//end of while(choose1=yes) flagturn=1; choose1=yes; }//end of if(dice!=0) dice=0; }// end of if(flagturn==0) /*computer1 chance*/ if(flagturn==1) { messageout("now the computer1 will throw dice"); dice=throwdice(); if(dice!=0) { tmp1=forcomputer1(dice); if(tmp1!=5)//forcomputer(dice) returns 5 if no ludo can move lc1[tmp1].ptr_move_ludo_to_new_position(dice,&lc1[tmp1]); else messageout("computer1 has to skip this time."); } flagturn=2; messageclear(); dice=0; } /*computer2 chance*/ if(flagturn==2) { messageout("now the computer2 will throw dice"); dice=throwdice(); if(dice!=0) { tmp1=forcomputer2(dice); if(tmp1!=5)//forcomputer(dice) returns 5 if no ludo can move lc2[tmp1].ptr_move_ludo_to_new_position(dice,&lc2[tmp1]); else messageout("computer2 has to skip this time."); } flagturn=3; messageclear(); dice=0; } /*computer3 chance*/ if(flagturn==3) { messageout("now the computer3 will throw dice"); dice=throwdice(); if(dice!=0) { tmp1=forcomputer3(dice); if(tmp1!=5)//forcomputer(dice) returns 5 if no ludo can move lc3[tmp1].ptr_move_ludo_to_new_position(dice,&lc3[tmp1]); else messageout("computer3 has to skip this time."); } flagturn=0; messageclear(); dice=0; } dice=0; }//end of while }//end of main void draw_house(int col,int x,int y) { setcolor(rec); rectangle(x,y,x+120,y+120); setfillstyle(1,col); floodfill(x+10,y+10,rec); circle(x+30,y+30,10); setfillstyle(1,WHITE); floodfill(x+30,y+30,rec); circle(x+30,y+70,10); setfillstyle(1,WHITE); floodfill(x+30,y+70,rec); circle(x+90,y+30,10); setfillstyle(1,WHITE); floodfill(x+90,y+30,rec); circle(x+90,y+70,10); setfillstyle(1,WHITE); floodfill(x+90,y+70,rec); } void draw_button_with_button_name(int x,int y,char *message) { setcolor(rec); rectangle(x,y,x+110,y+30); setcolor(colorfortext); outtextxy(x+20,y+15,message); } void show_mouse_click_on_button(int x,int y) { HideMouse(); setfillstyle(1,7); floodfill(x,y,rec); delay(50); setfillstyle(1,0); floodfill(x,y,rec); draw_button_with_button_name(0,55,"about"); draw_button_with_button_name(120,55,"exit"); draw_button_with_button_name(0,55+35,"throw dice"); draw_button_with_button_name(120,55+35,"how to play"); ShowMouse(); } int check_if_mouse_click_is_on_any_button (int a,int b) { if(a>0 && a<110 && b>55 && b<85) return 1; else if(a>0 && a<110 && b>90 && b<120) return 2; else if(a>120 && a< 230 && b>55 && b<85) return 3; else if(a>120 && a< 230 && b>90 && b<120) return 4; else if(a>239 && a<359 && b>0 && b<120 ) return 5; else if(a>239 && a<359 && b>280 && b<400 ) return 6; else if(a>519 && a<639 && b>0 && b<120 ) return 7; else if(a>519 && a<659 && b>280 && b<400 ) return 8; else return 0; } int throwdice() { HideMouse(); int rn,count=0;char num; int x=0,y,flag=0; randomize(); for(y=150;y<=320;y=y+10,x=x+10) { rn=random(6)+1; /* using for6 to get a 6 on dice every 5th time to make the game a little faster*/ if(y==320) {for6++;} if(for6>=5) { rn=6; for6=0; } // cout<<for6; //if(y==320) // for6++; num=rn+48; if(flag==0) { throw2(x,y,num); flag=1; } else { count++; throw1(x,y,count,num); flag=0; } } settextstyle(0,0,0); ShowMouse(); return rn; } void throw1(int x,int y,int count,char num) { settextstyle(0,0,3); setcolor(WHITE); rectangle(x,y,x+35,y+35); //setcolor(RED); setcolor(dice_value_color[flagturn]); outtextxy(x+5,y+5,&num); delay(140); if(count==9) {delay(650); } setcolor(0); rectangle(x,y,x+35,y+35); outtextxy(x+5,y+5,&num); } void throw2(int x,int y,char num) { x=x-17;y=y+10; settextstyle(0,0,3); setcolor(WHITE); line(x,y,x+25,y+25); line(x,y,x+25,y-25); line(x+25,y+25,x+50,y); line(x+25,y-25,x+50,y); //setcolor(RED); setcolor(dice_value_color[flagturn]); outtextxy(x+15,y-10,&num); delay(140); setcolor(0); line(x,y,x+25,y+25); line(x,y,x+25,y-25); line(x+25,y+25,x+50,y); line(x+25,y-25,x+50,y); outtextxy(x+15,y-10,&num); } void messageout(char *message,int refresh) { if(refresh) messageclear(); setcolor(colorfortext); outtextxy(20,450,message); } void messageclear() { HideMouse(); setfillstyle(1,0); floodfill(20,450,rec); ShowMouse(); } void initialise_house_with_ludos(int color) { int x,y; switch(color) { case RED: {x=239;y=0;break;} case BLUE: {x=519;y=0;break;} case YELLOW: {x=639-120;y=280;break;} case GREEN: {x=239;y=280;break;} } draw_house(color,x,y); setcolor(rec); setfillstyle(1,color); { circle(x+30,y+30,8); floodfill(x+30,y+30,rec); } { circle(x+30,y+70,8); floodfill(x+30,y+70,rec); } { circle(x+90,y+30,8); floodfill(x+90,y+30,rec); } { circle(x+90,y+70,8); floodfill(x+90,y+70,rec); } } void load_path_information_in_ludos(int plcol) { int arx[45],ary[45]; switch(plcol) { case RED: { int arx[45]={269,284,314,344,379,379,379,379,379,439,499,499,499, 499,499,534,564,594,624,624,624,594,564,534,499, 499,499,499,499,439,384,384,384,384,384,344,314,284, 254,254,284,314,344,384,424}; int ary[45]={30,140,140,140,140,105,75,45,15,15,15,45,75,105,140,140, 140,140,140,200,260,260,260,260,260,295,325,355,385,385, 385,355,325,295,260,260,260,260,260,200,200,200,200,200, 200}; for(int tmp=0;tmp<=3;tmp++) { switch(tmp) { case 0: {arx[0]=269;ary[0]=30;break;} case 1: {arx[0]=329;ary[0]=70;break;} case 2: {arx[0]=329;ary[0]=30;break;} case 3: {arx[0]=269;ary[0]=70;break;} } switch(flagturn) { case 0: {lp[tmp].ptr_ludo1(RED,arx,ary,&lp[tmp]);break;} case 1: {lc1[tmp].ptr_ludo1(RED,arx,ary,&lc1[tmp]);break;} case 2: {lc2[tmp].ptr_ludo1(RED,arx,ary,&lc2[tmp]);break;} case 3: {lc3[tmp].ptr_ludo1(RED,arx,ary,&lc3[tmp]);break;} } } break;}//case RED ends case BLUE: { int arx[45]={549,499,499,499,499,534,564,594,624,624,624,594,564, 534,499,499,499,499,499,439,384,384,384,384,384,344, 314,284,254,254,254,284,314,344,379,379,379,379,379, 439,439,439,439,439,439 }; int ary[45]={30,45,75,105,140,140,140,140,140,200,260,260,260,260, 260,295,325,355,385,385,385,355,325,295,260,260,260, 260,260,200,140,140,140,140,140,105,75,45,15,15,45 ,75,105,140,185}; for(int tmp=0;tmp<=3;tmp++) { switch(tmp) { case 0: {arx[0]=549;ary[0]=30;break;} case 1: {arx[0]=549;ary[0]=70;break;} case 2: {arx[0]=609;ary[0]=30;break;} case 3: {arx[0]=609;ary[0]=70;break;} } switch(flagturn) { case 0: {lp[tmp].ptr_ludo1(BLUE,arx,ary,&lp[tmp]);break;} case 1: {lc1[tmp].ptr_ludo1(BLUE,arx,ary,&lc1[tmp]);break;} case 2: {lc2[tmp].ptr_ludo1(BLUE,arx,ary,&lc2[tmp]);break;} case 3: {lc3[tmp].ptr_ludo1(BLUE,arx,ary,&lc3[tmp]);break;} } } break;} case GREEN: { int arx[45]={269,384,384,384,384,344,314,284,254,254,254,284,314, 344,379,379,379,379,379,439,499,499,499,499,499,534, 564,594,624,624,624,594,564,534,499,499,499,499,499, 439,439,439,439,439,439 }; int ary[45]={30,355,325,295,260,260,260, 260,260,200,140,140,140,140,140,105,75,45,15,15,15,45 ,75,105,140,140,140,140,140,200,260,260,260,260, 260,295,325,355,385,385,355,325,295,260,215}; for(int tmp=0;tmp<=3;tmp++) { switch(tmp) { case 0: {arx[0]=269;ary[0]=310;break;} case 1: {arx[0]=329;ary[0]=350;break;} case 2: {arx[0]=329;ary[0]=310;break;} case 3: {arx[0]=269;ary[0]=350;break;} } switch(flagturn) { case 0: {lp[tmp].ptr_ludo1(GREEN,arx,ary,&lp[tmp]);break;} case 1: {lc1[tmp].ptr_ludo1(GREEN,arx,ary,&lc1[tmp]);break;} case 2: {lc2[tmp].ptr_ludo1(GREEN,arx,ary,&lc2[tmp]);break;} case 3: {lc3[tmp].ptr_ludo1(GREEN,arx,ary,&lc3[tmp]);break;} } } break;} case YELLOW: { int arx[45]={549,594,564,534,499,499,499,499,499,439,384,384,384, 384,384,344,314,284,254,254,254,284,314,344,379,379, 379,379,379,439,499,499,499,499,499,534,564,594,624, 624,594,564,534,499,454}; int ary[45]={310,260,260,260,260,295,325,355,385,385,385,355,325,295, 260,260,260,260,260,200,140,140,140,140,140,105,75,45,15, 15,15,45,75,105,140,140,140,140,140,200,200,200,200,200,200}; for(int tmp=0;tmp<=3;tmp++) { switch(tmp) { case 0: {arx[0]=549;ary[0]=310;break;} case 1: {arx[0]=549;ary[0]=350;break;} case 2: {arx[0]=609;ary[0]=310;break;} case 3: {arx[0]=609;ary[0]=350;break;} } switch(flagturn) { case 0: {lp[tmp].ptr_ludo1(YELLOW,arx,ary,&lp[tmp]);break;} case 1: {lc1[tmp].ptr_ludo1(YELLOW,arx,ary,&lc1[tmp]);break;} case 2: {lc2[tmp].ptr_ludo1(YELLOW,arx,ary,&lc2[tmp]);break;} case 3: {lc3[tmp].ptr_ludo1(YELLOW,arx,ary,&lc3[tmp]);break;} } } break;} }//switch ends } int catchclickonludobutton() { int a,b,i; while(1) { WhereMouse(&a,&b); if(ButtReleased()) { for(i=0;i<=3;i++) { if( abs(a-(lp[i].x[lp[i].pos])) < 8 && abs(b-(lp[i].y[lp[i].pos])) < 8 ) return i; } } } } void redrawing(int tmp) { int i; for(i=0;i<=3;i++) { if(tmp==lp[0].color) { setcolor(lp[i].color); circle(lp[i].x[lp[i].pos],lp[i].y[lp[i].pos],8); setfillstyle(1,lp[i].color); floodfill(lp[i].x[lp[i].pos],lp[i].y[lp[i].pos],lp[i].color); } if(tmp==lc1[0].color) { setcolor(lc1[i].color); circle(lc1[i].x[lc1[i].pos],lc1[i].y[lc1[i].pos],8); setfillstyle(1,lc1[i].color); floodfill(lc1[i].x[lc1[i].pos],lc1[i].y[lc1[i].pos],lc1[i].color); } if(tmp==lc2[0].color) { setcolor(lc2[i].color); circle(lc2[i].x[lc2[i].pos],lc2[i].y[lc2[i].pos],8); setfillstyle(1,lc2[i].color); floodfill(lc2[i].x[lc2[i].pos],lc2[i].y[lc2[i].pos],lc2[i].color); } if(tmp==lc3[0].color) { setcolor(lc3[i].color); circle(lc3[i].x[lc3[i].pos],lc3[i].y[lc3[i].pos],8); setfillstyle(1,lc3[i].color); floodfill(lc3[i].x[lc3[i].pos],lc3[i].y[lc3[i].pos],lc3[i].color); } }//for ends } /* deciding for computer1 which ludo to move */ int forcomputer1(int dice) { int i,j,tmp,poslpforlc[12]={0,0,0,0,0,0,0,0,0,0,0,0},cannotmove=5; /* checking if atleast one ludo can move at current dice value*/ for(i=0;i<=3;i++) { if( (lc1[i].pos<=44-dice && lc1[i].pos!=0) || (lc1[i].pos==0 && dice==6) ) cannotmove=0;//cannotmove=5 then no ludo can move } if(cannotmove==5) return 5; //position of players ludo in terms of computers1 ludo positions for(i=0;i<=3;i++) { for(j=1;j<=40;j++) { if( lc1[0].x[j]==lp[i].x[lp[i].pos] && lc1[0].y[j]==lp[i].y[lp[i].pos]) { poslpforlc[i]=j; } } } //position of computer2 ludo in terms of computer1 ludo positions for(i=4;i<=7;i++) { for(j=1;j<=40;j++) { if( lc1[0].x[j]==lc2[i-4].x[lc2[i-4].pos] && lc1[0].y[j]==lc2[i-4].y[lc2[i-4].pos]) { poslpforlc[i]=j; } } } //position of computer3 ludo in terms of computer1 ludo positions for(i=8;i<=11;i++) { for(j=1;j<=40;j++) { if( lc1[0].x[j]==lc3[i-8].x[lc3[i-8].pos] && lc1[0].y[j]==lc3[i-8].y[lc3[i-8].pos]) { poslpforlc[i]=j; } } }//end of i /*to cut opponents ludo button*/ for(i=0;i<=3;i++) { for(j=0;j<=11;j++) { if( dice==(poslpforlc[j] - lc1[i].pos) && lc1[i].pos!=0) return i; } } /* to move those ludos which are near the player ludos and have the gretest value of pos i.e position . it means saving the threatened ludo*/ int array[4]={0,0,0,0}; int a1=0,tmp1; for(i=0;i<=3;i++) { for(j=0;j<=11;j++) { if( (-poslpforlc[j] + lc1[i].pos)<=6 && (-poslpforlc[j] + lc1[i].pos)>=1 && lc1[i].pos+dice<=44 && poslpforlc[j]!=0 && lc1[i].pos<=40 ) {array[i]=lc1[i].pos;} } if(a1<=array[i]) a1=array[i];/* a1 has the greatest pos value */ } if(a1!=0) //to see that at least one ludo is threatened */ { for(i=0;i<=3;i++) //getting the ludo with greatest pos value { if(a1==array[i]) return i; } } //to take out ludo button from house for(i=0;i<=3;i++) { if(dice==6) { if(lc1[i].pos==0 ) return i; } } /*if ludo buttons are outside and option for cutting opponent or taking out own ludo button are not valid , using round robin for selecting ludo to move*/ static int ludolast=0; int firstround=0; for(i=0;i<=3;i++) { if(firstround==0) { if(ludolast!=3) {i=ludolast+1;} firstround++; } if(lc1[i].pos!=0 && lc1[i].pos+dice<=44 ) {ludolast=i;i=4;} if(i==3) i=-1; } return ludolast; //if ludo button is } /* deciding for computer2 which ludo to move */ int forcomputer2(int dice) { int i,j,tmp,poslpforlc[12]={0,0,0,0,0,0,0,0,0,0,0,0},cannotmove=5; /* checking if atleast one ludo can move at current dice value*/ for(i=0;i<=3;i++) { if( (lc2[i].pos<=44-dice && lc2[i].pos!=0) || (lc2[i].pos==0 && dice==6) ) cannotmove=0;//cannotmove=5 then no ludo can move } if(cannotmove==5) return 5; //position of players ludo in terms of computers2 ludo positions for(i=0;i<=3;i++) { for(j=1;j<=40;j++) { if( lc2[0].x[j]==lp[i].x[lp[i].pos] && lc2[0].y[j]==lp[i].y[lp[i].pos]) { poslpforlc[i]=j; } } } //position of computer1 ludo in terms of computer2 ludo positions for(i=4;i<=7;i++) { for(j=1;j<=40;j++) { if( lc2[0].x[j]==lc1[i-4].x[lc1[i-4].pos] && lc2[0].y[j]==lc1[i-4].y[lc1[i-4].pos]) { poslpforlc[i]=j; } } } //position of computer3 ludo in terms of computer2 ludo positions for(i=8;i<=11;i++) { for(j=1;j<=40;j++) { if( lc2[0].x[j]==lc3[i-8].x[lc3[i-8].pos] && lc2[0].y[j]==lc3[i-8].y[lc3[i-8].pos]) { poslpforlc[i]=j; } } }//end of i for(i=0;i<=11;i++) { } /*to cut opponents ludo button*/ for(i=0;i<=3;i++) { for(j=0;j<=11;j++) { if( dice==(poslpforlc[j] - lc2[i].pos) && lc2[i].pos!=0) {return i;} } } /* to move those ludos which are near the player ludos and have the gretest value of pos i.e position . it means saving the threatened ludo*/ int array[4]={0,0,0,0}; int a1=0,tmp1; for(i=0;i<=3;i++) { for(j=0;j<=11;j++) { if( (-poslpforlc[j] + lc2[i].pos)<=6 && (-poslpforlc[j] + lc2[i].pos)>=1 && lc2[i].pos+dice<=44 && poslpforlc[j]!=0 && lc2[i].pos<=40 ) {array[i]=lc2[i].pos;} } if(a1<=array[i]) a1=array[i];/* a1 has the greatest pos value */ } if(a1!=0) //to see that at least one ludo is threatened */ { for(i=0;i<=3;i++) //getting the ludo with greatest pos value { if(a1==array[i]) {return i;} } } //to take out ludo button from house for(i=0;i<=3;i++) { if(dice==6) { if(lc2[i].pos==0 ) {return i;} } } /*if ludo buttons are outside and option for cutting opponent or taking out own ludo button are not valid , using round robin for selecting ludo to move*/ static int ludolast=0; int firstround=0; for(i=0;i<=3;i++) { if(firstround==0) { if(ludolast!=3) {i=ludolast+1;} firstround++; } if(lc2[i].pos!=0 && lc2[i].pos+dice<=44 ) {ludolast=i;i=4;} if(i==3) i=-1; } return ludolast; //if ludo button is } /* deciding for computer3 which ludo to move */ int forcomputer3(int dice) { int i,j,tmp,poslpforlc[12]={0,0,0,0,0,0,0,0,0,0,0,0},cannotmove=5; /* checking if atleast one ludo can move at current dice value*/ for(i=0;i<=3;i++) { if( (lc3[i].pos<=44-dice && lc3[i].pos!=0) || (lc3[i].pos==0 && dice==6) ) cannotmove=0;//cannotmove=5 then no ludo can move } if(cannotmove==5) return(5); //position of players ludo in terms of computers1 ludo positions for(i=0;i<=3;i++) { for(j=1;j<=40;j++) { if( lc3[0].x[j]==lp[i].x[lp[i].pos] && lc3[0].y[j]==lp[i].y[lp[i].pos]) { poslpforlc[i]=j; } } } //position of computer2 ludo in terms of computer3 ludo positions for(i=4;i<=7;i++) { for(j=1;j<=40;j++) { if( lc3[0].x[j]==lc2[i-4].x[lc2[i-4].pos] && lc3[0].y[j]==lc2[i-4].y[lc2[i-4].pos]) { poslpforlc[i]=j; } } } //position of computer1 ludo in terms of computer3 ludo positions for(i=8;i<=11;i++) { for(j=1;j<=40;j++) { if( lc3[0].x[j]==lc1[i-8].x[lc1[i-8].pos] && lc3[0].y[j]==lc1[i-8].y[lc1[i-8].pos]) { poslpforlc[i]=j; } } }//end of i /*to cut opponents ludo button*/ for(i=0;i<=3;i++) { for(j=0;j<=11;j++) { if( dice==(poslpforlc[j] - lc3[i].pos) && lc3[i].pos!=0 ) return i; } } /* to move those ludos which are near the player ludos and have the gretest value of pos i.e position . it means saving the threatened ludo*/ int array[4]={0,0,0,0}; int a1=0,tmp1; for(i=0;i<=3;i++) { for(j=0;j<=11;j++) { if( (-poslpforlc[j] + lc3[i].pos)<=6 && (-poslpforlc[j] + lc3[i].pos)>=1 && lc3[i].pos+dice<=44 && lc3[i].pos<=40 && poslpforlc[j]!=0 ) {array[i]=lc3[i].pos;} } if(a1<=array[i]) a1=array[i];/* a1 has the greatest pos value */ } if(a1!=0) //to see that at least one ludo is threatened */ { for(i=0;i<=3;i++) //getting the ludo with greatest pos value { if(a1==array[i]) {return i;} } } //to take out ludo button from house for(i=0;i<=3;i++) { if(dice==6) { if(lc3[i].pos==0 ) return i; } } /*if ludo buttons are outside and option for cutting opponent or taking out own ludo button are not valid , using round robin for selecting ludo to move*/ static int ludolast=0; int firstround=0; for(i=0;i<=3;i++) { if(firstround==0) { if(ludolast!=3) {i=ludolast+1;} firstround++; } if(lc3[i].pos!=0 && lc3[i].pos+dice<=44 ) {ludolast=i;i=4;} if(i==3) i=-1; } return ludolast; //if ludo button is } void draw_all() { //registerbgidriver(EGAVGA_driver); //registerbgifont(sansserif_font); int gdriver = DETECT, gmode; /* request auto detection */ /* initialize graphics mode */ initgraph(&gdriver, &gmode, ""); /* writing text */ setcolor(background); settextstyle(0,0,0); setcolor (colorfortext); outtextxy(5,10,"(aks_mailin@rediffmail.com)"); outtextxy(5,20,"akshay presents"); outtextxy(5,30,"COMPUTER LUDO"); outtextxy(5,40,"GAME"); /* drawing rectangles */ setcolor(rec); rectangle(0,410,639,479); rectangle(0,0,230,50); setcolor(rec); rectangle(239,0,639,400); setfillstyle(1,7); floodfill(310,10,rec); draw_house(RED,239,0); draw_house(GREEN,239,280); draw_house(BLUE,639-120,0); draw_house(YELLOW,639-120,280); draw_button_with_button_name(0,55,"about"); draw_button_with_button_name(120,55,"exit"); draw_button_with_button_name(0,55+35,"throw dice"); draw_button_with_button_name(120,55+35,"how to play"); /*drawing sectors*/ setcolor(0); line(359,30,519,30 ); line(359,60,519,60 ); line(359,90,519,90 ); line(359,120,519,120 ); line(359,280,519,280); line(359,310,519,310); line(359,340,519,340 ); line(359,370,519,370 ); line(239,160,639,160 ); line(239,240,639,240 ); line(269,120,269,280); line(269+30,120,269+30,280 ); line(269+60,120,269+60,280 ); line(269+90,120,269+90,280 ); line(269+130,0,269+130,400 ); line(269+210,0,269+210,400 ); line(269+250,120,269+250,280 ); line(269+280,120,269+280,280 ); line(269+310,120,269+310,280 ); line(269+340,120,269+340,280 ); setfillstyle(1,WHITE); floodfill(439,200,background); setcolor(RED); outtextxy(420,190,"HOME"); return ; } int player_chooses_house_color(void) { char ch; int check; int a,b,playercolor=0; messageout("PLAYER,click YOUR lucky COLOR on the board "); while(ch!=27) { if(playercolor!=0) break;//come out of while if(kbhit()) ch=getch(); setcolor(RED); WhereMouse(&a,&b); if(ButtReleased()) { check=check_if_mouse_click_is_on_any_button (a,b); switch(check) { case 1: {show_mouse_click_on_button(a,b);about();break;} case 4: {show_mouse_click_on_button(a,b);howtoplay(); break;} case 3: {show_mouse_click_on_button(a,b);exit(0);break;} case 5: { messageout( "you have choosen red"); playercolor=RED; break;} case 6: { messageout( "you have choosen green"); playercolor=GREEN; break;} case 7: { messageout( "you have choosen blue"); playercolor=BLUE; break;} case 8: { messageout( "you have choosen yellow"); playercolor=YELLOW; break;} } //end of switch }//end of if(ButtRelease) }//end of while delay(500); return playercolor; } void about(void) { HideMouse(); setcolor(rec); rectangle(0,135,230,390); setcolor(colorfortext); outtextxy(5,150,"WELCOME to ComputerLudo"); outtextxy(5,160,"This software is developed"); outtextxy(5,170,"by"); outtextxy(5,180,""); outtextxy(5,190,""); outtextxy(5,210,"Akshay "); outtextxy(5,230,"U can send suggestions at"); outtextxy(5,240,"my Email:"); outtextxy(5,250,"aks_mailin@rediffmail.com"); outtextxy(5,260,"thanks"); outtextxy(5,310,"PRESS ANY KEY TO PROCEED ..."); getch(); setfillstyle(1,0); floodfill(5,300,rec); setcolor(0); rectangle(0,135,230,390); setcolor(rec); ShowMouse(); return ; } void winner() { HideMouse(); setcolor(rec); rectangle(0,135,230,390); setcolor(colorfortext); outtextxy(5,150,"welcome to ComputerLudo"); if(flagturn==0) { outtextxy(5,160,"CONGRATULATIONS"); outtextxy(5,170,"YOU WON THIS ROUND "); outtextxy(5,180,"OF"); outtextxy(5,190,"ComputerLudo"); outtextxy(5,210,"akshay thanks "); outtextxy(5,220,"you for trying this"); outtextxy(5,230,"game."); outtextxy(5,240,"thanks again."); outtextxy(5,310,"PRESS ANY KEY TO EXIT.."); } else { switch(flagturn) { case 1: {outtextxy(5,160,"COMPUTER1 WON THIS");break;} case 2: {outtextxy(5,160,"COMPUTER2 WON THIS");break;} case 3: {outtextxy(5,160,"COMPUTER3 WON THIS");break;} } outtextxy(5,170,"ROUND OF"); outtextxy(5,180,"ComputerLudo"); outtextxy(5,200,"BETTER LUCK NEXT TIME"); outtextxy(5,220,"akshay thanks "); outtextxy(5,230,"you for trying this"); outtextxy(5,240,"game."); outtextxy(5,250,"thanks again."); outtextxy(5,310,"PRESS ANY KEY TO EXIT.."); } getch(); exit(0); } void howtoplay() { HideMouse(); setcolor(rec); rectangle(0,135,230,390); setcolor(colorfortext); outtextxy(5,150,"This is a game between"); outtextxy(5,160,"COMPUTER and the PLAYER."); outtextxy(5,170,"Choose HOUSE by "); outtextxy(5,180,"clicking over the HOUSE of"); outtextxy(5,190,"your fovourite color."); outtextxy(5,200,"Get 6 on Dice to take a ludo"); outtextxy(5,210,"out of HOUSE.To make a ludo"); outtextxy(5,220,"MOVE click on it."); outtextxy(5,230,"CUT(send to house) computers"); outtextxy(5,240,"ludos by placing your ludos "); outtextxy(5,250,"over its ludos."); outtextxy(5,260,"One who gets all the ludos"); outtextxy(5,270,"HOME wins thE Game."); outtextxy(5,290,"FOLLOW THE MESSAGE BOX"); outtextxy(5,300,"GIVEN AT BOTTOM"); outtextxy(5,320,"thanks"); outtextxy(2,330,"Akshay."); outtextxy(5,350,"PRESS ANY KEY TO PROCEED ..."); getch(); setfillstyle(1,0); floodfill(5,300,rec); setcolor(0); rectangle(0,135,230,390); setcolor(rec); ShowMouse(); return ; }

Related Source Codes

Script Name Author
Moving ball screen saver karlmarx
The Classic Game of Snake & Ladder Lakshmi Narayana .A
Railway seat reservation question which comes in sapient VyomWorld
To calculate percentile Ravi Mathur
Send to folder ANIMESH SAHU
Analog clock and calendar Nazia & Rida
HIGH/LOW GAME MOLLY ARORA
Data structure (stack Implimentation) Swapnil B Adsure
Memory Game AnirudhSanyal
Easy Calc Anirudh Sanyal
GK Quiz Anirudh Sanyal
Hangman Game Manish Jain
Snakeman Manish Jain
Full month Calendar Nigi
Cursor shapes nigi

A D V E R T I S E M E N T




Google Groups Subscribe to SourceCodesWorld - Techies Talk
Email:

Free eBook - Interview Questions: Get over 1,000 Interview Questions in an eBook for free when you join JobsAssist. Just click on the button below to join JobsAssist and you will immediately receive the Free eBook with thousands of Interview Questions in an ebook when you join.

New! Click here to Add your Code!


ASP Home | C Home | C++ Home | COBOL Home | Java Home | Pascal Home
Source Codes Home Page

 Advertisements  

Google Search

Google

Source Codes World.com is a part of Vyom Network.

Vyom Network : Web Hosting | Dedicated Server | Free SMS, GRE, GMAT, MBA | Online Exams | Freshers Jobs | Software Downloads | Interview Questions | Jobs, Discussions | Placement Papers | Free eBooks | Free eBooks | Free Business Info | Interview Questions | Free Tutorials | Arabic, French, German | IAS Preparation | Jokes, Songs, Fun | Free Classifieds | Free Recipes | Free Downloads | Bangalore Info | Tech Solutions | Project Outsourcing, Web Hosting | GATE Preparation | MBA Preparation | SAP Info | Software Testing | Google Logo Maker | Freshers Jobs

Sitemap | Privacy Policy | Terms and Conditions
Copyright ©2003-2017 SourceCodesWorld.com, All Rights Reserved.
Page URL: http://www.sourcecodesworld.com/source/show.asp?ScriptID=1120


Download Yahoo Messenger | Placement Papers | Free SMS | C Interview Questions | C++ Interview Questions | Quick2Host Review