亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.~cpp

?? This AI for Game Developers
?? ~CPP
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void TForm1::Initialize(void)
{
        Rules[0].SetRule(Punch, Punch, Punch);
        Rules[1].SetRule(Punch, Punch, LowKick);
        Rules[2].SetRule(Punch, Punch, HighKick);
        Rules[3].SetRule(Punch, LowKick, Punch);
        Rules[4].SetRule(Punch, LowKick, LowKick);
        Rules[5].SetRule(Punch, LowKick, HighKick);
        Rules[6].SetRule(Punch, HighKick, Punch);
        Rules[7].SetRule(Punch, HighKick, LowKick);
        Rules[8].SetRule(Punch, HighKick, HighKick);
        Rules[9].SetRule(LowKick, Punch, Punch);
        Rules[10].SetRule(LowKick, Punch, LowKick);
        Rules[11].SetRule(LowKick, Punch, HighKick);
        Rules[12].SetRule(LowKick, LowKick, Punch);
        Rules[13].SetRule(LowKick, LowKick, LowKick);
        Rules[14].SetRule(LowKick, LowKick, HighKick);
        Rules[15].SetRule(LowKick, HighKick, Punch);
        Rules[16].SetRule(LowKick, HighKick, LowKick);
        Rules[17].SetRule(LowKick, HighKick, HighKick);
        Rules[18].SetRule(HighKick, Punch, Punch);
        Rules[19].SetRule(HighKick, Punch, LowKick);
        Rules[20].SetRule(HighKick, Punch, HighKick);
        Rules[21].SetRule(HighKick, LowKick, Punch);
        Rules[22].SetRule(HighKick, LowKick, LowKick);
        Rules[23].SetRule(HighKick, LowKick, HighKick);
        Rules[24].SetRule(HighKick, HighKick, Punch);
        Rules[25].SetRule(HighKick, HighKick, LowKick);
        Rules[26].SetRule(HighKick, HighKick, HighKick);

        WorkingMemory.strikeA = sUnknown;
        WorkingMemory.strikeB = sUnknown;
        WorkingMemory.strikeC = sUnknown;
        PreviousRuleFired = -1;

        N = 0;
        NSuccess = 0;
        NRandomSuccess = 0;
        UpdateForm();
}

TStrikes TForm1::ProcessMove(TStrikes move)
{
        int     i;
        int     RuleToFire = -1;

        if(WorkingMemory.strikeA == sUnknown)
        {
                WorkingMemory.strikeA = move;
                return sUnknown;
        }

        if(WorkingMemory.strikeB == sUnknown)
        {
                WorkingMemory.strikeB = move;
                return sUnknown;
        }

        // tally and adjust weights...
        N++;
        if(move == Prediction)
        {
                NSuccess++;
                if(PreviousRuleFired != -1)
                        Rules[PreviousRuleFired].weight++;
        } else {
                if(PreviousRuleFired != -1)
                        Rules[PreviousRuleFired].weight--;

                // backward chain to increment the rule that should have been fired
                for(i=0; i<NUM_RULES; i++)
                {
                        if(Rules[i].matched && (Rules[i].consequentC == move))
                        {
                                Rules[i].weight++;
                                break;
                        }
                }
                
        }

        if(move == RandomPrediction)
                NRandomSuccess++;

        // roll back...
        WorkingMemory.strikeA = WorkingMemory.strikeB;
        WorkingMemory.strikeB = move;

        // make prediction...
        for(i=0; i<NUM_RULES; i++)
        {
                if(Rules[i].antecedentA == WorkingMemory.strikeA &&
                   Rules[i].antecedentB == WorkingMemory.strikeB)
                        Rules[i].matched = true;
                else
                        Rules[i].matched = false;
        }

        // pick the matched rule with the highest weight...
        RuleToFire = -1;
        for(i=0; i<NUM_RULES; i++)
        {
                if(Rules[i].matched)
                {
                        if(RuleToFire == -1)
                                RuleToFire = i;
                        else if(Rules[i].weight > Rules[RuleToFire].weight)
                                RuleToFire = i;
                }
        }

        // fire the rule
        if(RuleToFire != -1) {
                WorkingMemory.strikeC = Rules[RuleToFire].consequentC;
                PreviousRuleFired = RuleToFire;
        } else {
                WorkingMemory.strikeC = sUnknown;
                PreviousRuleFired = -1;
        }

        return WorkingMemory.strikeC;

}
void __fastcall TForm1::Button1Click(TObject *Sender)
{


        Prediction = ProcessMove(Punch);
        RandomPrediction =  (TStrikes) rand() % 3;
        UpdateForm();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        

        Prediction = ProcessMove(LowKick);
        RandomPrediction =  (TStrikes) rand() % 3;
        UpdateForm();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
        Prediction = ProcessMove(HighKick);
        RandomPrediction =  (TStrikes) rand() % 3;
        UpdateForm();
}
//---------------------------------------------------------------------------
void    TForm1::UpdateForm(void)
{
        String        tmp;

        StringGrid1->Cells[0][0] = "Rule #";
        StringGrid1->Cells[1][0] = "ant. A";
        StringGrid1->Cells[2][0] = "ant. B";
        StringGrid1->Cells[3][0] = "con. C";
        StringGrid1->Cells[4][0] = "weight";

        for(int i=0; i<NUM_RULES; i++)
        {
                StringGrid1->Cells[0][i+1] = IntToStr(i);
                switch(Rules[i].antecedentA)
                {
                        case Punch: tmp = "Punch"; break;
                        case LowKick: tmp = "Low Kick"; break;
                        case HighKick: tmp = "High Kick"; break;
                }
                StringGrid1->Cells[1][i+1] = tmp;

                switch(Rules[i].antecedentB)
                {
                        case Punch: tmp = "Punch"; break;
                        case LowKick: tmp = "Low Kick"; break;
                        case HighKick: tmp = "High Kick"; break;
                }
                StringGrid1->Cells[2][i+1] = tmp;

                switch(Rules[i].consequentC)
                {
                        case Punch: tmp = "Punch"; break;
                        case LowKick: tmp = "Low Kick"; break;
                        case HighKick: tmp = "High Kick"; break;
                }
                StringGrid1->Cells[3][i+1] = tmp;

                StringGrid1->Cells[4][i+1] = IntToStr(Rules[i].weight);
        }

        switch(WorkingMemory.strikeA)
        {
                case Punch: Label6->Caption = "Punch"; break;
                case LowKick: Label6->Caption = "LowKick"; break;
                case HighKick: Label6->Caption = "HighKick"; break;
        }
        switch(WorkingMemory.strikeB)
        {
                case Punch: Label5->Caption = "Punch"; break;
                case LowKick: Label5->Caption = "LowKick"; break;
                case HighKick: Label5->Caption = "HighKick"; break;
        }

        switch(Prediction)
        {
                case Punch: Label8->Caption = "Punch"; break;
                case LowKick: Label8->Caption = "LowKick"; break;
                case HighKick: Label8->Caption = "HighKick"; break;
        }

        switch(RandomPrediction)
        {
                case Punch: Label7->Caption = "Punch"; break;
                case LowKick: Label7->Caption = "LowKick"; break;
                case HighKick: Label7->Caption = "HighKick"; break;
        }

        if(N>0)
        {
                Label9->Caption = FloatToStrF((double) NSuccess / (double) N, ffFixed, 15, 3);
                Label10->Caption = FloatToStrF((double) NRandomSuccess / (double) N, ffFixed, 15, 3);
        } else {
                Label9->Caption = "na";
                Label10->Caption = "na";
        }
}
void __fastcall TForm1::FormActivate(TObject *Sender)
{
        Initialize();        
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

TRule::TRule()
{
        matched = true;
        weight = 0;
}

void TRule::SetRule(TStrikes A, TStrikes B, TStrikes C)
{
        antecedentA = A;
        antecedentB = B;
        consequentC = C;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品成a人| 看电影不卡的网站| 日韩欧美一级片| 97久久精品人人澡人人爽| 午夜成人免费电影| 中文字幕一区二区三区在线观看 | 精品亚洲欧美一区| 亚洲欧美另类小说| 精品999在线播放| 欧美另类变人与禽xxxxx| 成人av网站在线观看| 理论片日本一区| 午夜激情一区二区三区| 亚洲少妇最新在线视频| 国产日韩欧美高清| 日韩免费观看高清完整版| 色伊人久久综合中文字幕| 成人午夜av在线| 国产原创一区二区| 免费久久精品视频| 午夜久久久久久久久| 国产精品白丝在线| 欧美国产日韩在线观看| 精品91自产拍在线观看一区| 欧美一级久久久| 欧美日韩不卡视频| 在线观看免费一区| 色婷婷精品久久二区二区蜜臂av | 日韩女优制服丝袜电影| 欧美日免费三级在线| 色综合欧美在线| 91伊人久久大香线蕉| 国产成人精品一区二| 国产精品自拍三区| 国产成人在线视频网址| 国产黄色精品视频| 国产精品一二二区| 国产精品主播直播| 国产精品夜夜嗨| 丁香啪啪综合成人亚洲小说| 国产91综合一区在线观看| 国产91清纯白嫩初高中在线观看| 国产黄色精品视频| av亚洲精华国产精华精| a级高清视频欧美日韩| 99久久精品情趣| 99精品视频在线免费观看| 不卡一区二区在线| 一本色道久久综合精品竹菊| 一本在线高清不卡dvd| 欧洲在线/亚洲| 欧美福利电影网| 日韩一区二区三区在线视频| 欧美va亚洲va国产综合| 久久精品视频一区二区| 成人欧美一区二区三区视频网页| 亚洲色图欧洲色图| 亚洲成人激情社区| 久久精品国产精品亚洲精品| 国产乱码精品一品二品| 99精品视频在线观看免费| 欧美视频一区在线| 欧美一级高清大全免费观看| 久久久久一区二区三区四区| 国产精品国产三级国产专播品爱网 | 欧洲中文字幕精品| 欧美一区2区视频在线观看| 欧美成人女星排名| 自拍偷拍国产精品| 免费看欧美美女黄的网站| 国产成人在线视频网址| 91福利区一区二区三区| 日韩三级视频中文字幕| 国产精品女人毛片| 亚洲午夜免费福利视频| 国产麻豆成人精品| 精品视频色一区| 国产视频一区在线观看| 亚洲自拍偷拍欧美| 精品一区二区三区欧美| 97se亚洲国产综合自在线不卡| 欧美精三区欧美精三区| 国产肉丝袜一区二区| 偷拍一区二区三区| 成人免费的视频| 日韩欧美亚洲一区二区| 亚洲色图视频网| 精品中文字幕一区二区| 日本韩国欧美一区二区三区| 精品嫩草影院久久| 亚洲高清免费在线| caoporn国产一区二区| 欧美一二三在线| 亚洲最新视频在线观看| 从欧美一区二区三区| 6080午夜不卡| 亚洲免费视频成人| 国内精品视频666| 欧美日高清视频| 中文字幕在线免费不卡| 国内精品在线播放| 欧美人狂配大交3d怪物一区| 1区2区3区国产精品| 国产精品影视网| 日韩一本二本av| 亚洲福利视频一区二区| 成人av网站大全| 久久综合久久综合九色| 日韩和欧美一区二区三区| 色噜噜狠狠色综合中国| 欧美激情中文不卡| 国产综合久久久久影院| 欧美一激情一区二区三区| 亚洲电影中文字幕在线观看| 99久久精品99国产精品| 国产日韩av一区二区| 久久99热这里只有精品| 欧美一卡2卡3卡4卡| 亚洲超丰满肉感bbw| 91成人免费在线视频| 亚洲精品亚洲人成人网| 91免费国产视频网站| 亚洲欧洲日产国码二区| a级高清视频欧美日韩| 国产精品欧美极品| 成人午夜激情视频| 国产精品久久久久婷婷| 成人精品小蝌蚪| 国产精品福利在线播放| zzijzzij亚洲日本少妇熟睡| 国产精品久久久久久久久搜平片| 国产盗摄女厕一区二区三区| 国产欧美日韩在线| 丁香另类激情小说| 国产精品美女久久福利网站| 99久久综合国产精品| 国产精品青草综合久久久久99| 成人av手机在线观看| 亚洲柠檬福利资源导航| 在线影视一区二区三区| 亚洲高清免费在线| 欧美一区二区大片| 国内精品第一页| 国产女主播视频一区二区| 不卡一区二区中文字幕| 一区二区三区在线观看国产| 欧美中文字幕不卡| 日本亚洲免费观看| 久久一夜天堂av一区二区三区| 成人永久aaa| 亚洲久本草在线中文字幕| 欧美日韩成人在线| 激情都市一区二区| 国产精品久久久久一区二区三区共| 色综合久久久久综合体| 午夜在线成人av| 久久无码av三级| 99re热视频精品| 天天亚洲美女在线视频| 久久看人人爽人人| 色婷婷久久综合| 蜜桃视频在线一区| 国产精品人妖ts系列视频| 欧美日韩在线不卡| 国产美女一区二区| 一区二区三区成人| 欧美一区二区三区视频免费| 国产成人亚洲综合a∨婷婷图片| 最新成人av在线| 91精品久久久久久蜜臀| 国产高清在线观看免费不卡| 亚洲精品菠萝久久久久久久| 日韩午夜电影av| 99re成人精品视频| 美女诱惑一区二区| √…a在线天堂一区| 欧美理论片在线| 成人免费高清视频在线观看| 视频一区视频二区在线观看| 国产精品每日更新| 日韩一区二区在线观看视频| 91亚洲精品久久久蜜桃网站| 美女视频一区二区三区| 亚洲免费视频中文字幕| 久久奇米777| 欧美久久久久久久久久| 成+人+亚洲+综合天堂| 久久国产精品第一页| 一区二区三区视频在线观看| 欧美激情一区二区三区不卡| 欧美日韩成人激情| 97久久精品人人做人人爽| 国产一区二区三区| 性久久久久久久| 中文字幕一区二区三区蜜月| 欧美tickling挠脚心丨vk| 在线观看免费视频综合| jvid福利写真一区二区三区| 久久国内精品视频| 亚洲成人精品影院|