//¤ЄюЄ яЁшьхЁ юЄюсЁрцрхЄ фтшцє∙шхё ёяЁрщЄ√ эр Їюэх шчюсЁрцхэш
#include <evo.h>
#include "resources.h"
//ёЄЁєъЄєЁр юс·хъЄр
struct spriteStruct {
i16 x,y; //ъююЁфшэрЄ√
i16 dx,dy; //фхы№Є√ ёъюЁюёЄш
};
//ёяшёюъ юс·хъЄют
#define SPRITES_ALL 22 //т ¤Єюь яЁшьхЁх ёЄюы№ъю ёяЁрщЄют єёяхтрхЄ юЄЁшёютрЄ№ё чр ърфЁ
struct spriteStruct spriteList[SPRITES_ALL];
void main(void)
{
static u8 i,t;
static u8 palette[16];
static u8 keys[40];
static u32 oldtime,curtime;
static u16 y;
//ў╕Ёэ√щ ¤ъЁрэ эр тЁхь яюфуюЄютъш
pal_bright(BRIGHT_MIN);
//шэшЎшрышчрЎш ярЁрьхЄЁют юс·хъЄют
for(i=0;i<SPRITES_ALL;++i)
{
spriteList[i].x=1+rand16()%(160-8-2);
spriteList[i].y=1+rand16()%(200-16-2);
spriteList[i].dx=0;
spriteList[i].dy=0;
//spriteList[i].dx=rand16()&1?-1:1;
//spriteList[i].dy=rand16()&1?-1:1;
}
//т√тюф Їюэр эр Єхэхтющ ¤ъЁрэ
draw_image(0,0,IMG_BACK);
draw_image(1,10,IMG_BALLS/*IMG_BACK*/);
select_image(IMG_FONT);
draw_tile(1,2 ,'A'-32);
//яхЁхъы■ўхэшх ¤ъЁрэют, ЄхяхЁ№ Їюэ эр тшфшьюь ¤ъЁрэх
swap_screen();
//чряєёъ ёяЁрщЄют
sprites_start();
//єёЄрэютър ярышЄЁ√, юэр ёюсшЁрхЄё шч фтєї Ёрчэ√ї ярышЄЁ
//ЎтхЄр 0..5 фы Їюэр, ЎтхЄр 6..15 фы ёяЁрщЄют
pal_copy(PAL_BACK,palette);
for(i=0;i<16;++i) pal_col(i,palette[i]);
//єёЄрэютър эюЁьры№эющ ЁъюёЄш
pal_bright(BRIGHT_MID);
music_play(0);
//уыртэ√щ Ўшъы
while(1)
{
//яхЁхьх∙хэшх юс·хъЄют ш чряюыэхэшх ёяшёър ёяЁрщЄют
for(i=0;i<SPRITES_ALL;++i)
{
//i&3 т√сшЁрхЄ юфшэ шч ўхЄ√Ёхї ЁрчэюЎтхЄэ√ї °рЁшъют
//y = spriteList[i].y;
set_sprite(i,spriteList[i].x,spriteList[i].y,i&3);
}
//юсэютыхэшх ¤ъЁрэр, ёяЁрщЄ√ т√тюф Єё ртЄюьрЄшўхёъш
swap_screen();
for (t=0;t<(u8)(curtime-oldtime)&0xff;++t) { //logic loop
for(i=0;i<SPRITES_ALL;++i)
{
if(spriteList[i].x==160-8 ||spriteList[i].x==0) {spriteList[i].dx=-spriteList[i].dx; sfx_play(SFX_APSTENU,-3);}
if(spriteList[i].y==200-16||spriteList[i].y==0) {spriteList[i].dy=-spriteList[i].dy; sfx_play(SFX_APSTENU,-3);}
spriteList[i].x+=spriteList[i].dx;
spriteList[i].y+=spriteList[i].dy;
//spriteList[i].y = 100;
}
//яюыєўхэшх ёюёЄю эш ъыртш°
keyboard(keys);
if((keys[KEY_O]&KEY_DOWN)&&(spriteList[0].x>0)) spriteList[0].x-=1;
if((keys[KEY_P]&KEY_DOWN)&&(spriteList[0].x<160-8)) spriteList[0].x+=1;
if((keys[KEY_Q]&KEY_DOWN)&&(spriteList[0].y>0)) spriteList[0].y-=1;
if((keys[KEY_A]&KEY_DOWN)&&(spriteList[0].y<200-16)) spriteList[0].y+=1;
if(keys[KEY_SPACE]&KEY_PRESS) {
for(i=1;i<SPRITES_ALL;++i)
{
#define INRANGE(x, range) (((x)>(-range))&&((x)<(range)))
if (INRANGE(spriteList[i].x-spriteList[0].x, 5)&&INRANGE(spriteList[i].y-spriteList[0].y, 10)) {
sfx_play(SFX_FIRE,8);
spriteList[i].dx=rand16()&1?-1:1;
spriteList[i].dy=rand16()&1?-1:1;
}
}
}
} //logic loop
oldtime = curtime;
}
}