Chương trình chạy chữ trên console c++

Em có đang làm một bài tập là Chạy 1 chữ trên console với các chức năng:

  • Ấn các phím điều khiển lên xuống để tăng/ giảm tốc độ.
  • Ấn các phím điều khiển sang trái/ phải để điều khiểu chiều chạy của chuỗi (vd: ấn phím sang phải chữ sẽ chạy từ trái sang phải, và trường hợp ngược lại)

.
Em có code để chữ chạy nhưng cái chức năng thì em không hiểu sao em nhấn phím UP nhưng tốc độ không thể tăng nhanh được ạ nên chưa hoàn thiện hết các chức năng!
Mong mọi người góp ý, em xin cảm ơn!

#include<iostream>
using namespace std;
#include<conio.h>
#include<iomanip>
#include<windows.h>
#include<cstring>

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 move(int x, int y, int s){
	string c = "HELLO, NICE TO MEET YOU!";
	while(y>=0){
		cout<<" ";
		x++;
		gotoxy(x, y);
		cout<<c;
		Sleep(s);
		gotoxy(x-1, y); cout<<" ";
		if(x == 80){
			system("cls");
			cout<<" ";
			x = 0; x++;
			gotoxy(x, y);
			Sleep(s);
		}
	}
}
	
void control(){
	int t = 600;
	while(t>0){
		move(10, 10, t);
		char a = getch();
		while(a == GetAsyncKeyState(VK_UP)){
			t -= 100;
			move(10, 10, t);
		}
	}
}

int main(){
	control();
	getch();
	return 0;
}

Gọi cái move() thứ nhất đã chạy vòng lặp trong move() vô hạn nên đâu có chạy đến chỗ GetAsyncKeyState(VK_UP).

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?