📄 koulesgameplan.c
字号:
/***********************************************************
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 + -