MCPcopy Create free account
hub / github.com/bupticybee/TexasSolver / generateShowdownNode

Method generateShowdownNode

src/GameTree.cpp:429–454  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

427}
428
429shared_ptr<ShowdownNode> GameTree::generateShowdownNode(json meta, string round, shared_ptr<GameTreeNode> parent) {
430 json meta_payoffs = meta["payoffs"];
431 vector<double> tie_payoffs = meta_payoffs["tie"];
432
433 // meta_payoffs 的key有 n个玩家+1个平局,代表某个玩家赢了的时候如何分配payoff
434 vector<vector<double>> player_payoffs(2);
435 double pot = meta["pot"];
436
437 for(auto one_player_meta=meta_payoffs.begin(); one_player_meta!=meta_payoffs.end(); one_player_meta++){
438 const string& one_player = one_player_meta.key();
439 if(one_player == "tie"){
440 continue;
441 }
442 // 获胜玩家id
443 int player_id = atoi(one_player.c_str());
444 if(player_id < 0 or player_id > 1) throw runtime_error("player id json convert fail");
445
446 // 玩家在当前Showdown节点能获得的收益
447 //List<Object> tmp_payoffs = (List<Object>)meta_payoffs.get(one_player);
448 vector<double> player_payoff = one_player_meta.value();
449
450 player_payoffs[atoi(one_player.c_str())] = player_payoff;
451 }
452 GameTreeNode::GameRound game_round = strToGameRound(std::move(round));
453 return make_shared<ShowdownNode>(tie_payoffs,player_payoffs,game_round,pot,parent);
454}
455
456shared_ptr<TerminalNode> GameTree::generateTerminalNode(json meta, string round, shared_ptr<GameTreeNode> parent) {
457 vector<double> player_payoff_list = meta["payoff"];

Callers 1

Calls 4

beginMethod · 0.45
endMethod · 0.45
keyMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected