Ejemplo n.º 1
0
//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);
}
Ejemplo n.º 2
0
int main(void){
    if (SetupandLoad()){
        return EXIT_FAILURE;
    }

    while (1){
        MainLogicLoop();
    }

    Exit();
}