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

📄 koulesgameplan.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
/***********************************************************
Copyright(C)2007,Rockchip Co., Ltd. All Rights Reserved.
File:koulesgameplan.c
Desc:.
Note:
Author:czs
$Log: koulesgameplan.c,v $
Revision 1.3  2008/06/19 04:42:27  Administrator
代码整理!

Revision 1.2  2008/06/06 03:15:44  XXX
更改游戏在RGB屏情况的问题

Revision 1.1.1.1  2008/03/06 13:28:24  Lingzhaojun
no message

Revision 1.4  2007/11/08 01:40:17  Chenzushang
修改Koules,使其运行于VideoTask任务下

Revision 1.3  2007/10/26 03:52:01  Chenzushang
添加CVS版本自动注释脚本

**********************************************************/
#include "koules.h"
#include "koulesapp.h"

#define HOLELEVEL 5
#define BBALLLEVEL (koulesnrockets==1?12:10)
#define EHOLELEVEL 20
#define SPRINGLEVEL 30
#define THIEFLEVEL 40
#define FINDERLEVEL 50
#define TTOOLLEVEL 60
#define INSPECTORLEVEL 70
#define BBBALLLEVEL 90
#define LUNATICLEVEL 80

EXPORT int      kouleslevel = 0;

static int      gtime;
static int      nos;
static int      ktime = 0;
static int      kmode = 0;
static int      secondpart;
void koulesgameplan_init(void)
{
    kouleslevel = kouleslastlevel;
}

/*
 * level creation routines
 */
static void Koules_init_objects1(void)
{
    int  i, nholes;
    char s[20];

    koulesdosprings = 0;
    kouleslastlevel = kouleslevel;
    if (koulesmaxlevel < kouleslevel)
        koulesmaxlevel = kouleslevel;

    if (koulesgamemode != KOULESMODEGAME)
    {
        koulesnobjects = 0;
        return;
    }
    switch (koulesgameplan)
    {
        case DEATHMATCH:
            koulesdosprings = 1;  /* enable spring in death match */
            koulesrandsprings = 40;
            if (koulesnrockets != 1)
            {
                koulesnobjects = koulesnrockets * 3 * KOULESGAMEWIDTH / 640 * KOULESMAPHEIGHT / 460 + 3;
                for (i = 0; i < koulesnobjects; i++)
                    koulesobject[i].live = 0;
                for (i = 0; i < koulesnobjects; i++)
                {
                    koulesobject[i].live = 1;
                    koulesobject[i].lineto = -1;
                    koulesobject[i].live1 = 1;
                    koulesobject[i].thief = 0;
                    koulesobject[i].time = (i < koulesnrockets ? 99 : 0);
                    koulesobject[i].fx = 0;
                    koulesobject[i].fy = 0;
                    koulesobject[i].rotation = 0;
                    koulesobject[i].type = (i < koulesnrockets ? ROCKET : BALL);
                    if (!Koules_find_possition(&koulesobject[i].x, &koulesobject[i].y, (float)Koules_radius(koulesobject[i].type)))
                        return;
                    koulesobject[i].M = Koules_M(koulesobject[i].type);
                    koulesobject[i].radius = Koules_radius(koulesobject[i].type);
                    koulesobject[i].accel = ROCKET_SPEED;
                    koulesobject[i].letter = ' ';
                    secondpart = 0;
                }
                nholes = koulesnrockets / 3 + 1;
                for (i = 0; i < nholes; i++)
                    Koules_creator(HOLE);
                Koules_creator(INSPECTOR);
                Koules_creator(EHOLE);
            }
            else
            {
                koulesnobjects = 2;
                for (i = 0; i < koulesnobjects; i++)
                    koulesobject[i].live = 0;
                for (i = 0; i < koulesnobjects; i++)
                {
                    koulesobject[i].live = 1;
                    koulesobject[i].lineto = -1;
                    if (i != 0)
                        koulesobject[i].lineto = 0;
                    koulesobject[i].live1 = 1;
                    koulesobject[i].thief = 0;
                    koulesobject[i].time = (i < koulesnrockets ? 99 : 0);
                    koulesobject[i].fx = 0;
                    koulesobject[i].fy = 0;
                    koulesobject[i].rotation = 0;
                    koulesobject[i].type = (i < koulesnrockets ? ROCKET : LUNATIC);
                    if (!Koules_find_possition(&koulesobject[i].x, &koulesobject[i].y, (float)Koules_radius(koulesobject[i].type)))
                        return;
                    koulesobject[i].M = Koules_M(koulesobject[i].type);
                    koulesobject[i].radius = Koules_radius(koulesobject[i].type);
                    koulesobject[i].accel = ROCKET_SPEED;
                    koulesobject[i].letter = ' ';
                    secondpart = 0;
                }
            }
            break;
        case COOPERATIVE:
            if (kouleslevel != 99)
            {
                int             nbballs;
                if (kouleslevel > SPRINGLEVEL)
                    koulesdosprings = 1;
                koulesrandsprings = 40 - kouleslevel / 3;
                koulesnobjects = (int)(3 + sqrt(kouleslevel) * ((koulesnrockets + 1) / 2) + 2 * koulesnrockets);
                koulesnobjects = (int)((float) koulesnobjects * (KOULESGAMEWIDTH / 640 * KOULESMAPHEIGHT / 460 + 2) / 3);
                if (koulesnobjects > 30)
                    koulesnobjects = 30;
                for (i = 0; i < koulesnobjects; i++)
                    koulesobject[i].live = 0;
                nbballs = koulesnrockets + kouleslevel / BBBALLLEVEL;
                gtime = 100 + 1000 / (kouleslevel + 1);
                for (i = 0; i < koulesnobjects; i++)
                {
                    koulesobject[i].live = (i < koulesnrockets ? 5 : 1);
                    koulesobject[i].live1 = (i < koulesnrockets ? 5 : 1);
                    koulesobject[i].lineto = -1;
                    koulesobject[i].thief = 0;
                    koulesobject[i].time = (i < koulesnrockets ? 100 : 0);
                    koulesobject[i].fx = 0;
                    koulesobject[i].fy = 0;
                    koulesobject[i].rotation = 0;
                    koulesobject[i].type = (i < koulesnrockets ? ROCKET : (i < nbballs ? BBALL : BALL));
                    koulesobject[i].M = Koules_M(koulesobject[i].type);
                    if (i < koulesnrockets)
                    {
                        if (kouleslevel < 5)
                            koulesobject[i].M *= 1.0f + (5.0f - kouleslevel) / 15.0f;
                        if (kouleslevel < 25)
                            koulesobject[i].M *= 1.0f + (kouleslevel) / 120.0f;
                    }
                    koulesobject[i].radius = Koules_radius(koulesobject[i].type);
                    koulesobject[i].accel = ROCKET_SPEED;
                    if (!Koules_find_possition(&koulesobject[i].x, &koulesobject[i].y, (float)Koules_radius(koulesobject[i].type)))
                        return;
                    koulesobject[i].letter = ' ';
                }
            }
            else
            {
                koulesnobjects = koulesnrockets + 10;
                for (i = 0; i < koulesnobjects; i++)
                    koulesobject[i].live = 0;
                koulesobject[koulesnrockets].type = APPLE;
                koulesobject[koulesnrockets].M = APPLEM;
                koulesobject[koulesnrockets].lineto = -1;
                koulesobject[koulesnrockets].thief = 0;
                koulesobject[koulesnrockets].radius = APPLE_RADIUS;
                koulesobject[koulesnrockets].live = (i < koulesnrockets ? 5 : 1);
                koulesobject[koulesnrockets].fx = 0;
                koulesobject[koulesnrockets].fy = 0;
                koulesobject[koulesnrockets].x = KOULESGAMEWIDTH / 2;
                koulesobject[koulesnrockets].y = KOULESMAPHEIGHT / 2;
                for (i = 0; i < koulesnrockets; i++)
                {
                    koulesobject[i].live = 5;
                    koulesobject[i].live1 = 5;
                    koulesobject[i].time = 100;
                    koulesobject[i].thief = 0;
                    koulesobject[i].lineto = -1;
                    koulesobject[i].fx = 0;
                    koulesobject[i].fy = 0;
                    koulesobject[i].rotation = 0;
                    koulesobject[i].type = ROCKET;
                    koulesobject[i].accel = ROCKET_SPEED;
                    koulesobject[i].M = Koules_M(koulesobject[i].type);
                    koulesobject[i].radius = Koules_radius(koulesobject[i].type);
                    koulesobject[i].letter = ' ';
                    koulesobject[i].x = KOULESGAMEWIDTH / 2.0f + (float)sin(i * KOULESRAD(360) / koulesnrockets) * KOULESMAPHEIGHT / 3.0f;
                    koulesobject[i].x = KOULESMAPHEIGHT / 2.0f + (float)cos(i * KOULESRAD(360) / koulesnrockets) * KOULESMAPHEIGHT / 3.0f;
                }
                for (i = koulesnrockets + 1; i < koulesnobjects; i++)
                {
                    koulesobject[i].live = 1;
                    koulesobject[i].live1 = 1;
                    koulesobject[i].lineto = -1;
                    koulesobject[i].time = 0;
                    koulesobject[i].thief = 0;
                    koulesobject[i].fx = 0;
                    koulesobject[i].fy = 0;
                    koulesobject[i].rotation = 0;
                    koulesobject[i].type = BALL;
                    koulesobject[i].accel = BALL_SPEED;
                    koulesobject[i].M = Koules_M(koulesobject[i].type);
                    koulesobject[i].radius = Koules_radius(koulesobject[i].type);
                    koulesobject[i].letter = ' ';
                    if (!Koules_find_possition(&koulesobject[i].x, &koulesobject[i].y, (float)Koules_radius(koulesobject[i].type)))
                        return;
                }
            }
    }
    ktime = 0;

    if (koulesgamemode == KOULESMODEGAME)
    {
        if (kouleslevel == 99) // 99 just finished, 100 about to start
        {
            Koulesplay_sound(S_END);
        }
        else
        {
            Koulesplay_sound(S_START);
        }
        KoulesClearScreen();
        //tbreak = 1;
        if (koulesgameplan == COOPERATIVE)
            sprintf(s, "SECTOR %i", kouleslevel + 1);
        else
            sprintf(s, "GET READY");
        KoulesDrawShadowText(KOULESMAPWIDTH / 2 - 32, KOULESMAPHEIGHT / 2 - 4, s);
        Koules_statusarea();
        // Koules_updatescreen();
        //RkosDelayMs(100);
        // usleep(1000000);
    }
}

void Koules_init_objects()
{
    switch (koulesdifficulty)
    {
        case 0:
            ROCKET_SPEED = 0.8f;
            BALL_SPEED = 1.2f;
            BBALL_SPEED = 1.2f;
            SLOWDOWN = 0.9f;
            GUMM = 20;

⌨️ 快捷键说明

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