/*! \fn checkForStateEvent * * \param [ref] [data] * \param [ref] [eventList] * * This function checks for events in interval=[oldTime, timeValue] * If a zero crossing function cause a sign change, root finding * process will start */ int checkForStateEvent(DATA* data, LIST *eventList) { TRACE_PUSH long i=0; debugStreamPrint(LOG_EVENTS, 1, "check state-event zerocrossing at time %g", data->localData[0]->timeValue); for(i=0; i<data->modelData.nZeroCrossings; i++) { int *eq_indexes; const char *exp_str = data->callback->zeroCrossingDescription(i,&eq_indexes); debugStreamPrintWithEquationIndexes(LOG_EVENTS, 1, eq_indexes, "%s", exp_str); if(sign(data->simulationInfo.zeroCrossings[i]) != sign(data->simulationInfo.zeroCrossingsPre[i])) { debugStreamPrint(LOG_EVENTS, 0, "changed: %s", (data->simulationInfo.zeroCrossingsPre[i] > 0) ? "TRUE -> FALSE" : "FALSE -> TRUE"); listPushFront(eventList, &(data->simulationInfo.zeroCrossingIndex[i])); } else { debugStreamPrint(LOG_EVENTS, 0, "unchanged: %s", (data->simulationInfo.zeroCrossingsPre[i] > 0) ? "TRUE -- TRUE" : "FALSE -- FALSE"); } if (DEBUG_STREAM(LOG_EVENTS)) messageClose(LOG_EVENTS); } if (DEBUG_STREAM(LOG_EVENTS)) messageClose(LOG_EVENTS); if(listLen(eventList) > 0) { TRACE_POP return 1; }
int main(int argc, char* argv[]) { sSdlWrapper* wrap = initializeSDLWrapper("Snake", 800, 600, 32, 1, 1); game* gameEngine = initGame(wrap, 32, 24); int Selection = 0; sTextGFX* startUnsel = createText(wrap, "Start Game", 0xFFFFFFFF); sTextGFX* startSel = createText(wrap, "Start Game", 0xFFFFF000); sTextGFX* exitUnsel = createText(wrap, "Exit Game" , 0xFFFFFFFF); sTextGFX* exitSel = createText(wrap, "Exit Game" , 0xFFFFF000); sLinkedList* titleList = 0; FILE* titleFile = fopen("snake.pic", "r"); listInitialize(&titleList, sizeofPoint(), NULL); for(int x = 0; x < 32; x++) for(int y = 0; y < 24; y++) if(x == 0 || x == (31) || y == 0 || y == (23)) { point* toAdd = createPoint(x,y); listPushFront(titleList, (void*)toAdd); free(toAdd); } while(isRunning(wrap)) { beginFrame(wrap); if(State == -1) { readTitleFile(titleList, titleFile); renderList(titleList, wrap); } else if(State == 1) tick(gameEngine); else { if(Selection == 0) { renderText(wrap, startSel, 400, 300); renderText(wrap, exitUnsel, 400, 325); } else { renderText(wrap, startUnsel, 400, 300); renderText(wrap, exitSel, 400, 325); } if(keyDown(wrap, SDLK_DOWN)) Selection = 1; if(keyDown(wrap,SDLK_UP)) Selection = 0; if(keyDown(wrap, SDLK_RETURN)) { if(Selection == 0) { State = 1; setupGame(gameEngine); } else toggleRunning(wrap); } renderList(titleList, wrap); } if(keyPressed(wrap, SDLK_ESCAPE)) toggleRunning(wrap); endFrame(wrap); } listClear(titleList); free(titleList); destroyText(startUnsel); destroyText(startSel); destroyText(exitUnsel); destroyText(exitSel); deinitializeWrapper(wrap); destroyGame(gameEngine); free(wrap); return 0; }
int main(void) { ListNode* testList = NULL; ListNode* node = listPushBack(&testList); node->data = allocData(1); printf("test 1\nsize = %u, last id = %i\n", listSize(&testList), getId(listBack(&testList)->data)); //-------- for(int i = 0; i < 100; ++i) { node = listPushBack(&testList); //->data = allocData(i); node->data = allocData(i); } printf("test 2\nsize = %u, last id = %i\n", listSize(&testList), getId(listBack(&testList)->data)); //-------- for(int i = 0; i < 100; ++i) { node = listPushFront(&testList); node->data = allocData(i); } printf("test 3\nsize = %u, first id = %i\n", listSize(&testList), getId(listFront(&testList)->data)); //-------- for(int i = 0; i < 100; ++i) { node = listInsert(listNext(&testList, 50)); node->data = allocData(i); } printf("test 4\nsize = %u, id(100) = %i\n", listSize(&testList), getId(listNext(&testList, 100)->data)); //-------- listFree(&testList); if(listEmpty(&testList)) printf("test4: list empty\n"); //-------- for(int i = 0; i < 100; ++i) { node = listPushFront(&testList); node->data = allocData(i); } listErase(&testList, listFront(&testList)); printf("test 5\nsize = %u, id(0) = %i\n", listSize(&testList), getId(listFront(&testList)->data)); listErase(&testList, listFront(&testList)); //-------------- listEraseRange(&testList, listNext(testList, 10), listNext(testList, 20)); node = testList; for(int i = 0; i < 30; ++i) { printf("id(%d) = %d\n", i, ((ListData*)(node->data))->id); node = node->next; } printf("test 6\nsize = %u, id(10) = %i\n", listSize(&testList), getId(listFront(&testList)->data)); //-------------- listPopBack(&testList); printf("test 7\nsize = %u, id(back) = %i\n", listSize(&testList), getId(listBack(&testList)->data)); //-------------- listPopFront(&testList); printf("test 8\nsize = %u, id(front) = %i\n", listSize(&testList), getId(listFront(&testList)->data)); //-------------- listResize(&testList, 10); printf("test 9\nsize = %u, id(back) = %i\n", listSize(&testList), getId(listBack(&testList)->data)); //-------------- listResize(&testList, 20); node = testList; for(int i = 0; i < 20; ++i) { node->data = allocData(i); node = node->next; } printf("test 10\nsize = %u, id(back) = %i\n", listSize(&testList), getId(listBack(&testList)->data)); return 0; }