Esempio n. 1
0
int createEnemyCommand(Keyword makeEnemy)	{
	//! only create enemy if all cooldowns are ready
	if(checkClock(singleEnemyCreated,ENEMYSPAWNCOOLDOWN) && checkClock(groupDelay,getEnemyGroupDelay()) && (getWave(getGame(NULL)) == returnPropertyValue(makeEnemy,waveID)))	{
		setCreateEnemyGroupDelay(0); //!setting delay back to zero
		createSpecificEnemy(returnPropertyValue(makeEnemy,enemyType),returnPropertyValue(makeEnemy,enemyLevel),returnPropertyValue(makeEnemy,entrance));
		return 1;
	} 
	return 0;
}
void testClocks()	{
    sput_fail_unless(addClock(testClock) == 1,"Valid: Adding Dummy Test Clock");
    sput_fail_unless(checkUniqueClockType(testClock) == 0,"Invalid: Unique clock checker.  Clocck should already exist");
    sput_fail_unless(addClock(testClock) == 0,"Invalid: Adding non unique Dummy clock");
    sput_fail_unless(checkClock(testClock,10) == 0,"Invalid: Cooldown of 10 has not passed");
    delayGame(10);
    sput_fail_unless(checkClock(testClock,10) == 1,"Valid: Cooldown of 10 has passed");
    sput_fail_unless(checkClock(testClock,10) == 0,"Invalid: Cooldown of 10 hasn't passed after reset of cooldown");
    delayGame(10);
    sput_fail_unless(checkClock(testClock,10) == 1,"Valid: Cooldown of 10 has passed after reset of cooldown");

}
Esempio n. 3
0
void main(void)
{
	//init drivers and components
	init();

	while(TRUE)
	{
		//check if interval passed and the counter need to be update
		checkClock();
		//check if a request has arrived and handle it
		checkUart();
	}
}
Esempio n. 4
0
void ADDAC_Clock::update(bool _INval, bool _reset, unsigned long tempTime, int _pot1, int _pot2){
   
    Pot1Bars = _pot1;
    Pot2Steps = _pot2;
    
    if(_reset){
        time=millis();
        reset(time);
        RESEt=true;
    }
    
	if(CLOCK){
		clock(tempTime, interval, dutyCycle);
		CLOCK=false;
	}
    
    //digitalWrite(led0Pin, state);
    
    /*if(!state){
        //digitalWrite(led1Pin, LOW);
    }else{
        if(Counter%1==0) //digitalWrite(led1Pin, HIGH);
    }*/
    
    
    checkClock(_INval);
    checkChangeState();
    
	
	if (ON && oldTime+dutyCycle  < tempTime) {
		OUT=false;
     #ifdef DEBUG
        Serial.print(" |OFF| ");
      #endif
		ON=false;
	}
	
	stepUpdate(tempTime);
	
}
Esempio n. 5
0
int main(int argc, char **argv){
    ALLEGRO_DISPLAY *display = NULL;
    ALLEGRO_EVENT_QUEUE *event_queue = NULL;
    ALLEGRO_TIMER *timer = NULL;
    ALLEGRO_BITMAP *seletor = NULL;

    float tamanho = 25;
    float espacamento = SELETOR_SIZE + 19;
    float seletor_x = 1174;
    float seletor_y = 40;
    bool key[4] = { false, false, false, false };
    bool redraw = true;
    bool doexit = false;
    float posicao = 0;
    int mapa[770][3];
    bool envio[4] = { false, false, false, false };


    //Inicia o allegro
    al_init();
    al_init_image_addon();
    al_install_keyboard();

     // Inicialização do add-on para uso de fontes
    al_init_font_addon();
    al_init_ttf_addon();

    inicializaBitmaps();
    lerConf(mapa);

    //Cria a lista de eventos
    event_queue = al_create_event_queue();

    //Cria o timer
    timer = al_create_timer(1.0 / FPS);

    //Cria a janela
    display = al_create_display(SCREEN_W, SCREEN_H);

    //Limpa a janela com a cor preta
    al_clear_to_color(al_map_rgb(0, 0, 0));

    //Carrega a imagem de fundo na variável
    background = al_load_bitmap("img/fundo.png");
    //Desenha a imagem de fundo na posição (0,0)
    al_draw_bitmap(background, 0, 0, 0);

    //Carrega a imagem do seletor na variável
    seletor = al_load_bitmap("img/selecao.png");
    //Desenha o seletor na posição (1174,40)
    al_draw_bitmap(seletor, 1174, 40, 0);

    desenhaMapa(mapa, envio);

    //Registra os eventos
    al_register_event_source(event_queue, al_get_display_event_source(display));
    al_register_event_source(event_queue, al_get_timer_event_source(timer));
    al_register_event_source(event_queue, al_get_keyboard_event_source());

    al_flip_display();

    //Inicia o timer
    al_start_timer(timer);

    //Inicia contagem de tempo para a pergunta aparecer
    initClock();

    //While do jogo
    while(!doexit){
        //Aguarda o evento
        ALLEGRO_EVENT ev;
        al_wait_for_event(event_queue, &ev);

        //Se der o tempo do timer, verifica qual tecla foi pressionada e se é possível se mover para a posição de destino
        if(ev.type == ALLEGRO_EVENT_TIMER){
            if(key[KEY_LEFT] && (posicao == 1 || posicao == 3) && (janela_aberta == 0)) {
                seletor_x -= espacamento;
                if(posicao == 1)
                    posicao = 0;
                else
                    posicao = 2;
            }
            if(key[KEY_RIGHT] && (posicao == 0 || posicao == 2) && (janela_aberta == 0)) {
                seletor_x += espacamento;
                if(posicao == 0)
                    posicao = 1;
                else
                    posicao = 3;
            }
            if(key[KEY_UP] && (posicao == 2 || posicao == 3) && (janela_aberta == 0)) {
                seletor_y -= espacamento;
                if(posicao == 2)
                    posicao = 0;
                else
                    posicao = 1;
            }
            if(key[KEY_DOWN] && (posicao == 0 || posicao == 1) && (janela_aberta == 0)) {
                seletor_y += espacamento;
                if(posicao == 0)
                    posicao = 2;
                else
                    posicao = 3;
            }

            redraw = true;
        }
        //Se a janela for fechada, termina o jogo
        else if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
            break;
        }
        //Se o evento for um tecla pressionada, seta a variável dessa tecla para "true" (pressionada)
        else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) {
            switch(ev.keyboard.keycode) {
                case ALLEGRO_KEY_LEFT:
                    key[KEY_LEFT] = true;
                    break;

                case ALLEGRO_KEY_RIGHT:
                    key[KEY_RIGHT] = true;
                    break;

                case ALLEGRO_KEY_UP:
                    key[KEY_UP] = true;
                    break;

                case ALLEGRO_KEY_DOWN:
                    key[KEY_DOWN] = true;
                    break;
            }
        }
        //Se o evento for um tecla solta, seta a variável dessa tecla para "false" (caso seja Esc, encerra o programa)
        else if(ev.type == ALLEGRO_EVENT_KEY_UP) {
            switch(ev.keyboard.keycode) {
                case ALLEGRO_KEY_LEFT:
                    key[KEY_LEFT] = false;
                    break;

                case ALLEGRO_KEY_RIGHT:
                    key[KEY_RIGHT] = false;
                    break;

                case ALLEGRO_KEY_ESCAPE:
                    doexit = true;
                    break;

                case ALLEGRO_KEY_UP:
                    key[KEY_UP] = false;
                    break;

                case ALLEGRO_KEY_DOWN:
                    key[KEY_DOWN] = false;
                    break;
                case ALLEGRO_KEY_ENTER:
                    if (janela_aberta == 0){
                        if(posicao == 0)
                            envio[VERMELHO] = true;
                        else if(posicao == 1)
                            envio[AZUL] = true;
                        else if(posicao == 2)
                            envio[VERDE] = true;
                        else if(posicao == 3)
                            envio[AMARELO] = true;
                    }

            }
        }

        //Redesenha o jogo
        if(redraw && al_is_event_queue_empty(event_queue)){
            redraw = false;
            al_draw_bitmap(background, 0, 0, 0);
            desenhaMapa(mapa, envio);
            movimento(mapa);
            if (janela_aberta == 0){
                if (checkClock()){
                    janela_aberta = 1;
                }
            }else{
                al_draw_bitmap(perguntas, 0, 0, 0);
                al_draw_textf(font, al_map_rgb(255, 255, 255), SCREEN_W / 2, 250, ALLEGRO_ALIGN_CENTRE, "%s", texto);

                printf("check\n");
                initClock();
            }
            al_draw_bitmap(seletor, seletor_x, seletor_y, 0);
            al_flip_display();
        }
    }

    //Destrói os objetos
    al_destroy_bitmap(background);
    al_destroy_bitmap(seletor);
    al_destroy_timer(timer);
    al_destroy_display(display);
    al_destroy_event_queue(event_queue);

    return 0;
}
Esempio n. 6
0
/**
  @brief 供周期调用的接口,用来检查密码到期和硬件时钟
*/
void StatManager::updateFromNormal()
{
    checkClock();
    checkPassword();
}
int checkQueue(ActionQueueStructure queue, GameProperties Game, int needed)	{
    if((checkMem(needed, Game)) && (checkClock(lastCmdAction,ACTIONCOOLDOWN)))	{
        return 1;
    }
    return 0;
}