
exe (22k) src (13k)
前两天看到game7z上推荐了一个音乐泡泡的游戏, 很有创意的音乐游戏. 正好可以用到上次做的mid函数, 就花了两个下午自己也模仿了一下. 使用的是八音盒的音色.
My storys of making game
int cl (Rect *dest, Rect *src, float oldx, float oldy)
{
int isbeat = 0;
float dy, dx0, dx1, dx, dy0, dy1;
float ix, iy; /* interpolation xy */
/* right */
if (oldx+src->w <= dest->x && src->x+src->w > dest->x) {
/* Y interpolation */
dy = src->y - oldy;
dx0 = dest->x-oldx-src->w;
dx1 = src->x+src->w-dest->x;
iy = dy * dx0 / (dx0+dx1) + oldy;
if (iy+src->h > dest->y && iy < dest->y+dest->h) {
src->x = dest->x - src->w;
isbeat |= CL_RIGHT;
}
}
else
if (oldx >= dest->x+dest->w && src->x < dest->x+dest->w) {
dy = src->y - oldy;
dx0 = oldx - dest->x-dest->w;
dx1 = dest->x+dest->w-src->x;
iy = dy * dx0 / (dx0 + dx1) + oldy;
if (iy+src->h > dest->y && iy < dest->y+dest->h) {
src->x = dest->x + dest->w;
isbeat |= CL_LEFT;
}
}
else
/* down */
if (oldy+src->h <= dest->y && src->y+src->h > dest->y) {
dx = src->x - oldx;
dy0 = dest->y-oldy-src->h;
dy1 = src->y+src->h-dest->y;
ix = dx * dy0 / (dy0+dy1) + oldx;
if (ix+src->w > dest->x && ix < dest->x+dest->w) {
src->y = dest->y - src->h;
isbeat |= CL_DOWN;
}
}
else
if (oldy >= dest->y+dest->h && src->y < dest->y+dest->h) {
dx = src->x - oldx;
dy0 = oldy-dest->y-dest->h;
dy1 = dest->y+dest->h-src->y;
ix = dx * dy0 / (dy0+dy1) + oldx;
if (ix+src->w > dest->x && ix < dest->x+dest->w) {
src->y = dest->y + dest->h;
isbeat |= CL_UP;
}
}
return isbeat;
}
}
exe 24k src 14k