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++
Ứng dụng bé học toán đây là tên do mình tự đặt, ứng dụng sẽ hoạt động như game Freaking Math. Chương trình sẽ đưa ngẫu nhiên các phép tính cộng trừ và có kết quả là đúng hoặc sai, người dùng cũng sẽ có 2 quyền lựa chọn đó Đúng hoặc Sai tương ứng. Chương trình này nhằm giúp luyện khả năng tính nhẩm với 2 phép toán trên.
Đương nhiên đây chỉ là một demo code trên Console C/C++ nên chương trình này chỉ nhằm mục đích học code, và mình đưa vào đây cho các bạn mới học có thể tải về nghịch, tìm hiểu và thăm khảo thêm.
Ứng dụng giúp bé học toán trên C/C++
Demo chương trình Ứng dụng giúp bé học toán trên C/C++.
Xây dựng chương trình
- Chương trình xử dụng 1 số thư viện như sau:
#include<stdio.h>
Thư viện stdio.h liên quan đến đầu vào và đầu ra. Chúng ta sẽ sử dụng các hàm trong thư viện này để nhận đầu vào từ bàn phím và xuất dữ liệu ra console(printf, scanf).
#include<windows.h>
Khai báo để sử dụng các hàm Định dạng nội dung Console(Thay đổi vị trí con trỏ, đổi màu văn bản…).
#include<conio.h>
Thư viện này khai báo để xử dụng hàm getch(), nhiều người chưa hiểu đúng bản chất của hàm này thì cho rằng đây là lệnh dừng màn hình. Nhưng đúng thì đây là lệnh để bắt 1 phím nhấn nha.
#include<conio.h>
Thư viện các hàm toán học.
3. Các hàm cần thiết
void gotoxy(int x,int y) – Hàm này để di chuyển con trỏ tới 1 điểm với tọa độ là x,y trên màn hình
void gotoxy(int x,int y)//x,y là tọa điểm x,y trên màn hình
{
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD a = {x, y}; SetConsoleCursorPosition(h, a);
}
Tọa độ trên màn hình Console thì hơi ngược một chút với tọa độ xy trong toán học. Gốc O sẽ từ vị trí bên trái và phía trên màn hình, tức là trục y sẽ ngược hướng xuống dưới, xem ảnh mình họa để hiểu hơn.
void TextColor(int x) – Hàm này để đổi màu văn bản, với x là màu cần truyền vào.
{
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD g = {x, y};
SetConsoleCursorPosition(h, g);
}
Màu văn bản x, sẽ chạy từ các số 0-12(Nếu lớn hơn thì chia dư 12). Với số 0 tương ứng màu đen cho tới màu số 12.
void resizeConsole(int width, int height) – Đặt kích thước cửa sổ màn hình Console
void resizeConsole(int width, int height) //Với width là chiều rộng, heigth là chiều cao
{
HWND console = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r);
MoveWindow(console, r.left, r.top, width, height, TRUE);
}
int main() – Hàm chính
int main()
{
resizeConsole(300,400); //Đặt kích thước màn hình với chiều rộng là 300, cao là 400
khung(); //Gọi hàm để vẽ khung bên trong
int chon = 0, dem = 1, dung1 = 0, dung2 = 0;
//Biến chọn sử dụng để lưu kết quả chọn của người dùng
//dem -> dem số câu vượt qua
//dung1 -> để gắn đáp án đúng phép toán tạo ra
//Chạy vòng lặp cho mỗi câu hỏi
do
{
gotoxy(1,1); TextColor(160); printf("Cau %d: ", dem); //in ra câu hỏi số hiện tại
Random_Phep_Toan(dung1); //Tạo ra đáp án ngẫu nhiên
Chon_Ket_Qua(chon, dung2); //CHO PHÉP NGƯỜI dùng chọn đáp án, sau đó hàm sẽ thực hiện kt đáp án
dem++; //Tang dem len 1
}while(dung1==dung2);
Tra_loi_sai();
Sleep(2500);
return 0;
}
void khung() – Hàm vẽ khung màn hình
void khung()
{
// Mau nen----------------------------------------
TextColor(240);//Đổ màu cần vẽ
//Duyệt vòng lặp for để ghi từng ký tự trong tọa đô i,j(Các vòng lặp phía bên dưới tương tự)
for(int i = 0; i<33; i++)
{
for(int j =0; j<26; j++)
{
gotoxy(i,j); printf(" ");
}
}
//Khung Ngoai-------------------------------------
TextColor(252);
for(int i = 0; i<=31; i++)
{
gotoxy(i, 0); printf("%c", 205);//Ký tự 205 trong bẳng mã ASCII
}
for(int i = 0; i<=31; i++)
{
gotoxy(i,26); printf("%c", 205);
}
for(int i = 0; i<=26; i++)
{
gotoxy(0, i); printf("%c", 186);
}
for(int i = 0; i<=26; i++)
{
gotoxy(32, i); printf("%c", 186);
}
gotoxy(0,0); printf("%c", 201);
gotoxy(0,26); printf("%c", 200);
gotoxy(32,0); printf("%c", 187);
gotoxy(32,26); printf("%c", 188);
gotoxy(13,25);TextColor(219); printf("4 %c!%c 6",27,26 );
gotoxy(8,13);TextColor(247); printf("fb.com/anchan679");
}
void Random_Phep_Toan(int &dung1) – Hàm sinh đáp án ngẫu nhiên
void Random_Phep_Toan(int &dung1)
{
//Mau nen cau hoi-------------------------------
TextColor(185);
for(int i = 0; i<26; i++)
{
for(int j =0; j<6; j++)
{
gotoxy(i+4,j+5); printf(" ");
}
}
int a = rand()%50, b = rand()%50, chon = rand()%2, ketqua;
//Tao dap an dung-----------------------------------------
if(chon == 0 || a<b) ketqua = a+b;
else if(chon == 1) ketqua = a-b;
int kqd = ketqua;
//Tao dap an sai----------------------------------------
int temp=rand()%20+1;
if(chon == 0 || a<b)
{
if(temp%3+1==1) ketqua = a+b+temp;
else if(temp%3+1==2) ketqua = a+b-temp;
else if(temp%3+1==3) ketqua = a+b/temp;
}
else if(chon == 1)
{
if(temp%3+1==1) ketqua = a+b+temp;
else if(temp%3+1==2) ketqua = a+b-temp;
else if(temp%3+1==3) ketqua = a+b/temp;
}
int kqs = ketqua;
//Hien thi Phep toan------------------------------------------
int randomKQ = rand()%2, kqcc;
if(randomKQ == 0)
{
kqcc = kqd;
dung1=2;
}
else if(randomKQ == 1)
{
kqcc = kqs;
dung1=3;
}
TextColor(185); gotoxy(11,7);
if(chon == 0 || a<b)
{
printf("%d + %d = %d",a, b, kqcc);
}
else if(chon == 1)
{
printf("%d - %d = %d",a, b, kqcc);
}
}
void Chon_Ket_Qua(int &chon, int &dung2) – Hàm cho phép chọn kết quả và kiểm tra kết quả
void Chon_Ket_Qua(int &chon, int &dung2)
{
//Lua chon ket qua------------------------------------------
char a;
int td = 0;
do
{
if(a=='4' || a=='6')
{
if(td==0) td=1;
else td=0;
}
if(td==1) {
TextColor(12); dung2 = 3;
}
else {
TextColor(156); dung2 = 2;
}
for(int i = 0; i<10; i++)
{
for(int j =0; j<6; j++)
{
gotoxy(i+3,j+17); printf(" ");
}
}
gotoxy(6,19); printf("Dung");
if(td==1) TextColor(156); else TextColor(12);
for(int i = 0; i<10; i++)
{
for(int j =0; j<6; j++)
{
gotoxy(i+20,j+17); printf(" ");
}
}
gotoxy(24,19); printf("Sai");
chon=1;
}while(a!=13);
}
void Tra_loi_sai() – Hàm thực hiện khi đáp án sai
void Tra_loi_sai()
{
TextColor(249);
for(int i = 0; i<31; i++)
{
for(int j =0; j<25; j++)
{
gotoxy(i+1,j+1); printf(" ");
}
}
gotoxy(5,11); printf("Ban da tra loi sai!!!");
}
Chương trình hoàn chỉnh ứng dụng bé học toán
MÃ NGUỒN CHƯƠNG TRÌNH
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <math.h>
void TextColor(int x)
{
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(h, x);
}
void gotoxy(int x, int y)
{
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD g = {x, y};
SetConsoleCursorPosition(h, g);
}
void resizeConsole(int width, int height)
{
HWND console = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r);
MoveWindow(console, r.left, r.top, width, height, TRUE);
}
void khung();
void Random_Phep_Toan(int &dung1);
void Chon_Ket_Qua(int &chon, int &dung2);
void Tra_loi_sai();
int main()
{
resizeConsole(300,400);
khung();
int chon = 0, dem = 1, dung1 = 0, dung2 = 0;
do
{
gotoxy(1,1); TextColor(160); printf("Cau %d: ", dem);
Random_Phep_Toan(dung1);
Chon_Ket_Qua(chon, dung2);
dem++;
}while(dung1==dung2);
Tra_loi_sai();
Sleep(2500);
return 0;
}
void khung()
{
// Mau nen----------------------------------------
TextColor(240);
for(int i = 0; i<33; i++)
{
for(int j =0; j<26; j++)
{
gotoxy(i,j); printf(" ");
}
}
//Khung Ngoai-------------------------------------
TextColor(252);
for(int i = 0; i<=31; i++)
{
gotoxy(i, 0); printf("%c", 205);
}
for(int i = 0; i<=31; i++)
{
gotoxy(i,26); printf("%c", 205);
}
for(int i = 0; i<=26; i++)
{
gotoxy(0, i); printf("%c", 186);
}
for(int i = 0; i<=26; i++)
{
gotoxy(32, i); printf("%c", 186);
}
gotoxy(0,0); printf("%c", 201);
gotoxy(0,26); printf("%c", 200);
gotoxy(32,0); printf("%c", 187);
gotoxy(32,26); printf("%c", 188);
gotoxy(13,25);TextColor(219); printf("4 %c!%c 6",27,26 );
gotoxy(8,13);TextColor(247); printf("fb.com/anchan679");
}
void Random_Phep_Toan(int &dung1)
{
//Mau nen cau hoi-------------------------------
TextColor(185);
for(int i = 0; i<26; i++)
{
for(int j =0; j<6; j++)
{
gotoxy(i+4,j+5); printf(" ");
}
}
int a = rand()%50, b = rand()%50, chon = rand()%2, ketqua;
//Tao dap an dung-----------------------------------------
if(chon == 0 || a<b) ketqua = a+b;
else if(chon == 1) ketqua = a-b;
int kqd = ketqua;
//Tao dap an sai----------------------------------------
int temp=rand()%20+1;
if(chon == 0 || a<b)
{
if(temp%3+1==1) ketqua = a+b+temp;
else if(temp%3+1==2) ketqua = a+b-temp;
else if(temp%3+1==3) ketqua = a+b/temp;
}
else if(chon == 1)
{
if(temp%3+1==1) ketqua = a+b+temp;
else if(temp%3+1==2) ketqua = a+b-temp;
else if(temp%3+1==3) ketqua = a+b/temp;
}
int kqs = ketqua;
//Hien thi Phep toan------------------------------------------
int randomKQ = rand()%2, kqcc;
if(randomKQ == 0)
{
kqcc = kqd;
dung1=2;
}
else if(randomKQ == 1)
{
kqcc = kqs;
dung1=3;
}
TextColor(185); gotoxy(11,7);
if(chon == 0 || a<b)
{
printf("%d + %d = %d",a, b, kqcc);
}
else if(chon == 1)
{
printf("%d - %d = %d",a, b, kqcc);
}
}
void Chon_Ket_Qua(int &chon, int &dung2)
{
//Lua chon ket qua------------------------------------------
char a;
int td = 0;
do
{
if(chon == 1) a=getch();
if(a=='4' || a=='6')
{
if(td==0) td=1;
else td=0;
}
if(td==1) {
TextColor(12); dung2 = 3;
}
else {
TextColor(156); dung2 = 2;
}
for(int i = 0; i<10; i++)
{
for(int j =0; j<6; j++)
{
gotoxy(i+3,j+17); printf(" ");
}
}
gotoxy(6,19); printf("Dung");
if(td==1) TextColor(156); else TextColor(12);
for(int i = 0; i<10; i++)
{
for(int j =0; j<6; j++)
{
gotoxy(i+20,j+17); printf(" ");
}
}
gotoxy(24,19); printf("Sai");
chon=1;
}while(a!=13);
}
void Tra_loi_sai()
{
TextColor(249);
for(int i = 0; i<31; i++)
{
for(int j =0; j<25; j++)
{
gotoxy(i+1,j+1); printf(" ");
}
}
gotoxy(5,11); printf("Ban da tra loi sai!!!");
}
XÊM THÊM 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++