⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 koules.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 4 页
字号:
                                              (koulesobject[i].y - BALL_RADIUS), BALL_RADIUS * 2,
                                              BALL_RADIUS * 2, 3);
                            Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                                       koulesobject[i].radius, "Goodie");
acase L_TTOOL :
                            Koules_draw_lball((int)
                                              (koulesobject[i].x - BALL_RADIUS),
                                              (int)
                                              (koulesobject[i].y - BALL_RADIUS), BALL_RADIUS * 2,
                                              BALL_RADIUS * 2, 4);
                            Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                                       koulesobject[i].radius, "Thief toolkit");
adefault :
                            break;
                    }
                    // str[0] = koulesobject[i].letter;
                    // KoulesDrawBlackMaskedText((int) koulesobject[i].x - 4, (int) koulesobject[i].y - 4,str);
acase HOLE :
                    Koules_draw_hole((int)
                                     (koulesobject[i].x - HOLE_RADIUS),
                                     (int)
                                     (koulesobject[i].y - HOLE_RADIUS), HOLE_RADIUS * 2,
                                     HOLE_RADIUS * 2);
                    Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                               koulesobject[i].radius, "Black hole");
acase EHOLE :
                    Koules_draw_ehole((int)
                                      (koulesobject[i].x - HOLE_RADIUS),
                                      (int)
                                      (koulesobject[i].y - HOLE_RADIUS), HOLE_RADIUS * 2,
                                      HOLE_RADIUS * 2);
                    Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                               koulesobject[i].radius, "Magnetic hole");
acase BBALL :
                    Koules_draw_bball((int)
                                      (koulesobject[i].x - BBALL_RADIUS),
                                      (int)
                                      (koulesobject[i].y - BBALL_RADIUS), BBALL_RADIUS * 2,
                                      BBALL_RADIUS * 2);
                    Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                               koulesobject[i].radius, "BBALL!");
acase INSPECTOR :
                    Koules_draw_inspector((int)
                                          (koulesobject[i].x - INSPECTOR_RADIUS),
                                          (int)
                                          (koulesobject[i].y - INSPECTOR_RADIUS),
                                          INSPECTOR_RADIUS * 2, INSPECTOR_RADIUS * 2);
                    Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                               koulesobject[i].radius, "Inspector");
acase LUNATIC :
                    Koules_draw_lunatic((int)
                                        (koulesobject[i].x - LUNATIC_RADIUS),
                                        (int)
                                        (koulesobject[i].y - LUNATIC_RADIUS),
                                        LUNATIC_RADIUS * 2, LUNATIC_RADIUS * 2);
                    Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                               koulesobject[i].radius, "Lunatic");
acase APPLE :
                    Koules_draw_apple((int)
                                      (koulesobject[i].x - APPLE_RADIUS),
                                      (int)
                                      (koulesobject[i].y - APPLE_RADIUS), APPLE_RADIUS * 2,
                                      APPLE_RADIUS * 2);
                    Koules_draw_eye((int)(koulesobject[i].x - EYE_RADIUS),
                                    (int)(koulesobject[i].y + APPLE_RADIUS - 15), EYE_RADIUS * 2,
                                    EYE_RADIUS * 2, 0);
                    Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                               koulesobject[i].radius, "APPLEPOLISHER");
acase ROCKET :
                    {
                        int x1, y1;

                        Kouleshelp((int) koulesobject[i].x, (int) koulesobject[i].y,
                                   koulesobject[i].radius, "Player");
                        Koules_draw_rocket((int)(koulesobject[i].x - ROCKET_RADIUS),
                                           (int)(koulesobject[i].y - ROCKET_RADIUS), ROCKET_RADIUS * 2,
                                           ROCKET_RADIUS * 2, i);

                        if (!koulesobject[i].thief)
                        {
                            x1 = (int)
                                 (koulesobject[i].x +
                                  sin(koulesobject[i].rotation -
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  EYE_RADIUS);
                            y1 = (int)
                                 (koulesobject[i].y +
                                  cos(koulesobject[i].rotation -
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  EYE_RADIUS);
                            Koules_draw_eye(x1, y1, EYE_RADIUS * 2, EYE_RADIUS * 2, i);

                            x1 = (int)
                                 (koulesobject[i].x +
                                  sin(koulesobject[i].rotation +
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  EYE_RADIUS);
                            y1 = (int)
                                 (koulesobject[i].y +
                                  cos(koulesobject[i].rotation +
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  EYE_RADIUS);
                            Koules_draw_eye(x1, y1, EYE_RADIUS * 2, EYE_RADIUS * 2, i);
                        }
                        else
                        {
                            x1 = (int)
                                 (koulesobject[i].x +
                                  sin(koulesobject[i].rotation -
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  BALL_RADIUS);
                            y1 = (int)
                                 (koulesobject[i].y +
                                  cos(koulesobject[i].rotation -
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  BALL_RADIUS);
                            Koules_draw_lball(x1, y1, BALL_RADIUS * 2, BALL_RADIUS * 2, 2);

                            x1 = (int)
                                 (koulesobject[i].x +
                                  sin(koulesobject[i].rotation +
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  BALL_RADIUS);
                            y1 = (int)
                                 (koulesobject[i].y +
                                  cos(koulesobject[i].rotation +
                                      KOULESRAD(30)) * EYE_RADIUS1 -
                                  BALL_RADIUS);
                            Koules_draw_lball(x1, y1, BALL_RADIUS * 2, BALL_RADIUS * 2, 2);
                        }
                    }
adefault :
                    break;
            }
        }
    }

    if (koulesgamemode == KOULESMODEMENU)
    {
        Koulesdraw_menu(draw);
    }

    if (draw)
    {
        Koules_statusarea();
        Koules_updatescreen();
    }
}

void Koules_explosion(const int x, const int y, const int type,
                      const int letter, const int n)
{
    float i;
    int speed;
    int color1;
    int radius1 = Koules_radius(type);

    for (i = 0;
            i < KOULESRAD(360.0f);
            i += KOULESRAD(360.0f) / radius1 / radius1 / M_PI)
    {
        speed = KoulesGetRand() % 3096 + 10;
        color1 = Koules_color(type, n, letter) + (KoulesGetRand() % 16);
        Koules_addpoint(x * 256, y * 256, (int)(sin(i) * (speed)),
                        (int)(cos(i) * (speed)), color1, KoulesGetRand() % 100 + 10);
    }
}

static void Koules_rocket_destroyed(const int player)
{
    int i, nalive = 0, igagnant = 0;
    if (koulesgamemode == KOULESMODEGAME)
        switch (koulesgameplan)
        {
            case DEATHMATCH:
                if (koulesnrockets == 1)
                    return;
                for (i = 0; i < koulesnrockets; i++)
                    if (koulesobject[i].type == ROCKET &&
                            koulesobject[i].live &&
                            i != player)
                    {
                        koulesobject[i].score += 100;
                        nalive++;
                        igagnant = i;
                    }
                if (nalive == 1) /* winner bonus */
                    koulesobject[igagnant].score += 50;
        }
}

void Koules_destroy(const int i)
{
    int y;
    if (koulesobject[i].x - koulesobject[i].radius < 0)
        koulesobject[i].x = koulesobject[i].radius + 1.0f,
                            koulesobject[i].fx *= -1;
    if (koulesobject[i].y - koulesobject[i].radius < 0)
        koulesobject[i].y = koulesobject[i].radius + 1.0f,
                            koulesobject[i].fy *= -1;
    if (koulesobject[i].x + koulesobject[i].radius > KOULESGAMEWIDTH)
        koulesobject[i].x = KOULESGAMEWIDTH - koulesobject[i].radius - 1.0f,
                            koulesobject[i].fx *= -1;
    if (koulesobject[i].y + koulesobject[i].radius > KOULESMAPHEIGHT)
        koulesobject[i].y = KOULESMAPHEIGHT - koulesobject[i].radius - 1.0f,
                            koulesobject[i].fy *= -1;
    switch (koulesobject[i].type)
    {
        case LBALL:
            Koulesplay_sound(S_DESTROY_BALL);
            koulesobject[i].live = 0, Koules_explosion((int) koulesobject[i].x,
                                   (int) koulesobject[i].y,
                                   koulesobject[i].type,
                                   koulesobject[i].letter, i);
            if (koulesobject[i].letter == L_THIEF && Koules_allow_finder())
            {
                koulesobject[i].live = 1;
                koulesobject[i].letter = L_FINDER;
            }   /* else
                         if (koulesobject[i].letter == L_FINDER )
                         {
                         koulesobject[i].live = 1;
                         koulesobject[i].letter = L_THIEF;
                         } */
            break;
        case APPLE:
            Koulesplay_sound(S_DESTROY_ROCKET);
            koulesobject[i].live = 0, Koules_explosion((int) koulesobject[i].x,
                                   (int) koulesobject[i].y,
                                   koulesobject[i].type,
                                   koulesobject[i].letter, i);
            break;
        case BALL:
        case EHOLE:
        case BBALL:
        case INSPECTOR:
        case LUNATIC:
            Koulesplay_sound(S_DESTROY_BALL);
            if ((y = Koules_create_letter()) != 0)
            {
                koulesobject[i].type = LBALL;
                koulesobject[i].M = LBALLM;
                switch (y)
                {
                    case 1:
                        koulesobject[i].letter = L_ACCEL;
                        break;
                    case 2:
                        koulesobject[i].letter = L_GUMM;
                        break;
                    case 3:
                        koulesobject[i].letter = L_THIEF;
                        break;
                    case 4:
                        koulesobject[i].letter = L_FINDER;
                        break;
                    case 5:
                        koulesobject[i].letter = L_TTOOL;
                        break;
                        /*case 3:
                              koulesobject[i].letter = L_MUGG;
                              break;
                              case 4:
                              koulesobject[i].letter = L_SLOW;
                              break;
                              case 5:
                              koulesobject[i].letter = L_WIZZ;
                              break;
                              case 6:
                              koulesobject[i].letter = L_FUCK;
                              break; */
                }
            }
            else
                koulesobject[i].live = 0, Koules_explosion((int)
                                       koulesobject[i].x,
                                       (int)
                                       koulesobject[i].y,
                                       koulesobject[i].type,
                                       koulesobject[i].letter, i);
            break;
        case ROCKET:
            Koulesplay_sound(S_DESTROY_ROCKET);
            koulesobject[i].live1--, koulesobject[i].live--,
            Koules_explosion((int) koulesobject[i].x, (int) koulesobject[i].y,
                             koulesobject[i].type, koulesobject[i].letter, i);
            Koules_rocket_destroyed(i);
            if (koulesobject[i].live)
            {
                /*koulesobject[i].x = KoulesGetRand() % (KOULESGAMEWIDTH-60)+30;
                          koulesobject[i].y = KoulesGetRand() % (KOULESMAPHEIGHT-60)+30; */
                koulesobject[i].fx = 0;
                koulesobject[i].fy = 0;
                koulesobject[i].rotation = 0;
                koulesobject[i].type = ROCKET;
                koulesobject[i].accel = ROCKET_SPEED;
                Koules_creator_rocket(i);
            }
            break;
    }
}




static void Koules_check_limit()
{
    int i;
    for (i = 0; i < koulesnobjects; i++)
        if (koulesobject[i].live)
        {
            if (koulesobject[i].x -
                    koulesobject[i].radius <
                    0 ||
                    koulesobject[i].x +
                    koulesobject[i].radius >=
                    KOULESGAMEWIDTH ||
                    koulesobject[i].y -
                    koulesobject[i].radius <=
                    0 ||
                    koulesobject[i].y +
                    koulesobject[i].radius >=
                    KOULESMAPHEIGHT)
            {
                Koules_destroy(i);
            }
        }
}

// count number of creatures
static void Koules_update_values(void)
{
    int i;

    a_holes = a_rockets = a_balls = a_bballs = a_apples = a_eholes = a_inspectors = a_lunatics = 0;

    for (i = 0; i < koulesnobjects; i++)
    {
        if (koulesobject[i].live)
        {
            switch (koulesobject[i].type)
            {
                case HOLE:
                    a_holes++;
acase EHOLE :
                    a_eholes++;
acase ROCKET :
                    a_rockets++;
acase LBALL :
                case BALL :
                    a_balls++;
acase BBALL :
                    a_bballs++;
acase APPLE :
                    a_apples++;
acase INSPECTOR :
                    a_inspectors++;
acase LUNATIC :
                    a_lunatics++;
                    break;
            }
        }

        if (koulesobject[i].type == CREATOR)
        {
            switch (koulesobject[i].ctype)
            {
                case BBALL:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -