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"); }
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(); } }
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); }
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; }
/** @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; }