# Trung tâm xử lý sự cố > Hỏi-Đáp về Lập trình >  Ai đó giúp mình giải thuật game bắn bóng với

## diemktr

có ai biết giải thuật game bắn bóng tương tự như hình vẽ dưới chỉ giúp mình với

----------


## seo3m

bạn đưa ra ý tưởng của mình đi. nếu chỗ nào gặp khó khăn rồi mọi người sẽ giúp bạn. ok

----------


## damynghebaoan

đây là luận văn tốt nghiệp của mình. nhưng mình chưa biết một chút gì về lập trình game cả. mình mới đang ở bước tìm hiểu thôi.

----------


## bigrat96

#include <iostream.h>
#include <conio.h>

/* 1 / sqrt(2) */
#define fct 0.7071067
/* he so doi tu do sang radian */
#define rads 0.017453293
#define numball 5

#define intr 0x1c /* ngat thoi gian */
#ifdef __cplusplus
#define __cppargs ...
#else
#define __cppargs
#endif

void interrupt ( *oldhandler)(__cppargs);
int count=0;

void interrupt handler(__cppargs)
{
count ;
oldhandler();
}

/* bien toan cuc */
int numhit = 0;
int banhcon = numball;
int yten, xten;
int xbong, ybong;

void drawhit()
{
char s[3];
setcolor(black);
setfillstyle(solid_fill, black);
bar(65, getmaxy()-19, 90, getmaxy()-1);
sprintf(s, "%d", numhit);
setcolor(green);
outtextxy(68, getmaxy()-13, s);
}

void drawbong(int color, int huong)
{
setcolor(color);
setfillstyle(solid_fill, color);
fillellipse(xbong, ybong, 6, 8);
if (huong)
{
line(xbong, ybong 10, xbong-4, ybong 12);
line(xbong, ybong 9, xbong-4, ybong 12);
}
else
{
line(xbong, ybong 10, xbong 4, ybong 12);
line(xbong, ybong 9, xbong 4, ybong 12);
}
}

void drawcon()
{
char s[3];
setcolor(black);
setfillstyle(solid_fill, black);
bar(140, getmaxy()-19, 180, getmaxy()-1);
sprintf(s, "%d", banhcon);
setcolor(green);
outtextxy(145, getmaxy()-13, s);
}

void drawten(int color)
{
setcolor(color);
line(xten, yten, xten 13, yten);
line(xten 9, yten-3, xten 13, yten);
line(xten 9, yten 3, xten 13, yten);
}

void run()
{
char c, ban;
int huong, tocdo;
setcolor(yellow);
rectangle(0, 0, getmaxx(), getmaxy());
line(0, getmaxy()-20, getmaxx(), getmaxy()-20);
outtextxy(10, getmaxy()-13, "trung :");
outtextxy(100, getmaxy()-13, "con :");
drawhit();
yten = 5;
xten = 3;
drawten(white);
ban = 0;
ybong = getmaxy() - 40;
xbong = getmaxx() - 10;
huong = 1;
drawbong(red, huong);
drawcon();
randomize();
tocdo = random(3) 1;
do {
if (kbhit() && !ban)
{
c = getch();
if (c == 0)
c = getch();
drawten(black);
switch (c)
{
case 'h' : if (yten > 5)
yten -= 5;
break;
case 'p' : if (yten < getmaxy()-25)
yten = 5;
break;
case 32 : ban = 1;
}
drawten(white);
}
if (ban)
{
drawten(black);
xten =3;
drawten(white);
delay(10);
if ((abs(xbong-xten-13) 1)
{
count = 0;
drawbong(black, huong);
ybong -= tocdo;
if (huong)
huong = 0;
else
huong = 1;
drawbong(red, huong);
}
if (ybong < 10)
{
drawbong(black, huong);
ybong = getmaxy() - 40;
xbong = getmaxx() - 10;
drawbong(red, huong);
banhcon--;
drawcon();
count = 0;
tocdo = random(3) 1;
}
} while (c != 27 && banhcon > 0);
}

void main()
{
int gr_drive = detect, gr_mode;

oldhandler = getvect(intr);
setvect(intr, handler);
initgraph(&gr_drive, &gr_mode, "c:\\borland\bgi");
run();
getch();
closegraph();
setvect(intr, oldhandler);
}
bạn có thể tham khảo bài trên. sử dụng c++ hay dev c để chạy và chỉnh sửa lại. 
chúc thành công!!!!

----------

