Untitled

 avatar
unknown
csharp
10 days ago
3.4 kB
3
Indexable
using System;

public class BaiTap64
{
    // Hàm vẽ cửa sổ với nét đơn
    static void DrawWindow(int cotTrai, int hangTren, int cotPhai, int hangDuoi)
    {
        // Kiểm tra tọa độ hợp lệ cơ bản
        if (cotTrai >= cotPhai || hangTren >= hangDuoi ||
            cotTrai < 0 || hangTren < 0 ||
            cotPhai >= Console.WindowWidth || hangDuoi >= Console.WindowHeight)
        {
            Console.WriteLine("\nLỗi: Tọa độ cửa sổ không hợp lệ hoặc ra ngoài màn hình.");
            return;
        }

        // Ký tự vẽ 
        char gocTrenTrai = '┌';
        char gocTrenPhai = '┐';
        char gocDuoiTrai = '└';
        char gocDuoiPhai = '┘';
        char ngang = '─';
        char doc = '│';

        ConsoleColor mauChuCu = Console.ForegroundColor;
        ConsoleColor mauNenCu = Console.BackgroundColor;

        try
        {
            // Vẽ góc trên trái
            Console.SetCursorPosition(cotTrai, hangTren);
            Console.Write(gocTrenTrai);

            // Vẽ góc trên phải
            Console.SetCursorPosition(cotPhai, hangTren);
            Console.Write(gocTrenPhai);

            // Vẽ góc dưới trái
            Console.SetCursorPosition(cotTrai, hangDuoi);
            Console.Write(gocDuoiTrai);

            // Vẽ góc dưới phải
            Console.SetCursorPosition(cotPhai, hangDuoi);
            Console.Write(gocDuoiPhai);

            // Vẽ đường ngang trên và dưới
            for (int c = cotTrai + 1; c < cotPhai; c++)
            {
                Console.SetCursorPosition(c, hangTren);
                Console.Write(ngang);
                Console.SetCursorPosition(c, hangDuoi);
                Console.Write(ngang);
            }

            // Vẽ đường dọc trái và phải
            for (int r = hangTren + 1; r < hangDuoi; r++)
            {
                Console.SetCursorPosition(cotTrai, r);
                Console.Write(doc);
                Console.SetCursorPosition(cotPhai, r);
                Console.Write(doc);
            }
        }
        catch (ArgumentOutOfRangeException ex)
        {
             // Console.WriteLine($"\nLỗi khi vẽ: {ex.Message}");
        }
        finally
        {
            Console.ForegroundColor = mauChuCu;
            Console.BackgroundColor = mauNenCu;
            // Đặt con trỏ vào trong cửa sổ sau khi vẽ
            try { Console.SetCursorPosition(cotTrai + 1, hangTren + 1); } catch { }
        }
    }

    public static void Main(string[] args)
    {
        Console.OutputEncoding = System.Text.Encoding.UTF8;
        Console.InputEncoding = System.Text.Encoding.UTF8;

        Console.WriteLine("Hàm vẽ cửa sổ DrawWindow");

        int c1 = 5, r1 = 2;
        int c2 = 40, r2 = 10;

        Console.WriteLine($"\nĐang vẽ cửa sổ từ ({c1},{r1}) đến ({c2},{r2})...");
        Console.CursorVisible = false; // Ẩn con trỏ cho đẹp

        DrawWindow(c1, r1, c2, r2);

        Console.SetCursorPosition(c1 + 2, r1 + 1);
        Console.Write("Đây là nội dung bên trong cửa sổ");

        Console.SetCursorPosition(0, r2 + 2); // Di chuyển con trỏ ra ngoài sau khi vẽ xong
        Console.CursorVisible = true; // Hiện lại con trỏ
        Console.WriteLine("\nVẽ xong.");
    }
}
Editor is loading...
Leave a Comment