DANH SÁCH BÀI VIẾT Lập trình tỏ tình người yêu trên Graphics C/C++ – I LOVE YOU Lập trình Demo Ai Là Triệu Phú trên Graphics C/C++ Lập Trình C/C++ Vẽ và Tô Màu Trái Tim bằng Thư Viện Graphics Lập trình Đồng Hồ Thời Gian & Bấm Giờ Trên Graphics C/C++ Lập trình Game Flappy Bird Trên Graphics C/C++ Lập trình Demo ứng dụng Học lập trình trên Graphics C/C++ Lập trình I LOVE YOU trên Graphics C/C++ – Lập trình tỏ tình Crush Bóng bay lên trời – Lập trình Happy Birthday trên C/C++ Tỏ tình Crush bằng code C/C++ – I LOVE YOU ngôn ngữ C/C++ Cách tạo menu game trên thư viện Graphics C/C++ Lập trình game Cờ Caro trên C/C++ màn hình Console(Demo Game) Lập trình ứng dụng giúp bé học toán trên C/C++ màn hình Console Lập trình game Rắn săn mồi trên C/C++ màn hình Console(Demo Snake) Xây dựng demo Code Vượt vật cản trên màn hình Console C/C++
Trong loạt bài chia sẻ các demo và Source code, hôm nay mình sẽ chia sẻ code Lập trình Game Flappy Bird Trên Graphics C/C++ được xây dựng trên thư viện Graphics C/C++.
Lập trình Game Flappy Bird Trên Graphics C/C++
Video dưới đây là demo mà mình đã xây dựng và sẽ chia sẻ source code trong bài viết hôm nay, bạn xem qua nhé.
Demo game này tương đối đơn giản, mình xây xây dựng trên Graphics C/C++ với mục địch nghịch code và học thêm là chính. Game tương đối giật lag, nếu không muốn nói là rất giật lag, bạn có nhu cầu thăm khảo code có thể download về nhé.
- Kiếm tiền Accesstrade, kiếm tiền tại nhà với Accesstrade.vn – Tiếp thị liên kết
- MegaURL – Rút gọn link kiếm tiền có giá cao tại Việt Nam
- Top 4 App kiếm tiền online trên điện thoại tốt nhất 2022
Mình sẽ giải thích một số hàm như sau:
Các kiểu dữ liệu Struct định nghĩa
//Struc tọa độ
struct toado{
int x, y;//Tọa độ x, y
};
//struc định ngĩa con chim cánh cụt
struct flap{
toado td;
}bird;
//struc các ống chán(vật cản)
struct Barrier{
toado br[10]; //Khai báo bao gồm 10 ống chán
}BR;
void init() – Hàm khởi tạo
void init()
{
bird.td.x=50; bird.td.y=250; //Khởi tạo tọa độ chim cánh cụt
//vòng lặp for khởi tạo tọa độ các ống chán
for(int i=0;i<5;i++)
{
BR.br[i].x=900+i*200;
BR.br[i].y=rand()%200+240;
}
}
void BIRD() – Hàm Để vẽ chim cánh cụt
void BIRD()
{
setfillstyle(1,14); setcolor(14); fillellipse(bird.td.x,bird.td.y,25,18);//Than chim
setfillstyle(1,15); setcolor(15); fillellipse(bird.td.x+12,bird.td.y-9,8,4); //Mat
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x+12,bird.td.y-9,2,2); //Mat den
setfillstyle(1,4); setcolor(4); fillellipse(bird.td.x-13,bird.td.y,15,11);//Canh
setcolor(0); setlinestyle(1,2,3); line(bird.td.x+15,bird.td.y,bird.td.x+30,bird.td.y);
}
void DLBIRD() – Hàm Để xóa chim cánh cụt
void DLBIRD()
{
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x,bird.td.y,25,18);//Than chim
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x+12,bird.td.y-9,8,4); //Mat
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x-13,bird.td.y,15,11);//Canh
}
void control() – Hàm điều khiển chim cánh cụt bay lên xuống
void control()
{
bird.td.y+=2;
if(kbhit()){getch(); bird.td.y-=80;} //Nếu có phím nhấn thì tọa độ y chim cánh cụt trừ đi 80 chim sẽ bay lên(Trên màn hình Graphics tọa độ y sẽ ngược hướng với hệ trục tọa độ XYZ)
//Ngoài sử dụng bàn phím, 2 câu lệnh dưới đây cho phép có thể sử dụng chuột trái hoặc chuột phải để chơi
if(ismouseclick(WM_LBUTTONDOWN))//Chuột trái
{
int t1,t2;
getmouseclick(WM_LBUTTONDOWN, t1, t2); bird.td.y-=80;
}
if(ismouseclick(WM_RBUTTONDOWN))//Chuột phải
{
int t1,t2;
getmouseclick(WM_RBUTTONDOWN, t1, t2); bird.td.y-=80;
}
}
void display() – Hàm hiển thị
void display()
{
for(int i=0;i<5;i++)
{
setfillstyle(1,0);
bar(BR.br[i].x,BR.br[i].y,BR.br[i].x+40,450);
bar(BR.br[i].x,BR.br[i].y-190,BR.br[i].x+40,BR.br[i].y-400);
}
for(int i=0;i<5;i++)
{
BR.br[i].x--;
if(BR.br[i].x==-20) {
BR.br[i].x=1050;
BR.br[i].y=rand()%200+200;
}
}
for(int i=0;i<5;i++)
{
setfillstyle(1,2);
bar(BR.br[i].x,BR.br[i].y,BR.br[i].x+40,450);
bar(BR.br[i].x,BR.br[i].y-190,BR.br[i].x+40,BR.br[i].y-400);
}
}
void gameover(int &thua) – Hàm kiểm tra game over nếu chím cánh cụt bị chạm vào cột chán
void gameover(int &thua)
{
for(int i=0;i<5;i++)
{
if((BR.br[i].x<bird.td.x && BR.br[i].x+40>bird.td.x)&&(bird.td.y>BR.br[i].y || bird.td.y<BR.br[i].y-190)) thua=1;
else if(bird.td.y<0||bird.td.y>450) thua=1;
}
}
int main() – Hàm chính
int main()
{
initwindow(1050,600);
int thua;
int a;
do{
thua=0;
init();
BIRD();setfillstyle(1,0); bar(0,0,1050,600);
setfillstyle(1,15); bar(0,450,1050,600);
setcolor(12); settextstyle(6,0,9); setbkcolor(15); outtextxy(200,460,"Flappy Bird");
while(thua==0)
{
DLBIRD();
control();
BIRD();
display();
gameover(thua);
for(int i=0;i<3000000;i++);
}
setfillstyle(1,0); bar(0,0,1050,600);
setbkcolor(0); settextstyle(6,0,9);setcolor(12); outtextxy(100,200,"GAME OVER"); delay(2000);
fflush(stdin);
setfillstyle(1,0); bar(0,0,1050,600);
setbkcolor(0); settextstyle(6,0,5); setcolor(12); outtextxy(200,200,"Ban co muon choi lai(Y/N): ");
a=getch();
}while(a=='y'||a=='Y');
getch();
}
Chương trình
Đây là một chương trình trên thư viện Graphhics C/C++ nên để chạy thì bạn cần cài đặt thư viện Graphics trước đó, nếu như bạn đang vẫn chưa cài đặt thư viện Graphics hoặc chưa biết cách chạy chương trình trên màn hình Grpahics C/C++ thì hãy xem thêm bài viết này: Cài đặt thư viện Graphics trên IDE Dev C++.
Bạn không hiểu được ý nghĩa, cách dùng và tác dụng của các hàm đồ họa sử dụng trong chương trình dưới thì đọc tiếp bài viết này: Một số hàm đồ họa trong thư viện Graphics C/C++.
- Khóa học lập trình C/C++ từ A-Z cho người mới – Giảm giá 40% hôm nay
- Khóa học Java cơ bản dành cho người mới bắt đầu- Giảm 40% hôm nay
- Khóa học lập trình Android từ cơ bản đến thành thạo – Giảm ngay 40%
MÃ NGUỒN CHƯƠNG TRÌNH
#include <graphics.h>
#include <bits/stdc++.h>
struct toado{
int x, y;
};
struct flap{
toado td;
}bird;
struct Barrier{
toado br[10];
}BR;
void init()
{
bird.td.x=50;bird.td.y=250;
for(int i=0;i<5;i++)
{
BR.br[i].x=900+i*200;
BR.br[i].y=rand()%200+240;
}
}
void BIRD()
{
setfillstyle(1,14); setcolor(14); fillellipse(bird.td.x,bird.td.y,25,18);//Than chim
setfillstyle(1,15); setcolor(15); fillellipse(bird.td.x+12,bird.td.y-9,8,4); //Mat
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x+12,bird.td.y-9,2,2); //Mat den
setfillstyle(1,4); setcolor(4); fillellipse(bird.td.x-13,bird.td.y,15,11);//Canh
setcolor(0); setlinestyle(1,2,3); line(bird.td.x+15,bird.td.y,bird.td.x+30,bird.td.y);
}
void DLBIRD()
{
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x,bird.td.y,25,18);//Than chim
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x+12,bird.td.y-9,8,4); //Mat
setfillstyle(1,0); setcolor(0); fillellipse(bird.td.x-13,bird.td.y,15,11);//Canh
}
void control()
{
bird.td.y+=2;
if(kbhit()){getch(); bird.td.y-=80;}
if(ismouseclick(WM_LBUTTONDOWN))
{
int t1,t2;
getmouseclick(WM_LBUTTONDOWN, t1, t2); bird.td.y-=80;
}
if(ismouseclick(WM_RBUTTONDOWN))
{
int t1,t2;
getmouseclick(WM_RBUTTONDOWN, t1, t2); bird.td.y-=80;
}
}
void display()
{
for(int i=0;i<5;i++)
{
setfillstyle(1,0);
bar(BR.br[i].x,BR.br[i].y,BR.br[i].x+40,450);
bar(BR.br[i].x,BR.br[i].y-190,BR.br[i].x+40,BR.br[i].y-400);
}
for(int i=0;i<5;i++)
{
BR.br[i].x--;
if(BR.br[i].x==-20) {
BR.br[i].x=1050;
BR.br[i].y=rand()%200+200;
}
}
for(int i=0;i<5;i++)
{
setfillstyle(1,2);
bar(BR.br[i].x,BR.br[i].y,BR.br[i].x+40,450);
bar(BR.br[i].x,BR.br[i].y-190,BR.br[i].x+40,BR.br[i].y-400);
}
}
void gameover(int &thua)
{
for(int i=0;i<5;i++)
{
if((BR.br[i].x<bird.td.x && BR.br[i].x+40>bird.td.x)&&(bird.td.y>BR.br[i].y || bird.td.y<BR.br[i].y-190)) thua=1;
else if(bird.td.y<0||bird.td.y>450) thua=1;
}
}
int main()
{
initwindow(1050,600);
int thua;
int a;
do{
thua=0;
init();
BIRD();setfillstyle(1,0); bar(0,0,1050,600);
setfillstyle(1,15); bar(0,450,1050,600);
setcolor(12); settextstyle(6,0,9); setbkcolor(15); outtextxy(200,460,"Flappy Bird");
while(thua==0)
{
DLBIRD();
control();
BIRD();
display();
gameover(thua);
for(int i=0;i<3000000;i++);
}
setfillstyle(1,0); bar(0,0,1050,600);
setbkcolor(0); settextstyle(6,0,9);setcolor(12); outtextxy(100,200,"GAME OVER"); delay(2000);
fflush(stdin);
setfillstyle(1,0); bar(0,0,1050,600);
setbkcolor(0); settextstyle(6,0,5); setcolor(12); outtextxy(200,200,"Ban co muon choi lai(Y/N): ");
a=getch();
}while(a=='y'||a=='Y');
getch();
}
Cảm ơn bạn đã đọc hết bài viết! Chúc bạn học tốt!
XÊM THÊM
Tỏ tình Crush bằng code C/C++ – I LOVE YOU ngôn ngữ C/C++
Lập trình game Cờ Caro trên C/C++ màn hình Console(Demo Game)
Lập trình game Rắn săn mồi trên C/C++ màn hình Console(Demo Snake)
Xây dựng demo Code Vượt vật cản trên màn hình Console C/C++
Sao làm trên Dev c++ ko đc , lỗi code à ?
Code không lỗi, chắc bạn chưa chạy đúng cách…cái này xây dựng trên Grpahics nên cần có thư viện Graphcis và phải chọn biên dịch 32-bit Release…đọc bài viết này nha: https://tuicocach.com/huong-dan-cai-dat-thu-vien-graphics-tren-ide-devc-do-hoa-trong-dev-c/