Ejemplo n.º 1
0
Archivo: p.c Proyecto: indera/kona
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;
}
Ejemplo n.º 3
0
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
}
Ejemplo n.º 4
0
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
}
Ejemplo n.º 5
0
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
}
Ejemplo n.º 6
0
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
}
Ejemplo n.º 7
0
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
}
Ejemplo n.º 8
0
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
}
Ejemplo n.º 9
0
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
}
Ejemplo n.º 10
0
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();
}
Ejemplo n.º 11
0
// 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;
}
Ejemplo n.º 12
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;
    }
  }


}