/** * Shuffle a list */ listP baralhar(listP baralho) { int cartArr[(num*2)-2],i; shuff(cartArr); limpa (cartArr,dbar); for(i=0;i<=(num*2)-3;i++) { baralho = poe(baralho,cartArr[i]); }; return(baralho); }
double crossValidation(const std::vector<Example>& examples, const std::vector<unsigned>& topology, unsigned bins) { std::vector<Example> shuff(examples); std::random_shuffle(shuff.begin(), shuff.end()); std::vector<Examples> sets; partition(sets, shuff, bins); double error = 0.0; for(unsigned i = 0; i < bins; i++) { error += checkBin(i, sets, topology, examples.size()); } return error / bins; }
int play(void) { int i; int psum=0; int bsum=0; int pcards[5]={0}; int bcards[5]={0}; int cards[52]; char go_on; char d; printf("Welcome to SimpleBlackJack!\n" "Anytime you can press Ctrl+C to exit.\n" "Enjoy! Press Enter to go on......\n"); do{ go_on = getchar(); } while (go_on != '\n'); printf("\n"); //shuff the cards shuff(cards); //give the cards pcards[0]=cards[0]; pcards[1]=cards[1]; bcards[0]=cards[2]; bcards[1]=cards[3]; //the 2 cards player get printf("One of computer's cards:\n"); pic(bcards[0]); printf("\n"); printf("Cards of player:\n"); pic(pcards[0]); //printf("\n"); pic(pcards[1]); //printf("\n"); i=0; for (i=0; i<2; i++) { if (pcards[i]%100 == 1) { printf("choose A value of the card %d, input 'y' for 11 or 'n' for 1 :\n", i+1); do{ d = getchar(); } while (d!='y' && d!='n'); if (d == 'y') { printf("You've chosen value 11 for card A.\n"); psum = psum + 11; } else if(d == 'n') { printf("You've chosen value 1 for card A.\n"); psum = psum +1; } } else if (convert_jkq(pcards[i]) %100 ==10) psum = psum + 10; else psum = psum + pcards[i]%100; if (psum > 21) { printf("Sum of player's cards now:%d\n\n",psum); printf("Computer win!\n"); return 1; } else if (psum == 21) { printf("Sum of player's cards now:%d\n\n",psum); printf("Player win!\n"); return 0; } } printf("Sum of player's cards now:%d\n\n",psum); //whether player get another cards i=0; for (i=0; i<3; i++) { char j = 'n'; printf("Want more cards? Input y or n:\n"); do{ j = getchar(); } while (j!='y' &&j!='n'); if (j=='y') { printf("You've got another card now.\n"); pcards[i+2]=cards[i+4]; printf("and your card %d is:\n", i+3); pic(pcards[i+2]); if (pcards[i+2]%100 == 1) { printf("Choose A value of the card %d, input 'y' for 11 or 'n' for 1:\n", i+3); do{ d = getchar(); } while (d!='y' && d!='n'); if (d == 'y') { printf("You've chosen value 11 for card A.\n"); psum = psum + 11; } else if(d == 'n') { printf("You've chosen value 1 for card A.\n"); psum = psum +1; } } else if (convert_jkq(pcards[i+2]) %100 ==10) psum = psum + 10; else psum = psum + pcards[i+2]%100; if (psum > 21) { printf("Sum of player's cards now:%d\n\n",psum); printf("Computer win!\n"); return 1; } else if (psum == 21) { printf("Sum of player's cards now:%d\n\n",psum); printf("Player win!\n"); return 0; } else printf("Sum of player's cards now:%d\n\n",psum); } else { printf("Sum of player's cards now:%d\n\n",psum); break; } } if (i == 3) { printf("Player win! Because the sum of your 5 cards is no larger than 21! So lucky!\n"); return 0; } //the 2 cards of boss/computer //i=0; printf("Computer's cards:\n"); pic(bcards[0]); pic(bcards[1]); if (bcards[0]%100 + bcards[1]%100 == 2) { bsum=12; //two A cards printf("Sum of computer's cards now:%d\n\n", bsum); } else if ((convert_jkq(bcards[0]))%100 + (convert_jkq(bcards[1]))%100 ==1) { bsum=21; printf("Sum of computer's cards now:%d\n\n", bsum); printf("Computer win!\n"); return 1; } else if (bcards[0]%100==1 || bcards[1]%100==1) { bsum=(bcards[0]+bcards[1])%100+(rand()%2)*10; printf("Sum of computer's cards now:%d\n\n", bsum); } else { bsum = (convert_jkq(bcards[0]))%100 + (convert_jkq(bcards[1]))%100; printf("Sum of computer's cards now:%d\n\n", bsum); } //whether computer get another cards until bsum>16 //i=0; for (i=0; i<3 && bsum<17; i++) { bcards[i+2]=cards[i+7]; printf("Computer's card %d is:\n", i+3); pic(bcards[i+2]); if (bcards[i+2]%100 == 1) { if (bsum+11 <= 21) { printf("Computer has chosen A as 11\n"); bsum = bsum+11; printf("Sum of computer's cards now:%d\n\n", bsum); } else { printf("Computer has chosen A as 1\n"); bsum = bsum+1; printf("Sum of computer's cards now:%d\n\n", bsum); } } else { bsum = bsum + convert_jkq(bcards[i+2])%100; printf("Sum of computer's cards now:%d\n\n", bsum); } } if (i == 3) { printf("Computer win! Because the sum of its 5 cards is no larger than 21! So lucky!\n"); return 1; } //the last step if (bsum>21 || psum>bsum) { printf("Player win!\n"); return 0; } else if (psum == bsum) { printf("Oh, player and computer get the same score!\n"); return 3; } else if (psum < bsum) { printf("Computer win!\n"); return 1; } return 3; }
/** * Main function. Initializes and starts the game */ int spitm() {listP mao1,mao2,pl11,pl12,pl13,pl14,pl21,pl22,pl23,pl24; int stock1[stk],stock2[stk],baralho[(num*2)-2],pc1[sz],pc2[sz],pc3[sz]; mao1=mao2=pl11=pl12=pl13=pl14=pl21=pl22=pl23=pl24=NULL; int vencedor=0,turno=1,o,d,i=0,n=0,x=(LINES/2),y=(COLS/2); initscr(); cbreak(); keypad(stdscr,TRUE); noecho(); start_color(); init_pair(1,COLOR_WHITE,COLOR_GREEN); init_pair(2,COLOR_RED,COLOR_GREEN); bkgd(COLOR_PAIR(1)); attron(COLOR_PAIR(2)); limpa(pc1,13); limpa(pc2,13); limpa(pc3,13); shuff(baralho); atoa(baralho,stock1,20); atoa(baralho,stock2,20); mao1=atod(baralho,mao1,5); mao2=atod(baralho,mao2,5); while(!i) { if(stock1[0] > stock2[0]) { turno=1;i++; };break; if(stock1[0] < stock2[0]) { turno=2; i++; };break; barStk(stock1,stk); barStk(stock2,stk); }; while(vencedor==0) { while(elemN(mao1)<5) mao1=atod(baralho,mao1,1); while(turno==1) { clear(); mostrac(mao1,pl11, pl12,pl13, pl14, mao2, pl21, pl22, pl23,pl24, pc1, pc2, pc3, stock1, stock2,turno); echo(); mvprintw(22,0,"Insira origem(1-10) e destino (1-7):__ __"); mvscanw(22,36," %d %d",&o,&d); if(o>0 && o<6) { if(d==1) { if (showi(mao1,elemN(mao1)-o) == topAr(pc1)+1) { dtoa(mao1,elemN(mao1)-o,pc1); }; }; if(d==2) { if (showi(mao1,elemN(mao1)-o) == topAr(pc2)+1) { dtoa(mao1,elemN(mao1)-o,pc2); }; }; if(d==3) { if (showi(mao1,elemN(mao1)-o) == topAr(pc3)+1) { dtoa(mao1,elemN(mao1)-o,pc3); }; }; if(d==4) { pl11=poe(pl11,showi(mao1,elemN(mao1)-o)); if(elemN(mao1) == o) { mao1=rmUlt(mao1);turno=2; } else { rmI(mao1,elemN(mao1)-(o)); turno=2; }; }; if(d==5) { pl12=poe(pl12,showi(mao1,elemN(mao1)-o)); if(elemN(mao1) == o) { mao1=rmUlt(mao1); turno=2; } else { rmI(mao1,elemN(mao1)-(o)); turno=2; }; }; if(d==6) { pl13=poe(pl13,showi(mao1,elemN(mao1)-o)); if(elemN(mao1) == o) { mao1=rmUlt(mao1); turno=2; } else { rmI(mao1,elemN(mao1)-(o)); turno=2; }; }; if(d==7) { pl14=poe(pl14,showi(mao1,elemN(mao1)-o)); if(elemN(mao1) == o) { mao1=rmUlt(mao1); turno=2; } else { rmI(mao1,elemN(mao1)-(o)); turno=2; }; }; }; //end if(o>0 && o<6) if(o==10) { if(d==1){ if (topAr(stock1) == topAr(pc1)+1) { addAe(stock1,pc1); }; }; if(d==2) { if (topAr(stock1) == topAr(pc2)+1) { addAe(stock1,pc2); }; }; if(d==3) { if (topAr(stock1) == topAr(pc3)+1) { addAe(stock1,pc3); }; }; }; if(o>5 && o< 10) { if(o==6 && d==1 && (elemN(pl11)!=0)) { if (showi(pl11,elemN(pl11)-o) == topAr(pc1)+1) { dtoa(pl11,elemN(pl11)-1,pc1); }; }; if(o==7 && d==1 && (elemN(pl12)!=0)) { if (showi(pl12,elemN(pl12)-o) == topAr(pc1)+1) { dtoa(pl12,elemN(pl12)-1,pc1); }; }; if(o==8 && d==1 && (elemN(pl13)!=0)) { if (showi(pl13,elemN(pl13)-o) == topAr(pc1)+1) { dtoa(pl13,elemN(pl13)-1,pc1); }; }; if(o==9 && d==1 && (elemN(pl14)!=0)) { if (showi(pl14,elemN(pl14)-o) == topAr(pc1)+1) { dtoa(pl14,elemN(pl14)-1,pc1); }; }; if(o==6 && d==2 && (elemN(pl11)!=0)) { if (showi(pl11,elemN(pl11)-o) == topAr(pc2)+1) { dtoa(pl11,elemN(pl11)-1,pc2); }; }; if(o==7 && d==2 && (elemN(pl12)!=0)) { if (showi(pl12,elemN(pl12)-o) == topAr(pc2)+1) { dtoa(pl12,elemN(pl12)-1,pc2); }; }; if(o==8 && d==2 && (elemN(pl13)!=0)) { if (showi(pl13,elemN(pl13)-o) == topAr(pc2)+1) { dtoa(pl13,elemN(pl13)-1,pc2); }; }; if(o==9 && d==2 && (elemN(pl14)!=0)) { if (showi(pl14,elemN(pl14)-o) == topAr(pc2)+1) { dtoa(pl14,elemN(pl14)-1,pc2); }; }; if(o==6 && d==3 && (elemN(pl11)!=0)) { if (showi(pl11,elemN(pl11)-o) == topAr(pc3)+1) { dtoa(pl11,elemN(pl11)-1,pc3); }; }; if(o==7 && d==3 && (elemN(pl12)!=0)) { if (showi(pl12,elemN(pl12)-o) == topAr(pc3)+1) { dtoa(pl12,elemN(pl12)-1,pc3); }; }; if(o==8 && d==3 && (elemN(pl13)!=0)) { if (showi(pl13,elemN(pl13)-o) == topAr(pc3)+1) { dtoa(pl13,elemN(pl13)-1,pc3); }; }; if(o==9 && d==3 && (elemN(pl14)!=0)) { if (showi(pl14,elemN(pl14)-o) == topAr(pc3)+1) { dtoa(pl14,elemN(pl14)-1,pc3); }; }; };//end if(o>5 && o< 10) }; //end while(turno==1) n=0; while ((stock1[n]==0) && (n<stk)) { n++; }; // Winner is player 1 if (stock1[n] == 0) { vencedor=1; turno=1; } // Tie if(baralho[num*2-3]==0) { vencedor=3; }; // Clean central stack if(pc1[0]==13) { atoa(pc1,baralho,13); }; if(pc2[0]==13) { atoa(pc2,baralho,13); }; if(pc3[0]==13) { atoa(pc3,baralho,13); }; // fill hand 2 while(elemN(mao2)<5) { mao2=atod(baralho,mao2,1); }; while(turno==2) { clear(); mostrac(mao1,pl11, pl12,pl13, pl14, mao2, pl21, pl22, pl23,pl24, pc1, pc2, pc3, stock1, stock2,turno); echo(); mvprintw(22,0,"Insira origem(1-10) e destino (1-7):__ __"); mvscanw(22,36,"%d %d",&o,&d); if(o>0 && o<6) { if(d==1) { if (showi(mao2,elemN(mao2)-o) == topAr(pc1)+1) { dtoa(mao2,elemN(mao2)-o,pc1);}; }; if(d==2) { if (showi(mao2,elemN(mao2)-o) == topAr(pc2)+1) { dtoa(mao2,elemN(mao2)-o,pc2); }; }; if(d==3) { if (showi(mao2,elemN(mao2)-o) == topAr(pc3)+1) { dtoa(mao2,elemN(mao2)-o,pc3); }; }; if(d==4) { pl21=poe(pl21,showi(mao2,elemN(mao2)-o)); if(elemN(mao2) == o) { mao2=rmUlt(mao2);turno=1; } else { rmI(mao2,elemN(mao2)-(o)); turno=1; }; }; if(d==5) { pl22=poe(pl22,showi(mao2,elemN(mao2)-o)); if(elemN(mao2) == o) { mao2=rmUlt(mao2); turno=1; } else { rmI(mao2,elemN(mao2)-(o)); turno=1; }; }; if(d==6) { pl23=poe(pl23,showi(mao2,elemN(mao2)-o)); if(elemN(mao2) == o) { mao2=rmUlt(mao2); turno=1; } else { rmI(mao2,elemN(mao2)-(o)); turno=1; }; }; if(d==7) { pl24=poe(pl24,showi(mao2,elemN(mao2)-o)); if(elemN(mao2) == o) { mao2=rmUlt(mao2); turno=1; } else { rmI(mao2,elemN(mao2)-(o)); turno=1; } }; }; if(o==10) { if(d==1){ if (topAr(stock2) == topAr(pc1)+1) { addAe(stock2,pc1); }; }; if(d==2) { if (topAr(stock2) == topAr(pc2)+1) { addAe(stock2,pc2); }; }; if(d==3) { if (topAr(stock2) == topAr(pc3)+1) { addAe(stock2,pc3); }; }; }; if(o>5 && o< 10) { if(o==6 && d==1 && (elemN(pl21)!=0)) { if (showi(pl21,elemN(pl21)-o) == topAr(pc1)+1) { dtoa(pl21,elemN(pl21)-1,pc1); }; }; if(o==7 && d==1 && (elemN(pl22)!=0)) { if (showi(pl22,elemN(pl22)-o) == topAr(pc1)+1) { dtoa(pl22,elemN(pl22)-1,pc1); }; }; if(o==8 && d==1 && (elemN(pl23)!=0)) { if (showi(pl23,elemN(pl23)-o) == topAr(pc1)+1) { dtoa(pl23,elemN(pl23)-1,pc1); }; }; if(o==9 && d==1 && (elemN(pl24)!=0)) { if (showi(pl24,elemN(pl24)-o) == topAr(pc1)+1) { dtoa(pl24,elemN(pl24)-1,pc1); }; }; if(o==6 && d==2 && (elemN(pl21)!=0)) { if (showi(pl21,elemN(pl21)-o) == topAr(pc2)+1) { dtoa(pl21,elemN(pl21)-1,pc2); }; }; if(o==7 && d==2 && (elemN(pl22)!=0)) { if (showi(pl22,elemN(pl22)-o) == topAr(pc2)+1) { dtoa(pl22,elemN(pl22)-1,pc2); }; }; if(o==8 && d==2 && (elemN(pl23)!=0)) { if (showi(pl23,elemN(pl23)-o) == topAr(pc2)+1) { dtoa(pl23,elemN(pl23)-1,pc2); }; }; if(o==9 && d==2 && (elemN(pl24)!=0)) { if (showi(pl24,elemN(pl24)-o) == topAr(pc2)+1) { dtoa(pl24,elemN(pl24)-1,pc2); }; }; if(o==6 && d==3 && (elemN(pl21)!=0)) { if (showi(pl21,elemN(pl21)-o) == topAr(pc3)+1) { dtoa(pl21,elemN(pl21)-1,pc3); }; }; if(o==7 && d==3 && (elemN(pl22)!=0)) { if (showi(pl22,elemN(pl22)-o) == topAr(pc3)+1) { dtoa(pl22,elemN(pl22)-1,pc3); }; }; if(o==8 && d==3 && (elemN(pl23)!=0)) { if (showi(pl23,elemN(pl23)-o) == topAr(pc3)+1) { dtoa(pl23,elemN(pl23)-1,pc3); }; }; if(o==9 && d==3 && (elemN(pl24)!=0)) { if (showi(pl24,elemN(pl24)-o) == topAr(pc3)+1) { dtoa(pl24,elemN(pl24)-1,pc3); }; }; }; }; n=0; while ((stock2[n]==0) && (n<stk)) { n++; }; // Winner is player 2 if (stock2[n] == 0) { vencedor=1; turno=1; } // Tie if(baralho[num*2-3]==0) { vencedor=3; }; // Clean central stack if(pc1[0]==13) { atoa(pc1,baralho,13); }; if(pc2[0]==13) { atoa(pc2,baralho,13); }; if(pc3[0]==13) { atoa(pc3,baralho,13); }; }; if((vencedor==1)||(vencedor==2)) { clear(); mvprintw(x-1,y-10,"+------------------------------------+"); mvprintw(x,y-10,"|O jogador %d vence! |",vencedor); mvprintw(x+1,y-10,"+------------------------------------+"); getch(); } else { clear(); mvprintw(x-1,y-10,"+------------------------------------+"); mvprintw(x,y-10,"|Empate, não há vencedores. |"); mvprintw(x+1,y-10,"+------------------------------------+"); getch(); }; endwin(); bkgd(COLOR_PAIR(2)); return 0; }