FFortress/fortress/ 40755 3103 20 0 6276102547 12764 5ustar ylafonw3cFFortress/fortress/strategie.c100644 3103 20 115573 6233171367 15267 0ustar ylafonw3c#ifdef VERBOSE_ROUTE #include #endif /* VERBOSE_ROUTE */ #ifdef ADD_RANDOM #include #endif /* ADD_RANDOM */ #include "types.h" #include "tools.h" #include "strategie.h" #ifndef HARDCUT #define HARDCUT 8 #define IHARDCUT 36 #endif #ifndef STEP #define STEP 2 #endif /* * some static proto */ static PARAM_TYPE BoardScore(board, board, int, param_cell); static PARAM_TYPE StrategicScore(board, board, int, int, param_cell); static PARAM_TYPE SearchScore(board, board, PARAM_TYPE, PARAM_TYPE, int, param_cell); static void Shuffler (board , board , int , int, int *, param); static void EndShuffler (board , board , int , int *); static void FastEndShuffler (board , board , int , int *); static PARAM_TYPE PAlphaBetaW (PARAM_TYPE, PARAM_TYPE, board, board, int ,int , pred, param, PARAM_TYPE, PARAM_TYPE); static PARAM_TYPE PAlphaBetaB (PARAM_TYPE, PARAM_TYPE, board, board, int ,int , pred, param, PARAM_TYPE, PARAM_TYPE); static int PEndAlphaBetaB (board , board , int , int , pred, pred, int, int); static int PEndAlphaBetaW (board , board , int , int , pred, pred, int, int); static int PFastEndAlphaBetaB (board , board , int , int , pred, pred, int, int); static int PFastEndAlphaBetaW (board , board , int , int , pred, pred, int, int); /* * Explanations about AB schemes used, evalutation... */ static PARAM_TYPE BoardScore(play_b, calc_b, player, pcell) board play_b, calc_b; int player; param_cell pcell; { register int dump; int i; PARAM_TYPE score; score = 0; if(player>0) /* White player */ { for(i=0;i<36;i++) { dump = play_b[i]+calc_b[i]; if(dump > 0) score += pcell.my_score_rate; else if(dump < 0) score -= pcell.opp_score_rate; if(calc_b[i] == 0) if(play_b[i]>0) score -= pcell.protect_pos_rate; else if(play_b[i]<0) score += pcell.attack_pos_rate; } } else { /* Black Player */ for(i=0;i<36;i++) { dump = play_b[i]+calc_b[i]; if(dump < 0) score += pcell.my_score_rate; else if(dump > 0) score -= pcell.opp_score_rate; if(calc_b[i] == 0) if(play_b[i]<0) score -= pcell.protect_pos_rate; else if(play_b[i]>0) score += pcell.attack_pos_rate; } } return score; } static PARAM_TYPE StrategicScore(oplay_b, ocalc_b, player, where, pcell) board oplay_b, ocalc_b; int player, where; param_cell pcell; { #define WTestDefensive(x) if(oplay_b[x]>0 && ocalc_b[x] == 0) weights += pcell.defensive_rate #define WTestOffensive(x) if(oplay_b[x]<0 && ocalc_b[x] == 0) weights += pcell.offensive_rate #define BTestDefensive(x) if(oplay_b[x]>0 && ocalc_b[x] == 0) weights += pcell.offensive_rate #define BTestOffensive(x) if(oplay_b[x]<0 && ocalc_b[x] == 0) weights += pcell.defensive_rate PARAM_TYPE weights; weights = 0; if(player>0) /* White player */ { if(ocalc_b[where]<0) weights -= pcell.play_opp_flag; WTestDefensive(where); if(where>5) { WTestDefensive(where-6); WTestOffensive(where-6); } else weights -= pcell.position_rate; if(where<30) { WTestDefensive(where+6); WTestOffensive(where+6); } else weights -= pcell.position_rate; if(where != 0 && where != 6 && where != 12 && where != 18 && where != 24 && where !=30) { WTestDefensive(where-1); WTestOffensive(where-1); } else weights -= pcell.position_rate; if(where != 5 && where != 11 && where != 17 && where != 23 && where != 29 && where != 35) { WTestDefensive(where+1); WTestOffensive(where+1); } else weights -= pcell.position_rate; } else { /* Black Player */ if(ocalc_b[where]>0) weights -= pcell.play_opp_flag; BTestDefensive(where); if(where>5) { BTestDefensive(where-6); BTestOffensive(where-6); } else weights -= pcell.position_rate; if(where<30) { BTestDefensive(where+6); BTestOffensive(where+6); } else weights -= pcell.position_rate; if(where != 0 && where != 6 && where != 12 && where != 18 && where != 24 && where !=30) { BTestDefensive(where-1); BTestOffensive(where-1); } else weights -= pcell.position_rate; if(where != 5 && where != 11 && where != 17 && where != 23 && where != 29 && where != 35) { BTestDefensive(where+1); BTestOffensive(where+1); } else weights -= pcell.position_rate; } return weights; } static PARAM_TYPE SearchScore(play_b, calc_b, sc_weight, st_weight, player, pcell) board play_b, calc_b; PARAM_TYPE sc_weight, st_weight; int player; param_cell pcell; { PARAM_TYPE score; #ifdef NO_ADD_SCORE PARAM_TYPE b_score; #endif /* NO_ADD_SCORE */ score = BoardScore(play_b, calc_b, player, pcell) * sc_weight; #ifndef NO_ADD_SCORE score += st_weight; #else if(score<0) b_score = 1 - score; else b_score = score + 1; score += b_score * st_weight; #endif /* NO_ADD_SCORE */ #ifdef ADD_RANDOM score = score*8 + (rand()&7); #endif /* ADD_RANDOM */ return score; } static void Shuffler(play_b, calc_b, player, num_coup, where_list, brain) board play_b, calc_b; int player, num_coup, where_list[36]; param brain; { board d2_play_b, d1_play_b; board d2_calc_b, d1_calc_b; PARAM_TYPE alpha, beta, dump, st_weight, sc_weight; int pris_d1, pris_d2, ok; int where_d1, where_d2, where_b; int where_result[36]; alpha = -1000000; where_b = -1; sc_weight = brain[num_coup].board_score_rate; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); for(where_d1=0; where_d1<36; where_d1++) { where_list[where_d1] = where_d1; where_result[where_d1] = -1000000; } if(player>0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { ok=1; beta = 1000000; if(IsValidMove(d1_play_b, player, where_d1)) { st_weight = StrategicScore(play_b, calc_b, player, where_d1, brain[num_coup]); pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_d1); Copy(d1_play_b, d2_play_b); Copy(d1_calc_b, d2_calc_b); for(where_d2=0; ok && where_d2<36; where_d2++) { if(IsValidMove(d2_play_b, -1, where_d2)) { pris_d2 = PlayBlack(d2_play_b, d2_calc_b, where_d2); dump = SearchScore(d2_play_b, d2_calc_b, sc_weight, st_weight, 1, brain[num_coup+1]); if(dumpalpha) { alpha = beta; where_b = where_d1; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_d1); where_result[where_d1] = beta; } else where_result[where_d1] = -100000; } } else /* Black */ { for(where_d1=0; where_d1<36; where_d1++) { ok=1; beta = 1000000; if(IsValidMove(d1_play_b, player, where_d1)) { st_weight = StrategicScore(play_b, calc_b, player, where_d1, brain[num_coup]); pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_d1); Copy(d1_play_b, d2_play_b); Copy(d1_calc_b, d2_calc_b); for(where_d2=0; ok && where_d2<36; where_d2++) { if(IsValidMove(d2_play_b, 1, where_d2)) { pris_d2 = PlayWhite(d2_play_b, d2_calc_b, where_d2); dump = SearchScore(d2_play_b, d2_calc_b, sc_weight, st_weight, -1, brain[num_coup+1]); if(dumpalpha) { alpha = beta; where_b = where_d1; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_d1); where_result[where_d1] = beta; } else where_result[where_d1] = -100000; } } BubbleSort(where_list, where_result); } static void EndShuffler(play_b, calc_b, player, where_list) board play_b, calc_b; int player, where_list[36]; { board d2_play_b, d1_play_b; board d2_calc_b, d1_calc_b; int alpha, beta; int pris_d1, pris_d2, ok, dump; int where_d1, where_d2, where_b; int where_result[36]; alpha = -1000000; where_b = -1; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); for(where_d1=0; where_d1<36; where_d1++) { where_list[where_d1] = where_d1; where_result[where_d1] = -1000000; } if(player>0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { ok=1; beta = 1000000; if(IsValidMove(d1_play_b, player, where_d1)) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_d1); Copy(d1_play_b, d2_play_b); Copy(d1_calc_b, d2_calc_b); for(where_d2=0; ok && where_d2<36; where_d2++) { if(IsValidMove(d2_play_b, -1, where_d2)) { pris_d2 = PlayBlack(d2_play_b, d2_calc_b, where_d2); dump = EndScore(d2_play_b, d2_calc_b, player); if(dumpalpha) { alpha = beta; where_b = where_d1; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_d1); where_result[where_d1] = beta; } else where_result[where_d1] = -1000000; } } else /* Black */ { for(where_d1=0; where_d1<36; where_d1++) { ok=1; beta = 1000000; if(IsValidMove(d1_play_b, player, where_d1)) { pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_d1); Copy(d1_play_b, d2_play_b); Copy(d1_calc_b, d2_calc_b); for(where_d2=0; ok && where_d2<36; where_d2++) { if(IsValidMove(d2_play_b, 1, where_d2)) { pris_d2 = PlayWhite(d2_play_b, d2_calc_b, where_d2); dump = EndScore(d2_play_b, d2_calc_b, player); if(dumpalpha) { alpha = beta; where_b = where_d1; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_d1); where_result[where_d1] = beta; } else where_result[where_d1] = -10000; } } BubbleSort(where_list, where_result); return; } static void FastEndShuffler(play_b, calc_b, player, where_list) board play_b, calc_b; int player, where_list[36]; { board d2_play_b, d1_play_b; board d2_calc_b, d1_calc_b; int alpha, beta; int pris_d1, pris_d2, ok, dump; int where_d1, where_d2, where_b; int where_result[36]; int st_score; param_cell cell; alpha = -1000000; where_b = -1; cell.my_score_rate = 2.0; cell.opp_score_rate = 2.0; cell.protect_pos_rate = 1.0; cell.attack_pos_rate = 1.0; cell.board_score_rate = 1.0; cell.play_opp_flag = 20.0; cell.defensive_rate = 7.0; cell.offensive_rate = 0; cell.position_rate = 0; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); for(where_d1=0; where_d1<36; where_d1++) { where_list[where_d1] = where_d1; where_result[where_d1] = -1000000; } if(player>0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { ok=1; beta = 1000000; if(IsValidMove(d1_play_b, player, where_d1)) { st_score = (int)StrategicScore(play_b, calc_b, player, where_d1, cell); pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_d1); Copy(d1_play_b, d2_play_b); Copy(d1_calc_b, d2_calc_b); for(where_d2=0; ok && where_d2<36; where_d2++) { if(IsValidMove(d2_play_b, -1, where_d2)) { pris_d2 = PlayBlack(d2_play_b, d2_calc_b, where_d2); dump = st_score + EndScore(d2_play_b, d2_calc_b, player); if(dumpalpha) { alpha = beta; where_b = where_d1; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_d1); where_result[where_d1] = beta; } else where_result[where_d1] = -1000000; } } else /* Black */ { for(where_d1=0; where_d1<36; where_d1++) { ok=1; beta = 1000000; if(IsValidMove(d1_play_b, player, where_d1)) { st_score = (int)StrategicScore(play_b, calc_b, player, where_d1, cell); pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_d1); Copy(d1_play_b, d2_play_b); Copy(d1_calc_b, d2_calc_b); for(where_d2=0; ok && where_d2<36; where_d2++) { if(IsValidMove(d2_play_b, 1, where_d2)) { pris_d2 = PlayWhite(d2_play_b, d2_calc_b, where_d2); dump = st_score + EndScore(d2_play_b, d2_calc_b, player); if(dumpalpha) { alpha = beta; where_b = where_d1; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_d1); where_result[where_d1] = beta; } else where_result[where_d1] = -10000; } } BubbleSort(where_list, where_result); return; } static PARAM_TYPE PAlphaBetaW(sc_weight, st_weight, play_b, calc_b, depth, num_coup, pwhere, brain, alpha, beta) PARAM_TYPE st_weight, sc_weight; board play_b, calc_b; int depth, num_coup; pred pwhere; param brain; PARAM_TYPE alpha, beta; { board d1_play_b; board d1_calc_b; PARAM_TYPE dump, score; int pris_d1; int where_d1, where_b; int where_list[36] = { 7, 10, 28, 25, 12, 15, 20, 21, 9, 8, 13, 19, 16, 22, 27, 26, 1, 2, 3, 4, 11, 17, 23, 29, 34, 33, 32, 31, 24, 18, 12, 6, 5, 0, 30, 35 }; where_b = 0; score = alpha; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); if(depth == 1) { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, 1, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = SearchScore(d1_play_b, d1_calc_b, sc_weight, st_weight, 1, brain[num_coup]); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } else { if(depth>2) Shuffler(play_b, calc_b, 1, num_coup, where_list, brain); for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, 1, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PAlphaBetaB(sc_weight, -st_weight, d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, brain, -beta, -score); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } } static PARAM_TYPE PAlphaBetaB(sc_weight, st_weight, play_b, calc_b, depth, num_coup, pwhere, brain, alpha, beta) PARAM_TYPE st_weight, sc_weight; board play_b, calc_b; int depth, num_coup; pred pwhere; param brain; PARAM_TYPE alpha, beta; { board d1_play_b; board d1_calc_b; PARAM_TYPE dump, score; int pris_d1; int where_d1, where_b; int where_list[36] = { 7, 10, 28, 25, 12, 15, 20, 21, 9, 8, 13, 19, 16, 22, 27, 26, 1, 2, 3, 4, 11, 17, 23, 29, 34, 33, 32, 31, 24, 18, 12, 6, 5, 0, 30, 35 }; where_b = 0; score = alpha; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); if(depth == 1) { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, -1, where_list[where_d1])) { pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = SearchScore(d1_play_b, d1_calc_b, sc_weight, st_weight, -1, brain[num_coup]); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } else { if(depth>2) Shuffler(play_b, calc_b, -1, num_coup, where_list, brain); for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, -1, where_list[where_d1])) { pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PAlphaBetaW(sc_weight, -st_weight, d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, brain, -beta, -score); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; /* not a cut-off update list */ return score; } } int AlphaBeta(play_b, calc_b, player, depth, num_coup, pwhere, brain) board play_b, calc_b; int player, depth, num_coup; pred pwhere; param brain; { board d1_play_b; board d1_calc_b; PARAM_TYPE dump, sc_weight, st_weight, alpha, beta; int pris_d1; int where_d1, where_b; int where_list[36] = { 7, 10, 28, 25, 12, 15, 20, 21, 9, 8, 13, 19, 16, 22, 27, 26, 1, 2, 3, 4, 11, 17, 23, 29, 34, 33, 32, 31, 24, 18, 12, 6, 5, 0, 30, 35 }; where_b = 0; alpha = -1000000; beta = 1000000; sc_weight = brain[num_coup].board_score_rate; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); if(depth == 1) { if(player>0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { st_weight = StrategicScore(play_b, calc_b, player, where_list[where_d1], brain[num_coup]); pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = SearchScore(d1_play_b, d1_calc_b, sc_weight, st_weight, player, brain[num_coup]); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } else { /* Black */ for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { st_weight = StrategicScore(play_b, calc_b, player, where_list[where_d1], brain[num_coup]); pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = SearchScore(d1_play_b, d1_calc_b, sc_weight, st_weight, player, brain[num_coup]); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } } else /* propagation */ { #ifdef ITERATIVE_WINDOW if(depth>4) { dump = AlphaBeta(play_b, calc_b, player, depth-2, num_coup, pwhere, brain); alpha = dump-4; beta = dump+4; } #endif /* ITERATIVE_WINDOW */ Shuffler(play_b, calc_b, player, num_coup, where_list, brain); if(player>0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, 1, where_list[where_d1])) { st_weight = StrategicScore(play_b, calc_b, player, where_list[where_d1], brain[num_coup]); pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PAlphaBetaB(sc_weight, -st_weight, d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, brain, -beta, -alpha); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } else /* Black */ { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { st_weight = StrategicScore(play_b, calc_b, player, where_list[where_d1], brain[num_coup]); pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PAlphaBetaW(sc_weight, -st_weight, d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, brain, -beta, -alpha); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } } } static int PEndAlphaBetaW(play_b, calc_b, depth, num_coup, pwhere, rwhere, alpha, beta) board play_b, calc_b; int depth, num_coup; pred pwhere; pred rwhere; int alpha, beta; { board d1_play_b; board d1_calc_b; int dump, score, exc; int pris_d1, i; int where_d1, where_b; pred best; int where_list[36] = { 0, 1, 2, 3, 4, 5, 11, 17, 23, 29, 35, 34, 33, 32, 31, 30, 24, 18, 12, 6, 14, 15, 20, 21, 28, 27, 26, 25, 19, 13, 7, 8, 9, 10, 16, 22 }; where_b = 0; score = alpha; Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); if(depth == 1) { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, 1, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = EndScore(d1_play_b, d1_calc_b, 1); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } else { if(depth>2) EndShuffler(play_b, calc_b, 1, where_list); if(rwhere[depth] != -1) /* if recorded route , reorganisation */ { for(dump = rwhere[depth], i=0; where_list[i] != rwhere[depth]; i++) { exc = where_list[i]; where_list[i] = dump; dump = exc; } where_list[i] = dump; } for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, 1, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PEndAlphaBetaB(d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, rwhere, -beta, -score); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; for(i=1; iscore) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } else { if(depth>2) EndShuffler(play_b, calc_b, -1, where_list); if(rwhere[depth] != -1) /* if recorded route , reorganisation */ { for(dump = rwhere[depth], i=0; where_list[i] != rwhere[depth]; i++) { exc = where_list[i]; where_list[i] = dump; dump = exc; } where_list[i] = dump; } for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, -1, where_list[where_d1])) { pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PEndAlphaBetaW(d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, rwhere, -beta, -score); if(dump>score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; for(i=1; i0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = EndScore(d1_play_b, d1_calc_b, player); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } else { /* Black */ for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = EndScore(d1_play_b, d1_calc_b, player); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } } else /* propagation */ { if(depth>3) /* iterative deepening */ { dump = EndAlphaBeta(play_b, calc_b, player, depth-STEP, num_coup, pwhere); for(i=1; i0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, 1, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = -PEndAlphaBetaB(d1_play_b, d1_calc_b, depth-1, num_coup+1, pwhere, recorded, -beta, -alpha); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; for(i=1; ialpha) { alpha = dump; where_b = where_list[where_d1]; for(i=1; iscore) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } else { if(depth>2) FastEndShuffler(play_b, calc_b, 1, where_list); if(rwhere[depth] != -1) /* if recorded route , reorganisation */ { for(dump = rwhere[depth], i=0; where_list[i] != rwhere[depth]; i++) { exc = where_list[i]; where_list[i] = dump; dump = exc; } where_list[i] = dump; } for(where_d1=0; where_d1score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; for(i=1; iscore) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return score; } else { if(depth>2) FastEndShuffler(play_b, calc_b, -1, where_list); if(rwhere[depth] != -1) /* if recorded route , reorganisation */ { for(dump = rwhere[depth], i=0; where_list[i] != rwhere[depth]; i++) { exc = where_list[i]; where_list[i] = dump; dump = exc; } where_list[i] = dump; } for(where_d1=0; where_d1score) { score = dump; where_b = where_list[where_d1]; if(score >= beta) return score; for(i=1; i0) /* White */ { for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { pris_d1 = PlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); dump = EndScore(d1_play_b, d1_calc_b, player); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayWhite(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } else { /* Black */ for(where_d1=0; where_d1<36; where_d1++) { if(IsValidMove(d1_play_b, player, where_list[where_d1])) { pris_d1 = PlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); dump = EndScore(d1_play_b, d1_calc_b, player); if(dump>alpha) { alpha = dump; where_b = where_list[where_d1]; } if(pris_d1) { Copy(play_b, d1_play_b); Copy(calc_b, d1_calc_b); } else UnPlayBlack(d1_play_b, d1_calc_b, where_list[where_d1]); } } pwhere[depth] = where_b; return alpha; } } else /* propagation */ { if(depth>3) /* at an inferior depth, EndAlphaBeta is ok to use */ { dump = FastEndAlphaBeta(play_b, calc_b, player, depth-STEP, num_coup, pwhere); for(i=1; i0) /* White */ { for(where_d1=0; where_d1alpha) { alpha = dump; where_b = where_list[where_d1]; for(i=1; ialpha) { alpha = dump; where_b = where_list[where_d1]; for(i=1; i0) || (play_b[where]>0 && calc_b[where]<0)) { pris++; play_b[where]=0; } if(where) { if((play_b[where-1]<0 && calc_b[where-1]>0) || (play_b[where-1]>0 && calc_b[where-1]<0)) { pris++; play_b[where-1]=0; } } if(where>5) { if((play_b[where-6]<0 && calc_b[where-6]>0) || (play_b[where-6]>0 && calc_b[where-6]<0)) { pris++; play_b[where-6]=0; } } if(where!=35) { if((play_b[where+1]<0 && calc_b[where+1]>0) || (play_b[where+1]>0 && calc_b[where+1]<0)) { pris++; play_b[where+1]=0; } } if(where<30) { if((play_b[where+6]<0 && calc_b[where+6]>0) || (play_b[where+6]>0 && calc_b[where+6]<0)) { pris++; play_b[where+6]=0; } } if(pris) { /* * Argh!!! Bad case! we must recompute everything and do expansions * expansion causes 25 computations instead of 36 if it stops after * the first propagation level (ie 99.9999% ;) ). * It can be optimized better to avoid computing the diagonals two times. * but with more code (it is better to optimize the algorithms!) */ Calc(play_b, calc_b); if(where) Prise(play_b, calc_b, where-1); if(where>5) Prise(play_b, calc_b, where-6); if(where!=35) Prise(play_b, calc_b, where+1); if(where<30) Prise(play_b, calc_b, where+6); } return pris; } void Score(play_b, calc_b, w_score, b_score) board play_b, calc_b; int *w_score, *b_score; { int i; int w_s, b_s; w_s = 0; b_s = 0; /* * calc_b and play_b are added to have at the same time squares * under influence and castle under 0 influence. */ for(i=0; i<36; i++) { if(play_b[i]+calc_b[i] < 0) b_s++; else if(play_b[i]+calc_b[i]) w_s++; } *w_score = w_s; *b_score = b_s; } int EndScore(play_b, calc_b, player) board play_b, calc_b; int player; { int i; int score; score = 0; for(i=0; i<36; i++) { if(play_b[i]<0 || calc_b[i]<0) score--; else if(play_b[i]>0 || calc_b[i]>0) score++; } return ((player>0) ? score : -score); } int IsValidMove(play_b, player, where) board play_b; int player, where; { if(player>0) { if(play_b[where]<0 || play_b[where] == 3) return 0; else return 1; } else { if(play_b[where]>0 || play_b[where] == -3) return 0; else return 1; } } int PlayBlack(play_b, calc_b, where) board play_b, calc_b; int where; { play_b[where] -=1; calc_b[where] -=1; if(where>5) calc_b[where-6] -=1; if(where<30) calc_b[where+6] -=1; if(where && where != 6 && where != 12 && where != 18 && where != 24 && where !=30) calc_b[where-1] -=1; if(where != 5 && where != 11 && where != 17 && where != 23 && where != 29 && where != 35) calc_b[where+1] -=1; return (Prise(play_b, calc_b, where)); } int PlayWhite(play_b, calc_b, where) board play_b, calc_b; int where; { play_b[where] +=1; calc_b[where] +=1; if(where>5) calc_b[where-6] +=1; if(where<30) calc_b[where+6] +=1; if(where && where != 6 && where != 12 && where != 18 && where != 24 && where !=30) calc_b[where-1] +=1; if(where != 5 && where != 11 && where != 17 && where != 23 && where != 29 && where != 35) calc_b[where+1] +=1; return (Prise(play_b, calc_b, where)); } void UnPlayWhite(play_b, calc_b, where) board play_b, calc_b; int where; { play_b[where] -=1; calc_b[where] -=1; if(where>5) calc_b[where-6] -=1; if(where<30) calc_b[where+6] -=1; if(where && where != 6 && where != 12 && where != 18 && where != 24 && where !=30) calc_b[where-1] -=1; if(where != 5 && where != 11 && where != 17 && where != 23 && where != 29 && where != 35) calc_b[where+1] -=1; } void UnPlayBlack(play_b, calc_b, where) board play_b, calc_b; int where; { play_b[where] +=1; calc_b[where] +=1; if(where>5) calc_b[where-6] +=1; if(where<30) calc_b[where+6] +=1; if(where && where != 6 && where != 12 && where != 18 && where != 24 && where !=30) calc_b[where-1] +=1; if(where != 5 && where != 11 && where != 17 && where != 23 && where != 29 && where != 35) calc_b[where+1] +=1; } void BubbleSort(where_list, where_result) int where_list[36], where_result[36]; { int ok, i, dump; ok = 1; while(ok) { ok = 0; for(i=0; i<35; i++) if(where_result[i] #include "types.h" #include "brain.h" void CopyBrainCell(orig_b, copy_b) param_cell orig_b, *copy_b; { copy_b->my_score_rate = orig_b.my_score_rate; copy_b->opp_score_rate = orig_b.opp_score_rate; copy_b->protect_pos_rate = orig_b.protect_pos_rate; copy_b->attack_pos_rate = orig_b.attack_pos_rate; copy_b->board_score_rate = orig_b.board_score_rate; copy_b->play_opp_flag = orig_b.play_opp_flag; copy_b->defensive_rate = orig_b.defensive_rate; copy_b->offensive_rate = orig_b.offensive_rate; copy_b->position_rate = orig_b.position_rate; } void CopyBrain(orig_b, copy_b) param orig_b, copy_b; { int i; for(i=0;i<42;i++) CopyBrainCell(orig_b[i], ©_b[i]); } void LoadBrain(filename, brain) char *filename; param brain; { FILE *fl; int i; fl = fopen(filename, "r"); if(!fl) { printf("Brain %s does not exist...\n", filename); exit(1); } for(i=0;i<42;i++) { #ifdef FLOAT_PARAM fscanf(fl, "%f", &(brain[i].my_score_rate )); fscanf(fl, "%f", &(brain[i].opp_score_rate )); fscanf(fl, "%f", &(brain[i].protect_pos_rate)); fscanf(fl, "%f", &(brain[i].attack_pos_rate )); fscanf(fl, "%f", &(brain[i].board_score_rate)); fscanf(fl, "%f", &(brain[i].play_opp_flag )); fscanf(fl, "%f", &(brain[i].defensive_rate )); fscanf(fl, "%f", &(brain[i].offensive_rate )); fscanf(fl, "%f", &(brain[i].position_rate )); #else fscanf(fl, "%d", &(brain[i].my_score_rate )); fscanf(fl, "%d", &(brain[i].opp_score_rate )); fscanf(fl, "%d", &(brain[i].protect_pos_rate)); fscanf(fl, "%d", &(brain[i].attack_pos_rate )); fscanf(fl, "%d", &(brain[i].board_score_rate)); fscanf(fl, "%d", &(brain[i].play_opp_flag )); fscanf(fl, "%d", &(brain[i].defensive_rate )); fscanf(fl, "%d", &(brain[i].offensive_rate )); fscanf(fl, "%d", &(brain[i].position_rate )); #endif } fclose(fl); } void SaveBrain(filename, brain) char *filename; param brain; { FILE *fl; int i; fl = fopen(filename, "w"); if(!fl) { printf("Brain %s cannot be created...\n", filename); exit(1); } for(i=0;i<42;i++) { #ifdef FLOAT_PARAM fprintf(fl, "%f " , brain[i].my_score_rate ); fprintf(fl, "%f " , brain[i].opp_score_rate ); fprintf(fl, "%f " , brain[i].protect_pos_rate); fprintf(fl, "%f " , brain[i].attack_pos_rate ); fprintf(fl, "%f " , brain[i].board_score_rate); fprintf(fl, "%f " , brain[i].play_opp_flag ); fprintf(fl, "%f " , brain[i].defensive_rate ); fprintf(fl, "%f " , brain[i].offensive_rate ); fprintf(fl, "%f\n", brain[i].position_rate ); #else fprintf(fl, "%d " , brain[i].my_score_rate ); fprintf(fl, "%d " , brain[i].opp_score_rate ); fprintf(fl, "%d " , brain[i].protect_pos_rate); fprintf(fl, "%d " , brain[i].attack_pos_rate ); fprintf(fl, "%d " , brain[i].board_score_rate); fprintf(fl, "%d " , brain[i].play_opp_flag ); fprintf(fl, "%d " , brain[i].defensive_rate ); fprintf(fl, "%d " , brain[i].offensive_rate ); fprintf(fl, "%d\n", brain[i].position_rate ); #endif } fclose(fl); } FFortress/fortress/TODO100644 3103 20 163 6233072415 13522 0ustar ylafonw3cremove the ugly BubbleSort by a good sorting. (check with profiler) A better Killer Heuristic (shape recognition?) FFortress/xfortress/ 40755 3103 20 0 6274435002 13145 5ustar ylafonw3cFFortress/xfortress/TODO100644 3103 20 366 6233072421 13714 0ustar ylafonw3ctodo list... i hate such lists !!! recode entirely the interface... it is UGLY right now (not only the interface, but this old piece of code). add levels of play create a better brain. you can suggest any improvement... email lafon@w3.org FFortress/xfortress/blacflag.bm100644 3103 20 3536 6233072421 15321 0ustar ylafonw3c#define blacflag_width 48 #define blacflag_height 48 static char blacflag_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x01, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x01, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/blcas1.bm100644 3103 20 3530 6233072421 14725 0ustar ylafonw3c#define blcas1_width 48 #define blcas1_height 48 static char blcas1_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1e, 0x00, 0x00, 0xbc, 0x07, 0xf0, 0x7e, 0x77, 0x77, 0xbf, 0x07, 0xf0, 0x7f, 0x77, 0x77, 0xff, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/blcas2.bm100644 3103 20 3530 6233072421 14726 0ustar ylafonw3c#define blcas2_width 48 #define blcas2_height 48 static char blcas2_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x07, 0x00, 0x00, 0xfc, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0xdc, 0x1d, 0xfc, 0x07, 0xf0, 0x1f, 0xdc, 0x1d, 0xfc, 0x07, 0xf0, 0x1f, 0xfc, 0x1f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x7e, 0x7f, 0x7f, 0xbf, 0x07, 0xf0, 0x7f, 0xff, 0x7f, 0xff, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/blcas3.bm100644 3103 20 3530 6233072421 14727 0ustar ylafonw3c#define blcas3_width 48 #define blcas3_height 48 static char blcas3_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf0, 0x07, 0xf8, 0x03, 0xfc, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x7e, 0x7f, 0x7f, 0xbf, 0x07, 0xf0, 0x7f, 0xff, 0x7f, 0xff, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/callback.c100644 3103 20 15160 6274433644 15177 0ustar ylafonw3c#include #include "xfortress.h" #include "callback.h" #include "types.h" #include "strategie.h" #include "tools.h" #define MAX_COUPS 42 #define FAST_EAB_START 35 #define EAB_START 37 #ifndef DEPTH #define DEPTH 4 #endif #define PMIN(a,b) ((a0) { XtSetArg(ar[0],XtNbitmap,pixtab[is_last][8]); } else { XtSetArg(ar[0],XtNbitmap,pixtab[is_last][1]); }; } else { XtSetArg(ar[0],XtNbitmap,pixtab[is_last][0]); }; }; XtSetValues(tableau,ar,1); } void single(w,client_data,call_data) Widget w; XtPointer client_data,call_data; { is_single=!(is_single); if (is_single) { XtSetArg(ar[0],XtNlabel,"SINGLE"); } else { XtSetArg(ar[0],XtNlabel," TWO "); }; XtSetValues(wsingle,ar,1); } void setwarn(w,client_data,call_data) Widget w; XtPointer client_data,call_data; { int ii,jj; warn_=!(warn_); if (warn_) { XtSetArg(ar[0],XtNlabel," WARN "); } else { XtSetArg(ar[0],XtNlabel,"NOWARN"); }; XtSetValues(wwarn,ar,1); for(ii=1;ii<=6;ii++) for(jj=1;jj<=6;jj++) affichage(play_board[(ii-1)*6+(jj-1)],calc_board[(ii-1)*6+(jj-1)],tabl[ii][jj],0); } void quit(w,client_data,call_data) Widget w; XtPointer client_data,call_data; { exit(0); } void compuplay(w,client_data,call_data) Widget w; XtPointer client_data,call_data; { int ii,jj,ii_last,jj_last,dump; pred p_list; if (coups0) PlayWhite(play_board, calc_board, p_list[DEPTH]); else PlayBlack(play_board, calc_board, p_list[DEPTH]); ii = p_list[DEPTH]; } else { if (coups0) PlayWhite(play_board, calc_board, p_list[MAX_COUPS-coups]); else PlayBlack(play_board, calc_board, p_list[MAX_COUPS-coups]); ii = p_list[MAX_COUPS-coups]; } ii_last=ii; player=-player; for(ii=1;ii<=6;ii++) for(jj=1;jj<=6;jj++) affichage(play_board[(ii-1)*6+(jj-1)],calc_board[(ii-1)*6+(jj-1)],tabl[ii][jj],( ((ii-1)*6+(jj-1)==ii_last) ? 1 : 0 )); Score(play_board, calc_board, &ii, &jj); sprintf(buf,"Score -> %d/%d", ii, jj); XtSetArg(ar[0],XtNlabel,buf); XtSetValues(wscore,ar,1); dump=((coups+1)/2)+1; sprintf(buf,"Turn %2d",dump); XtSetArg(ar[0],XtNlabel,buf); XtSetValues(wtour,ar,1); if (player==1){ XtSetArg(ar[0],XtNlabel,"it's you to play,white..."); } else{ XtSetArg(ar[0],XtNlabel,"it's you to play,black..."); }; coups++; }; if (coups>=MAX_COUPS) { for(ii=1;ii<=6;ii++) for(jj=1;jj<=6;jj++) affichage(play_board[(ii-1)*6+(jj-1)],calc_board[(ii-1)*6+(jj-1)],tabl[ii][jj],((ii==ii_last) && (jj==jj_last) ? 1 : 0)); Score(play_board, calc_board, &ii, &jj); sprintf(buf,"Score -> %d/%d", ii, jj); XtSetArg(ar[0],XtNlabel,buf); XtSetValues(wscore,ar,1); dump=((coups+1)/2)+1; sprintf(buf,"Turn %2d",dump); XtSetArg(ar[0],XtNlabel,buf); XtSetValues(wtour,ar,1); XtSetArg(ar[0],XtNlabel,"THE END"); XtSetValues(wtour,ar,1); dump = EndScore(play_board, calc_board, 1); if (dump) { if (dump>0) { XtSetArg(ar[0],XtNlabel," WHITE is the WINNER "); } else { XtSetArg(ar[0],XtNlabel," BLACK is the WINNER "); }; } else { XtSetArg(ar[0],XtNlabel," A DRAW .... "); }; }; XtSetValues(wmesg,ar,1); } void play(w,client_data,call_data) Widget w; XtPointer client_data,call_data; { int ii,jj,ii_last,jj_last,dump; dump= (int) client_data; jj= dump % 10; ii= (dump-jj)/10; if (IsValidMove(play_board, player, (ii-1)*6+(jj-1)) && coups0) PlayWhite(play_board, calc_board, (ii-1)*6+(jj-1)); else PlayBlack(play_board, calc_board, (ii-1)*6+(jj-1)); ii_last=ii; jj_last=jj; player=-player; coups++; if (is_single) { compuplay(w,client_data,call_data); } else { for(ii=1;ii<=6;ii++) for(jj=1;jj<=6;jj++) affichage(play_board[(ii-1)*6+(jj-1)],calc_board[(ii-1)*6+(jj-1)],tabl[ii][jj],((ii==ii_last) && (jj==jj_last) ? 1 : 0)); Score(play_board, calc_board, &ii, &jj); sprintf(buf,"Score -> %d/%d", ii, jj); XtSetArg(ar[0],XtNlabel,buf); XtSetValues(wscore,ar,1); dump=((coups+1)/2)+1; sprintf(buf,"Turn %2d",dump); XtSetArg(ar[0],XtNlabel,buf); XtSetValues(wtour,ar,1); }; }; if (coups>=MAX_COUPS) { XtSetArg(ar[0],XtNlabel,"THE END"); XtSetValues(wtour,ar,1); dump = EndScore(play_board, calc_board, 1); if (dump) { if (dump>0) { XtSetArg(ar[0],XtNlabel," WHITE is the WINNER "); } else { XtSetArg(ar[0],XtNlabel," BLACK is the WINNER "); }; } else { XtSetArg(ar[0],XtNlabel," A DRAW .... "); }; XtSetValues(wmesg,ar,1); } else { if (player==1) { XtSetArg(ar[0],XtNlabel,"it's you to play,white..."); } else { XtSetArg(ar[0],XtNlabel,"it's you to play,black..."); }; XtSetValues(wmesg,ar,1); }; } void reset(w,client_data,call_data) Widget w; XtPointer client_data,call_data; { int ii,jj; coups=0; player=1; for(i=0;i<36;i++) { play_board[i]=0; calc_board[i]=0; } for(ii=1;ii<=6;ii++) for(jj=1;jj<=6;jj++) affichage(play_board[(ii-1)*6+(jj-1)],calc_board[(ii-1)*6+(jj-1)],tabl[ii][jj], 0); XtSetArg(ar[0],XtNlabel,"Score -> 0/0"); XtSetValues(wscore,ar,1); XtSetArg(ar[0],XtNlabel,"it's you to play,white..."); XtSetValues(wmesg,ar,1); XtSetArg(ar[0],XtNlabel,"Turn 1 "); XtSetValues(wtour,ar,1); } FFortress/xfortress/xfortress.h100644 3103 20 1275 6274433645 15472 0ustar ylafonw3c#include #include #include #include #include #include #include "types.h" extern board play_board,calc_board; extern int player,is_single,warn_; extern XtAppContext app_context; extern Widget toplevel,wboard,interm,wplay,wreset,wscore,wmesg,wwarn; extern Widget wquit,wsingle,wtour; extern Widget tabl[8][8]; extern Pixmap pixtab[2][15]; extern Arg args[10]; extern Arg ar[10]; extern Cardinal car; extern Cardinal card; extern int i,j,dump,coups; extern char buf[15]; extern param brain; FFortress/xfortress/Makefile100644 3103 20 1046 6274433753 14716 0ustar ylafonw3cCC = gcc WARN_FLAGS = OPTI_FLAGS = -O2 INCLUDE_PATH = -I../include -I/usr/X11/include LIBRARY_PATH = -L../fortress -L/usr/lib/X11 -L/usr/X11R6/lib EXTRA_LIBRARIES = CFLAGS = $(WARN_FLAGS) $(OPTI_FLAGS) $(INCLUDE_PATH) OBJS = xfortress.o callback.o genbrain.o AR = ar rc .c.o: $(CC) $(CFLAGS) -c $*.c -o $*.o xfortress: $(OBJS) ../fortress/libfortress.a $(CC) $(OPTI_FLAG) $(OBJS) -o $@ $(LIBRARY_PATH) -lfortress -lX11 -lXaw -lXt -lXmu $(EXTRA_LIBRARIES) ../fortress/libfortress.a: cd ../fortress; $(MAKE) clean: rm -f $(OBJS) xfortress *~ FFortress/xfortress/callback.h100644 3103 20 1055 6274433644 15162 0ustar ylafonw3c#ifndef _XFORTRESS_CALLBACK_H_ #define _XFORTRESS_CALLBACK_H_ #include #include #include #include #include #include void affichage(int, int, Widget, int); void single(Widget, XtPointer, XtPointer); void setwarn(Widget, XtPointer, XtPointer); void quit(Widget, XtPointer, XtPointer); void compuplay(Widget, XtPointer, XtPointer); void play(Widget, XtPointer, XtPointer); void reset(Widget, XtPointer, XtPointer); #endif /* _XFORTRESS_CALLBACK_H_ */ FFortress/xfortress/vide.bm100644 3103 20 3522 6233072421 14510 0ustar ylafonw3c#define vide_width 48 #define vide_height 48 static char vide_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wblcas1.bm100644 3103 20 3533 6233072422 15120 0ustar ylafonw3c#define wblcas1_width 48 #define wblcas1_height 48 static char wblcas1_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1e, 0x00, 0x00, 0xbc, 0x07, 0xf0, 0x7e, 0x77, 0x77, 0xbf, 0x07, 0xf0, 0x7f, 0x77, 0x77, 0xff, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wblcas2.bm100644 3103 20 3533 6233072422 15121 0ustar ylafonw3c#define wblcas2_width 48 #define wblcas2_height 48 static char wblcas2_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x07, 0x00, 0x00, 0xfc, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0xdc, 0x1d, 0xfc, 0x07, 0xf0, 0x1f, 0xdc, 0x1d, 0xfc, 0x07, 0xf0, 0x1f, 0xfc, 0x1f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x7e, 0x7f, 0x7f, 0xbf, 0x07, 0xf0, 0x7f, 0xff, 0x7f, 0xff, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wblcas3.bm100644 3103 20 3533 6233072422 15122 0ustar ylafonw3c#define wblcas3_width 48 #define wblcas3_height 48 static char wblcas3_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf0, 0x07, 0xf8, 0x03, 0xfc, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x7e, 0x7f, 0x7f, 0xbf, 0x07, 0xf0, 0x7f, 0xff, 0x7f, 0xff, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whcas1.bm100644 3103 20 3530 6233072422 14747 0ustar ylafonw3c#define whcas1_width 48 #define whcas1_height 48 static char whcas1_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x11, 0x00, 0x00, 0x44, 0x04, 0x10, 0x71, 0x77, 0x77, 0x47, 0x04, 0x10, 0x40, 0x55, 0x55, 0x05, 0x04, 0x10, 0xc1, 0xdd, 0xdd, 0x41, 0x04, 0x10, 0x01, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x50, 0x15, 0x54, 0x05, 0x04, 0x10, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x10, 0x00, 0x20, 0x02, 0x00, 0x04, 0x10, 0x00, 0x20, 0x02, 0x00, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x04, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whcas2.bm100644 3103 20 3530 6233072422 14750 0ustar ylafonw3c#define whcas2_width 48 #define whcas2_height 48 static char whcas2_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x04, 0x00, 0x00, 0x30, 0x01, 0x30, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xc0, 0x04, 0x00, 0x00, 0x30, 0x01, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0xdc, 0x1d, 0x04, 0x04, 0x10, 0x10, 0x54, 0x15, 0x04, 0x04, 0x10, 0x10, 0x74, 0x17, 0x04, 0x04, 0x10, 0x10, 0x0c, 0x18, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x71, 0x8f, 0x78, 0x47, 0x04, 0x10, 0x40, 0x01, 0x40, 0x01, 0x04, 0x10, 0xc1, 0x81, 0xc0, 0x41, 0x04, 0x10, 0x01, 0x80, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0xa8, 0x2a, 0xaa, 0x0a, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x80, 0x01, 0x00, 0x04, 0x10, 0x00, 0x40, 0x02, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whcas3.bm100644 3103 20 3530 6233072422 14751 0ustar ylafonw3c#define whcas3_width 48 #define whcas3_height 48 static char whcas3_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x04, 0x60, 0x02, 0x30, 0x01, 0x30, 0x04, 0x18, 0x02, 0x0c, 0x01, 0xc0, 0x04, 0x60, 0x02, 0x30, 0x01, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xa8, 0x2a, 0x54, 0x15, 0xaa, 0x0a, 0xe8, 0x2e, 0x74, 0x17, 0xba, 0x0b, 0x18, 0x30, 0x0c, 0x18, 0x06, 0x0c, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x71, 0x8f, 0x78, 0x47, 0x04, 0x10, 0x40, 0x01, 0x40, 0x01, 0x04, 0x10, 0xc1, 0x81, 0xc0, 0x41, 0x04, 0x10, 0x01, 0x80, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0xa8, 0x2a, 0xaa, 0x0a, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x80, 0x01, 0x00, 0x04, 0x10, 0x00, 0x40, 0x02, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whitflag.bm100644 3103 20 3536 6233072422 15374 0ustar ylafonw3c#define whitflag_width 48 #define whitflag_height 48 static char whitflag_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x03, 0x10, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x03, 0x01, 0x00, 0x00, 0x0e, 0xfc, 0x00, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wwhcas1.bm100644 3103 20 3533 6233072422 15141 0ustar ylafonw3c#define wwhcas1_width 48 #define wwhcas1_height 48 static char wwhcas1_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x11, 0x00, 0x00, 0x44, 0x04, 0x10, 0x71, 0x77, 0x77, 0x47, 0x04, 0x10, 0x40, 0x55, 0x55, 0x05, 0x04, 0x10, 0xc1, 0xdd, 0xdd, 0x41, 0x04, 0x10, 0x01, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x50, 0x15, 0x54, 0x05, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wwhcas2.bm100644 3103 20 3533 6233072422 15142 0ustar ylafonw3c#define wwhcas2_width 48 #define wwhcas2_height 48 static char wwhcas2_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x04, 0x00, 0x00, 0x30, 0x01, 0x30, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xc0, 0x04, 0x00, 0x00, 0x30, 0x01, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0xdc, 0x1d, 0x04, 0x04, 0x10, 0x10, 0x54, 0x15, 0x04, 0x04, 0x10, 0x10, 0x74, 0x17, 0x04, 0x04, 0x10, 0x10, 0x0c, 0x18, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x71, 0x8f, 0x78, 0x47, 0x04, 0x10, 0x40, 0x01, 0x40, 0x01, 0x04, 0x10, 0xc1, 0x81, 0xc0, 0x41, 0x04, 0x10, 0x01, 0x80, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0xa8, 0x2a, 0xaa, 0x0a, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wwhcas3.bm100644 3103 20 3533 6233072422 15143 0ustar ylafonw3c#define wwhcas3_width 48 #define wwhcas3_height 48 static char wwhcas3_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x04, 0x60, 0x02, 0x30, 0x01, 0x30, 0x04, 0x18, 0x02, 0x0c, 0x01, 0xc0, 0x04, 0x60, 0x02, 0x30, 0x01, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xa8, 0x2a, 0x54, 0x15, 0xaa, 0x0a, 0xe8, 0x2e, 0x74, 0x17, 0xba, 0x0b, 0x18, 0x30, 0x0c, 0x18, 0x06, 0x0c, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x71, 0x8f, 0x78, 0x47, 0x04, 0x10, 0x40, 0x01, 0x40, 0x01, 0x04, 0x10, 0xc1, 0x81, 0xc0, 0x41, 0x04, 0x10, 0x01, 0x80, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0xa8, 0x2a, 0xaa, 0x0a, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/xfortress.c100644 3103 20 21226 6346031624 15472 0ustar ylafonw3c#include #include #include #include #include #include #include #include "types.h" #include "callback.h" #include "genbrain.h" #include "whcas1.bm" /* BITMAPS */ #include "whcas2.bm" #include "whcas3.bm" #include "wwhcas1.bm" #include "wwhcas2.bm" #include "wwhcas3.bm" #include "blcas1.bm" #include "blcas2.bm" #include "blcas3.bm" #include "wblcas1.bm" #include "wblcas2.bm" #include "wblcas3.bm" #include "whitflag.bm" #include "blacflag.bm" #include "vide.bm" #include "whcas1p.bm" #include "whcas2p.bm" #include "whcas3p.bm" #include "wwhcas1p.bm" #include "blcas1p.bm" #include "blcas2p.bm" #include "blcas3p.bm" #include "wblcas1p.bm" #include "whitflagp.bm" #include "blacflagp.bm" #include "videp.bm" board play_board,calc_board; int player,is_single,warn_; XtAppContext app_context; Widget toplevel,wboard,interm,wplay,wreset,wscore,wmesg,wwarn; Widget wquit,wsingle,wtour; Widget tabl[8][8]; Pixmap pixtab[2][15]; Arg args[10]; Arg ar[10]; Cardinal car; Cardinal card; int i,j,dump,coups; char buf[15]; param brain; static String fallback_resources[] = { NULL }; main(argc,argv) int argc; char **argv; { car=0; XtSetArg(ar[car],XtNwidth,500);car++; XtSetArg(ar[car],XtNheight,400);car++; #ifdef EXP XtSetArg(ar[car],XtNtitle,"Xfortress (ver 2.0.1 EXP)");car++; #else XtSetArg(ar[car],XtNtitle,"Xfortress (ver 2.0.1)");car++; #endif /* EXP */ toplevel=XtAppInitialize(&app_context,"XFortress",NULL,0,&argc,argv,fallback_resources,NULL,0); XtSetValues(toplevel,ar,car); interm=XtCreateManagedWidget("Interm",formWidgetClass,toplevel,NULL,0); wboard=XtCreateManagedWidget("BOard",formWidgetClass,interm,NULL,0); XtSetArg(ar[0],XtNwidth,400); XtSetValues(wboard,ar,car); XtSetArg(ar[0],XtNfromHoriz,wboard); XtSetArg(ar[1],XtNfromVert,NULL); wplay=XtCreateManagedWidget(" PLAY ",commandWidgetClass,interm,ar,2); XtAddCallback(wplay,XtNcallback,compuplay,0); XtSetArg(ar[0],XtNfromHoriz,wboard); XtSetArg(ar[1],XtNfromVert,wplay); wreset=XtCreateManagedWidget("RESET ",commandWidgetClass,interm,ar,2); XtAddCallback(wreset,XtNcallback,reset,0); XtSetArg(ar[0],XtNfromHoriz,wboard); XtSetArg(ar[1],XtNfromVert,wreset); wsingle=XtCreateManagedWidget("SINGLE",commandWidgetClass,interm,ar,2); XtAddCallback(wsingle,XtNcallback,single,0); XtSetArg(ar[0],XtNfromHoriz,wboard); XtSetArg(ar[1],XtNfromVert,wsingle); wwarn=XtCreateManagedWidget(" WARN ",commandWidgetClass,interm,ar,2); XtAddCallback(wwarn,XtNcallback,setwarn,0); XtSetArg(ar[0],XtNfromHoriz,wboard); XtSetArg(ar[1],XtNfromVert,wwarn); wquit=XtCreateManagedWidget(" QUIT ",commandWidgetClass,interm,ar,2); XtAddCallback(wquit,XtNcallback,quit,0); XtSetArg(ar[0],XtNfromHoriz,NULL); XtSetArg(ar[1],XtNfromVert,wboard); wscore=XtCreateManagedWidget("Score -> 0/0",labelWidgetClass,interm,ar,2); XtSetArg(ar[0],XtNfromHoriz,wscore); XtSetArg(ar[1],XtNfromVert,wboard); wtour=XtCreateManagedWidget("Turn 1 ",labelWidgetClass,interm,ar,2); XtSetArg(ar[0],XtNfromHoriz,wtour); XtSetArg(ar[1],XtNfromVert,wboard); wmesg=XtCreateManagedWidget("it's you to play,white...",labelWidgetClass,interm,ar,2); for(i=1;i<=6;i++) for(j=1;j<=6;j++) { sprintf(buf,"case %d,%d",i,j); card=0; XtSetArg(args[card],XtNwidth,50);card++; XtSetArg(args[card],XtNheight,50);card++; if ((i/=1) || (j/=1)) { XtSetArg(args[card],XtNfromHoriz,tabl[i-1][j]);card++; XtSetArg(args[card],XtNfromVert,tabl[i][j-1]);card++; }; tabl[i][j]=XtCreateManagedWidget(buf,commandWidgetClass,wboard,args,card); dump=i*10+j; XtAddCallback(tabl[i][j],XtNcallback,play,(XtPointer) dump); }; pixtab[0][0] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),vide_bits ,vide_width ,vide_height ); pixtab[0][1] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blacflag_bits,blacflag_width,blacflag_height); pixtab[0][2] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blcas1_bits ,blcas1_width ,blcas1_height ); pixtab[0][3] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blcas2_bits ,blcas2_width ,blcas2_height ); pixtab[0][4] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blcas3_bits ,blcas3_width ,blcas3_height ); pixtab[0][5] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wblcas1_bits ,wblcas1_width ,wblcas1_height ); pixtab[0][6] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wblcas2_bits ,wblcas2_width ,wblcas2_height ); pixtab[0][7] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wblcas3_bits ,wblcas3_width ,wblcas3_height ); pixtab[0][8] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whitflag_bits,whitflag_width,whitflag_height); pixtab[0][9] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whcas1_bits ,whcas1_width ,whcas1_height ); pixtab[0][10]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whcas2_bits ,whcas2_width ,whcas2_height ); pixtab[0][11]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whcas3_bits ,whcas3_width ,whcas3_height ); pixtab[0][12]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wwhcas1_bits ,wwhcas1_width ,wwhcas1_height ); pixtab[0][13]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wwhcas2_bits ,wwhcas2_width ,wwhcas2_height ); pixtab[0][14]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wwhcas3_bits ,wwhcas3_width ,wwhcas3_height ); pixtab[1][0] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),videp_bits ,videp_width ,videp_height ); pixtab[1][1] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blacflagp_bits,blacflagp_width,blacflagp_height); pixtab[1][2] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blcas1p_bits ,blcas1p_width ,blcas1p_height ); pixtab[1][3] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blcas2p_bits ,blcas2p_width ,blcas2p_height ); pixtab[1][4] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),blcas3p_bits ,blcas3p_width ,blcas3p_height ); pixtab[1][5] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wblcas1p_bits ,wblcas1p_width ,wblcas1p_height ); pixtab[1][6] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wblcas2_bits ,wblcas2_width ,wblcas2_height ); pixtab[1][7] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wblcas3_bits ,wblcas3_width ,wblcas3_height ); pixtab[1][8] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whitflagp_bits,whitflagp_width,whitflagp_height); pixtab[1][9] =XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whcas1p_bits ,whcas1p_width ,whcas1p_height ); pixtab[1][10]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whcas2p_bits ,whcas2p_width ,whcas2p_height ); pixtab[1][11]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),whcas3p_bits ,whcas3p_width ,whcas3p_height ); pixtab[1][12]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wwhcas1p_bits ,wwhcas1p_width ,wwhcas1p_height ); pixtab[1][13]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wwhcas2_bits ,wwhcas2_width ,wwhcas2_height ); pixtab[1][14]=XCreateBitmapFromData(XtDisplay(toplevel),RootWindowOfScreen(XtScreen(toplevel)),wwhcas3_bits ,wwhcas3_width ,wwhcas3_height ); for(i=1;i<=6;i++) for(j=1;j<=6;j++) { XtSetArg(args[0],XtNbitmap,pixtab[0][0]); XtSetValues(tabl[i][j],args,1); }; /* initialisation du jeu */ #ifdef EXP LoadBrain("brainexp.brn", brain); #else GenBrain(brain); #endif /* EXP */ for(i=0;i<36;i++) { play_board[i]=0; calc_board[i]=0; } coups=0; player=1; is_single=1; warn_=1; XtRealizeWidget(toplevel); XtAppMainLoop(app_context); } FFortress/xfortress/xfortress.man100644 3103 20 3517 6233072422 16002 0ustar ylafonw3c.TH XFORTRESS 6 "1.0/19 Mar 1993 - 2.0/3 Oct 1996" .SH NAME xfortress - game for .I X .SH SYNOPSIS .B xfortress [ any standard X-options ] .SH GAME BASICS you must beat your opponent by having the main part of the territory. There are three fortification levels, to obtain the control over one square you must have more influence on it than your adversary. if you have more influence than your opponent on a square occupied by him, his castle is destroyed. .br You can find more informations on the web http://www.netsurf.org/fortress/rules.html .br REMEMBER : you must have more influence than him at the end of the 21 turns !!! Do NOT try to kill him every time. it can cost you the victory !! .SH BOXES .I PLAY : forces the computer to play .br .I SINGLE / TWO : show the mode : one or two players. you can change the mode by clicking in the button box. .br .I RESET : restart the game. .br .I WARN / NOWARN : show the state of the warn indicator. when set, the warn option allows you to see when a castle is about to be taken : it closes its door. It is helpful because it is quite difficult for an average human to have a quick look over all the castles. .SH STRATEGY You may notice that sometimes it plays really bad in the end. It must be an illusion! It is only that he found that it will win by playing here, it doesn't search the best move at the end, only the one which makes him win. Good Luck !! .br .SH VERSION .I Ver 1.1 (16 Mar 93). .I Ver 2.0.0 (3 Oct 96). .SH BUGS You can redo the strategy or the graphic interface. Any improvement will be accepted !! mail all modification to lafon@w3.org. .SH COPYRIGHT This game was created a long time ago, its name was 'fortress'. I remember that I played this game when I had an Apple II (tm), so I don't know who created it. But i made this X-version !! .SH AUTHOR Yves LAFON FFortress/xfortress/brainexp.brn100644 3103 20 6571 6233072422 15564 0ustar ylafonw3c2.048498 2.115163 1.022856 1.036855 1.021765 10.589460 3.727914 3.165818 3.701467 2.058643 2.061195 1.058412 1.005505 1.053469 10.396413 3.664688 3.140108 3.723862 2.057264 2.059722 1.025930 1.001580 1.032447 10.404325 3.766842 3.206110 3.725677 2.044596 2.032460 0.980194 1.078517 1.015592 10.256968 3.755546 3.259674 3.760216 2.060534 2.031301 1.045062 1.040500 1.061231 10.123360 3.676582 3.162923 3.756008 2.115838 2.060699 0.975505 1.015197 1.084026 10.508163 3.754280 3.279351 3.692198 2.019156 1.993135 1.022516 1.052658 1.011936 10.288222 3.708720 3.273196 3.730373 2.059431 1.991101 1.069331 0.915946 1.102743 10.136844 3.801136 3.256561 3.800621 2.075649 2.032186 1.029180 1.098428 1.096464 10.361883 3.740890 3.152584 2.099176 1.935376 2.039633 1.063465 1.050121 1.100022 10.304382 3.804797 3.236397 2.145248 2.071592 2.048473 1.061062 1.009035 1.033466 10.271359 3.693005 3.264051 2.174856 2.041259 2.016470 1.055344 1.038526 0.977846 10.388788 3.810994 3.199765 2.174898 1.983957 2.073801 1.075930 1.119590 1.009118 10.616187 3.761239 3.227377 2.123323 1.970287 2.098931 1.073453 1.103502 1.073096 10.425641 3.855470 3.217066 2.149984 2.019051 2.059772 1.056136 0.983508 0.989567 10.727207 3.764338 3.309881 2.159118 2.063962 2.035634 1.073580 0.956914 1.031415 10.409120 3.844027 3.046821 2.154014 2.068903 2.068836 1.000961 1.026510 1.113084 10.208602 3.742367 3.233852 0.003317 1.989440 1.977960 1.063626 0.997169 1.037572 10.177862 3.637186 3.277399 0.043284 2.030901 2.047251 1.078278 1.039165 1.085726 10.652326 3.754454 3.264989 0.026726 2.010427 2.002814 1.095794 1.127052 1.102993 10.375996 3.774686 3.274481 0.026377 2.118714 2.043564 1.021636 1.030467 1.009631 10.031658 3.794940 3.168396 -0.020262 2.016323 2.080121 0.962586 1.035395 1.056593 10.251625 3.739648 3.339606 0.081318 2.080910 1.945076 1.026744 1.103725 0.991782 10.700576 3.716273 3.134586 0.022786 2.011060 2.087402 1.085561 1.076400 1.040751 10.635476 3.787605 3.218279 0.031585 1.974865 2.032707 1.027333 1.062624 0.977013 10.763716 3.690976 3.219747 0.017062 1.977347 2.072253 1.087657 1.048362 1.015564 10.544358 3.747803 3.159504 0.039725 2.061214 2.039301 1.046240 1.093651 1.084451 10.594844 3.817608 3.083674 0.125389 2.118304 2.074249 1.072077 1.079511 1.021644 10.862075 3.796215 3.278884 0.033747 2.050949 2.046513 1.002285 1.032594 1.030347 10.565215 3.814210 3.212301 0.085477 2.058276 2.018432 0.968075 1.099294 0.991820 10.791203 3.905266 3.305718 0.034001 2.024926 2.082908 1.041069 1.069806 1.023576 10.519144 3.895430 3.169156 0.029720 2.005848 2.007443 1.053900 1.015450 1.053371 10.814681 3.715692 3.291799 -0.014510 2.011365 2.074066 1.049383 1.030539 1.092439 10.490548 3.871874 3.308059 -0.008985 1.957211 2.026769 1.076603 1.085304 1.009553 10.393190 3.785939 3.332916 -0.006186 2.092747 2.030771 1.025992 0.978258 0.997310 10.610349 3.826001 3.231705 0.047874 2.005314 1.986689 1.002981 1.069752 1.043112 10.749340 3.730994 3.196677 0.000707 2.028899 2.118370 1.001035 1.084076 1.094901 10.514902 3.875741 3.160957 0.101401 2.068113 2.026157 1.048954 0.998625 1.145337 10.327280 3.740635 3.255183 0.088705 1.958742 2.008197 1.091367 0.963142 1.029264 10.468484 3.731175 3.248008 0.034484 2.054853 2.090194 0.973898 1.095094 1.101056 10.448498 3.861372 3.319090 -0.029861 2.078253 2.065552 1.072038 1.024380 1.051062 10.816827 3.775686 3.205529 0.013626 2.070666 1.997427 1.051153 1.055145 1.055854 10.452413 3.766511 3.176409 0.068227 FFortress/xfortress/blacflagp.bm100644 3103 20 3541 6233072422 15476 0ustar ylafonw3c#define blacflagp_width 48 #define blacflagp_height 48 static char blacflagp_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x01, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x01, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x01, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/blcas1p.bm100644 3103 20 3533 6233072423 15112 0ustar ylafonw3c#define blcas1p_width 48 #define blcas1p_height 48 static char blcas1p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1e, 0x00, 0x00, 0xbc, 0x07, 0xf0, 0x7e, 0x77, 0x77, 0xbf, 0x07, 0xf0, 0x7f, 0x77, 0x77, 0xff, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/blcas2p.bm100644 3103 20 3533 6233072423 15113 0ustar ylafonw3c#define blcas2p_width 48 #define blcas2p_height 48 static char blcas2p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x01, 0xf0, 0x07, 0x00, 0x00, 0xfc, 0x01, 0xc0, 0x07, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0xdc, 0x1d, 0xfc, 0x07, 0xf0, 0x1f, 0xdc, 0x1d, 0xfc, 0x07, 0xf0, 0x1f, 0xfc, 0x1f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x7e, 0x7f, 0x7f, 0xbf, 0x07, 0xf0, 0x7f, 0xff, 0x7f, 0xff, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/Imakefile100644 3103 20 367 6233072423 15040 0ustar ylafonw3cSRCS = xfortress.c callback.c genbrain.c OBJS = xfortress.o callback.o genbrain.o EXTRA_INCLUDES = -I../include EXTRA_LIBRARIES = $(XLIB) $(XMULIB) $(XAWLIB) $(XTOOLLIB) -L../fortress -lfortress CDEBUGFLAGS = -O2 ComplexProgramTarget(xfortress) FFortress/xfortress/genbrain.c100644 3103 20 36463 6346032067 15233 0ustar ylafonw3c#include "types.h" #include "genbrain.h" void GenBrain(brain) param brain; { /* * This brain has been generated from '../lib/brain-301-generation167.brn' */ brain[0].my_score_rate = 0.938672; brain[0].opp_score_rate = 1.592520; brain[0].protect_pos_rate = 5.382062; brain[0].attack_pos_rate = 0.738190; brain[0].board_score_rate = 0.993686; brain[0].play_opp_flag = 0.900789; brain[0].defensive_rate = 0.067541; brain[0].offensive_rate = 0.018291; brain[0].position_rate = 0.365156; brain[1].my_score_rate = 1.038403; brain[1].opp_score_rate = 1.475914; brain[1].protect_pos_rate = 5.383376; brain[1].attack_pos_rate = 0.734648; brain[1].board_score_rate = 1.198146; brain[1].play_opp_flag = 0.703078; brain[1].defensive_rate = 0.156975; brain[1].offensive_rate = 0.080741; brain[1].position_rate = 0.406043; brain[2].my_score_rate = 1.134155; brain[2].opp_score_rate = 1.943634; brain[2].protect_pos_rate = 5.521745; brain[2].attack_pos_rate = 0.723738; brain[2].board_score_rate = 1.235410; brain[2].play_opp_flag = 0.645052; brain[2].defensive_rate = 0.421960; brain[2].offensive_rate = 0.181402; brain[2].position_rate = 0.346074; brain[3].my_score_rate = 1.171649; brain[3].opp_score_rate = 1.529793; brain[3].protect_pos_rate = 5.735981; brain[3].attack_pos_rate = 0.751970; brain[3].board_score_rate = 1.271158; brain[3].play_opp_flag = 0.585612; brain[3].defensive_rate = 0.695453; brain[3].offensive_rate = 0.097055; brain[3].position_rate = 0.302147; brain[4].my_score_rate = 1.232965; brain[4].opp_score_rate = 1.586282; brain[4].protect_pos_rate = 5.776553; brain[4].attack_pos_rate = 0.801269; brain[4].board_score_rate = 1.340094; brain[4].play_opp_flag = 1.226663; brain[4].defensive_rate = 1.037569; brain[4].offensive_rate = 0.301481; brain[4].position_rate = 0.359887; brain[5].my_score_rate = 1.308059; brain[5].opp_score_rate = 1.800742; brain[5].protect_pos_rate = 5.759634; brain[5].attack_pos_rate = 0.857152; brain[5].board_score_rate = 1.407445; brain[5].play_opp_flag = 1.211543; brain[5].defensive_rate = 1.384022; brain[5].offensive_rate = 0.227932; brain[5].position_rate = 0.420630; brain[6].my_score_rate = 1.358835; brain[6].opp_score_rate = 1.738243; brain[6].protect_pos_rate = 5.974749; brain[6].attack_pos_rate = 0.668354; brain[6].board_score_rate = 1.647662; brain[6].play_opp_flag = 1.501189; brain[6].defensive_rate = 1.724151; brain[6].offensive_rate = 0.404694; brain[6].position_rate = 0.955974; brain[7].my_score_rate = 1.422377; brain[7].opp_score_rate = 1.707613; brain[7].protect_pos_rate = 5.706173; brain[7].attack_pos_rate = 0.747375; brain[7].board_score_rate = 1.319022; brain[7].play_opp_flag = 2.150817; brain[7].defensive_rate = 2.132261; brain[7].offensive_rate = 0.099433; brain[7].position_rate = 0.809246; brain[8].my_score_rate = 1.520322; brain[8].opp_score_rate = 1.827316; brain[8].protect_pos_rate = 5.961299; brain[8].attack_pos_rate = 0.718340; brain[8].board_score_rate = 1.234025; brain[8].play_opp_flag = 3.050984; brain[8].defensive_rate = 2.184179; brain[8].offensive_rate = 0.263204; brain[8].position_rate = 0.882297; brain[9].my_score_rate = 1.721166; brain[9].opp_score_rate = 2.247876; brain[9].protect_pos_rate = 5.876381; brain[9].attack_pos_rate = 0.911761; brain[9].board_score_rate = 1.308496; brain[9].play_opp_flag = 2.944333; brain[9].defensive_rate = 2.453953; brain[9].offensive_rate = 0.580013; brain[9].position_rate = 0.857434; brain[10].my_score_rate = 1.570602; brain[10].opp_score_rate = 1.909534; brain[10].protect_pos_rate = 5.638136; brain[10].attack_pos_rate = 0.724211; brain[10].board_score_rate = 1.719835; brain[10].play_opp_flag = 2.091887; brain[10].defensive_rate = 3.315126; brain[10].offensive_rate = 0.530100; brain[10].position_rate = 1.019531; brain[11].my_score_rate = 1.877634; brain[11].opp_score_rate = 2.201802; brain[11].protect_pos_rate = 5.895476; brain[11].attack_pos_rate = 0.857884; brain[11].board_score_rate = 1.190813; brain[11].play_opp_flag = 2.604424; brain[11].defensive_rate = 3.502074; brain[11].offensive_rate = 0.246312; brain[11].position_rate = 0.596429; brain[12].my_score_rate = 1.796576; brain[12].opp_score_rate = 2.251810; brain[12].protect_pos_rate = 5.737704; brain[12].attack_pos_rate = 0.681229; brain[12].board_score_rate = 1.637554; brain[12].play_opp_flag = 1.837071; brain[12].defensive_rate = 3.711685; brain[12].offensive_rate = 0.559660; brain[12].position_rate = 0.835276; brain[13].my_score_rate = 1.606025; brain[13].opp_score_rate = 2.349833; brain[13].protect_pos_rate = 5.551107; brain[13].attack_pos_rate = 0.854878; brain[13].board_score_rate = 1.667806; brain[13].play_opp_flag = 2.688251; brain[13].defensive_rate = 3.717721; brain[13].offensive_rate = 0.364612; brain[13].position_rate = 1.290376; brain[14].my_score_rate = 2.022262; brain[14].opp_score_rate = 2.331531; brain[14].protect_pos_rate = 5.116446; brain[14].attack_pos_rate = 0.723276; brain[14].board_score_rate = 1.890555; brain[14].play_opp_flag = 4.184183; brain[14].defensive_rate = 3.963098; brain[14].offensive_rate = 0.649714; brain[14].position_rate = 1.191799; brain[15].my_score_rate = 1.905911; brain[15].opp_score_rate = 2.504186; brain[15].protect_pos_rate = 5.032005; brain[15].attack_pos_rate = 0.879951; brain[15].board_score_rate = 1.509799; brain[15].play_opp_flag = 3.283394; brain[15].defensive_rate = 4.009490; brain[15].offensive_rate = 0.394333; brain[15].position_rate = 1.384242; brain[16].my_score_rate = 1.864902; brain[16].opp_score_rate = 2.598159; brain[16].protect_pos_rate = 4.992526; brain[16].attack_pos_rate = 0.972777; brain[16].board_score_rate = 1.377776; brain[16].play_opp_flag = 2.181600; brain[16].defensive_rate = 3.878271; brain[16].offensive_rate = 0.632946; brain[16].position_rate = 0.032804; brain[17].my_score_rate = 2.093055; brain[17].opp_score_rate = 2.295110; brain[17].protect_pos_rate = 4.464056; brain[17].attack_pos_rate = 1.001062; brain[17].board_score_rate = 1.355386; brain[17].play_opp_flag = 2.651263; brain[17].defensive_rate = 4.125107; brain[17].offensive_rate = 0.577412; brain[17].position_rate = 0.219310; brain[18].my_score_rate = 2.170257; brain[18].opp_score_rate = 2.535778; brain[18].protect_pos_rate = 4.714290; brain[18].attack_pos_rate = 0.624299; brain[18].board_score_rate = 1.508817; brain[18].play_opp_flag = 3.697304; brain[18].defensive_rate = 4.193552; brain[18].offensive_rate = 0.273376; brain[18].position_rate = 0.056154; brain[19].my_score_rate = 2.071354; brain[19].opp_score_rate = 2.305589; brain[19].protect_pos_rate = 4.367673; brain[19].attack_pos_rate = 0.768625; brain[19].board_score_rate = 1.551961; brain[19].play_opp_flag = 2.926390; brain[19].defensive_rate = 4.113358; brain[19].offensive_rate = 0.892602; brain[19].position_rate = 0.222865; brain[20].my_score_rate = 2.098707; brain[20].opp_score_rate = 2.525416; brain[20].protect_pos_rate = 4.409076; brain[20].attack_pos_rate = 0.731222; brain[20].board_score_rate = 1.659242; brain[20].play_opp_flag = 2.112270; brain[20].defensive_rate = 4.194871; brain[20].offensive_rate = 0.574881; brain[20].position_rate = 0.069415; brain[21].my_score_rate = 1.985611; brain[21].opp_score_rate = 2.388821; brain[21].protect_pos_rate = 3.923835; brain[21].attack_pos_rate = 0.657833; brain[21].board_score_rate = 1.566575; brain[21].play_opp_flag = 3.790822; brain[21].defensive_rate = 3.821296; brain[21].offensive_rate = 0.757495; brain[21].position_rate = 0.364832; brain[22].my_score_rate = 1.974128; brain[22].opp_score_rate = 2.349250; brain[22].protect_pos_rate = 3.608113; brain[22].attack_pos_rate = 0.611647; brain[22].board_score_rate = 1.331848; brain[22].play_opp_flag = 2.391889; brain[22].defensive_rate = 3.413869; brain[22].offensive_rate = 0.843888; brain[22].position_rate = 0.327377; brain[23].my_score_rate = 1.780007; brain[23].opp_score_rate = 2.312455; brain[23].protect_pos_rate = 3.755565; brain[23].attack_pos_rate = 0.784046; brain[23].board_score_rate = 1.627125; brain[23].play_opp_flag = 2.323325; brain[23].defensive_rate = 3.420430; brain[23].offensive_rate = 0.907399; brain[23].position_rate = 0.324657; brain[24].my_score_rate = 1.972073; brain[24].opp_score_rate = 2.555250; brain[24].protect_pos_rate = 3.346625; brain[24].attack_pos_rate = 1.048769; brain[24].board_score_rate = 1.225529; brain[24].play_opp_flag = 3.135377; brain[24].defensive_rate = 3.597356; brain[24].offensive_rate = 0.570499; brain[24].position_rate = 0.133549; brain[25].my_score_rate = 2.123750; brain[25].opp_score_rate = 2.369866; brain[25].protect_pos_rate = 3.286433; brain[25].attack_pos_rate = 0.647365; brain[25].board_score_rate = 1.302218; brain[25].play_opp_flag = 1.906836; brain[25].defensive_rate = 3.133149; brain[25].offensive_rate = 0.616161; brain[25].position_rate = 0.411786; brain[26].my_score_rate = 2.298270; brain[26].opp_score_rate = 2.379905; brain[26].protect_pos_rate = 3.140030; brain[26].attack_pos_rate = 0.756326; brain[26].board_score_rate = 1.668065; brain[26].play_opp_flag = 1.942353; brain[26].defensive_rate = 3.071034; brain[26].offensive_rate = 0.824900; brain[26].position_rate = 0.271229; brain[27].my_score_rate = 1.955766; brain[27].opp_score_rate = 2.330036; brain[27].protect_pos_rate = 2.969609; brain[27].attack_pos_rate = 1.033139; brain[27].board_score_rate = 1.255054; brain[27].play_opp_flag = 1.741401; brain[27].defensive_rate = 2.948188; brain[27].offensive_rate = 0.342304; brain[27].position_rate = 0.198527; brain[28].my_score_rate = 1.990455; brain[28].opp_score_rate = 2.313276; brain[28].protect_pos_rate = 2.533747; brain[28].attack_pos_rate = 0.811181; brain[28].board_score_rate = 1.504800; brain[28].play_opp_flag = 2.619694; brain[28].defensive_rate = 2.588900; brain[28].offensive_rate = 0.660052; brain[28].position_rate = 0.206289; brain[29].my_score_rate = 1.970097; brain[29].opp_score_rate = 2.429894; brain[29].protect_pos_rate = 2.523968; brain[29].attack_pos_rate = 0.770096; brain[29].board_score_rate = 1.362810; brain[29].play_opp_flag = 1.694785; brain[29].defensive_rate = 2.355079; brain[29].offensive_rate = 0.454787; brain[29].position_rate = 0.311881; brain[30].my_score_rate = 2.171532; brain[30].opp_score_rate = 2.550654; brain[30].protect_pos_rate = 2.276717; brain[30].attack_pos_rate = 0.792133; brain[30].board_score_rate = 1.127939; brain[30].play_opp_flag = 1.852190; brain[30].defensive_rate = 2.133900; brain[30].offensive_rate = 0.501384; brain[30].position_rate = -0.002663; brain[31].my_score_rate = 1.975431; brain[31].opp_score_rate = 2.384080; brain[31].protect_pos_rate = 2.442376; brain[31].attack_pos_rate = 0.788137; brain[31].board_score_rate = 1.278520; brain[31].play_opp_flag = 1.664369; brain[31].defensive_rate = 2.104379; brain[31].offensive_rate = 0.491941; brain[31].position_rate = 0.167645; brain[32].my_score_rate = 2.090084; brain[32].opp_score_rate = 2.235211; brain[32].protect_pos_rate = 2.451345; brain[32].attack_pos_rate = 0.870432; brain[32].board_score_rate = 1.237805; brain[32].play_opp_flag = 2.714088; brain[32].defensive_rate = 1.709878; brain[32].offensive_rate = 0.383918; brain[32].position_rate = 0.176686; brain[33].my_score_rate = 2.266163; brain[33].opp_score_rate = 2.377314; brain[33].protect_pos_rate = 1.984210; brain[33].attack_pos_rate = 0.727104; brain[33].board_score_rate = 1.235037; brain[33].play_opp_flag = 2.007784; brain[33].defensive_rate = 1.742440; brain[33].offensive_rate = 0.431415; brain[33].position_rate = 0.002617; brain[34].my_score_rate = 2.053085; brain[34].opp_score_rate = 2.271549; brain[34].protect_pos_rate = 1.882227; brain[34].attack_pos_rate = 1.007660; brain[34].board_score_rate = 1.165729; brain[34].play_opp_flag = 1.906280; brain[34].defensive_rate = 0.996058; brain[34].offensive_rate = 0.135997; brain[34].position_rate = 0.017561; brain[35].my_score_rate = 1.946535; brain[35].opp_score_rate = 2.581918; brain[35].protect_pos_rate = 1.884449; brain[35].attack_pos_rate = 0.842030; brain[35].board_score_rate = 1.223693; brain[35].play_opp_flag = 2.213764; brain[35].defensive_rate = 0.951937; brain[35].offensive_rate = 0.325767; brain[35].position_rate = 0.087821; brain[36].my_score_rate = 2.086622; brain[36].opp_score_rate = 2.321680; brain[36].protect_pos_rate = 1.776493; brain[36].attack_pos_rate = 0.940424; brain[36].board_score_rate = 1.250871; brain[36].play_opp_flag = 0.855226; brain[36].defensive_rate = 0.878519; brain[36].offensive_rate = 0.195312; brain[36].position_rate = 0.023521; brain[37].my_score_rate = 1.860879; brain[37].opp_score_rate = 2.339005; brain[37].protect_pos_rate = 1.562970; brain[37].attack_pos_rate = 0.840995; brain[37].board_score_rate = 1.209914; brain[37].play_opp_flag = 0.238880; brain[37].defensive_rate = 0.626898; brain[37].offensive_rate = 0.372165; brain[37].position_rate = 0.087705; brain[38].my_score_rate = 2.119996; brain[38].opp_score_rate = 2.290206; brain[38].protect_pos_rate = 1.474087; brain[38].attack_pos_rate = 0.796712; brain[38].board_score_rate = 1.307825; brain[38].play_opp_flag = 0.857673; brain[38].defensive_rate = 0.501782; brain[38].offensive_rate = 0.377953; brain[38].position_rate = 0.115177; brain[39].my_score_rate = 2.060025; brain[39].opp_score_rate = 2.452410; brain[39].protect_pos_rate = 1.406333; brain[39].attack_pos_rate = 0.976752; brain[39].board_score_rate = 1.042536; brain[39].play_opp_flag = -0.122387; brain[39].defensive_rate = 0.622160; brain[39].offensive_rate = 0.364113; brain[39].position_rate = 0.007154; brain[40].my_score_rate = 1.945887; brain[40].opp_score_rate = 2.348075; brain[40].protect_pos_rate = 1.423650; brain[40].attack_pos_rate = 0.868683; brain[40].board_score_rate = 1.206118; brain[40].play_opp_flag = -0.625811; brain[40].defensive_rate = 0.374816; brain[40].offensive_rate = 0.107500; brain[40].position_rate = -0.071443; brain[41].my_score_rate = 1.845418; brain[41].opp_score_rate = 2.471688; brain[41].protect_pos_rate = 1.289040; brain[41].attack_pos_rate = 1.039493; brain[41].board_score_rate = 1.037376; brain[41].play_opp_flag = -0.066129; brain[41].defensive_rate = 0.057998; brain[41].offensive_rate = 0.251521; brain[41].position_rate = 0.033229; } FFortress/xfortress/genbrain.h100644 3103 20 213 6274433645 15167 0ustar ylafonw3c#ifndef _FORTRESS_GENBRAIN_H_ #define _FORTRESS_GENBRAIN_H_ #include "types.h" void GenBrain(param); #endif /* _FORRTESS_GENBRAIN_H_ */ FFortress/xfortress/blcas3p.bm100644 3103 20 3533 6233072423 15114 0ustar ylafonw3c#define blcas3p_width 48 #define blcas3p_height 48 static char blcas3p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0xf0, 0x07, 0xf8, 0x03, 0xfc, 0x01, 0xc0, 0x07, 0xe0, 0x03, 0xf0, 0x01, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xf8, 0x3f, 0xfc, 0x1f, 0xfe, 0x0f, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x1f, 0xf8, 0x0f, 0xfc, 0x07, 0xf0, 0x1e, 0x78, 0x0f, 0xbc, 0x07, 0xf0, 0x7e, 0x7f, 0x7f, 0xbf, 0x07, 0xf0, 0x7f, 0xff, 0x7f, 0xff, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0x7f, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf0, 0xff, 0x1f, 0xfc, 0xff, 0x07, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/videp.bm100644 3103 20 3525 6233072423 14675 0ustar ylafonw3c#define videp_width 48 #define videp_height 48 static char videp_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wblcas1p.bm100644 3103 20 3536 6233072423 15304 0ustar ylafonw3c#define wblcas1p_width 48 #define wblcas1p_height 48 static char wblcas1p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0xfc, 0x07, 0xf0, 0x1e, 0x00, 0x00, 0xbc, 0x07, 0xf0, 0x7e, 0x77, 0x77, 0xbf, 0x07, 0xf0, 0x7f, 0x77, 0x77, 0xff, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xfe, 0xff, 0xff, 0xbf, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0x57, 0xd5, 0x55, 0xf5, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whcas1p.bm100644 3103 20 3533 6233072424 15134 0ustar ylafonw3c#define whcas1p_width 48 #define whcas1p_height 48 static char whcas1p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x11, 0x00, 0x00, 0x44, 0x04, 0x10, 0x71, 0x77, 0x77, 0x47, 0x04, 0x10, 0x40, 0x55, 0x55, 0x05, 0x04, 0x10, 0xc1, 0xdd, 0xdd, 0x41, 0x04, 0x10, 0x01, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x50, 0x15, 0x54, 0x05, 0x04, 0x10, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x10, 0x00, 0x20, 0x02, 0x00, 0x04, 0x10, 0x00, 0x20, 0x02, 0x00, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x04, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whcas2p.bm100644 3103 20 3533 6233072424 15135 0ustar ylafonw3c#define whcas2p_width 48 #define whcas2p_height 48 static char whcas2p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x04, 0x00, 0x00, 0x30, 0x01, 0x30, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xc0, 0x04, 0x00, 0x00, 0x30, 0x01, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0xdc, 0x1d, 0x04, 0x04, 0x10, 0x10, 0x54, 0x15, 0x04, 0x04, 0x10, 0x10, 0x74, 0x17, 0x04, 0x04, 0x10, 0x10, 0x0c, 0x18, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x71, 0x8f, 0x78, 0x47, 0x04, 0x10, 0x40, 0x01, 0x40, 0x01, 0x04, 0x10, 0xc1, 0x81, 0xc0, 0x41, 0x04, 0x10, 0x01, 0x80, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0xa8, 0x2a, 0xaa, 0x0a, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x80, 0x01, 0x00, 0x04, 0x10, 0x00, 0x40, 0x02, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whcas3p.bm100644 3103 20 3533 6233072424 15136 0ustar ylafonw3c#define whcas3p_width 48 #define whcas3p_height 48 static char whcas3p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0xc0, 0x04, 0x60, 0x02, 0x30, 0x01, 0x30, 0x04, 0x18, 0x02, 0x0c, 0x01, 0xc0, 0x04, 0x60, 0x02, 0x30, 0x01, 0x00, 0x07, 0x80, 0x03, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0xb8, 0x3b, 0xdc, 0x1d, 0xee, 0x0e, 0xa8, 0x2a, 0x54, 0x15, 0xaa, 0x0a, 0xe8, 0x2e, 0x74, 0x17, 0xba, 0x0b, 0x18, 0x30, 0x0c, 0x18, 0x06, 0x0c, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x10, 0x11, 0x88, 0x08, 0x44, 0x04, 0x10, 0x71, 0x8f, 0x78, 0x47, 0x04, 0x10, 0x40, 0x01, 0x40, 0x01, 0x04, 0x10, 0xc1, 0x81, 0xc0, 0x41, 0x04, 0x10, 0x01, 0x80, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0xa8, 0x2a, 0xaa, 0x0a, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x80, 0x01, 0x00, 0x04, 0x10, 0x00, 0x40, 0x02, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0x10, 0x00, 0x20, 0x04, 0x00, 0x04, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/whitflagp.bm100644 3103 20 3541 6233072424 15552 0ustar ylafonw3c#define whitflagp_width 48 #define whitflagp_height 48 static char whitflagp_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x03, 0x10, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x03, 0x01, 0x00, 0x00, 0x0e, 0xfc, 0x00, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/xfortress/wwhcas1p.bm100644 3103 20 3536 6233072424 15326 0ustar ylafonw3c#define wwhcas1p_width 48 #define wwhcas1p_height 48 static char wwhcas1p_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x3b, 0x00, 0x00, 0xee, 0x0e, 0xa8, 0x2a, 0x00, 0x00, 0xaa, 0x0a, 0xe8, 0x2e, 0x00, 0x00, 0xba, 0x0b, 0x18, 0x30, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0x10, 0x11, 0x00, 0x00, 0x44, 0x04, 0x10, 0x71, 0x77, 0x77, 0x47, 0x04, 0x10, 0x40, 0x55, 0x55, 0x05, 0x04, 0x10, 0xc1, 0xdd, 0xdd, 0x41, 0x04, 0x10, 0x01, 0x00, 0x00, 0x40, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x50, 0x15, 0x54, 0x05, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; FFortress/README100644 3103 20 2173 6265452254 12076 0ustar ylafonw3cWelcome to Fast Fortress Why Fast Fortress? because the algorithm has been improved, using a special version of iterative deepening, heuristic cut, a FastEnd to search the end with a good depth... it includes xfortress 2.0.0 and a way to generate brains using a genetic algorithm. Some functions are optimized and are quite ugly ;) The "brain" used in this version (seedfor-21.brn) has been calculated, you may find a better one (or create a better one by enhancing the "evolve" stuff (must be easy to upgrade, i didn't have time to do that). Compilation options: use -DNOMEMCPY to use inlined copy (faster or slower than a memcpy call, machine dependant). use -DNO_ADD_SCORE for an older version of fortress AI use -DADD_RANDOM to select randomly between the equivalent moves. use -DNOCUT to keep searching the best move during FastEnd, otherwise, it will only find a winning position. (really slower on high depths) use -DSILENT to remove the prediction of the end score. Enjoy! Yves Lafon PS: Thanks to Adam Przezdziecki for testing and the "last played square" patch. FFortress/evolve/ 40775 3103 20 0 6276102551 12412 5ustar ylafonw3cFFortress/evolve/cell.c100644 3103 20 1431 6276102476 13575 0ustar ylafonw3c#include #include #include #include #include #include "defs.h" #include "etypes.h" #include "cell.h" #include "list.h" void FreeCell(type, cell) int type; void *cell; { if(!cell) return; switch(type) { case CELL_SLAVE: free(((slave *)cell)->buffer); break; case CELL_ARENA: break; default: printf("**** PANIC! **** UNKNOWN CELL TYPE IN FreeCell\n"); break; } free(cell); } slave *CreateSlave(socknum) int socknum; { slave *sl; sl = (slave *)malloc(sizeof(slave)); sl->socket = socknum; sl->used = 0; sl->last_time = time((time_t *)NULL); sl->buffer = (char *)calloc(SOCKET_BUFFER_SIZE, sizeof(char)); sl->curr = sl->buffer; return sl; } FFortress/evolve/cell.h100644 3103 20 313 6276102476 13560 0ustar ylafonw3c#ifndef _EVOLVE_CELL_H_ #define _EVOLVE_CELL_H_ #include "defs.h" #include "etypes.h" #include void FreeCell PARAM2(int, void *); slave *CreateSlave PARAM1(int); #endif /* _EVOLVE_CELL_H_ */ FFortress/evolve/center.c100664 3103 20 10323 6276102476 14160 0ustar ylafonw3c#include #include #include #include #include #include #include #include #include #ifndef SUNOS #include #endif /* !SUNOS */ #include #include #include #include #include "defs.h" #include "cell.h" #include "list.h" #include "socket.h" #include "etypes.h" #include "stypes.h" #include "mutationcenter.h" void main(argc, argv) int argc; char **argv; { int serversocket, a_sock; list *slave_list, *tmp_link, *next_link; slave *curr_slave; int is_first; arena farena; char readbuffer[SOCKET_BUFFER_SIZE]; struct sockaddr_in addr_accept; int sock_size, max_fd; struct timeval timeout, tv; struct timezone tz; time_t current_time; fd_set rd; struct linger lingeropt; int server_timeout = SERVER_TIMEOUT; #ifndef SUNOS struct rlimit rlp; #endif /* !SUNOS */ #ifdef SUNOS max_fd = getdtablesize(); #else getrlimit(RLIMIT_NOFILE, &rlp); max_fd = (int) rlp.rlim_cur; #endif /* SUNOS */ slave_list = NULL; sock_size=sizeof(struct sockaddr_in); signal(SIGPIPE, SIG_IGN); lingeropt.l_onoff=1; lingeropt.l_linger=60; (void)gettimeofday(&tv,&tz); srand((unsigned int)tv.tv_usec); serversocket = server(8007); listen(serversocket, 5); if(serversocket == -1) { printf("Unable to bind socket, fatal error\n"); exit(1); } ArenaInitialize(&farena, argv, argc); farena.generation = 0; ArenaEvolve(&farena); while(1) { current_time = time((time_t *)NULL); FD_ZERO(&rd); FD_SET(serversocket, &rd); is_first = TRUE; /** * go through the list, purge the timed out slaves or add * the socket in the fd_set */ for(tmp_link = slave_list; tmp_link;) { curr_slave = (slave *)tmp_link->cell; if(difftime(current_time, curr_slave->last_time)>server_timeout) { printf("removing timed out client socket %d \n", curr_slave->socket); /** * error, unregister the client and the what was processed * and close the socket */ ArenaNotifyFailure(&farena, curr_slave); shutdown(curr_slave->socket, 2); close(curr_slave->socket); next_link = tmp_link->next; SwallowLink(tmp_link); FreeCell(CELL_SLAVE, curr_slave); if(is_first && !next_link) slave_list = NULL; else if(is_first) slave_list = next_link; free(tmp_link); tmp_link = next_link; } else { FD_SET(curr_slave->socket, &rd); is_first = FALSE; tmp_link = tmp_link->next; } } timeout.tv_sec=1; timeout.tv_usec=0; select(max_fd, &rd, NULL, NULL, &timeout); if(FD_ISSET(serversocket, &rd)) { /** * add the incoming connection to the list */ a_sock = accept(serversocket, (struct sockaddr *)&addr_accept, &sock_size); if(a_sock != -1) AddCellFirst(&slave_list, CELL_SLAVE, CreateSlave(a_sock)); printf("adding client socket %d \n", a_sock); } is_first = TRUE; for(tmp_link = slave_list; tmp_link;) { /** * i should check if tmp_link->type == CELL_SLAVE * but it can't happen ;) */ curr_slave = (slave *)tmp_link->cell; if(FD_ISSET(curr_slave->socket, &rd)) { curr_slave->last_time = current_time; curr_slave->status = read_socket(curr_slave->socket, curr_slave->buffer, &(curr_slave->curr), readbuffer); if(curr_slave->status == 1) { ArenaParse(&farena, curr_slave, readbuffer); is_first = FALSE; tmp_link = tmp_link->next; } else { /** * socket reading error, close everything and update */ printf("removing client socket %d \n", curr_slave->socket); ArenaNotifyFailure(&farena, curr_slave); shutdown(curr_slave->socket, 2); close(curr_slave->socket); next_link = tmp_link->next; SwallowLink(tmp_link); FreeCell(CELL_SLAVE, curr_slave); if(is_first && !next_link) slave_list = NULL; else if(is_first) slave_list = next_link; free(tmp_link); tmp_link = next_link; } } else { is_first = FALSE; tmp_link = tmp_link->next; } } ArenaCheckPending(&farena, &slave_list); } } FFortress/evolve/seed1.brn100644 3103 20 1436 6233072414 14212 0ustar ylafonw3c2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 FFortress/evolve/seed2.brn100644 3103 20 1364 6233072414 14213 0ustar ylafonw3c2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 FFortress/evolve/defs.h100644 3103 20 1656 6276102476 13615 0ustar ylafonw3c#ifndef _EVOLVE_DEFS_H_ #define _EVOLVE_DEFS_H_ #ifdef PARAM1 # undef PARAM1 #endif /* PARAM1 */ #ifdef PARAM2 # undef PARAM2 #endif /* PARAM2 */ #ifdef PARAM3 # undef PARAM3 #endif /* PARAM3 */ #ifdef PARAM4 # undef PARAM4 #endif /* PARAM4 */ #ifdef __STDC__ # define PARAM1(a) (a) # define PARAM2(a,b) (a,b) # define PARAM3(a,b,c) (a,b,c) # define PARAM4(a,b,c,d) (a,b,c,d) # define PARAM5(a,b,c,d,e) (a,b,c,d,e) # define PARAM6(a,b,c,d,e,f) (a,b,c,d,e,f) #else # define PARAM1(a) () # define PARAM2(a,b) () # define PARAM3(a,b,c) () # define PARAM4(a,b,c,d) () # define PARAM5(a,b,c,d,e) () # define PARAM6(a,b,c,d,e,f) () # define const #endif /* __STDC__ */ #ifndef FALSE #define FALSE 0 #endif /* FALSE */ #ifndef TRUE #define TRUE 1 #endif /* TRUE */ #define CELL_SLAVE 0 #define CELL_ARENA 1 #define SLAVE_TIMEOUT 300 #define SERVER_TIMEOUT 300 #define SOCKET_BUFFER_SIZE 1024 #endif /* _EVOLVE_DEFS_H_ */ FFortress/evolve/etypes.h100664 3103 20 710 6276102476 14155 0ustar ylafonw3c#ifndef _EVOLVE_TYPES_H_ #define _EVOLVE_TYPES_H_ #include #include "defs.h" typedef struct general_list_str { int type; void *cell; struct general_list_str *next; struct general_list_str *prev; } list; typedef struct slave_str { int socket; int used; int status; time_t last_time; int opp_x; int opp_y; char *buffer; char *curr; } slave; #endif /* _EVOLVE_TYPES_H_ */ FFortress/evolve/generate.c100644 3103 20 2712 6276102476 14453 0ustar ylafonw3c#include #include "types.h" #include "brain.h" void main(argc, argv) int argc; char **argv; { int i; FILE *gen; param brain; if(argc!=2) { printf("Usage: generate brain.brn\n"); exit(1); } gen = fopen("../xfortress/genbrain.c", "w"); if(!gen) { printf("You must be in 'evolve' to use this\n"); exit(1); } LoadBrain(argv[1], brain); fprintf(gen, "#include \"types.h\"\n#include \"genbrain.h\"\n\nvoid GenBrain(brain)\n param brain;\n{\n"); fprintf(gen, " /*\n * This brain has been generated from '%s'\n */\n\n", argv[1]); for(i=0;i<42;i++) { fprintf(gen," brain[%d].my_score_rate = %f;\n", i, brain[i].my_score_rate); fprintf(gen," brain[%d].opp_score_rate = %f;\n", i, brain[i].opp_score_rate); fprintf(gen," brain[%d].protect_pos_rate = %f;\n", i, brain[i].protect_pos_rate); fprintf(gen," brain[%d].attack_pos_rate = %f;\n", i, brain[i].attack_pos_rate); fprintf(gen," brain[%d].board_score_rate = %f;\n", i, brain[i].board_score_rate); fprintf(gen," brain[%d].play_opp_flag = %f;\n", i, brain[i].play_opp_flag); fprintf(gen," brain[%d].defensive_rate = %f;\n", i, brain[i].defensive_rate); fprintf(gen," brain[%d].offensive_rate = %f;\n", i, brain[i].offensive_rate); fprintf(gen," brain[%d].position_rate = %f;\n", i, brain[i].position_rate); } fprintf(gen,"}\n"); fclose(gen); printf("Generation OK, now (re)compile xfortress\n"); } FFortress/evolve/list.c100644 3103 20 5767 6276102476 13651 0ustar ylafonw3c#include #include #include #include #include "etypes.h" #include "list.h" #include "cell.h" void AddCellFirst( TheList, type, cell) list **TheList; int type; void *cell; { list *new_link; new_link = (list *) malloc(sizeof(list)); new_link->type = type; new_link->cell = cell; new_link->next = *TheList; new_link->prev = NULL; if(*TheList) (*TheList)->prev = new_link; *TheList = new_link; } void AddCellLast( TheList, type, cell) list **TheList; int type; void *cell; { list *new_link,*last_link; new_link = (list *) malloc(sizeof(list)); new_link->type = type; new_link->cell = cell; new_link->next = NULL; if(*TheList) { last_link = *TheList; while(last_link->next) last_link = last_link->next; last_link->next = new_link; new_link->prev = last_link; } else { new_link->prev = NULL; *TheList = new_link; }; } list *FindCell(TheList, cell, compare_func) list **TheList; void *cell; int (*compare_func) PARAM2(void *, void *); { int ok; list *find_link,*found_link; ok = 0; found_link = NULL; for(find_link = *TheList ;!ok && find_link ; find_link = find_link->next) { ok = compare_func(cell, find_link->cell); if(ok) found_link = find_link; }; return(found_link); } list **FindCellAddr(TheList, cell, compare_func) list **TheList; void *cell; int (*compare_func) PARAM2(void *, void *); { int ok; list **find_link,**found_link; ok = 0; found_link = NULL; for(find_link = TheList ;!ok && *find_link ; find_link = &((*find_link)->next)) { ok = compare_func(cell, (*find_link)->cell); if(ok) found_link = find_link; }; return(found_link); } void FreeLink(the_link) list **the_link; { list *TheLink; if(!the_link) return; TheLink = *the_link; if(TheLink) { if(TheLink->next) TheLink->next->prev = TheLink->prev; if(TheLink->prev) TheLink->prev->next = TheLink->next; else *the_link = TheLink->next; FreeCell(TheLink->type,TheLink->cell); free(TheLink); }; } void SwallowLink(TheLink) list *TheLink; { if(TheLink->next) TheLink->next->prev = TheLink->prev; if(TheLink->prev) TheLink->prev->next = TheLink->next; } void FreeList(TheList) list **TheList; { list *tmp_link,*next_link; next_link = *TheList; while(next_link) { tmp_link = next_link; next_link = next_link->next; FreeCell(tmp_link->type, tmp_link->cell); free(tmp_link); }; *TheList = NULL; } void LoopList(TheList) list **TheList; { list *last_link,*new_list; if(*TheList) { if((*TheList)->next) { new_list = (*TheList)->next; last_link = *TheList; while(last_link->next) last_link = last_link->next; last_link->next = *TheList; (*TheList)->next = NULL; (*TheList)->prev = last_link; new_list->prev = NULL; *TheList = new_list; }; }; } FFortress/evolve/list.h100644 3103 20 740 6276102477 13621 0ustar ylafonw3c#ifndef _EVOLVE_LIST_H_ #define _EVOLVE_LIST_H_ #include "defs.h" #include "etypes.h" void AddCellFirst PARAM3(list **, int, void *); void AddCellLast PARAM3(list **, int, void *); list *FindCell PARAM3(list **, void *, int PARAM2(void *, void *)); list **FindCellAddr PARAM3(list **, void *, int PARAM2(void *, void *)); void FreeLink PARAM1(list **); void SwallowLink PARAM1(list *); void FreeList PARAM1(list **); void LoopList PARAM1(list **); #endif /* _EVOLVE_LIST_H_ */ FFortress/evolve/match.h100644 3103 20 245 6276102477 13742 0ustar ylafonw3c#ifndef _AION_MATCH_H_ #define _AION_MATCH_H_ #include "defs.h" int MatchAddr PARAM2(char *,char *); int Match PARAM2(char *,char *); #endif /* _AION_MATCH_H_ */ FFortress/evolve/mutate.c100644 3103 20 14041 6276102477 14177 0ustar ylafonw3c#include #include #include #include #include #include #include "types.h" #include "tools.h" #include "strategie.h" #include "brain.h" #include "mutatedefs.h" #include "mutate.h" void MutateBrainCellFromSeed(seed, brain) param_cell seed, *brain; { brain->my_score_rate = seed.my_score_rate + (rand()%128)/MSR - MSRD; brain->opp_score_rate = seed.opp_score_rate + (rand()%128)/OSR - OSRD; brain->protect_pos_rate = seed.protect_pos_rate + (rand()%128)/PPR - PPRD; brain->attack_pos_rate = seed.attack_pos_rate + (rand()%128)/APR - APRD; brain->board_score_rate = seed.board_score_rate + (rand()%128)/BSR - BSRD; brain->play_opp_flag = seed.play_opp_flag + (rand()%128)/POF - POFD; brain->defensive_rate = seed.defensive_rate + (rand()%128)/DR - DRD; brain->offensive_rate = seed.offensive_rate + (rand()%128)/OR - ORD; brain->position_rate = seed.position_rate + (rand()%128)/PR - PRD; } void MutateBrainFromSeed(seed, brain) param seed, brain; { int i; for(i=0;i<42;i++) MutateBrainCellFromSeed(seed[i], &brain[i]); } void MutateAddBrainCell(seed, brain, scale) param_cell seed, *brain; PARAM_TYPE scale; { brain->my_score_rate += seed.my_score_rate / scale; brain->opp_score_rate += seed.opp_score_rate / scale; brain->protect_pos_rate += seed.protect_pos_rate / scale; brain->attack_pos_rate += seed.attack_pos_rate / scale; brain->board_score_rate += seed.board_score_rate / scale; brain->play_opp_flag += seed.play_opp_flag / scale; brain->defensive_rate += seed.defensive_rate / scale; brain->offensive_rate += seed.offensive_rate / scale; brain->position_rate += seed.position_rate / scale; } void MutateAddBrain(seed, brain, scale) param seed, brain; PARAM_TYPE scale; { int i; for(i=0;i<42;i++) MutateAddBrainCell(seed[i], &brain[i], scale); } void SplitBrainCell(seed1, seed2, brain, num) param_cell seed1, seed2, *brain; int num; { brain->my_score_rate = (seed1.my_score_rate * num + seed2.my_score_rate * (41-num)) / 41; brain->opp_score_rate = (seed1.opp_score_rate * num + seed2.opp_score_rate * (41-num)) / 41; brain->protect_pos_rate = (seed1.protect_pos_rate * num + seed2.protect_pos_rate * (41-num)) / 41; brain->attack_pos_rate = (seed1.attack_pos_rate * num + seed2.attack_pos_rate * (41-num)) / 41; brain->board_score_rate = (seed1.board_score_rate * num + seed2.board_score_rate * (41-num)) / 41; brain->play_opp_flag = (seed1.play_opp_flag * num + seed2.play_opp_flag * (41-num)) / 41; brain->defensive_rate = (seed1.defensive_rate * num + seed2.defensive_rate * (41-num)) / 41; brain->offensive_rate = (seed1.offensive_rate * num + seed2.offensive_rate * (41-num)) / 41; brain->position_rate = (seed1.position_rate * num + seed2.position_rate * (41-num)) / 41; } void SplitBrain(seed1, seed2, brain) param seed1, seed2, brain; { int i; for(i=0;i<42;i++) SplitBrainCell(seed1[i], seed2[i], &brain[i], i); } void MixBrain(seed1, seed2, brain) param seed1, seed2, brain; { int i; for(i=0;i<42;i++) SplitBrainCell(seed1[i], seed2[i], &brain[i], 21); } void MutateAddGeneBrainCell(seed, brain, gene) param_cell seed, *brain; int gene; { switch(gene) { case 1: brain->my_score_rate = seed.my_score_rate + (rand()%128)/MSR - MSRD; break; case 2: brain->opp_score_rate = seed.opp_score_rate + (rand()%128)/OSR - OSRD; break; case 3: brain->protect_pos_rate = seed.protect_pos_rate + (rand()%128)/PPR - PPRD; break; case 4: brain->attack_pos_rate = seed.attack_pos_rate + (rand()%128)/APR - APRD; break; case 5: brain->board_score_rate = seed.board_score_rate + (rand()%128)/BSR - BSRD; break; case 6: brain->play_opp_flag = seed.play_opp_flag + (rand()%128)/POF - POFD; break; case 7: brain->defensive_rate = seed.defensive_rate + (rand()%128)/DR - DRD; break; case 8: brain->offensive_rate = seed.offensive_rate + (rand()%128)/OR - ORD; break; default: brain->position_rate = seed.position_rate + (rand()%128)/PR - PRD; break; } } void MutateAddGeneBrain(seed, brain, gene) param seed, brain; int gene; { int i; for(i=0;i<42;i++) MutateAddGeneBrainCell(seed[i], &brain[i], gene); } void MutateMulGeneBrainCell(seed, brain, gene, factor) param_cell seed, *brain; int gene; float factor; { switch(gene) { case 1: brain->my_score_rate = seed.my_score_rate * factor; break; case 2: brain->opp_score_rate = seed.opp_score_rate * factor; break; case 3: brain->protect_pos_rate = seed.protect_pos_rate * factor; break; case 4: brain->attack_pos_rate = seed.attack_pos_rate * factor; break; case 5: brain->board_score_rate = seed.board_score_rate * factor; break; case 6: brain->play_opp_flag = seed.play_opp_flag * factor; break; case 7: brain->defensive_rate = seed.defensive_rate * factor; break; case 8: brain->offensive_rate = seed.offensive_rate * factor; break; default: brain->position_rate = seed.position_rate * factor; break; } } void MutateMulGeneBrain(seed, brain, gene, factor) param seed, brain; int gene; float factor; { int i; for(i=0;i<42;i++) MutateMulGeneBrainCell(seed[i], &brain[i], gene, factor); } void MutateAggressivenessBrain(seed, brain, factor) param seed, brain; float factor; { MutateMulGeneBrain(seed, brain, 4, factor); MutateMulGeneBrain(seed, brain, 3, 1/factor); MutateMulGeneBrain(seed, brain, 8, factor); MutateMulGeneBrain(seed, brain, 7, 1/factor); } void MutateExpansivenessBrain(seed, brain, factor) param seed, brain; float factor; { MutateMulGeneBrain(seed, brain, 1, factor); MutateMulGeneBrain(seed, brain, 2, 1/factor); MutateMulGeneBrain(seed, brain, 5, factor); MutateMulGeneBrain(seed, brain, 9, factor); } FFortress/evolve/mutate.h100644 3103 20 1411 6276102477 14161 0ustar ylafonw3c#ifndef _EVOLVE_MUTATE_H_ #define _EVOLVE_MUTATE_H_ #include "types.h" void MutateBrainCellFromSeed(param_cell, param_cell *); void MutateBrainFromSeed(param, param); void MutateAddBrainCell(param_cell, param_cell *, PARAM_TYPE); void MutateAddBrain(param, param, PARAM_TYPE); void MutateAddGeneBrainCell(param_cell, param_cell *, int); void MutateAddGeneBrain(param, param, int); void MutateMulGeneBrainCell(param_cell, param_cell *, int, float); void MutateMulGeneBrain(param, param, int, float); void MutateAggressivenessBrain(param, param, float); void MutateExpansivenessBrain(param, param, float); void SplitBrainCell(param_cell, param_cell, param_cell *, int); void SplitBrain(param, param, param); void MixBrain(param, param, param); #endif /* _EVOLVE_MUTATE_H_ */ FFortress/evolve/seed3.brn100644 3103 20 1706 6233072414 14214 0ustar ylafonw3c1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 FFortress/evolve/scell.c100664 3103 20 2475 6276102477 13774 0ustar ylafonw3c#include #include #include #include #include "defs.h" #include "stypes.h" #include "scell.h" #include "list.h" #include "socket.h" void FreeArenaCell(type, cell) int type; void *cell; { if(!cell) return; switch(type) { case CELL_ARENA: break; default: printf("**** PANIC! **** UNKNOWN CELL TYPE IN FreeCell\n"); break; } free(cell); } arena_cell *CreateArenaCell(x, y) int x,y; { arena_cell *ac; ac = (arena_cell *)malloc(sizeof(arena_cell)); ac->x = x; ac->y = y; return ac; } void PurgeCell(TheList, x, y) list **TheList; int x, y; { list *tmp_link, *next_link; int is_first; arena_cell *curr_cell; is_first = TRUE; for(tmp_link = *TheList; tmp_link ;) { curr_cell = (arena_cell *)tmp_link->cell; if((curr_cell->x == x) && (curr_cell->y == y)) { next_link = tmp_link->next; SwallowLink(tmp_link); FreeArenaCell(CELL_ARENA, curr_cell); if(is_first && !next_link) *TheList = NULL; else if(is_first) *TheList = next_link; free(tmp_link); tmp_link = next_link; } else { tmp_link = tmp_link->next; is_first = FALSE; } } } FFortress/evolve/seed4.brn100644 3103 20 1634 6233072414 14215 0ustar ylafonw3c1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 FFortress/evolve/seed5.brn100644 3103 20 1706 6233072414 14216 0ustar ylafonw3c2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 FFortress/evolve/mutatedefs.h100644 3103 20 571 6276102477 15011 0ustar ylafonw3c#ifndef _EVOLVE_DEFS_H_ #define _EVOLVE_DEFS_H_ #define MSR 25.6 #define MSRD 2 #define OSR 25.6 #define OSRD 2 #define PPR 25.6 #define PPRD 2 #define APR 25.6 #define APRD 2 #define BSR 25.6 #define BSRD 2 #define POF 6.7368421 #define POFD 12 #define DR 18.285714 #define DRD 3 #define OR 18.285714 #define ORD 3 #define PR 25.6 #define PRD 2 #endif /* _EVOLVE_DEFS_H_ */ FFortress/evolve/mutationcenter.c100664 3103 20 21223 6276102477 15743 0ustar ylafonw3c#include #include #include #include #include #include #include #include "defs.h" #include "types.h" #include "tools.h" #include "strategie.h" #include "brain.h" #include "mutate.h" #include "list.h" #include "cell.h" #include "scell.h" #include "etypes.h" #include "stypes.h" #include "mutationcenter.h" #include "socket.h" #ifndef WIN_SCORE # define WIN_SCORE 3 #endif #ifndef NULL_SCORE # define NULL_SCORE 0 #endif #ifndef LOSS_SCORE # define LOSS_SCORE -1 #endif #ifdef LOG FILE *lf; #endif void BubbleBrain(btab, stab) param btab[MAX_SIZE]; int stab[MAX_SIZE][MAX_SIZE]; { int sres[MAX_SIZE]; int i,j, idump,ok; param bdump; for(i=0; i 0) ? LOSS_SCORE : ((stab[j][i])? WIN_SCORE : NULL_SCORE); #else /* use score only */ sres[i] = sres[i] + stab[i][j] - stab[j][i]; #endif /* WIN */ } #ifdef MDEBUG printf("[%d]", sres[i]); #endif /* MDEBUG */ } #ifdef MDEBUG printf("\n"); #endif /* MDEBUG */ ok=0; while(!ok) { ok=1; for(i=8;i<127;i++) { if(sres[i]nb_played = 0; for(i=0; iarena_win[i][j] = 0; ai->arena_resultx[i][j] = 0; ai->arena_resulty[i][j] = 0; } } void ArenaCheckPending(ai, sl) arena *ai; list **sl; { int is_first; list *tmp_link, *next_link, *tmp_ai; slave *curr_slave; arena_cell *curr_arena_cell; /* are we finished with the current generation? */ if(!ai->pending && !ai->waiting) { ArenaEvolve(ai); } /* put some load to the slaves, if things are to be done */ if(ai->pending) { is_first = TRUE; for(tmp_link = *sl; tmp_link && ai->pending;) { curr_arena_cell = (arena_cell *)ai->pending->cell; curr_slave = (slave *)tmp_link->cell; if(!curr_slave->used) { if(SlaveSendRequest(ai, curr_slave, curr_arena_cell->x, curr_arena_cell->y)) { curr_slave->used = 1; curr_slave->opp_x = curr_arena_cell->x; curr_slave->opp_y = curr_arena_cell->y; AddCellLast(&ai->waiting, CELL_ARENA, CreateArenaCell( curr_arena_cell->x, curr_arena_cell->y)); tmp_ai = ai->pending; ai->pending = ai->pending->next; if(ai->pending) ai->pending->prev = NULL; free(tmp_ai); FreeCell(CELL_ARENA, curr_arena_cell); tmp_link = tmp_link->next; is_first = FALSE; } else { printf("closing client socket %d \n", curr_slave->socket); shutdown(curr_slave->socket, 2); close(curr_slave->socket); next_link = tmp_link->next; SwallowLink(tmp_link); FreeCell(CELL_SLAVE, curr_slave); if(is_first && !next_link) *sl = NULL; else if(is_first) *sl = next_link; free(tmp_link); tmp_link = next_link; } } else { tmp_link = tmp_link->next; is_first = FALSE; } } } } int SlaveSendRequest(ai, sl, x, y) arena *ai; slave *sl; int x,y; { char dump[512]; int i, ok; param *br1, *br2; br1 = &ai->brains[x]; br2 = &ai->brains[y]; #ifdef DEBUG printf("Sending (%d/%d) to socket %d\n", x, y, sl->socket); #endif /* DEBUG */ for(i=0, ok=1;ok && i<42; i++) { sprintf(dump, "%f %f %f %f %f %f %f %f %f\n", (*br1)[i].my_score_rate, (*br1)[i].opp_score_rate, (*br1)[i].protect_pos_rate, (*br1)[i].attack_pos_rate, (*br1)[i].board_score_rate, (*br1)[i].play_opp_flag, (*br1)[i].defensive_rate, (*br1)[i].offensive_rate, (*br1)[i].position_rate); ok = send_socket(sl->socket, dump); } if(ok) { for(i=0; ok && i<42; i++) { sprintf(dump, "%f %f %f %f %f %f %f %f %f\n", (*br2)[i].my_score_rate, (*br2)[i].opp_score_rate, (*br2)[i].protect_pos_rate, (*br2)[i].attack_pos_rate, (*br2)[i].board_score_rate, (*br2)[i].play_opp_flag, (*br2)[i].defensive_rate, (*br2)[i].offensive_rate, (*br2)[i].position_rate); ok = send_socket(sl->socket, dump); } } if(ok) { sl->used = 1; sl->opp_x = x; sl->opp_y = y; } return ok; } void ArenaEvolve(ai) arena *ai; { int i,j; #ifdef LOG char fname[64]; #endif /* LOG */ EvolvePool(ai->brains, ai->arena_win); ArenaInit(ai); SaveBrain("center0.brn", ai->brains[8]); SaveBrain("center1.brn", ai->brains[9]); SaveBrain("center2.brn", ai->brains[10]); SaveBrain("center3.brn", ai->brains[11]); SaveBrain("center4.brn", ai->brains[12]); SaveBrain("center5.brn", ai->brains[13]); SaveBrain("center6.brn", ai->brains[14]); SaveBrain("center7.brn", ai->brains[15]); for(i=0; ipending, CELL_ARENA, CreateArenaCell(i, j)); ai->generation++; #ifdef LOG sprintf(fname, "center-playlog-generation-%d.log", ai->generation); fclose(lf); lf = fopen(fname, "a"); #endif /* LOG */ printf("Building generation %d \n", ai->generation); } void ArenaParse(ai, sl, tobeparsed) arena *ai; slave *sl; char *tobeparsed; { int x_sc, y_sc; char dump[1024]= ""; char log[1024]=""; if(sl->status) { sscanf(tobeparsed, "%s %d %d %s", log, &x_sc, &y_sc, dump); if(!strcmp(dump, "END")) { ai->arena_resultx[sl->opp_x][sl->opp_y] = x_sc; ai->arena_resulty[sl->opp_x][sl->opp_y] = y_sc; /* remove from the waiting queue */ PurgeCell(&ai->waiting, sl->opp_x, sl->opp_y); #ifdef WIN if(x_sc > y_sc) ai->arena_win[sl->opp_x][sl->opp_y] = WIN_SCORE; else if(x_sc < y_sc) ai->arena_win[sl->opp_x][sl->opp_y] = LOSS_SCORE; else ai->arena_win[sl->opp_x][sl->opp_y] = NULL_SCORE; #else /* use score instead */ ai->arena_win[sl->opp_x][sl->opp_y] = x_sc - y_sc; #endif /* WIN */ sl->used = 0; #ifdef DEBUG printf("notify end [%d] %s (%d vs %d) %d/%d\n", sl->socket, log, sl->opp_x, sl->opp_y, x_sc, y_sc); #endif /* DEBUG */ #ifdef LOG fprintf(lf, "%s %d %d\n", log, x_sc, y_sc); #endif /* LOG */ ++ai->nb_played; #ifdef VERBOSE printf("-> played so far: %f%c\n\E[A", ((float)ai->nb_played)/163.84, 37); #endif /* VERBOSE */ } } } void ArenaNotifyFailure(ai, sl) arena *ai; slave *sl; { /** * failure, revert the cell from ai->waiting to ai->pending */ PurgeCell(&ai->waiting, sl->opp_x, sl->opp_y); AddCellFirst(&ai->pending, CELL_ARENA, CreateArenaCell(sl->opp_x, sl->opp_y)); } void ArenaInitialize(ai, files, num) arena *ai; char **files; int num; { int i, j, k, l; ai->waiting = NULL; ai->pending = NULL; ArenaInit(ai); #ifdef LOG lf = fopen("center.started","w"); #endif /* LOG */ for(i=1; ibrains[i-1]); printf("Loading brain %s\n", files[i]); } if(!(num>1)) LoadBrain("seed1.brn", ai->brains[0]); if(!(num > 2)) LoadBrain("seed2.brn", ai->brains[1]); ai->generation = 0; if(!(num > 2)) k=2; else k=num-1; i=0; l=1; for(j=k;j<128;j++) { if(j%2) { SplitBrain(ai->brains[l], ai->brains[i], ai->brains[j]); i++; if(i>k) { i=0; l++; } } else MutateBrainFromSeed(ai->brains[j%k], ai->brains[j]); } } FFortress/evolve/mutationcenter.h100664 3103 20 1174 6276102477 15733 0ustar ylafonw3c#ifndef _MUTATIONCENTER_H_ #define _MUTATIONCENTER_H_ #include "defs.h" #include "stypes.h" #define MAX_SIZE 128 void BubbleBrain PARAM2(param[MAX_SIZE], int[MAX_SIZE][MAX_SIZE]); void EvolvePool PARAM2(param[MAX_SIZE], int[MAX_SIZE][MAX_SIZE]); void ArenaInit PARAM1(arena *); void ArenaCheckPending PARAM2(arena *, list **); void ArenaParse PARAM3(arena *, slave *, char *); void ArenaNotifyFailure PARAM2(arena *, slave *); void ArenaEvolve PARAM1(arena *); void ArenaInitialize PARAM3(arena *, char **, int); int SlaveSendRequest PARAM4(arena *, slave *, int, int); #endif /* _MUTATIONCENTER_H_ */ FFortress/evolve/scell.h100664 3103 20 432 6276102477 13750 0ustar ylafonw3c#ifndef _EVOLVE_SLAVE_CELL_H_ #define _EVOLVE_SLAVE_CELL_H_ #include "defs.h" #include "stypes.h" #include void FreeArenaCell PARAM2(int, void *); arena_cell *CreateArenaCell PARAM2(int, int); void PurgeCell PARAM3(list **, int, int); #endif /* _EVOLVE_SLAVE_CELL_H_ */ FFortress/evolve/seeds.c100664 3103 20 11102 6276102477 14000 0ustar ylafonw3c#include #include #include #include #include #include #include "types.h" #include "tools.h" #include "strategie.h" #include "brain.h" #include "mutate.h" #define PMIN(a,b) ((a1)) LoadBrain("seed1.brn", brain[0]); if(!(argc > 2)) LoadBrain("seed2.brn", brain[31]); sprintf(dumpname, "seedfor-%d.brn", argc-1); generation = 0; nb = 2; i=0; l=1; if(!(argc > 2)) k=2; else k=argc-1; for(j=k;j<128;j++) { if(j%2){ SplitBrain(brain[l], brain[i], brain[j]); i++; if(i>k){ i=0; l++; } } else MutateBrainFromSeed(brain[j%k], brain[j]); } while(1) { printf("Building generation %d\n", generation); for(j=0;j<128;j++) { for(k=0; k<128; k++) { if(j!=k) { for(i=0;i<36;i++) { pb[i] = cb[i] = 0; } pl = 1; for(i=0;i0) PlayWhite(pb, cb, pwhere[nb]); else PlayBlack(pb, cb, pwhere[nb]); pl = -pl; c = AlphaBeta(pb, cb, pl, nb, i*2+1, pwhere, brain[k]); if(pl>0) PlayWhite(pb, cb, pwhere[nb]); else PlayBlack(pb, cb, pwhere[nb]); pl = -pl; } for(i=2*MAX_TURN;i<42;i++) { c = EndAlphaBeta(pb, cb, pl, PMIN(4, 42-i), i, pwhere); if(pl>0) PlayWhite(pb, cb, pwhere[PMIN(4, 42-i)]); else PlayBlack(pb, cb, pwhere[PMIN(4, 42-i)]); pl = -pl; } result = EndScore(pb, cb, 1); if(result) if(result>0) results[j][k] = 1; else results[j][k] = -1; else results[j][k] = 0; } } } printf("\nGENERATION %d\n", generation); for(j=0;j<128;j++) { for(k=0;k<128;k++) { if(j == k) printf(" X "); else if(results[j][k]<0) printf(" - "); else if(results[j][k]>0) printf(" 1 "); else printf(" = "); } printf("\n"); } EvolvePool(brain, results); SaveBrain((dumpname) ? dumpname : "firstbrain.brn", brain[0]); generation++; } } FFortress/evolve/slave.c100664 3103 20 11560 6276102477 14017 0ustar ylafonw3c#include #include #include #include #include #include #include #include #include #ifndef SUNOS #include #endif /* !SUNOS */ #include #include #include #include "defs.h" #include "types.h" #include "strategie.h" #include "tools.h" #include "socket.h" #include "etypes.h" #define PMIN(a,b) ((a0) PlayWhite(pb, cb, pwhere[DEPTH]); else PlayBlack(pb, cb, pwhere[DEPTH]); pl = -pl; c = AlphaBeta(pb, cb, pl, DEPTH, i*2+1, pwhere, br2); *l++ = pwhere[DEPTH]+65; if(pl>0) PlayWhite(pb, cb, pwhere[DEPTH]); else PlayBlack(pb, cb, pwhere[DEPTH]); pl = -pl; } for(i=2*MAX_TURN;i<42;i++) { c = EndAlphaBeta(pb, cb, pl, PMIN(4, 42-i), i, pwhere); *l++ = pwhere[PMIN(4, 42-i)]+65; if(pl>0) PlayWhite(pb, cb, pwhere[PMIN(4, 42-i)]); else PlayBlack(pb, cb, pwhere[PMIN(4, 42-i)]); pl = -pl; } *l = 0; Score(pb, cb, score1, score2); } void main(argc, argv) int argc; char **argv; { int port = 8007; int max_fd; int nbcalc = 0; int score1, score2; int currbrain, currcell; char *server; char *parse; char tobeparsed[SOCKET_BUFFER_SIZE]; char dump[128]; char log[64]; slave me; struct timeval timeout; time_t last_comm, connect_time; fd_set rd; #ifndef _HAS_USLEEP int dfd = 0; #endif /* _HAS_USLEEP */ #ifndef SUNOS struct rlimit rlp; #endif /* !SUNOS */ param br1, br2; if(argc == 1) { printf("Usage:\n slave server [host]\n"); exit(1); } me.buffer = NULL; me.status = 0; me.buffer = (char *)calloc(SOCKET_BUFFER_SIZE, sizeof(char)); /* just in case, for broken compilers/libraries */ server = argv[1]; if(argc == 3) port = atoi(argv[2]); #ifdef SUNOS max_fd = getdtablesize(); #else getrlimit(RLIMIT_NOFILE, &rlp); max_fd = (int) rlp.rlim_cur; #endif /* SUNOS */ while(1) { while(!me.status) { me.socket = connection(server, port); if(me.socket == -1) { connect_time = time((time_t *)NULL); while(difftime(time((time_t *)NULL), connect_time)< 30) { #ifndef _HAS_USLEEP timeout.tv_sec=1; timeout.tv_usec=0; select(dfd, NULL, NULL, NULL, &timeout); #else usleep(1000000); #endif /* _HAS_USLEEP */ } } else { printf("Connected!\n"); me.status = 1; } } me.curr = me.buffer; currbrain = 0; currcell = 0; last_comm = time((time_t *)NULL); while(me.status) { FD_ZERO(&rd); FD_SET(me.socket, &rd); timeout.tv_sec=1; timeout.tv_usec=0; select(max_fd, &rd, NULL, NULL, &timeout); if(FD_ISSET(me.socket, &rd)) { me.status = read_socket(me.socket, me.buffer, &me.curr, tobeparsed); parse = tobeparsed; if(me.status) { while(me.status && parse) { if(currbrain == 0) sscanf(parse, "%f %f %f %f %f %f %f %f %f", &br1[currcell].my_score_rate, &br1[currcell].opp_score_rate, &br1[currcell].protect_pos_rate, &br1[currcell].attack_pos_rate, &br1[currcell].board_score_rate, &br1[currcell].play_opp_flag, &br1[currcell].defensive_rate, &br1[currcell].offensive_rate, &br1[currcell].position_rate); else sscanf(parse, "%f %f %f %f %f %f %f %f %f", &br2[currcell].my_score_rate, &br2[currcell].opp_score_rate, &br2[currcell].protect_pos_rate, &br2[currcell].attack_pos_rate, &br2[currcell].board_score_rate, &br2[currcell].play_opp_flag, &br2[currcell].defensive_rate, &br2[currcell].offensive_rate, &br2[currcell].position_rate); currcell++; if(currcell == 42) { if(currbrain == 0) { currbrain++; currcell = 0; } else { /* calculate */ nbcalc++; printf("Computing %d ", nbcalc); play_game(br1, br2, &score1, &score2, log); sprintf(dump, "%s %d %d END\n", log, score1, score2); me.status = send_socket(me.socket, dump); currbrain = 0; currcell = 0; printf("%s", dump); last_comm = time((time_t *)NULL); } } parse = strchr(parse, '\n'); if(parse) parse++; } } } if(difftime(time((time_t *)NULL), last_comm)>300) { me.status = 0; shutdown(me.socket, 2); close(me.socket); } } } } FFortress/evolve/socket.c100644 3103 20 6054 6276102477 14155 0ustar ylafonw3c#include #include #include #include #include #include #include #include #include #ifdef NODELAY #include #endif /* NODELAY */ #include #include "defs.h" #include "socket.h" int connection(host, port) char *host; int port; { int done; int sock=0; struct hostent *hptr; struct sockaddr_in adsock = {AF_INET}; #ifdef NODELAY int val = 1; #endif /* NODELAY */ printf("Trying to connect to %s on port %d\n", host, port); done=1; if((hptr=gethostbyname(host))==NULL) { done=0; perror("Unable to get host"); } else { #ifdef SUNOS bcopy((char *)hptr->h_addr, (char *)&adsock.sin_addr, hptr->h_length); #else memcpy((void *)&adsock.sin_addr, (void *)hptr->h_addr, (unsigned int)hptr->h_length); #endif /* SUNOS */ adsock.sin_family=hptr->h_addrtype; adsock.sin_port=htons(port); if((sock=socket(AF_INET,SOCK_STREAM,0))<0) { done=0; perror("Unable to create socket"); } else { setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0); setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0); #ifdef NODELAY setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *)val, sizeof(val)); #endif /* NODELAY */ if(connect(sock,(struct sockaddr *)&adsock,sizeof(adsock))<0) { done=0; close(sock); perror("Unable to connect"); } } } return((done) ? sock : -1); } int server(port) int port; { int done; int sock=0; struct hostent *hptr; struct sockaddr_in adsock = {AF_INET}; struct utsname name; printf("Trying to bind socket on port %d\n",port); done=1; uname(&name); if((hptr=gethostbyname(name.nodename))==NULL){ done=0; perror("Unable to get host"); } else { #ifdef SUNOS bcopy((char *)hptr->h_addr, (char *)&adsock.sin_addr, hptr->h_length); #else memcpy((void *)&adsock.sin_addr, (void *)hptr->h_addr, (unsigned int)hptr->h_length); #endif /* SUNOS */ adsock.sin_family=hptr->h_addrtype; adsock.sin_port=htons(port); if((sock=socket(AF_INET,SOCK_STREAM,0))<0) { done=0; perror("Unable to create socket for listening"); } else { if(bind(sock,(struct sockaddr *)&adsock,sizeof(adsock))<0){ done=0; close(sock); perror("Unable to bind"); } } } return((done) ? sock : -1); } int send_socket(sock, msg) int sock; char *msg; { return write(sock, msg, strlen(msg)) != -1; } int read_socket(sock, buffer, curr, result) int sock; char *buffer, **curr, *result; { register char *npos,*cpy,*cpyresult; int nb_read,s_size; register int i; errno=0; nb_read=read(sock,*curr,(SOCKET_BUFFER_SIZE-1+buffer-*curr)); if(!nb_read) return 0; else{ *(*curr+nb_read)=0; npos=buffer; cpy =buffer; while(*cpy) if(*cpy++ == '\n') npos = cpy; s_size = (npos-buffer-1); cpy = buffer; cpyresult = result; for(i=0;i typedef struct arena_stru { int generation; param brains[128]; list *pending; list *waiting; int arena_resultx[128][128]; int arena_resulty[128][128]; int arena_win[128][128]; int nb_played; } arena; typedef struct arena_cell_stru { int x; int y; } arena_cell; #endif /* _ARENA_TYPES_H_ */ FFortress/evolve/twoseed.c100644 3103 20 10047 6276102477 14354 0ustar ylafonw3c#include #include #include #include #include #include #include "types.h" #include "tools.h" #include "strategie.h" #include "brain.h" #include "mutate.h" #define PMIN(a,b) ((a1) LoadBrain(argv[1], brain[0]); else LoadBrain("seed1.brn", brain[0]); if(argc > 2) LoadBrain(argv[2], brain[31]); else LoadBrain("seed2.brn", brain[31]); dumpname = (argc == 4) ? argv[3] : NULL; nb = 2; generation = 0; for(i=1;i<15;i++) MutateBrainFromSeed(brain[0], brain[i]); SplitBrain(brain[0], brain[31], brain[15]); SplitBrain(brain[31], brain[0], brain[16]); for(i=17;i<31;i++) MutateBrainFromSeed(brain[31], brain[i]); while(1) { for(j=0;j<32;j++) { for(k=0; k<32; k++) { if(j!=k) { for(i=0;i<36;i++) { pb[i] = cb[i] = 0; } pl = 1; for(i=0;i0) PlayWhite(pb, cb, pwhere[nb]); else PlayBlack(pb, cb, pwhere[nb]); pl = -pl; c = AlphaBeta(pb, cb, pl, nb, i*2+1, pwhere, brain[k]); if(pl>0) PlayWhite(pb, cb, pwhere[nb]); else PlayBlack(pb, cb, pwhere[nb]); pl = -pl; } for(i=2*MAX_TURN;i<42;i++) { c = EndAlphaBeta(pb, cb, pl, PMIN(4, 42-i), i, pwhere); if(pl>0) PlayWhite(pb, cb, pwhere[PMIN(4, 42-i)]); else PlayBlack(pb, cb, pwhere[PMIN(4, 42-i)]); pl = -pl; } result = EndScore(pb, cb, 1); if(result) if(result>0) results[j][k] = 1; else results[j][k] = -1; else results[j][k] = 0; } } } printf("\nGENERATION %d\n", generation); for(j=0;j<32;j++) { for(k=0;k<32;k++) { if(j == k) printf(" X "); else if(results[j][k]<0) printf(" - "); else if(results[j][k]>0) printf(" 1 "); else printf(" = "); } printf("\n"); } EvolvePool(brain, results); SaveBrain((dumpname) ? dumpname : "firstbrain.brn", brain[1]); generation++; } } FFortress/evolve/Makefile100644 3103 20 2072 6274434105 14147 0ustar ylafonw3cCC = gcc WARN_FLAGS = -Wall -Wmissing-prototypes OPTI_FLAGS = -O2 -fomit-frame-pointer INCLUDE_PATH = -I../include LIBRARY_PATH = -L../fortress EXTRA_LIBRARIES = CFLAGS = $(WARN_FLAGS) $(OPTI_FLAGS) $(INCLUDE_PATH) COBJ = socket.o center.o mutationcenter.o mutate.o list.o cell.o scell.o SOBJ = socket.o slave.o .c.o: $(CC) $(CFLAGS) -c $*.c -o $*.o all: center slave generate twoseed seeds seeds: seeds.o mutate.o ../fortress/libfortress.a $(CC) seeds.o mutate.o -o $@ $(LIBRARY_PATH) -lfortress twoseed: twoseed.o mutate.o ../fortress/libfortress.a $(CC) twoseed.o mutate.o -o $@ $(LIBRARY_PATH) -lfortress generate: generate.o ../fortress/libfortress.a $(CC) generate.o -o $@ $(LIBRARY_PATH) -lfortress center: $(COBJ) ../fortress/libfortress.a $(CC) $(COBJ) -o $@ $(LIBRARY_PATH) $(EXTRA_LIBRARIES) -lfortress slave: $(SOBJ) ../fortress/libfortress.a $(CC) $(SOBJ) -o $@ $(LIBRARY_PATH) $(EXTRA_LIBRARIES) -lfortress ../fortress/libfortress.a: cd ../fortress ; $(MAKE) xf: cd .. ; $(MAKE) xf clean: rm -f center slave seeds twoseed generate *~ *.o *.out FFortress/evolve/seed6.brn100644 3103 20 1436 6233072414 14217 0ustar ylafonw3c0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 FFortress/lib/ 40755 3103 20 0 6346031764 11663 5ustar ylafonw3cFFortress/lib/brain-101-generation99.brn100664 3103 20 6542 6346031763 16400 0ustar ylafonw3c0.893906 1.288329 1.884701 1.126098 0.893906 10.243902 0.000000 0.000000 2.297073 0.925937 1.307644 1.914831 1.113999 0.902870 10.370477 0.237402 0.160266 2.264514 0.957555 1.325241 1.943846 1.102192 0.911836 10.496933 0.469641 0.309714 2.235139 0.988783 1.341210 1.971624 1.090659 0.920784 10.620353 0.695394 0.448367 2.209560 1.019639 1.355641 1.998065 1.079382 0.929694 10.738144 0.913460 0.576298 2.188244 1.050147 1.368633 2.023089 1.068334 0.938546 10.848009 1.122764 0.693625 2.171500 1.080322 1.380283 2.046632 1.057493 0.947323 10.947945 1.322349 0.800500 2.159497 1.110182 1.390693 2.068645 1.046833 0.956005 11.036199 1.511374 0.897106 2.152266 1.139741 1.399962 2.089089 1.036327 0.964577 11.111276 1.689107 0.983645 1.228406 1.169007 1.408191 2.107937 1.025949 0.973022 11.171890 1.854922 1.060338 1.229495 1.197987 1.415477 2.125169 1.015672 0.981325 11.216965 2.008288 1.127422 1.232946 1.226686 1.421915 2.140773 1.005469 0.989475 11.245588 2.148767 1.185145 1.238519 1.255103 1.427599 2.154746 0.995312 0.997459 11.257016 2.276002 1.233764 1.245925 1.283236 1.432617 2.167084 0.985173 1.005268 11.250632 2.389720 1.273548 1.254831 1.311081 1.437057 2.177793 0.975023 1.012893 11.225944 2.489712 1.304765 1.264873 1.338633 1.440999 2.186876 0.964833 1.020327 11.182546 2.575841 1.327695 1.275655 1.365884 1.444524 2.194343 0.954573 1.027566 11.120126 2.648024 1.342617 0.000000 1.392831 1.447707 2.200202 0.944211 1.034607 11.038436 2.706231 1.349816 0.000000 1.419470 1.450621 2.204458 0.933717 1.041447 10.937271 2.750484 1.349580 0.000000 1.445804 1.453339 2.207118 0.923057 1.048087 10.816479 2.780834 1.342199 0.000000 1.471838 1.455927 2.208182 0.912198 1.054529 10.675915 2.797373 1.327966 0.000000 1.497587 1.458455 2.207648 0.901103 1.060775 10.515468 2.800215 1.307177 0.000000 1.523073 1.460991 2.205502 0.889738 1.066829 10.335020 2.789495 1.280131 0.000000 1.548333 1.463604 2.201728 0.878065 1.072698 10.134452 2.765354 1.247129 0.000000 1.573415 1.466362 2.196295 0.866048 1.078388 9.913631 2.727940 1.208478 0.000000 1.598384 1.469340 2.189167 0.853648 1.083907 9.672403 2.677390 1.164485 0.000000 1.623325 1.472615 2.180289 0.840829 1.089262 9.410583 2.613828 1.115463 0.000000 1.648345 1.476269 2.169603 0.827552 1.094463 9.127949 2.537356 1.061730 0.000000 1.673574 1.480393 2.157032 0.813782 1.099518 8.824224 2.448035 1.003606 0.000000 1.699175 1.485083 2.142489 0.799481 1.104435 8.499083 2.345883 0.941417 0.000000 1.725340 1.490449 2.125880 0.784617 1.109224 8.152141 2.230864 0.875489 0.000000 1.752300 1.496613 2.107104 0.769156 1.113892 7.782925 2.102867 0.806155 0.000000 1.780324 1.503711 2.086057 0.753068 1.118445 7.390891 1.961703 0.733746 0.000000 1.809729 1.511898 2.062639 0.736324 1.122888 6.975388 1.807084 0.658599 0.000000 1.840886 1.521351 2.036766 0.718896 1.127224 6.535669 1.638609 0.581048 0.000000 1.874223 1.532270 2.008376 0.700761 1.131455 6.070858 1.455740 0.501432 0.000000 1.910230 1.544886 1.977442 0.681893 1.135577 5.579948 1.257779 0.420089 0.000000 1.949479 1.559464 1.943992 0.662271 1.139585 5.061786 1.043830 0.337363 0.000000 1.992620 1.576309 1.908121 0.641873 1.143470 4.515049 0.812748 0.253608 0.000000 2.040401 1.595775 1.870014 0.620678 1.147218 3.938242 0.563077 0.169192 0.000000 2.093677 1.618266 1.829956 0.598671 1.150810 3.329670 0.292956 0.084512 0.000000 2.153424 1.644254 1.788359 0.575840 1.154221 2.687425 0.000000 0.000000 0.000000 FFortress/lib/brain-103-generation118.brn100664 3103 20 6520 6346031763 16446 0ustar ylafonw3c1.317657 1.737546 3.511531 0.858837 0.893406 1.260798 2.098827 2.830011 0.886813 1.406373 1.748187 3.488124 0.644383 0.909235 1.788577 2.248714 1.523782 0.827600 1.447495 2.267871 1.745412 0.706963 0.981743 3.238726 2.288538 0.548343 1.240603 1.411527 1.541219 3.399263 1.211845 0.877010 0.456302 0.731591 1.408786 1.180271 1.413235 2.026779 3.410207 1.916973 0.960751 1.366786 1.568116 0.872331 1.116340 1.373518 2.003116 2.415121 1.288569 1.014843 3.483926 0.904942 1.327224 1.046286 1.507656 1.947094 2.439862 1.434465 0.873743 2.654170 2.116201 1.085726 1.316038 1.484391 1.670323 3.129777 1.002392 1.193357 3.146135 2.617976 0.920214 1.324817 1.550509 1.630133 3.006782 1.138408 1.000523 3.212926 2.179241 0.356129 0.559736 1.674163 1.979601 2.889117 0.909097 1.278062 3.928661 2.632832 0.868429 0.862414 1.632592 1.439223 3.152821 0.771618 1.253026 3.537947 2.186124 0.685125 0.749022 1.471128 1.767279 2.937686 0.959017 1.086116 3.512168 2.384359 1.014019 0.734484 1.616124 2.381242 3.316929 1.375701 1.468654 3.937178 2.030146 0.561442 1.217651 1.530900 2.212504 3.061947 0.939460 1.420911 4.425312 2.142293 0.877745 0.947687 1.529861 1.674454 3.240160 1.060838 1.535158 4.062891 2.838761 0.779488 1.144916 1.704862 2.352850 2.937824 1.324496 1.236114 4.605964 2.212859 0.647463 0.930130 1.792402 1.901479 2.918539 1.271450 1.212720 4.095385 2.549699 1.050912 0.425312 1.837480 2.132860 3.010720 1.163412 1.056035 3.484296 3.026911 0.657344 0.422827 1.963194 1.924131 3.179817 1.289030 1.101464 4.125415 2.544019 0.768903 -0.224764 1.911701 1.965499 2.908340 1.229562 1.179113 3.356630 2.471902 0.972662 0.544330 1.711068 1.951226 3.124382 1.098067 1.084115 3.992623 2.487339 0.692764 0.032792 1.777031 2.128343 2.839346 0.897857 1.658960 4.096536 2.590893 0.838836 0.278178 2.023184 1.881464 2.965479 1.082775 1.330070 3.524458 2.617017 0.978610 0.127762 1.607906 1.791463 2.649190 0.742137 1.308111 3.932892 2.401129 0.714535 0.520100 1.836312 1.784883 3.014004 1.194765 1.328554 2.992436 2.438835 0.827059 -0.128222 1.903740 2.060356 2.832258 0.910505 1.130850 2.278507 2.436388 0.900332 0.029421 1.690857 2.370107 2.536969 1.007083 1.383389 2.923875 2.429569 0.756199 0.534548 2.005593 2.187234 2.631218 1.121777 1.345464 2.424076 1.905121 0.680174 0.174822 1.813202 1.990751 2.362330 0.818403 1.488417 2.559635 2.081660 0.747553 0.019727 1.715947 1.799851 2.700770 0.887410 1.417737 1.709242 2.046880 0.827592 0.063500 2.035926 1.947176 2.406371 0.789965 1.141631 2.113468 1.524251 0.622721 0.185645 2.205886 2.002511 2.697016 1.090000 1.294413 2.299077 1.565777 0.956150 0.488151 1.547817 1.845526 2.565121 0.787459 1.793619 2.020629 1.578447 0.485328 -0.019723 2.351693 2.790645 2.265595 0.891342 1.310721 1.951995 1.589070 0.609355 0.035699 1.971249 2.276616 2.527892 1.195762 1.477104 2.026321 0.987385 0.797208 0.489416 2.023198 2.264607 2.633271 1.129142 1.356808 2.493146 1.688378 0.770767 0.338308 1.855995 1.738089 1.921311 0.761760 1.553047 1.345205 1.604892 0.765876 -0.292268 1.920753 2.247187 2.226350 0.774415 1.402053 0.921061 1.466303 0.260592 0.608513 1.776242 2.626151 2.111518 1.132177 1.016766 1.793257 1.028688 0.647363 -0.186900 1.830678 1.675667 2.615610 1.058100 1.526514 0.944465 0.645301 0.672812 0.870253 1.727194 2.014228 2.832412 1.106207 1.014585 1.832310 1.021954 0.117702 -0.274886 1.987277 2.674119 2.213531 0.911631 1.226288 0.933543 0.591546 0.428817 0.453097 FFortress/lib/brain-301-generation167.brn100664 3103 20 6517 6346031763 16460 0ustar ylafonw3c0.938672 1.592520 5.382062 0.738190 0.993686 0.900789 0.067541 0.018291 0.365156 1.038403 1.475914 5.383376 0.734648 1.198146 0.703078 0.156975 0.080741 0.406043 1.134155 1.943634 5.521745 0.723738 1.235410 0.645052 0.421960 0.181402 0.346074 1.171649 1.529793 5.735981 0.751970 1.271158 0.585612 0.695453 0.097055 0.302147 1.232965 1.586282 5.776553 0.801269 1.340094 1.226663 1.037569 0.301481 0.359887 1.308059 1.800742 5.759634 0.857152 1.407445 1.211543 1.384022 0.227932 0.420630 1.358835 1.738243 5.974749 0.668354 1.647662 1.501189 1.724151 0.404694 0.955974 1.422377 1.707613 5.706173 0.747375 1.319022 2.150817 2.132261 0.099433 0.809246 1.520322 1.827316 5.961299 0.718340 1.234025 3.050984 2.184179 0.263204 0.882297 1.721166 2.247876 5.876381 0.911761 1.308496 2.944333 2.453953 0.580013 0.857434 1.570602 1.909534 5.638136 0.724211 1.719835 2.091887 3.315126 0.530100 1.019531 1.877634 2.201802 5.895476 0.857884 1.190813 2.604424 3.502074 0.246312 0.596429 1.796576 2.251810 5.737704 0.681229 1.637554 1.837071 3.711685 0.559660 0.835276 1.606025 2.349833 5.551107 0.854878 1.667806 2.688251 3.717721 0.364612 1.290376 2.022262 2.331531 5.116446 0.723276 1.890555 4.184183 3.963098 0.649714 1.191799 1.905911 2.504186 5.032005 0.879951 1.509799 3.283394 4.009490 0.394333 1.384242 1.864902 2.598159 4.992526 0.972777 1.377776 2.181600 3.878271 0.632946 0.032804 2.093055 2.295110 4.464056 1.001062 1.355386 2.651263 4.125107 0.577412 0.219310 2.170257 2.535778 4.714290 0.624299 1.508817 3.697304 4.193552 0.273376 0.056154 2.071354 2.305589 4.367673 0.768625 1.551961 2.926390 4.113358 0.892602 0.222865 2.098707 2.525416 4.409076 0.731222 1.659242 2.112270 4.194871 0.574881 0.069415 1.985611 2.388821 3.923835 0.657833 1.566575 3.790822 3.821296 0.757495 0.364832 1.974128 2.349250 3.608113 0.611647 1.331848 2.391889 3.413869 0.843888 0.327377 1.780007 2.312455 3.755565 0.784046 1.627125 2.323325 3.420430 0.907399 0.324657 1.972073 2.555250 3.346625 1.048769 1.225529 3.135377 3.597356 0.570499 0.133549 2.123750 2.369866 3.286433 0.647365 1.302218 1.906836 3.133149 0.616161 0.411786 2.298270 2.379905 3.140030 0.756326 1.668065 1.942353 3.071034 0.824900 0.271229 1.955766 2.330036 2.969609 1.033139 1.255054 1.741401 2.948188 0.342304 0.198527 1.990455 2.313276 2.533747 0.811181 1.504800 2.619694 2.588900 0.660052 0.206289 1.970097 2.429894 2.523968 0.770096 1.362810 1.694785 2.355079 0.454787 0.311881 2.171532 2.550654 2.276717 0.792133 1.127939 1.852190 2.133900 0.501384 -0.002663 1.975431 2.384080 2.442376 0.788137 1.278520 1.664369 2.104379 0.491941 0.167645 2.090084 2.235211 2.451345 0.870432 1.237805 2.714088 1.709878 0.383918 0.176686 2.266163 2.377314 1.984210 0.727104 1.235037 2.007784 1.742440 0.431415 0.002617 2.053085 2.271549 1.882227 1.007660 1.165729 1.906280 0.996058 0.135997 0.017561 1.946535 2.581918 1.884449 0.842030 1.223693 2.213764 0.951937 0.325767 0.087821 2.086622 2.321680 1.776493 0.940424 1.250871 0.855226 0.878519 0.195312 0.023521 1.860879 2.339005 1.562970 0.840995 1.209914 0.238880 0.626898 0.372165 0.087705 2.119996 2.290206 1.474087 0.796712 1.307825 0.857673 0.501782 0.377953 0.115177 2.060025 2.452410 1.406333 0.976752 1.042536 -0.122387 0.622160 0.364113 0.007154 1.945887 2.348075 1.423650 0.868683 1.206118 -0.625811 0.374816 0.107500 -0.071443 1.845418 2.471688 1.289040 1.039493 1.037376 -0.066129 0.057998 0.251521 0.033229 FFortress/lib/brain-score-generation231.brn100664 3103 20 6512 6346031763 17253 0ustar ylafonw3c0.961512 1.083318 2.191713 1.397238 0.961512 0.000000 0.000000 0.000000 0.000000 0.990640 1.100772 2.196592 1.386794 0.967944 0.076639 0.106488 0.053289 0.027013 1.018646 1.118078 2.201659 1.375924 0.973633 0.197527 0.216651 0.106990 0.052378 1.045617 1.135207 2.206840 1.364712 0.978710 0.351761 0.327688 0.159973 0.076156 1.071629 1.152150 2.212019 1.353225 0.983273 0.529069 0.437029 0.211205 0.098151 1.096768 1.168927 2.217044 1.341506 0.987389 0.720046 0.542380 0.259770 0.118062 1.121124 1.185584 2.221734 1.329594 0.991111 0.916298 0.641759 0.304882 0.135576 1.144805 1.202196 2.225881 1.317507 0.994477 1.110503 0.733504 0.345895 0.150427 1.167922 1.218853 2.229266 1.305263 0.997512 1.296430 0.816269 0.382299 0.092814 1.190596 1.235664 2.231657 1.292868 1.000235 1.468924 0.889023 0.413720 0.097981 1.212951 1.252744 2.232821 1.280328 1.002661 1.623858 0.951022 0.439911 0.101452 1.235111 1.270213 2.232533 1.267645 1.004799 1.758088 1.001800 0.460748 0.103268 1.257192 1.288187 2.230573 1.254820 1.006658 1.869370 1.041135 0.476211 0.103509 1.279308 1.306777 2.226743 1.241853 1.008244 1.956302 1.069032 0.486383 0.102293 1.301561 1.326083 2.220857 1.228749 1.009565 2.018226 1.085694 0.491429 0.099761 1.324042 1.346190 2.212759 1.215509 1.010629 2.055155 1.091492 0.491589 0.096077 1.346827 1.367169 2.202312 1.202138 1.011443 2.067678 1.086950 0.487161 0.000000 1.369979 1.389071 2.189408 1.188644 1.012016 2.056881 1.072707 0.478495 0.000000 1.393545 1.411930 2.173964 1.175033 1.012359 2.024259 1.049504 0.465974 0.000000 1.417560 1.435759 2.155924 1.161316 1.012486 1.971635 1.018157 0.450011 0.000000 1.442041 1.460550 2.135260 1.147502 1.012411 1.901085 0.979539 0.431033 0.000000 1.466992 1.486273 2.111959 1.133602 1.012152 1.814865 0.934556 0.409476 0.000000 1.492408 1.512879 2.086042 1.119630 1.011726 1.715339 0.884138 0.385773 0.000000 1.518270 1.540300 2.057543 1.105597 1.011157 1.604934 0.829221 0.360355 0.000000 1.544548 1.568445 2.026513 1.091516 1.010469 1.486074 0.770733 0.333638 0.000000 1.571209 1.597206 1.993019 1.077400 1.009687 1.361147 0.709589 0.306022 0.000000 1.598212 1.626458 1.957142 1.063262 1.008840 1.232468 0.646676 0.277894 0.000000 1.625515 1.656060 1.918971 1.049117 1.007959 1.102244 0.582856 0.249614 0.000000 1.653072 1.685852 1.878607 1.034981 1.007078 0.972561 0.518956 0.221527 0.000000 1.680842 1.715666 1.836152 1.020871 1.006231 0.845364 0.455769 0.193957 0.000000 1.708787 1.745319 1.791722 1.006809 1.005456 0.722447 0.394055 0.167208 0.000000 1.736874 1.774623 1.745431 0.992817 1.004791 0.605449 0.334540 0.141568 0.000000 1.765079 1.803379 1.697399 0.978924 1.004276 0.495847 0.277922 0.117308 0.000000 1.793387 1.831384 1.647758 0.965164 1.003952 0.394955 0.224868 0.094688 0.000000 1.821800 1.858435 1.596638 0.951576 1.003862 0.303920 0.176023 0.073955 0.000000 1.850327 1.884328 1.544175 0.938206 1.004046 0.223718 0.132006 0.055346 0.000000 1.878994 1.908859 1.490515 0.925105 1.004550 0.155144 0.093412 0.039089 0.000000 1.907848 1.931829 1.435800 0.912332 1.005413 0.098801 0.060804 0.025397 0.000000 1.936948 1.953037 1.380179 0.899952 1.006681 0.055085 0.034714 0.014474 0.000000 1.966382 1.972285 1.323787 0.888035 1.008396 0.024160 0.015622 0.006503 0.000000 1.996255 1.989365 1.266740 0.876656 1.010603 0.005931 0.003944 0.001639 0.000000 2.026707 2.004048 1.209121 0.865895 1.013354 0.000000 0.000000 0.000000 0.000000 FFortress/lib/center-brain-evolution-101-generation99.tgz100664 3103 20 22717 6346031763 21745 0ustar ylafonw3c!2]ێ$qx|,ȆCdLi,c=*x=QL2qND0?Sc|?_!V?=9>)xZ- 7S1~z_rW|#eBb8FKL1Pb-qZ5(Rȕ۬y Na~Ɵ2/<9 CcL$$JT5pkGRb¿4CLKԋD'1ߣ@ީ;($bE,:+eƁāBIRbtNqGS UĊ-=ױXZ˰)!k9n= !c K Ԭ]=qBSϵh+$fψءRޭ$1H"Pkt0a*X[9 SnN֞{6_V:^[[熩.X`|(ƧXO7IL/%˂I.CI3N  {fL=?^}+`H_ &=EIh DQ^`puC2s?5\h9>IYbnA.(ĞT_Cj|}xLVWO+>-#OCbWhmޥe-5fhb$ ^daK'f,pwm+f8Lb˨ aɡet7r 00 PPZqB'b S%3a);Hc&m+M:46lӓv7K+!kEؿuc8+}+`evi-QxRmAK*z>gؒ ^ K>gSZ2gfh4&6;7a^_R-a1$ lj 4nLb}ZN,9&O794/BC`&еpv<HK  !!2B*~m=d &@`6آ1=1A[` $PN12赹TRYΥa4rE U@ȂU@薆:{ 6A`%֩$O:IPUC \7|>TA 4Lk`M֛ܦaoY+ sM%KO Ɖ8:hq !'aTzmLC(u ^&M/7*(Xd6@`526%@~,>I`Γ%]*F *?ۨ_?k3ϟgAk{ e!!M_- \f~]P`8&2õeA$1!,c( H##&%mHhO (l5ys@b J+vN8H,s5O!y,leQuą0QCc!D Ah0! RBBBM^@sԐ1a{.YFT4/ zSl$X8Pe= %Ad?{#]leI& fjfPb$b!k N" By?\OVG2̰8S`Qa&8 ĭ1S~ ,"ψ%hj"85I& (6pap&;k@Ќ!SV?Bkc`Hb):34%H"mT(1DGnj74v_*JDıQ9y tos.bпa$CQ1B|J""}dԘRK܉i)XD&*Cx8 p?ÃG5Zw+"p&g9|0#ьXHZZDյk Ԅbë)F2=!$b4TSMGƠ֮hc" 䋭*BĊ %L?XBGܨo?SO0ES:k=A%(>C"`^ ,05##0̒, IEs nUb $a -# 1%lH`2L}~rY8-`RiV)D\}vT,<: $ !{P kU/ȴgv:RI40=Ė`2$F^왿 v m'{9,|ՐVa(HS `ԇjgwȎ3㏂'=OTJ`(Qp@^sq՞pBc˚"pCql ubPQm'P3$`3^k;A5:1~tO4^1>L%\WFeI吝$@Q$AA̎br8>*&-[-U 6}BW>$dkj"La 7ap0kޤ`NS1mFM)gG5m8s |tB|A,JxOɄe0++f;aڬq[U5uR=T1!޼=SbX_<ՠ>cX UR8։ƀcWM28"1ARX,y5Y轍r[{@A*cE+3!B]+!CU&;7?yْCP)H$Ϲº(}b:aô ķzvy#( 'HXD`{b=*\U` ˪Xꑟp)4={f?Ȃ(EY! yX'` VAC%CQa. zљְzNٯu:.sgpNŷvmٞJj|_a_x\GBϡ:/L_G! +]h\Ӝ&ve*#vLMGT'&c1wKPe?>v\2cUUH2# ON~op6߅$O? o#q}g-gn?+_z@ߟC-Wg]fcytݡiN[[KX[(Fp%< Uܞ?z  kDAY,ɿ<_o?bpxk=Ob>]~{ [tkgua?07W:"5gGo?xv 4PVf&U\ zgpU^v_AcZ tCy/c_c+gXs=*?Q|3.Ŷ\^m?,olp|l/3kzW>]ݲ,)?́LA&{@G8c:V灔cd[_8mXv}ݯE}/?egwKp|Jf^g{vǴm?+~P^!-$Qr8>3,-է.wy?*fJ<ݧb?}oU$ ..p& J ?/3Ïqۚc׶?<cbռc;bUM YUqp/IWfW_?T\giq+_eCJ2tpvLnssw2/<-Yu?0>N-\Oe> hɽvT}ۙa=|"uas+Ϝ9_=3*\dKqWIW+a?D`W6/P1O-ڶ߬磳qOێ5d?ԃ2Rc_(ʖccpW--U 8Ut'>ŊyoRgyy_?9LORܾ_/aCxyXNSd<5}Kxނ_:!Vq/s-N?9oq!coC{kg>ձVA ;&իP!wKCtsCv?zcyl3}r݀%(tKy U+i9Pess(`{_lKS~u_Y͗\qgOu[Ns2kj?p.G}{_0=ٶ; ?ۦ+4_e{o5B<zwpr/iy+6bnUOx ghG 7u‹[o?(ylR}?woL@/:E}"[Z?4UG?ZH+۠ 2vʾ*U}uUY--7?zS4DULruu^/u^f>.l.!i+s?&"SnSCfj3l {C_Vs_E9_V7.-:կ^ esWw=yeWe"/ɎÀv?uٖ?8fzsgWj6s8MBxkiL\R.?vWC좘?s/O yE}C>W\'K6m}!*TuWk'9_˓ k;V+;/ژ}R~ۻy_˶?* }C ~$}߷{^xtF -ACf{sٴ^;{7Q=Y|UUֻ-ݞ??/5[Uɕת=.>(s_ *W?L)?o̊*߲τp}6ߣ'O});_G7}vW|P]̶/٧u|BzL(vDxxJg|_ή[aY:U``nBJ ,]W?[e 2l?7\ş8*?ov1N3|xxMz51?Q+6Yw68}]yD  n3_8bp?%u?; >Ϡq?uw(d4*?*˄cOlyO]Kɂtv1PPU:߈w_9;emsUpAEa]:?~y?~y?~^jFFortress/lib/center-brain-evolution-103-generation118.tgz100664 3103 20 25654 6346031763 22022 0ustar ylafonw3c| 3[uqQ tt lSEEҀC$VA<VU-2#s~_O͟~Oo?5~u#W+_}zmW}_}vWOX9{k{^ʏgӷ}U=_ri[^Jg]78l]pSwtqm};qv/}/*{שּׂ/q9˺ G׽Z?-YWG4d'ԫ_{;1}K-cL&u^}wvѶ/8jiŷujϧ6.z?FY N=PZW:K긣m,ctYtʾ {<+KҾ?tV|ӢSjy%R\?Fmwo/rnPǪϪnqKut~Yfݵ2]9W.{5݌Sڰ|S%=*gzZVϭuG}6yZtoK_yceɳ]W)aAV ztgIsi{km^Ilڏu؟yKe3luY$}>("C'z]:e)(n0wȘ6|4 Vs%A>UVU|V_Cl4/yv{hM:rEl1H9OnLTCtAIl;o{YfP;r՞ 鯒yl;Yr)2RkL]mA_]BA;d:|B!ٙdP&4#N`XEF/g |ѾHVeJlqCS^׶rKUf$#WK$1!zޅ^91k޲/%/;qt :OeoYUz<%/D"& gn*}p|SL/^/ j}BQzx*x@ZOڸ\ F[BJp1tPqaPU5#-[B;nJ;6vEZWDuk1VȩaJe)08G!&!^N]s#Ҋ(Jf/Dl2# z-1N,X\֗[4깗Y"d 2ƒqXnE`o |OO,?7|_X9> _+ܾIP{+{>6lAo"Yjg5v]DhT O G 'l0@< `6p]_ s &߇>-n:.+ 7նp$!_i Iyh ޤ!*ime'ؖ`^&P^ L]_ Gr BI1aP!]ZE3 `m8aK8gF eHzF=NtB?IBc _\ ?!8.uAi]hMsߕT_2(P)b1'{YO"n=WgZDJ8ZFq/_<# - vHlO,T{˲)oG`'̔ d1$?b>@ ZQ,I&H<.mUh;6)G:܊H  Lʠ8/չ$#yj0&mfVp)NF I7NZd6DQ7T'"FJag x d%i:XeѶY 4ErTAZy8n%5*]l$d\K /Œ^X 6w&QPut`zD/Yġ5Z1kVv_9^$Y6Zd;/b JTECwؠٗMYB%9{HI{w7@U!#+d&Ćrw: ;Ѫ5wJ;n"C& L#p176(=ԩGx ?!ℨeəI'9|(f]qq31Blu*)I q߇A[qDg@'}D$HXCJlް>EW /Щ@rڟvFqɃJwx0)zztnY22V Wo "vD:J; # Fn EOdH@#rAm0!N\Ö<_>yCHAq:$UIr=o_I`70ԏjRI8{6$A8".y _._9֓(}Q[a]qw:zć uGV_zl4.fթ,ܷd /OΑlYf`Lɬ@(§KI<.-O\UHVF@)kA4k[)-`. [ E ̃‰wwIPIyȞ\P;?[` !B,zܛ mKS"Id9Wdm/%\غS"Q~iKƟi.ɉq1 ŲIOX/^D+->Ȋ|-Ty1Syu :Ұ*g-xЖG@lvq.FHR&rA?+ZX 2|c]5?CT;@U{[XU`] 0~Q-#W?^b&2oj.בuqx윿2'FX>9]zlŸ jIOb=x~!JK'fLF_~(}ͤumI$oɣC !-l\]xxSž [_?UZy?&W]z 6s^'"6Hb[uv%ɒ)*X# *ׇEyQ !C<.dzD͂]28lI_&K'I9L#S׶/oq1'y\Q3&z]q9Я+=EK_1 m?*b?DT "YLqn,,~ /-k\(HFwIYE 7є*YB $nO Oj  |*ޞjTZA ISAWnQ "cagCOp5 _:3L Q1pT5-4e/J$#`C;ȲVat.=Nэ)XE ^bW(t̑Y=rB 2r#MSaJjS ?wB94RnIwl/ʘ@vP(Z܎rU*C~š%䫠{EBKQ?xK1! ӯ%->مt+ֳžS$boRTYe?rRGdx.W6/-?I^ KHzP+$ɤM,E|cZR5c>U{ ~-Pd*8,9gdͺLd;=*FC* d[3A p_f U_u,=_]`4BO,oQ`v6ibot}?ƞcoc\&>Kelr6΢"cEv ?6K{Uv$|N3TLaA~Y5<܁٠Aȩf}RSīetp`NWҞ߉Ty!8W i/L! l#3sZ2 S㱛AXc~llڽ01}φNz,M-X#@&2O6/}uאiXg&#]DŽoZV:.dxo߂VX<އ%:iG:YŽσH;LױY o/PLHD+ 9 Ǚax<{Xo3ˏ4_C;yAtҙ`R?"Ҕ1vWGғ9_D$Fi(|sZ~$ kn 9q E*!25jq}]s:mU. f٣{dDPb&\c7.)7$+ҕ5;H8툙ؤ:aAjHj[Jv.PR%T [֬Mؓ8tARwmOQKJR!:-u,C*(l *u Cik=>]R>xp0I8AauOCǡ:|={{/]k $ul.(RkcbAt(L*v=HL>!\!XɆ7+!{pAR6w;c/2.$*ƩχE.q ̸Jmљǹ$w $KNovpdS]!"J_+WC7c{Z9b6 e= w ;;85Occt M 3 ,g_#F2~do {˼F%9]9}zg3nnWe9{We  Eug^S+nQk!tc_ެhQ4]yTs^}4nqy[Y%?t`)A]@:vxyc=LPvyz14ҟ jzta0]RrPX FS0(uiPw?"ؚ7H^^vB*50weO;;TcàCaJgC9Nx9 [(v̈́'.P4s#QX/ȥ!ܹ脇['6Hqjc B nu$y[ZTH[ ݊6ytOCRk@ ypgG9NQ#`u_m5%[^ڌt4YΞY¯Wo<3]]W͛)^M]P*,f:u8-jk =f|]o/#m@ڔlKM1tIocv=v;+{c8TY?Ki 2*t!LAVjp<Dqo:׼Ukʈm=texC"T X}L߽ۖ1D'3i44{ͣ^]WkLH˳IH*b>KRhirR1q54]]CM2OiniCnmnXRa}Eqw^+e҄1nP2`eE_=l #fw[/7g7-c\Cuʁ]w 7 LT6aY$&Lc븫8?AVH^Ð13!hqW־KBݨե2oP1 ~\E]% e5&dr.Bk{N}o0<,ɽ G?+[W_/+@ ߐ2q=M`I*Q#LH=cnO(9?f~IIe](^y[rʑhKjڃ"/8PIfψiV·{!1Zoǃg!ȡZsjۙCAªe}ĺRn!t ,j]Ș Z Ur3dnKmMmyG[J|¹7IVPHG2= _zǚ:p<L:^2F+ON-noo(I3'9 |odfiT˨y7_y}2WEO~_lR--ѓ?>[֡JJ?S`*|(I,.o a%]-!qK,Lny g<wdc߻YgZǾh=Q[9Oh72C<(?_&Hb>v2eI?-ka#λ dfMx!M\yd<Y p#OjbNt ߝz\^ix#"cO\N983$t΋2Y>@we.]=kRgNt̚zq=m'#!n';tHҩJ /7-?Ae/?SPb[+oZ_## &1yaW?g~i` JHNI[r%TQS߉3'3՜`3Md(zВajYVaCԜ=꠾/?{V2n ^J*O29ᐾQXTM>19x',8'T\/ ^23 ޣP" n4%%:3C^1@V~1%DSOPx?4 omLk(o=O o;7gK(^3Ra v$ڥw*1AdaaMO߈9\3WVkD韫I 7'Swx3tBlW޸qN$'Ԍ繩Q悮|f`}Ϋt[H)9ӐV6}cpv_%N 56$V&#H]_0ܛ1OD݇AM:_gP:x}KsRMZ<9$df$ЮiиOͪ4${F4scz@x'eS8y醂v_Q|\rgH7-/= e,z+(BZo}炥|J͚ OA楿xz!-y}PMn՛WCe2r~2k=o@ͮD6;SHNVG9#T%".^{x61Csț q<&2 QSzyfWeݽb$8wi%@TLQ뗇τ/9>pc!/\%Sw^'vj-/´X =+M{uY`Ojv}ĺ?c|M;C#GR_nּ뾯(wߛv^gfxŸLw^ yK c^feʜ7 ;&еU=-o_3FZ",FZ 2{eh}`)e0_!pz~!,km]IS\P:֫ui,ߖvmw1'0Ӡ$v6zÿi֙A!t̒U}ffLG2nnsf(e:'&rVz\y/h3(o﯉8R\!LEuGąIJMjE~Kj163%K G͚Q҃7R)>kZǝ,7;pLAM+4_`j:t [&=߳)~׌LMvyL WY"z'ẗ!rJ<|>|>|>?aҘFFortress/lib/center-brain-evolution-301-generation169.tgz100664 3103 20 12334 6346031763 22017 0ustar ylafonw3c2]7o=Edq=azط߈"{Z%UK,6QŏVW1ğx7ӯՎBbHblV.՟.uϏ__.?|dN{Dw}>ds h5~~&,9B_\r :?Ո)rB@Lbv 2yE$UJJGN#nJՊn/MCFATՊ࿤uFa8 j?C! 7X-M=%h81[֐Y#nR|JzˆW&;Y;qM*b߄Mcl;`T{DXjp n rʍZsX&NWK ՗#Xu-\/9iv.%.⇫ ڦ#+CR)(Ar8 6TLt!>WbaEy Sz &S:6@=4(UN\Tدr-!=dP8p# NA3T>Y$)BQ7nWO" J7jՐ>X*2/t1LS$y]0.ĨX}2)6N!kx6(JLE*6 nMQpsQ5*ZihH].  Ed@c SL$ܐr "=xVʘoI6CfgqAҰ0!axI潸IA>T B&kM7䱱VՍ5\`:XV&kJЄ b#Q\VA0.ܒ2{( R9BLĭ$$iajKڠ("t۹Y* *P-eUq')Wz5BÝ~@!IҦ a'fݝDE{1,2/p&7۲[>*&IdL`|`94FJazֵ&4<*:+0?ly_\1PX4§9fHv lDIeP8, .vM@%؛B`t.^mbmP &5;lzѷ xy1z8$\R";Hƒ4U#,Xk*O"Ɣ)z+} h:wysF:M@Hذ,\HRX۪k9":hzPg,7SVBil͜rQ`f&Ӓ0/p&u0VN}Y } @ѕ`9d|vH}BzS PW<#p໹}b43֐{@E+}Ԧy,@aBOpJpw:8w w&e4hs`I;R 3O 5ir8cLJ1'T7 }#ïrgCEh`cHCN\aݑjrn!v}c@@!1%q!Wԛ,r!"*jPb N& Gm&!c;)[`Q rsx@Uul+\AԨ|HrB3eOAc3PА1>tA\jh97f's0 и9IJ_~Cp$$ACs)N@R viI*0ƛo7Ӫr704*Dچ7.(!Cᠰ%Ӑ1q =1؂2CI7R #NF[)jw#.ᙃׁ_r/7p)a m+99p\ڜgX徵YCxUFuQy?q n KƷKT ٴlkr:4vze4yQw3dER!o n7NY{ c>h TTz8[WCHV^jWM6▫#JA_h=np/-\,&hQTŲ>!\v _0@0MQT|%dJ*r6oo߇?pܵooqOz]qouWeE6 /Wk>ߧk_u8M># gB?} [|7XCo?9!oooo|^? gffwās+.}+=ԷΗ?/4kC߿y3?os [6?y>Otا/9}_?|!9nj*}vgG?e><`炂;=}KNߟ}qϩuʯTا~S:;_ ?Ea<7$y\Vc))|, aO ~_kgue5%/laKj~Qxv`?.ZGDa. ~yT_Oj`հ'o<{Gٰg=Ne5V G_%Y@]0o|97HrÎ;RtW fNΫVcLNHi9Q1fƭΟcs +OW:FѲds2WR\<}t9VWNYiu/ϲQ'D>8m5o[L":g΢`\5sVJ͗|猭ZEg7Vc 8oq ͙_žحrpj,b\औXDg \r%EKGY+?8kj\SxISW .N$q ONŝ ypVոN2gƵc%N<BvH ?8F̹ĊK|e}ceFFortress/lib/center-brain-evolution-score-generation232.tgz100664 3103 20 12272 6346031763 22617 0ustar ylafonw3ca'3ǑO1/AUe]Gh-Ec2 es0ӝ]Ȉk?Ͽ~8~jW-eK奕k߶FmRcKzK>?~MWy뫼̗vaJf9=u~jC{mgi(kXS٫bW-V:KSgXc Ylu:=vתkiSy"Ugr7(g.1X,vbY\u6-5vJ Yg2͆r,xr_1sgcI׉56f+vˎ>DZfzQjlee?{tz]qnbc!5 ՏxO[ty7 Ǻzm[d~ a W13k2mtY>elcZ*u3U얿}j)E~eS2ED)MS+mVzbi(vVCۊ!8b>"keQ-آ*' )6o¥^NzO|IB5̞T=;[\c:&Y|z&6i{bcˊ$ (eDNku +kfUfcK% M_;NoY6@ĪN,5u&\w],tGD[\ A,+Ye"+dc@"u*"wO]mLjKκ i3wMd1rfSK5S5:=2Nq Gfs^>\f#S nF}K1[PC>/c8#ӟHu/_m|4^+Fzp]f8x)ص x7S#f ֋`~NIB ij#䤾L 6?nD# T<ĉ= N\e9 Ry M ҩifLG lz_LCtת_84 7 ;Td (N{n$o=l 岯#Vxc';vI+mN7)ۭCS,v: KIdgev98%Q@>= Qfr ups"-p?pCڃl3!LJ7|fS!Jwy `z<#=df ىIzT)[][<`DdG7ØrTa|պ 2A( QArK=kQmC\gP$O5IPs|1ic~=84PаC,CMɞf*qN ,?YM@y3;CWmCŐm0f672}B՚c$A7Skvk cxB̧ipfdds ̅Ӹ=t"Z@1ZlF To󉥘ZBr̕KSuV[cx m)^%:<;o)IޤQHiFb%ge >tɰtxvS;nJ>v;V(D8p9SgbWex{wK*2C%Kh~%uG<,bpf|ҼrJɖY* (,tkYྵqU)j!FN, ;-l ̖ 1[y-OM78Ti2l(T a@zD)N xʱ~dxAi_Ȅܡ(kv&v <ާ2Q?4Sj!2Ta)$XI6B:f7?Jm@+K dA&7{X#*a.}e KKُÓ"D1EO-=rXL{\W%M 6L熴ܙy3$?h` i0#cXa/-ٝ`庴BZӣ %3sL5rp$(s<}mͩPfSR< JyTA5<&EmAa.[ەOO-%&EB^Џ}q ܥTW?y]ywuXe{}436y(תw)8?Hv[ʤMpQsli<u  @eՉDŽPmJQTl4m`xdX?3 x\N?镊4@H$:/jp4]| c5fo! w˹J_~ @'\S>f-.IxqjN  =x:ZasH&~P@LJ#^pw@.jdaҴ<" )1-3b`dZbiS2H~4}:+FinI1MQ"r񏑇;h`t_ LSKl:*w#[BX$&r`aohyc% ^ MݪwX8]c1%TMyO<]#'eVU!e4hͨ(ӁC?MGfQyÍ8CO {d@<4%?"0b~sN"?Y47tlqaєԓ`_4(vc;`qh_3!Ѩ"Ü}`_VtkdVE!|nBkD­g6\7\%u5ZBk&D,!:LM4uGS`aZ3|%FH9:)~g;W7CdstW@.W8 TEbH J>C!ma=xi*/_MB8x~ ] -qUUY58ۇ'uXU}rSV,BׇNCx<~: 18YC*p `&XA'IuzD+tu9Ѽ0T@5cj1֓^e?<S7>1)䞢9Yhe ^\BgM t,v )1Oio@aa:.x>D$ _,&';(H4=?Xs Soq]W_W_W_=yJ\W_W_W_WO}{]W_W_W_ߓoNr[\W_W_W_WO{^W_W_W_ߓߞoWuW_W_W_緧-{^׽u{^׽u{^׽])FFortress/lib/center.started100664 3103 20 0 6346031763 14537 0ustar ylafonw3cFFortress/lib/machine.peak100664 3103 20 334 6346031763 14207 0ustar ylafonw3cnirvana aye kistren pinta7 yliade pinta12 pinta10 lemur cleo pinta3 pinta2 pinta14 grommit pinta5 medee pinta13 ganesa pinta11 pinta8 www45 bisonravi pinta6 scylla saram maki www43 mygale www4 drakkar1 drakkar2 drakkar7 FFortress/lib/machine.results100664 3103 20 1342 6346031763 15010 0ustar ylafonw3c pour en faire profiter tout le monde: P90 = 35000; P166 = 62000; Ppro = 72000. et DecStation 29000 et Alpha Station= 42000 > la suite... > ss20 11400 > ultra 140 14800 , ultra 166 18700, iris indigo2 62000 > p90 34000 ppro 71500 calcul commence vendredi soir (18h) -> lundi matin (9h00) (63h) ~ calcul / heure p90 547.61905 p166 948.12698 ppro200 1142.8571 ss20 180.95238 ultra140 234.92063 ultra166 296.8254 irix indigo2 984.12698 decstation 460.31746 alphastation 666.66666 base = ultra166 p90 1.85 p166 3.2 ppro200 3.85 ss20 0.61 ultra140 0.8 ultra166 1 irix indigo2 3.32 decstation 1.55 alphastation 2.25 FFortress/lib/machine.used100664 3103 20 321 6346031763 14223 0ustar ylafonw3cnirvana aye kistren mygale pinta7 yliade pinta12 pinta10 lemur cleo pinta3 pinta2 pinta14 grommit pinta5 medee pinta13 ganesa pinta11 pinta8 www45 bisonravi pinta6 scylla www4 saram maki arachne bettong www43 FFortress/lib/seed1.brn100644 3103 20 1436 6346031763 13467 0ustar ylafonw3c2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 7 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 4 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 2 2 1 1 1 20 7 6 0 FFortress/lib/seed2.brn100644 3103 20 1364 6346031764 13471 0ustar ylafonw3c2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 2 2 1 1 1 0 0 0 0 FFortress/lib/seed3.brn100644 3103 20 1706 6346031764 13472 0ustar ylafonw3c1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 7 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 4 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 1 1 2.5 1.5 1 20 7 6 0 FFortress/lib/seed4.brn100644 3103 20 1634 6346031764 13473 0ustar ylafonw3c1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 1 1 2.5 1.5 1 0 0 0 0 FFortress/lib/seed5.brn100644 3103 20 1706 6346031764 13474 0ustar ylafonw3c2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 7 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 4 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 2.5 2 1 0.5 1 20 7 6 0 FFortress/lib/seed6.brn100644 3103 20 1436 6346031764 13475 0ustar ylafonw3c0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 7 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 4 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 0 0 0 0 1 20 7 6 0 FFortress/lib/seed7.brn100664 3103 20 6512 6346031764 13500 0ustar ylafonw3c1.000000 1.000000 2.500000 1.500000 1.000000 0.000000 0.000000 0.000000 0.000000 1.024390 1.024390 2.463415 1.487805 1.000000 0.000000 0.000000 0.000000 0.000000 1.048780 1.048780 2.426829 1.475610 1.000000 0.000000 0.000000 0.000000 0.000000 1.073171 1.073171 2.390244 1.463415 1.000000 0.000000 0.000000 0.000000 0.000000 1.097561 1.097561 2.353658 1.451220 1.000000 0.000000 0.000000 0.000000 0.000000 1.121951 1.121951 2.317073 1.439024 1.000000 0.000000 0.000000 0.000000 0.000000 1.146341 1.146341 2.280488 1.426829 1.000000 0.000000 0.000000 0.000000 0.000000 1.170732 1.170732 2.243902 1.414634 1.000000 0.000000 0.000000 0.000000 0.000000 1.195122 1.195122 2.207317 1.402439 1.000000 0.000000 0.000000 0.000000 0.000000 1.219512 1.219512 2.170732 1.390244 1.000000 0.000000 0.000000 0.000000 0.000000 1.243902 1.243902 2.134146 1.378049 1.000000 0.000000 0.000000 0.000000 0.000000 1.268293 1.268293 2.097561 1.365854 1.000000 0.000000 0.000000 0.000000 0.000000 1.292683 1.292683 2.060976 1.353659 1.000000 0.000000 0.000000 0.000000 0.000000 1.317073 1.317073 2.024390 1.341463 1.000000 0.000000 0.000000 0.000000 0.000000 1.341463 1.341463 1.987805 1.329268 1.000000 0.000000 0.000000 0.000000 0.000000 1.365854 1.365854 1.951220 1.317073 1.000000 0.000000 0.000000 0.000000 0.000000 1.390244 1.390244 1.914634 1.304878 1.000000 0.000000 0.000000 0.000000 0.000000 1.414634 1.414634 1.878049 1.292683 1.000000 0.000000 0.000000 0.000000 0.000000 1.439024 1.439024 1.841463 1.280488 1.000000 0.000000 0.000000 0.000000 0.000000 1.463415 1.463415 1.804878 1.268293 1.000000 0.000000 0.000000 0.000000 0.000000 1.487805 1.487805 1.768293 1.256098 1.000000 0.000000 0.000000 0.000000 0.000000 1.512195 1.512195 1.731707 1.243902 1.000000 0.000000 0.000000 0.000000 0.000000 1.536585 1.536585 1.695122 1.231707 1.000000 0.000000 0.000000 0.000000 0.000000 1.560976 1.560976 1.658537 1.219512 1.000000 0.000000 0.000000 0.000000 0.000000 1.585366 1.585366 1.621951 1.207317 1.000000 0.000000 0.000000 0.000000 0.000000 1.609756 1.609756 1.585366 1.195122 1.000000 0.000000 0.000000 0.000000 0.000000 1.634146 1.634146 1.548780 1.182927 1.000000 0.000000 0.000000 0.000000 0.000000 1.658537 1.658537 1.512195 1.170732 1.000000 0.000000 0.000000 0.000000 0.000000 1.682927 1.682927 1.475610 1.158537 1.000000 0.000000 0.000000 0.000000 0.000000 1.707317 1.707317 1.439024 1.146341 1.000000 0.000000 0.000000 0.000000 0.000000 1.731707 1.731707 1.402439 1.134146 1.000000 0.000000 0.000000 0.000000 0.000000 1.756098 1.756098 1.365854 1.121951 1.000000 0.000000 0.000000 0.000000 0.000000 1.780488 1.780488 1.329268 1.109756 1.000000 0.000000 0.000000 0.000000 0.000000 1.804878 1.804878 1.292683 1.097561 1.000000 0.000000 0.000000 0.000000 0.000000 1.829268 1.829268 1.256098 1.085366 1.000000 0.000000 0.000000 0.000000 0.000000 1.853659 1.853659 1.219512 1.073171 1.000000 0.000000 0.000000 0.000000 0.000000 1.878049 1.878049 1.182927 1.060976 1.000000 0.000000 0.000000 0.000000 0.000000 1.902439 1.902439 1.146341 1.048780 1.000000 0.000000 0.000000 0.000000 0.000000 1.926829 1.926829 1.109756 1.036585 1.000000 0.000000 0.000000 0.000000 0.000000 1.951220 1.951220 1.073171 1.024390 1.000000 0.000000 0.000000 0.000000 0.000000 1.975610 1.975610 1.036585 1.012195 1.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 FFortress/lib/seed8.brn100664 3103 20 6537 6346031764 13510 0ustar ylafonw3c2.000000 2.000000 1.000000 1.000000 1.000000 20.000000 7.000000 6.000000 7.000000 2.000000 2.000000 1.000000 1.000000 1.000000 19.512196 6.829268 5.853659 6.829268 2.000000 2.000000 1.000000 1.000000 1.000000 19.024391 6.658536 5.707317 6.658536 2.000000 2.000000 1.000000 1.000000 1.000000 18.536585 6.487805 5.560976 6.487805 2.000000 2.000000 1.000000 1.000000 1.000000 18.048780 6.317073 5.414634 6.317073 2.000000 2.000000 1.000000 1.000000 1.000000 17.560976 6.146341 5.268293 6.146341 2.000000 2.000000 1.000000 1.000000 1.000000 17.073172 5.975610 5.121951 5.975610 2.000000 2.000000 1.000000 1.000000 1.000000 16.585365 5.804878 4.975610 5.804878 2.000000 2.000000 1.000000 1.000000 1.000000 16.097561 5.634146 4.829268 3.219512 2.000000 2.000000 1.000000 1.000000 1.000000 15.609756 5.463415 4.682927 3.121951 2.000000 2.000000 1.000000 1.000000 1.000000 15.121951 5.292683 4.536585 3.024390 2.000000 2.000000 1.000000 1.000000 1.000000 14.634147 5.121951 4.390244 2.926829 2.000000 2.000000 1.000000 1.000000 1.000000 14.146341 4.951220 4.243902 2.829268 2.000000 2.000000 1.000000 1.000000 1.000000 13.658537 4.780488 4.097561 2.731707 2.000000 2.000000 1.000000 1.000000 1.000000 13.170732 4.609756 3.951220 2.634146 2.000000 2.000000 1.000000 1.000000 1.000000 12.682927 4.439024 3.804878 2.536585 2.000000 2.000000 1.000000 1.000000 1.000000 12.195122 4.268293 3.658537 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 11.707317 4.097561 3.512195 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 11.219512 3.926829 3.365854 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 10.731708 3.756098 3.219512 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 10.243902 3.585366 3.073171 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 9.756098 3.414634 2.926829 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 9.268292 3.243902 2.780488 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 8.780488 3.073171 2.634146 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 8.292683 2.902439 2.487805 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 7.804878 2.731707 2.341463 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 7.317073 2.560976 2.195122 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 6.829268 2.390244 2.048780 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 6.341464 2.219512 1.902439 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 5.853659 2.048780 1.756098 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 5.365854 1.878049 1.609756 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 4.878049 1.707317 1.463415 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 4.390244 1.536585 1.317073 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 3.902439 1.365854 1.170732 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 3.414634 1.195122 1.024390 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 2.926829 1.024390 0.878049 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 2.439024 0.853659 0.731707 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 1.951220 0.682927 0.585366 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 1.463415 0.512195 0.439024 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 0.975610 0.341463 0.292683 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 0.487805 0.170732 0.146341 0.000000 2.000000 2.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 FFortress/Makefile100644 3103 20 1742 6274434574 12664 0ustar ylafonw3cVER=2.0.0 all: flib xf exp: flib fev flib: cd fortress; $(MAKE) xf: cd xfortress; $(MAKE) fev: cd evolve; $(MAKE) config: cd xfortress; xmkmf clean: cd fortress; $(MAKE) clean cd xfortress; $(MAKE) clean cd evolve; $(MAKE) clean xtar: clean cd .. ; tar zcf xfortress-$(VER).tgz FFortress/fortress FFortress/xfortress \ FFortress/README FFortress/evolve FFortress/lib FFortress/Makefile FFortress/include wtar: clean cd .. ; tar zcf webfortress-$(VER).tgz FFortress/fortress FFortress/webfortress \ FFortress/README FFortress/evolve FFortress/lib FFortress/Makefile FFortress/include sxtar: clean cd .. ; tar zcf xfortress-$(VER).tgz FFortress/fortress FFortress/xfortress \ FFortress/README FFortress/lib FFortress/Makefile FFortress/include swtar: clean cd .. ; tar zcf webfortress-$(VER).tgz FFortress/fortress FFortress/webfortress \ FFortress/README FFortress/lib FFortress/Makefile FFortress/include ftar: clean cd .. ; tar zcf fortress-$(VER).tgz FFortress FFortress/include/ 40755 3103 20 0 6233170056 12531 5ustar ylafonw3cFFortress/include/strategie.h100644 3103 20 465 6233170000 14740 0ustar ylafonw3c#ifndef _FORTRESS_STRATEGIE_H_ #define _FORTRESS_STRATEGIE_H_ #include "types.h" int AlphaBeta (board, board, int, int, int, pred, param); int EndAlphaBeta (board , board , int , int , int , pred); int FastEndAlphaBeta (board , board , int , int , int , pred); #endif /* _FORTRESS_STRATEGIE_H_ */ FFortress/include/tools.h100644 3103 20 1171 6233072415 14137 0ustar ylafonw3c#ifndef _FORTRESS_TOOLS_H_ #define _FORTRESS_TOOLS_H_ #include "types.h" #ifdef NOMEMCPY void Copy (void *, void *); #else #define Copy(x, y) memcpy(y, x, sizeof(board)) #endif /* NOMEMCPY */ void Calc (board , board); int Prise (board , board , int); void Score (board , board , int *, int *); int EndScore (board , board , int); int IsValidMove (board , int , int); int PlayBlack (board , board , int); int PlayWhite (board , board , int); void UnPlayBlack (board , board , int); void UnPlayWhite (board , board , int); void BubbleSort (int * , int *); #endif /* _FORTRESS_TOOLS_H_ */ FFortress/include/types.h100644 3103 20 1336 6233072415 14146 0ustar ylafonw3c#ifndef _FORTRESS_TYPES_H_ #define _FORTRESS_TYPES_H_ #ifndef TRUE #define TRUE 1 #endif /* TRUE */ #ifndef FALSE #define FALSE 0 #endif /* FALSE */ #define FLOAT_PARAM #ifdef FLOAT_PARAM #define PARAM_TYPE float #else #define PARAM_TYPE int #endif /* FLOAT_PARAM */ typedef short board[36]; typedef struct param_ { PARAM_TYPE my_score_rate; PARAM_TYPE opp_score_rate; PARAM_TYPE protect_pos_rate; PARAM_TYPE attack_pos_rate; PARAM_TYPE board_score_rate; PARAM_TYPE play_opp_flag; PARAM_TYPE defensive_rate; PARAM_TYPE offensive_rate; PARAM_TYPE position_rate; } param_cell; typedef param_cell param[42]; typedef int pred[16]; #define MINF -100000 #endif /* _FORTERSS_TYPES_H_ */ FFortress/include/brain.h100644 3103 20 367 6233072415 14060 0ustar ylafonw3c#ifndef _FORTRESS_BRAIN_H_ #define _FORTRESS_BRAIN_H_ #include "types.h" void CopyBrainCell(param_cell , param_cell *); void CopyBrain(param, param); void LoadBrain(char *, param); void SaveBrain(char *, param); #endif /* _FORTRESS_BRAIN_H_ */