PDA

View Full Version : آموزش: ترسیم خطوط در کنسول اپلیکیشن



ROSTAM2
سه شنبه 12 مهر 1401, 19:29 عصر
سلام.
ی کنسول اپلیکیشن با این کد بسازید و بعد از دستور Draw و یک فاصله کاراکتر دلخواهتون رو تایپ کنید و Enter.

مثال ها: Draw Alt+176 Draw Alt+177 Draw Alt+206

بجای نوشتن کلمه Alt+ کلید Alt رو نگهدارید و عدد بعدی رو از کیبورد تایپ کنید:

154041

با این روش می شه تو کنسول اپ جدول طراحی کرد و متن ها رو تو خونه های جدول نوشت البته این کد برای نمونه و سرگرمیه:

Module Module1
Sub Main()
Dim Words() As String = {""}
Do Until Words(0).ToLower = "quit"
Console.Write("DRAW IN CONSOLE>")
Words = Console.ReadLine.Split(Space(1))
Select Case Words(0).ToLower
Case "draw"
Console.WriteLine()
Select Case Words.Length
Case 2
Console.Write(StrDup(1, vbTab))
Console.WriteLine("{0}{2}{4}", "▐", "║", StrDup(100, "█"), "║", "▌")
For i = 0 To 10
Console.Write(StrDup(1, vbTab))
Console.WriteLine("{0}{2}{4}", "▐", " ", StrDup(100, Words(1)), " ", "▌")
Next
Console.Write(StrDup(1, vbTab))
Console.WriteLine("{0}{2}{4}", "▐", "║", StrDup(100, "█"), "║", "▌")
Case Else
Console.Write(StrDup(1, vbTab))
Console.WriteLine("{0}{1}{2}{3}{4}", "▐", "║", StrDup(100, "█"), "║", "▌")
For i = 0 To 10
Console.Write(StrDup(1, vbTab))
Console.WriteLine("{0}{1}{2}{3}{4}", "▐", " ", StrDup(100, " "), " ", "▌")
Next
Console.Write(StrDup(1, vbTab))
Console.WriteLine("{0}{1}{2}{3}{4}", "▐", "║", StrDup(100, "█"), "║", "▌")
End Select
Console.WriteLine()
End Select
Loop
End Sub
End Module

ROSTAM2
چهارشنبه 13 مهر 1401, 07:36 صبح
سلام مجدد.
با این کد هر متنی که بعد از دستور Table بنویسید متن توی یک مستطیل قرار می گیره:
154042
این Case رو به Select Case از دستور پست قبل اضافه کنید و برای استفاده در کنسول تایپ کنید Table و بعد از یک فاصله متن دلخواهتون رو بنویسید:

Case "table"
Console.WriteLine()
Select Case Words.Length
Case Is >= 2
Dim Letter As String = ""
For i = 1 To Words.Length - 1
Letter += Words(i) + Space(1)
Next
Letter = Letter.Remove(Letter.Length - 1, 1)
Dim LLen, RLen, MLen, Center As Int16
Dim TableLen As Int16 = 0
TableLen = Letter.Length
MLen = Letter.Length
LLen = (TableLen / 2) - (MLen / 2)
RLen = LLen
Center = 1


Console.WriteLine("{0}{1}{2}{3}", vbTab, "┌", StrDup(TableLen, "─"), "┐")
For i = 1 To 1
Expr = If(i = Center, Letter, StrDup(MLen, " "))
Console.WriteLine("{0}{1}{2}{3}{4}{5}", vbTab, "│", StrDup(LLen, " "), Expr, StrDup(RLen, " "), "│")
Next
Console.WriteLine("{0}{1}{2}{3}", vbTab, "└", StrDup(TableLen, "─"), "┘")
End Select
Console.WriteLine()


برای ترسیم مستطیل دو خطه هم از این کد استفاده کنید:


Console.WriteLine("{0}{1}{2}{3}", vbTab, "╔", StrDup(TableLen, "═"), "╗")
For i = 1 To 1
Expr = If(i = Center, Letter, StrDup(MLen, " "))
Console.WriteLine("{0}{1}{2}{3}{4}{5}", vbTab, "║", StrDup(LLen, " "), Expr, StrDup(RLen, " "), "║")
Next
Console.WriteLine("{0}{1}{2}{3}", vbTab, "╚", StrDup(TableLen, "═"), "╝")



خطوط ذخیم:


Console.WriteLine("{0}{1}{2}{3}", vbTab, "▐", StrDup(TableLen, "▀"), "▌")
For i = 1 To 1
Expr = If(i = Center, Letter, StrDup(MLen, " "))
Console.WriteLine("{0}{1}{2}{3}{4}{5}", vbTab, "▐", StrDup(LLen, " "), Expr, StrDup(RLen, " "), "▌")
Next
Console.WriteLine("{0}{1}{2}{3}", vbTab, "▐", StrDup(TableLen, "▄"), "▌")

ROSTAM2
چهارشنبه 13 مهر 1401, 07:45 صبح
این هم لیست کاراکتر هایی که با گرفتن همزمان کلید Alt می شه نوشت:

154048

ROSTAM2
چهارشنبه 13 مهر 1401, 09:18 صبح
این هم ترسیم چارت توی کنسول اپ:

154043

این case رو به Select case از کد پست اول اضافه کنید و بعد از دستور chart اعداد ستونهای چارت رو از 0 تا 100 تایپ کنید مثل تصویرو:



Case "chart"
Console.WriteLine()
Select Case Words.Length
Case Is >= 2
Dim SLen As Int16
Dim ChartLen As Int16 = 0
Dim FillChar As Char = "░"
Console.WriteLine("{0}{1}{2}{3}", vbTab, "╔", StrDup((Words.Length * 4) - 2, "═"), "╗")
For i = 1 To 10
Expr = ""
For L = 1 To Words.Length - 1
ChartLen = Val(Words(L))
SLen = 10 - (ChartLen / 10)
Expr += If(i >= SLen, "██", StrDup(2, FillChar)) + StrDup(2, FillChar)
Next
Expr = Expr.Remove(Expr.Length - 2, 2)
Console.WriteLine("{0}{1}{2}{3}{4}{5}", vbTab, "║", StrDup(2, FillChar), Expr, StrDup(2, FillChar), "║")
Next
Console.WriteLine("{0}{1}{2}{3}", vbTab, "▀", StrDup((Words.Length * 4) - 2, "▀"), "▀")
End Select
Console.WriteLine()

ROSTAM2
جمعه 15 مهر 1401, 11:35 صبح
سلام مجدد.
نمونه نمایش آیتم های ورودی کاربر در یک جدول در کنسول اپلیکیشن!

154049

قبل از هرچیز باید عرض هر کدوم از ستون ها رو بر اساس بیشترین طول از متن موجود در ردیف اون ستون بدست آورد و برای چاپ عرض سلول بیشتر از طول متن بهش فاصله اضافه کرد.

ROSTAM2
شنبه 16 مهر 1401, 10:46 صبح
ترسیم چهار ضلعی در کنسول اپلیکیشن:
https://stackoverflow.com/questions/6006618/how-to-draw-a-rectangle-in-console-application

ROSTAM2
شنبه 16 مهر 1401, 10:51 صبح
این هم نمونه های مختلف ترسیم جدول تو کنسول اپ stack
https://stackoverflow.com/questions/856845/how-to-best-way-to-draw-table-in-console-app-c

ROSTAM2
دوشنبه 18 مهر 1401, 20:37 عصر
نمایش آیتم ها در جدول در کنسول اپ من به این مرحله رسیده:

154060

با List همه ستون ها که خواستیم نمایش داده می شه
با List Limit با تعداد کمی از فیلدهای مهم نمایش داده می شه
و با List PropertyNames اگر بجای PropertyNames نام خصوصیت یا فیلدها رو با فاصله بنویسیم لیستی با فیلدهای دلخواه نمایش داده می شود.