Thứ Tư, 27 Tháng Mười Một 2024
Trang chủLập trìnhLập trình C/C++Lập trình ứng dụng giúp bé học toán trên C/C++ màn hình...

Lập trình ứng dụng giúp bé học toán trên C/C++ màn hình Console

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

  1. 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++
5 1 Bỏ phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?

Dịch vụ code thuê

TUICOCACH.COM NHẬN ĐẶT TEXTLINK, BANNER, GP
0
Giáo sư! có thể ném gạch bên dưới nhé!x