Press
me game in C:- In this game when you try to bring mouse near a button
it moves away from the mouse, so you keep on trying pressing the button.
In this game we have the coordinates of current position of mouse
pointer at every moment of time, whenever we find mouse pointer very
close to button we move the button suitably.
Download executable file of press me button game.
C programming code
#include <stdio.h> #include <conio.h> #include <dos.h> #include <graphics.h> #include <stdlib.h> union REGS i, o; int left = 265, top = 250; void initialize_graphics_mode() { int gd = DETECT, gm, error; initgraph(&gd,&gm,"C:\\TC\\BGI"); error = graphresult(); if (error != grOk) { perror("Error "); printf("Press any key to exit...\n"); getch(); exit(EXIT_FAILURE); } } void showmouseptr() { i.x.ax = 1; int86(0x33,&i,&o); } void hidemouseptr() { i.x.ax = 2; int86(0x33,&i,&o); } void getmousepos(int *x,int *y) { i.x.ax = 3; int86(0x33,&i,&o); *x = o.x.cx; *y = o.x.dx; } void draw_bar() { hidemouseptr(); setfillstyle(SOLID_FILL,CYAN); bar(190,180,450,350); showmouseptr(); } void draw_button(int x, int y) { hidemouseptr(); setfillstyle(SOLID_FILL,MAGENTA); bar(x,y,x+100,y+30); moveto(x+5,y); setcolor(YELLOW); outtext("Press me"); showmouseptr(); } void draw() { settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2); outtextxy(155,451,"<a href="http://www.programmingsimplified.com"">www.programmingsimplified.com"</a>); setcolor(BLUE); rectangle(0,0,639,450); setcolor(RED); outtextxy(160,25,"Try to press the \"Press me\" button"); outtextxy(210,50,"Press escape key to exit"); setfillstyle(XHATCH_FILL,GREEN); setcolor(BLUE); bar(1,1,75,449); bar(565,1,638,449); showmouseptr(); draw_bar(); draw_button(left,top); } void initialize() { initialize_graphics_mode(); if( !initmouse() ) { closegraph(); printf("Unable to initialize the mouse"); printf("Press any key to exit...\n"); getch(); exit(EXIT_SUCCESS); } draw(); } int initmouse() { i.x.ax = 0; int86(0x33,&i,&o); return ( o.x.ax ); } void get_input() { int x, y; while(1) { getmousepos(&x,&y); /* mouse pointer in left of button */ if( x >= (left-3) && y >= (top-3) && y <= (top+30+3) && x < left ) { draw_bar(); left = left + 4; if (left > 350) left = 190; draw_button(left,top); } /* mouse pointer in right of button */ else if (x<=(left+100+3)&&y>=(top-3)&&y<=(top+30+3)&&x>(left+100)) { draw_bar(); left = left - 4; if (left < 190) left = 350; draw_button(left,top); } /* mouse pointer above button */ else if(x>(left-3) && y>=(top-3) && y<(top) && x<= (left+100+3)) { draw_bar(); top = top + 4; if (top > 320) top = 180; draw_button(left,top); } /* mouse pointer below button */ else if (x>(left-3)&&y>(top+30)&&y<=(top+30+3)&&x<=(left+100+3)) { draw_bar(); top = top - 4; if (top < 180) top = 320; draw_button(left,top); } if (kbhit()) { if (getkey() == 1) exit(EXIT_SUCCESS); } } } int getkey() { i.h.ah = 0; int86(22,&i,&o); return( o.h.ah ); } main() { initialize(); get_input(); return 0; }
No comments:
Post a Comment