/* C PROGRAM TO DEMONSTRATE GRAPHICS GAME PRESS ME BUTTON */
/* AUTHOR : DEEPAK MAHAKALE 3RD YEAR IT SRCOEM, NAGPUR */
#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, "www.programmingsimplified.com");
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;
}
Amazon banner
Thursday, 30 August 2012
C PROGRAM TO DEMONSTRATE GRAPHICS GAME PRESS ME BUTTON
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment