-
درود
دارم رویه یه چالش برنامه نویسی کار میکنم. به این صورت که در x, y های مختلف ده تا * نشون بده.تا حدود فهمیدم چیکار کنم ولی بعدش قاطی کردم.( کد برنامه رو میگم) این هم کد :
#include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>
int main(void)
{
initscr();
noecho();
cbreak();
clear();
curs_set(0);
refresh();
int table[10][10];
for (int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
table[random() % LINES][random() % COLS];
}
}
for(int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
mvprintw(i , j, "%4d", table[i][j]);
refresh();
}
}
refresh();
endwin();
return 0;
}
خب متاسفانه کد کلا چیزی رو نمایش نداد ولی با موفقیت کامپایل شد :D
-
خب جواب رو تا حدودی یافتم و واقعا از اون چیزی که فکر میکردم راحت تر بود \\:D/
#include <ncurses.h>
#include <stdlib.h>
int main()
{
initscr();
clear();
noecho();
cbreak();
curs_set(0);
refresh();
int x, y;
for (int i = 0;i< 10; i++)
{
x = rand() % COLS + i;
y = rand() % LINES + i;
mvprintw(y, x, "*");
refresh();
}
getch();
refresh();
endwin();
return 0;
}
فقط مشکلم با تابع rand هست. میخوام از srand استفاده کنم اما اروری که پیوست کردم رو میزاره. حتی تایپ کستنیگ هم کردم ولی باز اررو میده.
-
سعی نکنید همزمان کارها را با هم پیش ببرید. کارها را گام به گام انجام دهید.
پیش از تلاش برای نوشتن برنامهٔ گرافیکی نخست برنامهٔ چاپ ستارهها را بدون گرافیک و در محیط متنی بنویسید و به روش کلی کار مسلط شوید.
برای این برنامه پس از خواندن و مسلط شدن بر شیوهٔ کار ncurses
۱. یک ستاره چاپ کنید. (چاپ کردن یک کاراکتر با ncurses)
۲. کاراکتر چاپ شده را حرکت دهید. یعنی بتوانید در نقاط مختلف صفحهٔ گرافیکی کاراکتر ستاره را چاپ کنید.
۳. بررسی کنید چطور میشود کاراکترها را در کنار هم قرار داد.
۴. اگر میخواهید در نقاط تصادفی چاپ انجام شود از خروجی تابع RANDOM مطمئن شود.
۵. نمونه برنامههای ساده با این کتابخانه را ببینید و از روش آنها ایده بگیرید.
پیوندهای مرتبط
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO
https://dev.to/tbhaxor/introduction-to-ncurses-part-1-1bk5
https://invisible-island.net/ncurses/ncurses-intro.html
نمونه برنامهٔ آماده بازی snake
https://github.com/jvns/snake
-
سعی نکنید همزمان کارها را با هم پیش ببرید. کارها را گام به گام انجام دهید.
پیش از تلاش برای نوشتن برنامهٔ گرافیکی نخست برنامهٔ چاپ ستارهها را بدون گرافیک و در محیط متنی بنویسید و به روش کلی کار مسلط شوید.
برای این برنامه پس از خواندن و مسلط شدن بر شیوهٔ کار ncurses
۱. یک ستاره چاپ کنید. (چاپ کردن یک کاراکتر با ncurses)
۲. کاراکتر چاپ شده را حرکت دهید. یعنی بتوانید در نقاط مختلف صفحهٔ گرافیکی کاراکتر ستاره را چاپ کنید.
۳. بررسی کنید چطور میشود کاراکترها را در کنار هم قرار داد.
۴. اگر میخواهید در نقاط تصادفی چاپ انجام شود از خروجی تابع RANDOM مطمئن شود.
۵. نمونه برنامههای ساده با این کتابخانه را ببینید و از روش آنها ایده بگیرید.
پیوندهای مرتبط
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO
https://dev.to/tbhaxor/introduction-to-ncurses-part-1-1bk5
https://invisible-island.net/ncurses/ncurses-intro.html
نمونه برنامهٔ آماده بازی snake
https://github.com/jvns/snake
درود
اتفاقا قسمت اصلی برنامه رو نوشتم خوندن صفحه کلید( دارم یه مینی گیم مینویسم). خیلی ممنون الان میرم داکیومن ها رو چک میکنم
-
دارم رویه یه چالش
* روی
تا حدود فهمیدم چیکار کنم
* حدودی
ولی باز اررو میده.
ارور (یا بهتره بگیم خطا)
الان میرم داکیومن ها رو چک میکنم
داکیومنتها (یا بهتره بگیم مستندات)
سهپست داشتید، چهار تا اشتباه در نوشتهها بود. در پستهای دیگهای که داشتید هم به همین صورته. لطفا رعایت کنید.
-
دارم رویه یه چالش
* روی
تا حدود فهمیدم چیکار کنم
* حدودی
ولی باز اررو میده.
ارور (یا بهتره بگیم خطا)
الان میرم داکیومن ها رو چک میکنم
داکیومنتها (یا بهتره بگیم مستندات)
سهپست داشتید، چهار تا اشتباه در نوشتهها بود. در پستهای دیگهای که داشتید هم به همین صورته. لطفا رعایت کنید.
از من چه انتظاری داری که با همچین فونتی بتونم درست بنویسم یا بخونم؟؟؟
این مشکل هم فقط در انجمن دارم
-
درود
دارم برنامه ام رو یکم پیشرفت تر میکنم و خواستم یکم با این کتابخونه ncurses یکم راه بیفتم.میخوام از arrow key استفاده کنم اما انگار کار نمیکنه ???
#include <ncurses.h>
int main()
{
initscr();
clear();
noecho();
curs_set(0);
cbreak();
refresh();
int ch;
int x, y;
x = COLS / 2;
y = LINES / 2;
while (1)
{
clear();
mvprintw(y, x, "*");
ch = scanw("%d", &ch);
refresh();
switch(ch)
{
case KEY_UP:
if(y > 0 && LINES -1)
{
y--;
}
break;
case KEY_DOWN:
if(y < 0 && LINES -1)
{
y++;
}
break;
case KEY_LEFT:
if(x > 0 && COLS -1)
{
x--;
}
break;
case KEY_RIGHT:
if(x < 0 && COLS -1)
{
x++;
}
break;
default:
continue;
}
}
endwin();
return 0;
}
امیدوارم که کد بنده اشتباه باشه
-
متاسفانه به راهنماییها توجهی نمیکنید و گامبهگام کارها را پیش نمیبرید. به این شکل بدیهیه که سرعت کارتون کم میشه و نمیتونید مسائل را به درستی پیش ببرید.
https://stackoverflow.com/a/75499310/7508077
اینجا برنامهای را میبینید که به سادهترین شکل ممکن با استفاده از کتابخانهٔ ncurses کلیدهای جهتی را دریافت میکند و آن را چاپ میکند.
میتوانید از این برنامه و منطق در مسئلهٔ خودتون استفاده کنید.
حتا در اینجا از مستندات خود ncurses سریعتر میتونستید به پاسخ برسید.
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/keys.html
دنبال کردن نکات همین پیوند برای برنامههای ساده کافی است.
چند سال پیش یک برنامهٔ snake مشابه چیزی که در ارسالهای پیشین اشاره کردم نوشته بودم متاسفانه الان پیداش نمیکنم.
-
از من چه انتظاری داری که با همچین فونتی بتونم درست بنویسم یا بخونم؟؟؟
انتظارم از شما اینه که درست بنویسید. اگر نوشتار انجمن اذیتتون میکنه، تنظیمات مرورگر رو تصحیح کنید که مشکلی نداشته باشید.
-
متاسفانه به راهنماییها توجهی نمیکنید و گامبهگام کارها را پیش نمیبرید. به این شکل بدیهیه که سرعت کارتون کم میشه و نمیتونید مسائل را به درستی پیش ببرید.
https://stackoverflow.com/a/75499310/7508077
اینجا برنامهای را میبینید که به سادهترین شکل ممکن با استفاده از کتابخانهٔ ncurses کلیدهای جهتی را دریافت میکند و آن را چاپ میکند.
میتوانید از این برنامه و منطق در مسئلهٔ خودتون استفاده کنید.
حتا در اینجا از مستندات خود ncurses سریعتر میتونستید به پاسخ برسید.
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/keys.html
دنبال کردن نکات همین پیوند برای برنامههای ساده کافی است.
چند سال پیش یک برنامهٔ snake مشابه چیزی که در ارسالهای پیشین اشاره کردم نوشته بودم متاسفانه الان پیداش نمیکنم.
من پی دی اف این پرونده رو دانلود کردم و برای چندین بار خوندم اما بعضی از بذنامه ها هم حتی با کپی پیست اجرا هم نمیشن!!!!
من دلم میخواد خودم تو برنامه غرق بشم و کشف کنم بخاطر همین فهمیدم که باید از تابعی به نام keypad استفاده کنم اما تاثیری نداشت.
باز هم ممنونم دوباره مطالعه میکنم.مشکلی اومد خبر میکنم
-
از من چه انتظاری داری که با همچین فونتی بتونم درست بنویسم یا بخونم؟؟؟
انتظارم از شما اینه که درست بنویسید. اگر نوشتار انجمن اذیتتون میکنه، تنظیمات مرورگر رو تصحیح کنید که مشکلی نداشته باشید.
من فقط در انجمن و هنگام نوشتن این مشکل رو دارم چرا باید تنظیمات کل مرورگر رو بهم بریزم؟؟ مشکل از فونت انجمن و چندین بار تو قست انتقادات و پیشنهادات این مورد رو دیدم ولی فکر نمیکردم در این حد جدی باشه! فکر کنم به خاطر فونت انجمن هم که شده عینکی میشم ](*,)
-
خیلی خوبه. به تلاش ادامه بدید.
میتونم بگم اولین کاری که باید برای برنامهنویسی با ncurses انجام بدین مطالعهٔ این آموزش و پیش رفتن گام به گام با تمرینها است.
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html
همزمان با پیش گرفتن روال درست و اجرای مرحله به مرحله کارها شروع کنید به نوشتن مستندات برای این برنامههایی که مینویسید. برای نمونه با نوشتن comment برای هر یک از دستورات شروع کنید.
سعی کنید از مسیر و گامهایی که در این روند طی میکنید برای خودتون یادداشت بردارید و از دانستههاتون مطمئن شوید. هیچ قطعه کدی را بدون فهمیدن به برنامه اضافه نکنید.
برای توابع هم یک توضیح بنویسید. سعی کنید هر برنامه یک توضیح کلی داشته باشد از روش اجرا کردن کد که برای یک برنامهٔ C شامل مراحل کامپایل کردن مثلا با gcc و نوشتن makefile برای اون هست.
برای README پروژهٔ مشابه را ببینید ایده بگیرید و تکمیل ترش کنید.
https://github.com/jvns/snake/tree/master
به نظر من برنامه نویسی فقط یک کدی که کار میکند نیست. در واقع درک و بینش شما از برنامهای که نوشتید به آن کد ارزش میدهد.
در یک کلام دنبال راهمیانبر نباشید.
با عجله کردن و یادنگرفتن پایهها خودتون را از لذت آموختن و پیشرفت معقول، محروم میکنید.
در نظر داشته باشید ممکن است هم اکنون این برنامهها کاربرد خاصی نداشته باشند اما تجربهها و آموختههایتان در این فرایند چیزی است که ماندگار است و در پروژهها و برنامههای آتی جدی که خواهید نوشت بسیار به کار خواهد آمد.
-
من واقعا از لطف شما بسیار ممنونم تونستم برنامه رو بنویسم و قرار بازیم رو فردا به طور کامل پیاده سازی کنم.
خیلی ممنونم که کمک کردید. مشکلی بود حتما خبر میدم.
من دلم میخواست که در عرض ۳ ماه برنامه نویسی یاد بگیرم! اما نشد و هرچقدر جلو تر میرم میفهمم که هیچی بلد نیستم. :)
-
من فقط در انجمن و هنگام نوشتن این مشکل رو دارم چرا باید تنظیمات کل مرورگر رو بهم بریزم؟؟
چون انجمن برای این قسمت از نوشتار استاندارد monospace مرورگر شما استفاده میکنه. اگر از نوشتار استاندارد monospace مرورگرتون راضی نیستید، خب عوضش کنید. اگر به نظرتون نوشتار استاندارد monospace مرورگر شما مناسبه و نیاز به بهم ریختن نداره، خب دیگه از اون لذت ببرید.
-
من واقعا از لطف شما بسیار ممنونم تونستم برنامه رو بنویسم و قرار بازیم رو فردا به طور کامل پیاده سازی کنم.
خیلی ممنونم که کمک کردید. مشکلی بود حتما خبر میدم.
من دلم میخواست که در عرض ۳ ماه برنامه نویسی یاد بگیرم! اما نشد و هرچقدر جلو تر میرم میفهمم که هیچی بلد نیستم. :)
به جز منابعی که قبلا برای C معرفی کردم و بعد از اینکه آنها را مطالعه کردید
https://forum.ubuntu-ir.org/index.php?topic=150453.msg1169817#msg1169817
برای عمیقتر شدن میتونید ویدیوهای JacobSorber را نگاه کنید.
https://www.youtube.com/@JacobSorber/playlists