📄 koules.c
字号:
(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 + -