I complete(S a, I n, PDA *q, I *marks) //well-formed or incomplete codeblock? all "{[(\"" closed { if(!*q)*q=newPDA(); PDA p=*q; P(!p,-1) C t; I r=formed_group('\0')+1;//row-length for(;p->i < n;p->i++) { I before_pn=p->n, before_sq=STATE_QUOTE(p), before_sc=STATE_COMMENT(p); //for 'marks'/parse() stuff t=a[p->i]; if(STATE_OK(p) && t){ //manage }])([{ (&&t b/c !t breaks strchr) if (strchr( left,t)){P(push(p,flop(t)),-1) P(p->n > 99,3) } //nest error if stack too tall (not entirely necessary...?) else if(strchr(right,t)){ if(peek(p)!=t) R 2; //unmatched error else pop(p);}} p->s = formed_dfa[r*p->s + formed_group(a[p->i])] - '0'; //state transition if(!marks)continue; //This marks stuff tacked on for the parse() function C bot=bottom(p); I m = bot==')'?MARK_PAREN: bot==']'?MARK_BRACKET: bot=='}'?MARK_BRACE: STATE_COMMENT(p)?MARK_IGNORE: STATE_QUOTE(p)?MARK_QUOTE: before_pn||before_sq?ABS(marks[p->i-1]):0; // ||before_sc? ? if((p->n && !before_pn)||(MARK_QUOTE==m && !before_sq)||(MARK_IGNORE==m && !before_sc)) m *= -1; //starts marks[p->i] = m; }
bool ImageBufAlgo::flop(ImageBuf &dst, const ImageBuf &src, ROI roi, int nthreads) { if (&dst == &src) { // Handle in-place operation ImageBuf tmp; tmp.swap (const_cast<ImageBuf&>(src)); return flop (dst, tmp, roi, nthreads); } pvt::LoggedTimer logtime("IBA::flop"); ROI src_roi = roi.defined() ? roi : src.roi(); ROI src_roi_full = src.roi_full(); int offset = src_roi.xbegin - src_roi_full.xbegin; int start = src_roi_full.xend - offset - src_roi.width(); ROI dst_roi (start, start+src_roi.width(), src_roi.ybegin, src_roi.yend, src_roi.zbegin, src_roi.zend, src_roi.chbegin, src_roi.chend); ASSERT (dst_roi.width() == src_roi.width() && dst_roi.height() == src_roi.height()); // Compute the destination ROI, it's the source ROI reflected across // the midline of the display window. if (! IBAprep (dst_roi, &dst, &src)) return false; bool ok; OIIO_DISPATCH_COMMON_TYPES2 (ok, "flop", flop_, dst.spec().format, src.spec().format, dst, src, dst_roi, nthreads); return ok; }
void fadd(_MIPD_ flash x,flash y,flash z) { /* Flash add - z=x+y */ int op[5]; #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif if (mr_mip->ERNUM) return; MR_IN(37) op[0]=0x6C; op[1]=op[2]=op[3]=1; op[4]=0; flop(_MIPP_ x,y,op,z); MR_OUT }
void fdiv(_MIPD_ flash x,flash y,flash z) { /* Flash divide - z=x/y */ int op[5]; #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif if (mr_mip->ERNUM) return; MR_IN(36) op[0]=0x48; op[1]=op[3]=1; op[2]=op[4]=0; flop(_MIPP_ x,y,op,z); MR_OUT }
void fmul(_MIPD_ flash x,flash y,flash z) { /* Flash multiplication - z=x*y */ int op[5]; #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif if (mr_mip->ERNUM) return; MR_IN(35) op[0]=0x0C; op[1]=op[3]=1; op[2]=op[4]=0; flop(_MIPP_ x,y,op,z); MR_OUT }
void fsinh(_MIPD_ flash x,flash y) { /* calculate y=sinh(x) */ int op[5]; #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif copy(x,y); if (mr_mip->ERNUM || size(y)==0) return; MR_IN(65) fexp(_MIPP_ y,y); op[0]=0xC6; op[2]=op[3]=op[4]=1; op[1]=(-1); flop(_MIPP_ y,y,op,y); MR_OUT }
void ftanh(_MIPD_ flash x,flash y) { /* calculates y=tanh(x) */ int op[5]; #ifndef MR_GENERIC_MT miracl *mr_mip=get_mip(); #endif copy(x,y); if (mr_mip->ERNUM || size(y)==0) return; MR_IN(63) fexp(_MIPP_ y,y); op[0]=0x33; op[1]=op[3]=op[4]=1; op[2]=(-1); flop(_MIPP_ y,y,op,y); MR_OUT }
void fatanh(_MIPD_ flash x,flash y) { /* calculate y=atanh(x) */ int op[5]; #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif copy(x,y); if (mr_mip->ERNUM || size(y)==0) return; MR_IN(64) fconv(_MIPP_ 1,1,mr_mip->w11); op[0]=0x66; op[1]=op[2]=op[3]=1; op[4]=(-1); flop(_MIPP_ mr_mip->w11,y,op,y); flog(_MIPP_ y,y); fpmul(_MIPP_ y,1,2,y); MR_OUT }
void fcosh(_MIPD_ flash x,flash y) { /* calculate y=cosh(x) */ int op[5]; #ifdef MR_OS_THREADS miracl *mr_mip=get_mip(); #endif copy(x,y); if (mr_mip->ERNUM || size(y)==0) { convert(_MIPP_ 1,y); return; } MR_IN(67) fexp(_MIPP_ y,y); op[0]=0xC6; op[1]=op[2]=op[3]=op[4]=1; flop(_MIPP_ y,y,op,y); MR_OUT }
void test_rank_poker_hands() { int i; initialize_dealer(8); deal_hands(); flop(); turn(); river(); dealer->pot = 3000; // /* Testing data */ // dealer->players[0].hand[0].value = JACK; // dealer->players[0].hand[0].suite = CLUBS; // dealer->players[0].hand[1].value = TEN; // dealer->players[0].hand[1].suite = CLUBS; // dealer->players[1].hand[0].value = TWO; // dealer->players[1].hand[0].suite = HEARTS; // dealer->players[1].hand[1].value = THREE; // dealer->players[1].hand[1].suite = CLUBS; // dealer->cards_on_table[0].value = KING; // dealer->cards_on_table[0].suite = CLUBS; // dealer->cards_on_table[1].value = QUEEN; // dealer->cards_on_table[1].suite = HEARTS; // dealer->cards_on_table[2].value = NINE; // dealer->cards_on_table[2].suite = DIAMONDS; // dealer->cards_on_table[3].value = EIGHT; // dealer->cards_on_table[3].suite = CLUBS; // dealer->cards_on_table[4].value = SEVEN; // dealer->cards_on_table[4].suite = CLUBS; // dealer->number_cards_on_table = 5; rank_poker_hands(); split_pot(); }
// YOLOYOLO int main() { printf("\n\n\n----- STARTING A NEW GAME -----"); init(); printf("\nInitialization complete."); srand(alt_timestamp()); // TODO change in de2 env int i; int new_player_count = 2; bool first_game = true; GameState state = SETUP; for (;;) { switch (state) { case SETUP: printf("\n\n----- ENTERING SETUP STATE -----\n\n"); initialize_dealer(new_player_count); printf("Initialized dealer."); joining_period(); /* Move dealer chip to the next player */ if (dealer_chip == dealer->number_players-1) dealer_chip = 0; else dealer_chip++; state = DEAL_HANDS; break; case DEAL_HANDS: printf("\n\n ----- ENTERING DEAL_HANDS STATE -----\n\n"); deal_hands(); send_player_hands(); for (i=0; i<dealer->number_players; i++) { printf("\n\nDealt cards for Player %d: Suite %d, Value %d & Suite %d, Value %d", i, dealer->players[i].hand[0].suite, dealer->players[i].hand[0].value, dealer->players[i].hand[1].suite, dealer->players[i].hand[1].value); } state = ANTY_CALL; break; case FLOP: flop(); printf("\n\n----------------------------------------"); printf("\nFLOP (%s) (%s) (%s) \n", card_name(dealer->cards_on_table[0]), card_name(dealer->cards_on_table[1]), card_name(dealer->cards_on_table[2])); state = BET; break; case TURN: turn(); printf("\n\n----------------------------------------"); printf("\nTURN (%s) (%s) (%s) (%s) \n", card_name(dealer->cards_on_table[0]), card_name(dealer->cards_on_table[1]), card_name(dealer->cards_on_table[2]), card_name(dealer->cards_on_table[3])); state = BET; break; case RIVER: river(); printf("\n\n----------------------------------------"); printf("\nRIVER (%s) (%s) (%s) (%s) (%s) \n", card_name(dealer->cards_on_table[0]), card_name(dealer->cards_on_table[1]), card_name(dealer->cards_on_table[2]), card_name(dealer->cards_on_table[3]), card_name(dealer->cards_on_table[4])); state = BET; break; case ANTY_CALL: printf("\nCalling anty from all players"); get_bet_for_player(dealer_chip); if (dealer_chip == dealer->number_players-1) { for (i=0; i<dealer->number_players-1; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } else { for (i=dealer_chip+1; i<dealer->number_players; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } for (i=0; i<dealer_chip; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } /* Put bet money into the pot */ for (i=0; i<dealer->number_players; i++) { dealer->pot += dealer->players[i].money; dealer->players[i].money = 0; dealer->current_bet = 0; } printf("\n----------------------------------------\n"); printf("\nPOT %d", dealer->pot); printf("\n----------------------------------------\n"); state = BET; break; case BET: for (i=0; i<dealer->number_players; i++) { if (dealer->players[i].active && dealer->players[i].total_money > 0) sprintf(dealer->players[i].message, " "); } /* Betting Round 1 */ get_bet_for_player(dealer_chip); if (dealer_chip == dealer->number_players-1) { for (i=0; i<dealer->number_players-1; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } else { for (i=dealer_chip+1; i<dealer->number_players; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } for (i=0; i<dealer_chip; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } /* If still betting, continue that */ while (still_betting()) { for (i=dealer_chip; i<dealer->number_players; i++) { if (player_still_playing(i)) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } for (i=0; i<dealer_chip; i++) { if (player_still_playing(i)) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } switch (dealer->number_cards_on_table) { case 0: state = FLOP; break; case 3: state = TURN; break; case 4: state = RIVER; break; case 5: state = GAME_OVER; break; } HOTSTUFF:; /* Put bet money into the pot */ for (i=0; i<dealer->number_players; i++) { dealer->pot += dealer->players[i].money; dealer->players[i].money = 0; dealer->current_bet = 0; } printf("\n----------------------------------------\n"); printf("\nPOT %d", dealer->pot); printf("\n----------------------------------------\n"); break; case GAME_OVER: if (dealer->number_active_players > 1) { rank_poker_hands(); split_pot(); } else { last_man_standing(); } send_game_results(); printf("\n\nWaiting for response from all players.\n"); receive_replay_status(); state = SETUP; free(dealer->deck); free(dealer->players); free(dealer); free(ph); break; } game_screen(); } return 0; }
/* Main */ int main() { srand(time(NULL)); int i; // TODO change in de2 env GameState state = SETUP; //test_rank_poker_hands(); return 0; for (;;) { switch (state) { case SETUP: initialize_dealer(2); /* Move dealer chip to the next player */ if (dealer_chip == dealer->number_players-1) dealer_chip = 0; else dealer_chip++; state = DEAL_HANDS; break; case DEAL_HANDS: deal_hands(); for (i=0; i<dealer->number_players; i++) { printf("\n\nDealt cards for Player %d: %s and %s", i, card_name(dealer->players[i].hand[0]), card_name(dealer->players[i].hand[1])); } state = BET; break; case FLOP: flop(); printf("\n\n----------------------------------------"); printf("\nFLOP %s, %s and %s", card_name(dealer->cards_on_table[0]), card_name(dealer->cards_on_table[1]), card_name(dealer->cards_on_table[2])); state = BET; break; case TURN: turn(); printf("\n\n----------------------------------------"); printf("\nTURN %s", card_name(dealer->cards_on_table[3])); state = BET; break; case RIVER: river(); printf("\n\n----------------------------------------"); printf("\nRIVER %s", card_name(dealer->cards_on_table[4])); state = BET; break; case BET: /* Betting Round 1 */ get_bet_for_player(dealer_chip); if (dealer_chip == dealer->number_players-1) { for (i=0; i<dealer->number_players-1; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } else { for (i=dealer_chip+1; i<dealer->number_players; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } for (i=0; i<dealer_chip; i++) { if (dealer->players[i].active) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } /* If still betting, continue that */ while (still_betting()) { for (i=dealer_chip; i<dealer->number_players; i++) { if (player_still_playing(i)) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } for (i=0; i<dealer_chip; i++) { if (player_still_playing(i)) { get_bet_for_player(i); if (dealer->number_active_players == 1) {state = GAME_OVER; goto HOTSTUFF;} } } } switch (dealer->number_cards_on_table) { case 0: state = FLOP; break; case 3: state = TURN; break; case 4: state = RIVER; break; case 5: state = GAME_OVER; break; } HOTSTUFF:; /* Put bet money into the pot */ for (i=0; i<dealer->number_players; i++) { dealer->pot += dealer->players[i].money; dealer->players[i].money = 0; dealer->current_bet = 0; } printf("\n----------------------------------------\n"); printf("\nPOT %d", dealer->pot); printf("\n----------------------------------------\n"); break; case GAME_OVER: if (dealer->number_active_players > 1) { rank_poker_hands(); split_pot(); } else { last_man_standing(); } free(dealer->deck); free(dealer->players); free(dealer); free(ph); printf("\n\nContinue play? (0 - No, 1 - Yes) "); int m; scanf("%d", &m); if (m==0) return 0; else state = SETUP; break; } } }