انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: مینی گیم و پروژه های کوچک  (دفعات بازدید: 1757 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
مینی گیم و پروژه های کوچک
« : 02 امرداد 1403، 04:32 ب‌ظ »
درود
دارم <بازی پیتزا خور فضایی> که جادی با زبان پایتون نوشته رو با زبان سی پیاده سازی میکنم اما با ۳ تفاوت:
۱: از اشاره گر ها و ساختار ها برای درک بهتر و یاد گیری استفاده کنم حتی با اینکه لازم نداشته باشم.
۲: سعی کنم از این بازی رو با چندین کتابخانه دیگه پیاده سازی کنم.
۳:با کتابخانه ncurses بیشتر آشنا بشم .
-----
خب من قبلا این بازی رو تا حدی جلو بردم اما الان به چندتا مشکل اساسی برخوردم:
۱: زبان سی از اسکی پشتیبانی میکنه نه از utf-8  که این کار رو برای پیاده سازی سخت میکنه.
۲: هوش مصنوعی و دشمن های بازی

اینها مشکلات اسای بود که فکر میکردم با اون ها برخورد میکنم اما در کمال تعجب به یک و چند مشکل دیگه خوردم که ۲ روزه دارم روی اون مشکل ها وقت میزارم اما حل نشده:
۱: کشیدن جهان
۲: حرکت دادن بازیکن بدون نابودی جهان!
-------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ncurses.h>
struct postion
{
    int player_x;
    int player_y;

}*player;
void draw_wall(int);
int main()
{
    int playing =  1;
    player = malloc(sizeof(*player));
    initscr();
    cbreak();
    keypad(stdscr, 1);
    curs_set(0);
    noecho();
    clear();
    refresh();
    player->player_x = COLS /2;
    player->player_y = LINES /2;
    clear();
    mvprintw(player->player_y, player->player_x, "x");
    refresh();
    draw_wall(10);
    refresh();
    char ch;
     while (playing)
    {
        ch = getchar();
        switch (ch)
        {
            case 'w':
                player->player_y -=1;
                break;
            case 's':
                player->player_y +=1;
                break;
            case 'a':
                player->player_x -=1;
                break;
            case 'd':
                player->player_x +=1;
                break;
            case 'q':
                playing = 0;
            default:
                continue;


        }

        mvprintw(player->player_y, player->player_x, "x");
        refresh();
    }
    refresh();
    endwin();
    free(player);
    return 0;

}
void draw_wall(int count)
{
  const int spawn_x = COLS /2;
  const int spawn_y = LINES /2;
    srand(time(NULL));
    initscr();
    clear();
    noecho();
    cbreak();
    curs_set(0);
    int x, y;
    for (int i = 0; i < count; i++)
    {
        x = rand()% (COLS - 1);
        if(spawn_x == x)
            continue;
        y = rand()% (LINES -1);
        if(spawn_y == y)
            continue;
        mvprintw(y, x, "><");

    }
    refresh();
    endwin();

}

البته این نسخه نهایی نیست و باز هم نیاز به تغیرات داره با هر تغیر من کد جدید رو میفرستم.
کسانی هم که دوست دارند از این برنامه استفاده بکنند میتوانند با دستور:
gcc your_file_name -lncurses
بهره مند بشوند:)
« آخرین ویرایش: 25 امرداد 1403، 05:56 ب‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #1 : 02 امرداد 1403، 05:10 ب‌ظ »
دوستان من میتونم تابع کشیدن جهان و موانع رو داخل یک حلقه بندازم و داخل اون حلقه clear رو اضافه کنم که صفحه رو هربار پاک کنه ولی این خوب نیست:
۱: دنیای خوبی نمیشه
۲: جهان و موانع من هر ثانیه در حال حرکت هستند!
پس باید سعی کنم که یک جهان ثابت بکشم و بازیکن من در اون جهان درحال حرکت باشه ولی خب قبلا از این مشکلات نبود سری آخر که اینکار رو کردم اینطوری نمیشد.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #2 : 02 امرداد 1403، 08:28 ب‌ظ »
برنامه رو پاک کردم وقصد دارم از اول بنویسم. تسلیم نخواهم شد  8)
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #3 : 02 امرداد 1403، 08:53 ب‌ظ »
خب نمیدونم خوشبختانه یا متاسفانه به نتایج جالبی دست یافتم
#include <stdio.h>
#include <ncurses.h>
#include <time.h>
#include <stdlib.h>
struct posions
{
    int colmn;
    int lines;
};
void spawn(int);
int main()
{
    struct posions* player = NULL;
    initscr();
    int playing = TRUE;
    player = malloc(sizeof(*player));
    player->colmn = COLS /2;
    player->lines = LINES /2;
    clear();
    cbreak();
    noecho();
    curs_set(0);
    char ch;
    while (playing)
    {
        spawn(20);
        refresh();
        ch = getchar();
        switch (ch)
        {
            case 'w':
            player->lines -= 1;
            break;
            case 's':
            player->lines += 1;
            break;
            case 'a':
            player->colmn -= 1;
            break;
            case 'd':
            player->colmn += 1;
            break;
            case 'q':
            playing = FALSE;
            default:
            continue;
        }
        clear();
        mvprintw(player->lines, player->colmn, "*");
        refresh();

    }
    getch();
    free(player);
    endwin();
    return 0;
}
void spawn(int count)
{
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            x = rand() % (COLS -1);
            if(x == spawn_x)
                continue;
            y = rand() % (LINES -1);
            if(y == spawn_y)
                continue;

            mvprintw(y, x, ".");
        }
    refresh();
}
واقعا گیج شدم.
اما باز هم جای کار داره من نمیخوام جهانم این شکلی بشه.
« آخرین ویرایش: 02 امرداد 1403، 08:56 ب‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #4 : 02 امرداد 1403، 09:00 ب‌ظ »
موفق شدم!!!!
#include <stdio.h>
#include <ncurses.h>
#include <time.h>
#include <stdlib.h>
struct posions
{
    int colmn;
    int lines;
};
void spawn(int);
int main()
{
    struct posions* player = NULL;
    initscr();
    int playing = TRUE;
    player = malloc(sizeof(*player));
    player->colmn = COLS /2;
    player->lines = LINES /2;
    clear();
    cbreak();
    noecho();
    curs_set(0);
    refresh();
    char ch;
    while (playing)
    {
        ch = getchar();
        switch (ch)
        {
            case 'w':
            player->lines -= 1;
            break;
            case 's':
            player->lines += 1;
            break;
            case 'a':
            player->colmn -= 1;
            break;
            case 'd':
            player->colmn += 1;
            break;
            case 'q':
            playing = FALSE;
            default:
            continue;
        }
        clear();
        spawn(20);
        mvprintw(player->lines, player->colmn, "*");
        refresh();

    }
    getch();
    free(player);
    endwin();
    return 0;
}
void spawn(int count)
{
    srandom(COLS && LINES);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            x = rand() % (COLS -1);
            if(x == spawn_x)
                continue;
            y = rand() % (LINES -1);
            if(y == spawn_y)
                continue;

            mvprintw(y, x, ".");
        }
    refresh();
}
اهداف بعدی:
۱: بر طرف کردن باگ تابع اسپاون.
۲: برطرف کردن باگ کلید q
۳: استفاده از رنگ
۴:تلاش برای ساخت دشمنان
۵: محدود کردن بازیکن به  و خارج نشدن آن از صفحه
۶: پیدا کردن یک راه حل برای استفاده از کاراکتر های utf-8  یا unicode مثل پایتون
۷: تلاش برای رد نشدن بازیکن از موانع
« آخرین ویرایش: 02 امرداد 1403، 10:49 ب‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #5 : 03 امرداد 1403، 08:12 ق‌ظ »
باگ تابع اسپاون برطرف شد به خاطر الگوریتم بنده بود تغیر دیگری هم که دادم استفاده از  goto  به جای continue در تابع اسپاون هست:
#include <stdio.h>
#include <ncurses.h>
#include <time.h>
#include <stdlib.h>
struct posions
{
    int colmn;
    int lines;
};
void spawn(int);

void cheaker(struct posions*);
int main()
{
    struct posions* player = NULL;
    initscr();
    int playing = TRUE;
    player = malloc(sizeof(*player));
    player->colmn = COLS /2;
    player->lines = LINES /2;
    clear();
    cbreak();
    noecho();
    curs_set(0);
    refresh();
    char ch;
    while (playing)
    {
        spawn(30);
        ch = getchar();
        switch (ch)
        {
            case 'w':
            player->lines -= 1;
            break;
            case 's':
            player->lines += 1;
            break;
            case 'a':
            player->colmn -= 1;
            break;
            case 'd':
            player->colmn += 1;
            break;
            case 'q':
            playing = FALSE;
            default:
            continue;
        }
        clear();
        mvprintw(player->lines, player->colmn, "*");
        cheaker(player);
        refresh();

    }
    getch();
    free(player);
    endwin();
    return 0;
}
void spawn(int count)
{
    srandom(COLS && LINES);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            sp_x:
            x = rand() % (COLS -1);
            if(x == spawn_x)
                goto sp_x;
            sp_y:
            y = rand() % (LINES -1);
            if(y == spawn_y)
                goto sp_y;

            mvprintw(y, x, ".");
        }
    refresh();
}
void cheaker(struct posions* player)
{
    if (player->colmn > COLS +1)
        player->colmn -= 2;


}
هدف بعدی: برطرف کردن باگ کلید q
« آخرین ویرایش: 03 امرداد 1403، 08:14 ق‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #6 : 03 امرداد 1403، 09:00 ق‌ظ »
از اونجایی که نتونستم این باگ کلید q رو برطرف بکنم پس کاری کردم که بهتر به نظر بیاد پس به عنوان فیچر به برنامه اضافه میکنیم!  ;D
#include <stdio.h>
#include <ncurses.h>
#include <time.h>
#include <stdlib.h>
struct posions
{
    int colmn;
    int lines;
};
void spawn(int);

int main()
{
    struct posions* player = NULL;
    initscr();
    int playing = TRUE;
    player = malloc(sizeof(*player));
    player->colmn = COLS /2;
    player->lines = LINES /2;
    clear();
    cbreak();
    noecho();
    curs_set(0);
    refresh();
    char ch;
    while (playing)
    {
        spawn(30);
        ch = getchar();
        switch (ch)
        {
            case 'w':
            player->lines -= 1;
            break;
            case 's':
            player->lines += 1;
            break;
            case 'a':
            player->colmn -= 1;
            break;
            case 'd':
            player->colmn += 1;
            break;
            case 'q':
            playing = FALSE;
            break;
            default:
            continue;
        }
        clear();
        mvprintw(player->lines, player->colmn, "*");
        refresh();

    }
    getch();
    free(player);
    endwin();
    return 0;
}
void spawn(int count)
{
    srandom(COLS && LINES);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            sp_x:
            x = rand() % (COLS -1);
            if(x == spawn_x)
                goto sp_x;
            sp_y:
            y = rand() % (LINES -1);
            if(y == spawn_y)
                goto sp_y;

            mvprintw(y, x, ".");
        }
    refresh();
}
تنها تغیری که کرده اینه که وقتی کلید q  رو برای بار اول میزنید صفحه پاک میشه و با q  دوم برنامه خاتمه پیدا میکنه.
هدف بعدی: استفاده از رنگ
« آخرین ویرایش: 03 امرداد 1403، 09:03 ق‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #7 : 03 امرداد 1403، 12:29 ب‌ظ »
خب حالا رنگ رو اضافه کردم نوشته بود قرمز میشه ولی قهوه ایی شد. خیلی بهتر از اون چیزی که فکرش رو میکردم شد(‌فقط موانع رو رنگی کردم ) اگر رنگ و ترکیبی مد نظذتون هست حتما بگید.
#include <stdio.h>
#include <ncurses.h>
#include <time.h>
#include <stdlib.h>
struct posions
{
    int colmn;
    int lines;
};
void spawn(int);

int main()
{
    struct posions* player = NULL;
    initscr();
    int playing = TRUE;
    player = malloc(sizeof(*player));
    player->colmn = COLS /2;
    player->lines = LINES /2;
    clear();
    cbreak();
    noecho();
    curs_set(0);
    refresh();
    char ch;
    while (playing)
    {
        spawn(30);
        ch = getchar();
        switch (ch)
        {
            case 'w':
            player->lines -= 1;
            break;
            case 's':
            player->lines += 1;
            break;
            case 'a':
            player->colmn -= 1;
            break;
            case 'd':
            player->colmn += 1;
            break;
            case 'q':
            playing = FALSE;
            break;
            default:
            continue;
        }
        clear();
        mvprintw(player->lines, player->colmn, "*");
        refresh();

    }
    getch();
    free(player);
    endwin();
    return 0;
}
void spawn(int count)
{
    start_color();
    init_pair(1, COLOR_RED, COLOR_BLACK);
    attrset(A_BOLD | COLOR_PAIR(1));
    srandom(COLS && LINES);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            sp_x:
            x = rand() % (COLS -1);
            if(x == spawn_x)
                goto sp_x;
            sp_y:
            y = rand() % (LINES -1);
            if(y == spawn_y)
                goto sp_y;

            mvprintw(y, x, ".");
        }
    refresh();
attroff(A_BOLD | COLOR_PAIR(1));
}
هدف بعدی: اسپاون کردن دشمنان
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #8 : 03 امرداد 1403، 12:41 ب‌ظ »
خب دقیقا نمیدونم باید چطوری دشمن های بازی رو پیاده سازی کنم اما واسه اسپاون کردن این دشمن ها در ساده ترین حالت چندتا مشکل وجود داره:
۱: دشمن ها نباید توی محلی که موانع هستند اسپاون بشوند.
۲: دشمن ها نباید در موقعیت مرکزی  یعنی جایی که بازیکن من هست قرار بگیر.
۳: دشمن ها نباید بین گوشه ها و صفحه میانی قرار بگیرند.
----
سخت ترین کار اینه که دشمن ها نباید روی موانع اسپاون بشوند. صبح یک تابع نوشتم بدون اینکه چیزی رو بفهمم اما همینطوری قرارش میدم:
void enemy_spawn(int count ,int* x , int* y)
{
    int cols, lines;
    srandom(COLS && LINES);
    for(int i = 0; i < count;i++)
        {
            cols = rand() % (COLS -1);
            if(cols == *x)
                continue;
            lines = rand() % (LINES -1);
            if(lines == *y)
                continue;

            mvprintw(lines, cols, "&");
        }
    refresh();

}
void spawn(int count, int* colmn ,int* lines)
{
    srandom(COLS && LINES);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            x = rand() % (COLS -1);
            if(x == spawn_x)
                continue;
            *colmn = x;
            y = rand() % (LINES -1);
            if(y == spawn_y)
                continue;
            *lines = y;

            mvprintw(y, x, ".");
        }
    refresh();
}
منطق من این بود  که بعد از هربار اجرای تابع اسپاون موقعیت جدیدی از موانع به ووجود میان. به خاطر همین سعی میکردم این تابع enemy-spawn و تابع اسپاون رو در یک حلقه بفرستم.
البته با استفاده از دو اشاره گر x, y  منو دریافت میکرد. توضیح دادنش خیلی سخت تر از عملی کردنش هست.
اما منطق جدید بنده به این صورت هست:
که تمام موقعیت هایی که در نقطه x  قرار دارند رو در یک آرایه ذخیره بکنه و برای y  ها هم به همین صورت اما این منطق دارای یک مشکل اساسی هست اونم اینه که برنامه و منطق پیچیده میشه و همچنین کند تر میشه. اگر میتونستم از hashmap  ها یا تاپل استفاده کنم عالی میشد. به نظرم  میتونم از یک آرایه دو بعدی استفاده بکنم که کار راحت تر بشه اما پیاده سازی این کار رو بلد نیستم ولی ترس نداره.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #9 : 03 امرداد 1403، 06:22 ب‌ظ »
خب دوستان بیاید از یک منطق ساده تر استفاده کنیم.
منطق خیلی راحتیه:
یک تابع مینویسم که ۵ تا دشمن رو اسپاون بکنه و اگر در اون موقعیت کاراکتری برابر نقطه یا استریک ( همون ستاره ) شد continue بکنه و دوباره انجامش بده. به نظر که خیلی قابل فهمه ولی امیدوارم جواب بده. دوستان مشکل استفاده از کاراکتر های یونیکد هم حل شد میتونم خیلی زیبا موانع رو ایجاد کنم
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #10 : 03 امرداد 1403، 11:11 ب‌ظ »
خب خیلی عجیبه این تابع کار نمیکنه!!!‌  دیگه نمیدونم باید چیکار کنم و متاسفانه مشکل کاراکتر های یونیکد برگشته!
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #11 : 03 امرداد 1403، 11:30 ب‌ظ »
خب تونتسم دشمنان خودم رو اسپاون کنم ولی نه اونطوری که دوست داشتم:( :
#include <stdio.h>
#include <ncurses.h>
#include <time.h>
#include <stdlib.h>
struct posions
{
    int colmn;
    int lines;
};
void spawn(int);
void enemy_spawn(int);
int main()
{
    struct posions* player = NULL;
    initscr();
    int playing = TRUE;
    player = malloc(sizeof(*player));
    player->colmn = COLS /2;
    player->lines = LINES /2;
    clear();
    cbreak();
    noecho();
    curs_set(0);
    refresh();
    char ch;
    while (playing)
    {

        spawn(30);
        enemy_spawn(10);

        ch = getchar();
        switch (ch)
        {
            case 'w':
            player->lines -= 1;
            break;
            case 's':
            player->lines += 1;
            break;
            case 'a':
            player->colmn -= 1;
            break;
            case 'd':
            player->colmn += 1;
            break;
            case 'q':
            playing = FALSE;
            break;
            default:
            continue;
        }
        clear();
        mvprintw(player->lines, player->colmn, "*");
        refresh();
    }
    getch();
    free(player);
    endwin();
    return 0;
}
void spawn(int count)
{
    start_color();
    init_pair(1, COLOR_BLUE, COLOR_BLACK);
    attrset(A_BOLD | COLOR_PAIR(1) | A_CHARTEXT);
    srandom(COLS && LINES);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    for(int i = 0; i<count; i++)
        {
            sp_x:
            x = rand() % (COLS -2);
            if(x == spawn_x)
                goto sp_x;
            sp_y:
            y = rand() % (LINES -2);
            if(y == spawn_y)
                goto sp_y;
            mvprintw(y, x, ".");
        }
    refresh();
attroff(A_BOLD | COLOR_PAIR(1) | A_CHARTEXT);
}
void enemy_spawn(int count)
{
    srandom(LINES && COLS);
    start_color();
    init_pair(2, COLOR_RED, COLOR_BLACK);
    attrset(A_BOLD | COLOR_PAIR(2) | A_PROTECT);
    int x, y;
    const int spawn_x = COLS /2;
    const int spawn_y = LINES /2;
    char dot, asterik;
    dot = '.';
    asterik = '*';
    for(int i = 0; i < count; i++)
        {
            spawn:
            y = rand() % (LINES -2);
            x = rand()% (COLS -2);
            if((x || y) != dot || asterik || spawn_x || spawn_y)
                {
                    mvprintw(y, x, "&");
                } else {
                    goto spawn;
                }
        }
    refresh();
    attroff(A_BOLD | COLOR_PAIR(2) | A_PROTECT);
}
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #12 : 04 امرداد 1403، 11:27 ق‌ظ »
خب الان وقتشه یه تابع درست کنیم که ناظر بازی باشه و خیلی کارها باید انجام بده:
۱: محدود کردن بازیکن
۲:سرعت اسپاون غذا
۳:رد نشدن بازیکن از موانع
۴: شمردن امتیاز ( اینو میتونم یک تابع جدا بنویسم )‌
باز هم میتونم اضافه کنم ولی فعلا لازم نیست.
-----------------------------------------
قرار بود ۴ آپریل ۲۰۲۳ استاندارد زبان سی بیاد که مربوط به برنامه نویسی ماژولار بود. چرا خبری نیست!!!؟
-----------------------------------------
فعلا از محدود کردن بازیکن شروع میکنیم.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #13 : 04 امرداد 1403، 01:47 ب‌ظ »
دوستان فعلا علاقه ایی به ادامه این بازی ندارم میخوام یک مقدار استراحت کنم و یک مقدار راست و پایتون کار کنم.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : مینی گیم
« پاسخ #14 : 04 امرداد 1403، 07:05 ب‌ظ »
خب دوستان من برگشتم!
اصلا هرکاری میکنم نمیتونم با پایتو وفق پیدا کنم :oops: خیلی پیچیده هست.
 خب فعلا میخوام یک تابع دیگه بنویسم کرسر طول و عرض صفحه منو پیمایش بکنه و موقعیت هایی که دشمنان و غذا هستند رو ذخیره بکنه و اگر موقعیت کرسر بنده با موقعیت غذا یکی شد به امتیاز های بنده ۳ تا اضافه بشه.
در کل میخوام یک تابع بنویسم که اگر موقعیت curser بنده با موقعیت غذا یکی بود به امتیاز های بنده یکی اضافه بشه و غذا پاک بشه و یک جای جدید اسپاون بشه.
البته این تابع تبدیل به دو زیر تابع میشه که یکی تابع cheak هست و دیگری  food  به نظر که سخت میاد.  :P اما من تسلیم نمیشم.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.