//have random attacks. if it doesnt get hit, sucess. if it gets hit, fail. void getTrainingDataforAttack(void) { FILE* fpatk = fopen("E:/Code Workspace/Dark Souls AI C/Neural Nets/attack_training_data.train", "a"); unsigned int trainingLinesCountAtk = 0; SetupandLoad(); //float distanceStorage[50];//every 100 ms, LENGTH*100 is memory length float poiseEnemy; float weaponPoiseDamage; float enemyStaminaEstimate;//use the last_animation_ids_enemy to estimate enemy stamina while (listening){ ReadPlayer(&Player, processHandle, LocationMemoryPlayer); ReadPlayer(&Enemy, processHandle, LocationMemoryEnemy); AppendDistance(distance(&Player, &Enemy)); AppendAnimationTypeEnemy(Enemy.animationType_id); if (isAttackAnimation(Player.animationType_id)){ int startingHp = Player.hp; while (isAttackAnimation(Player.animationType_id)){ ReadPlayer(&Player, processHandle, LocationMemoryPlayer); } float result = 0; //bad outcome if (startingHp != Player.hp){ result = -1; } //good outcome else{ result = 1; } trainingLinesCountAtk++; /*fprintf(fpatk, "%f %f %f\n", (float)stateBuffer[3]->animation_id, (float)stateBuffer[2]->animation_id, result );*/ //save //printf("result:%f, SelfAnimation %f, EnmyAnimation %f\n", result, (float)stateBuffer[2]->animation_id, (float)stateBuffer[3]->animation_id); } } fprintf(fpatk, "## = %d\n", trainingLinesCountAtk); fclose(fpatk); }
int main(void){ if (SetupandLoad()){ return EXIT_FAILURE; } while (1){ MainLogicLoop(); } Exit(); }