void DependencyPkg_init(NuSMVEnv_ptr env) { FormulaDependency_ptr dependency; OptsHandler_ptr opts = OPTS_HANDLER(NuSMVEnv_get_value(env, ENV_OPTS_HANDLER)); if (opt_verbose_level_gt(opts, 4)) { Logger_ptr logger = LOGGER(NuSMVEnv_get_value(env, ENV_LOGGER)); Logger_log(logger, "Instantiating the FormulaDependency instance " "within the given environment...\n"); } dependency = FormulaDependency_create(env); { /* add core handlers */ DependencyBase_ptr core_dep; DependencyBase_ptr psl_dep; core_dep = DEPENDENCY_BASE(DependencyCore_create(env, "Dependency core")); MasterNodeWalker_register_walker(MASTER_NODE_WALKER(dependency), NODE_WALKER(core_dep)); psl_dep = DEPENDENCY_BASE(DependencyPsl_create(env, "Dependency psl")); MasterNodeWalker_register_walker(MASTER_NODE_WALKER(dependency), NODE_WALKER(psl_dep)); } NuSMVEnv_set_value(env, ENV_DEPENDENCY, dependency); }
int Kanon_fyr_av_et_prosjektil (Kanon * kanon) { Spaceinvader * spaceinvader = (Spaceinvader*)kanon->spaceinvader; Modell * modell = spaceinvader->modell; const char * sign = "Kanon_fyr_av_et_prosjektil(Kanon*)"; Logger_log (logg, INFO, sign, "start"); /* Finn neste ledige plass i ild- givningen. */ int teller; for (teller = 0; teller < MAX_ANTALL_PROSJEKTIL; teller++) { if (kanon->ild[teller] == NULL) { break; } } if (teller == MAX_ANTALL_PROSJEKTIL) { Logger_log (logg, INFO, sign, "teller == MAX_ANTALL_PROSJEKTIL"); return 0; } /* Opprett et nytt prosjektilobjekt, og plasser dette i ild- givningen. */ int type = 0; int x = kanon->r->x + (kanon->r->b / 2); int y = kanon->r->y; kanon->ild[teller] = Prosjektil_opprett (spaceinvader,type,x,y); int t = 0; for (teller = 0; teller < MAX_ANTALL_PROSJEKTIL; teller++) { if (kanon->ild[teller] == NULL) t++; } modell->ledigeprosjektil = t; Logger_log (logg, INFO, sign, "slutt"); return 1; }
void SymbLayer_committed_to_enc(SymbLayer_ptr self) { SYMB_LAYER_CHECK_INSTANCE(self); self->committed_to_encs += 1; if (opt_verbose_level_gt(self->options, 4)) { Logger_log(self->logger, "SymbLayer '%s': committed to %d encodings\n", SymbLayer_get_name(self), self->committed_to_encs); } }
void SymbLayer_removed_from_enc(SymbLayer_ptr self) { SYMB_LAYER_CHECK_INSTANCE(self); nusmv_assert(self->committed_to_encs > 0); self->committed_to_encs -= 1; if (opt_verbose_level_gt(self->options, 4)) { Logger_log(self->logger, "SymbLayer '%s': removed from encoding (%d remaining)\n", SymbLayer_get_name(self), self->committed_to_encs); } }
void DependencyPkg_quit(NuSMVEnv_ptr env) { FormulaDependency_ptr dependency = FORMULA_DEPENDENCY(NuSMVEnv_remove_value(env, ENV_DEPENDENCY)); OptsHandler_ptr opts = OPTS_HANDLER(NuSMVEnv_get_value(env, ENV_OPTS_HANDLER)); if (opt_verbose_level_gt(opts, 4)) { Logger_ptr logger = LOGGER(NuSMVEnv_get_value(env, ENV_LOGGER)); Logger_log(logger, "Clearing the formula dependency instance in " "the given environment...\n"); } MasterNodeWalker_destroy(MASTER_NODE_WALKER(dependency)); }
Lyd * Lyd_opprett() { const char * sign = "Lyd_opprett()"; Lyd * lyd = (Lyd*)malloc(sizeof(Lyd)); lyd->kanonild = Mix_LoadWAV( "shot.wav" ); if (lyd->kanonild == NULL) { char melding[256]; sprintf(melding,"SDL_mixer Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); return NULL; } lyd->ufo_treff = Mix_LoadWAV( "alien-hit.wav" ); if (lyd->ufo_treff == NULL) { char melding[256]; sprintf(melding,"SDL_mixer Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); return NULL; } lyd->ufo_ild = Mix_LoadWAV( "alien-shot.wav" ); if (lyd->ufo_ild == NULL) { char melding[256]; sprintf(melding,"SDL_mixer Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); return NULL; } return lyd; }
void Lyd_generer(Lyd * lyd, int type) { const char * sign = "Lyd_generer()"; Logger_log (logg, INFO, sign, "start"); if (type == 1) { Logger_log (logg, INFO, sign, "kanonild"); if (Mix_PlayChannel( 0, lyd->kanonild, 0 ) == -1) { char melding[256]; sprintf(melding,"SDL_mixer Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); } } else if (type == 2) { Logger_log (logg, INFO, sign, "ufo_treff"); if (Mix_PlayChannel( 1, lyd->ufo_treff, 0 ) == -1) { char melding[256]; sprintf(melding,"SDL_mixer Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); } } else if (type == 3) { Logger_log (logg, INFO, sign, "ufo_ild"); if (Mix_PlayChannel( 1, lyd->ufo_ild, 0 ) == -1) { char melding[256]; sprintf(melding,"SDL_mixer Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); } } Logger_log (logg, INFO, sign, "slutt"); }
int test_lyd() { const char * sign = "test_lyd()"; Logger_log (logg, INFO, sign, "start"); if (SDL_Init (SDL_INIT_AUDIO) == -1){ char melding[512]; sprintf(melding,"SDL_Init Error: %s", SDL_GetError()); Logger_log (logg, FEIL, sign, melding); return 1; } Logger_log (logg, INFO, sign, "SDL_Init(SDL_INIT_AUDIO) ok"); if( Mix_OpenAudio( MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 1, 4096 ) < 0 ) { char melding[512]; sprintf(melding,"Mix_OpenAudio Error: %s", Mix_GetError()); Logger_log (logg, FEIL, sign, melding); return 1; } Logger_log (logg, INFO, sign, "Mix_OpenAudio ok"); Lyd *lyd = Lyd_opprett(); Lyd_generer(lyd, 1); SDL_Delay(400); Lyd_slett(&lyd); Logger_log (logg, INFO, sign, "slutt"); return 0; }
int Ufoer_tikk (Ufoer * ufoer) { /* * I denne metoden skjer følgende. * * * 1. Kontroller hastigheten til ufoene. * * Ufoer_tikk kalles opp ca 60 ganger i sekundet. Ved hjelp av variabelen * kontrollsentral->ufo_tikk_timer reguleres hastigheten mht hvor ofte vi * oppdaterer ufoene. * * * 2. Oppdater plasseringen til ufoene. * * Det er opptil 55 ufoer som skal ha en oppdatert plassering. Hvordan vi * skal oppdatere plasseringen, er avhengig av hvilken retning ufoene * beveger seg i. * * * 3. Oppdater retningen ufoene beveger seg i. * * Ufoene kan bevege seg mot høyre eller venstre eller nedover. Når ufoene * beveger seg ett nivå ned, skal farten økes. * * * Om metoden returnerer 1 har en eller flere ufo nådd jorden, dvs spillet * er slutt. Ellers returneres 0; */ Spaceinvader *spaceinvader = (Spaceinvader*)ufoer->spaceinvader; Modell * modell = spaceinvader->modell; Skjerm * skjerm = spaceinvader->skjerm; const char * sign = "Ufoer_tikk(Ufoer*)"; /* Oppdater eventuell eksisterende ild-givning fra ufoene. */ int teller; for (teller = 0; teller < 55; teller++) { Ufo * ufo = ufoer->ufo[teller]; Ufo_tikk (ufo); } /* Ufo'ene har varierende fart avhengig av hvor langt vi er kommet. */ if (modell->ufo_tikk_timer > 0) { modell->ufo_tikk_timer--; return 0; } modell->ufo_tikk_timer = modell->ufo_fart; /* Oppdater plassering */ for (teller = 0; teller < 55; teller++) { Ufo * ufo = ufoer->ufo[teller]; if (modell->ufo_retning == 1) { ufo->r->x += 5; } else if (modell->ufo_retning == 2) { ufo->r->y += ufo->r->h; } else if (modell->ufo_retning == 3) { ufo->r->x -= 5; } else if (modell->ufo_retning == 4) { ufo->r->y += ufo->r->h; } /* Benyttes ifm kollisjonsdeteksjon. */ if (ufo->r->y > modell->ufo_nivaa) { modell->ufo_nivaa = ufo->r->y; } } /* Oppdater retning og eventuelt fart */ if (modell->ufo_retning == 1) { for (teller = 0; teller < 55; teller++) { Ufo * ufo = ufoer->ufo[teller]; if ((ufo->r->x + ufo->r->b) > (skjerm->bredde - 10) ) { modell->ufo_retning = 2; if (modell->ufo_fart > 1) modell->ufo_fart--; char str[32]; sprintf(str,"ny fart %d",modell->ufo_fart); Logger_log (logg, FEIL, sign, str); break; } } } else if (modell->ufo_retning == 2) { modell->ufo_retning = 3; } else if (modell->ufo_retning == 3) { for (teller = 0; teller < 55; teller++) { Ufo * ufo = ufoer->ufo[teller]; if ((ufo->r->x < 10) ) { modell->ufo_retning = 4; if (modell->ufo_fart > 1) modell->ufo_fart--; Logger_log (logg, FEIL, sign, "øker farta"); break; } } } else if (modell->ufo_retning == 4) { modell->ufo_retning = 1; } /* Har noen ufoer nådd jorden? */ int jord_kontakt = 0; for (teller = 0; teller < 55; teller++) { Ufo * ufo = ufoer->ufo[teller]; if (ufo->status == 1) continue; if (ufo->r->y > modell->jord_nivaa) { jord_kontakt = 1; break; } } return jord_kontakt; }