[Lập trình C++] Bài toán rơi chữ và bắt chữ!

[Lập trình C++] Bài toán rơi chữ và bắt chữ!

Đây là một bài toán dạng game đơn giản, từng chữ cái 1 rơi xuống, và công việc của chúng ta là nhập vào chữ cái đang rơi trước khi nó chạm vào vạch… và tất nhiên là phải nhập đúng rồi, các bạn có thể tham khảo đoạn code dưới đây của mình… Nếu có thắc mắc gì có thể để lại bình luận bên dưới và mình sẽ giải đáp 🙂

rơi chữ c++

c++ bài toán rơi chữ

Sau đây là source code của em nó

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

using namespace std;

void gotoxy(short x,short y)
{
	HANDLE hConsoleOutput;
	COORD Cursor_an_Pos = {x,y};
	hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hConsoleOutput,Cursor_an_Pos);
}

void layout(){
	gotoxy(0,0);
	for(int i=0;i<=5;i++) cout << "              n";
	gotoxy(0,0);
	cout << " ";
	for(char i='A';i<='Z';i++)
		cout << " " << i;
	gotoxy(0,20); cout << "_______________________________________________________";
}

int chardown(int s){
	srand(time(NULL));
	int col=rand()%26+1;
	int i=0;
	while(i<20&&!kbhit()){
		gotoxy(col*2,i);
		cout << " ";
		gotoxy(col*2,i+1);
		cout << char(64+col);
		Sleep(s);
		i++;
	}
	gotoxy(col*2,i); cout << " ";
	gotoxy(col*2,0); cout << char(64+col);
	if(i<20){
		char check=getch();
		if(check==char(96+col)||check==char(64+col))
		return 1;
		else return 0;
	} else {
		gotoxy(col*2,20);
		cout << "_";
		return 0;
	}
}

int main(){
	int lv;
	cout << "1: Level 1n2: Level 2n3: Level 3n4: Level 4n5: Level 5n";
	cout << "Nhap level: "; cin >> lv;
	layout();
	int d1=0,d2=0,speed=500/lv;
	while(d1<20&&d2<20&&speed>0){
		if(chardown(speed)==1){
			d1++;
			gotoxy(0,22);
			cout << "Ban duoc " << d1 << " diem!n";
		}else{
			d2++;
			gotoxy(0,23);
			cout << "May duoc " << d2 << " diem!n";
		}
		speed-=3;
	}
	gotoxy(0,24);
	system("pause");
	return 0;
}

Đây chỉ là thuật toán cơ bản, chưa hoàn thành tối ưu nên có góp ý hoặc thắc mắc gì các bạn bình luận bên dưới giúp mình nhé! cảm ơn ^^! Chúc các bạn học tập vui vẻ!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *