void temp_ShowCounting(count) { char *card; card = (char*)malloc(sizeof(char)); *(card+1) = '\0'; if(count<10) *card = ('0'+count); else if(count == 11) *card = '+'; else if(count == 11) *card = 'J'; else if(count == 12) *card = 'Q'; else if(count == 13) *card = 'K'; putStringLarge(large_font, 10, 40, "NUM ", (*(counting_place+(count%2))).x,(*(poker_place+(count%2))).y); putStringLarge(large_font, 50, 40, card, (*(counting_place+(count%2))).x+20,(*(poker_place+(count%2))).y); drawCmdWindow(); free(card); }
int single_game(){ Audio RRR; openAudioFile(".\\wav\\RRR.wav", &RRR); initializeKeyInput(); Character yg = characterMaking1(".\\pic\\yg.pixel",".\\pic\\yg.color"); int key_val[NUM_KEYS]={VK_A,VK_D,VK_ESCAPE}; int stand=0,score=0,standBrick,pDown1,pDown2; double drop=0,scoreCount=0; Brick bricks[15]; int i,j,k; char scoreStr[4]={'0'}; for(i=0;i<10;i++){ bricks[i].y=-1; bricks[i].w=40; bricks[i].h=2; if(i%2==0)bricks[i].color=15; else if(i<=5)bricks[i].color=8; else if(i>5)bricks[i].color=12; else bricks[i].color=10; } bricks[0].x=0; bricks[0].y=100; Font *large_font=read_font("font.txt"); float lastbrick=0; int hp = 10,second=0; float rate=0.15; while(1){ clearScreen(); srand(clock()); for(i=0;i<10;i++){ if(bricks[i].y>0)bricks[i].y--; else if(bricks[i].y==0)bricks[i].y=-100; for(k=0;k<2;k++){ for(j=0;j<bricks[k].w;j++){ putString(bricks[i].x+j,bricks[i].y+k,"=",bricks[i].color,0); } } } if(score>50){ rate = 0.2; } else if(score>75){ rate = 0.25; } else if(score>100){ rate = 0.3; } if((float)clock()/(float)CLOCKS_PER_SEC-(float)lastbrick>rate&&rand()%10==1){ for(i=0;i<10;i++){ if(bricks[i].y<0){ bricks[i].y=170; bricks[i].x=rand()%185; lastbrick=(float)clock()/(float)CLOCKS_PER_SEC; for(k=0;k<2;k++){ for(j=0;j<bricks[i].w;j++){ putString(bricks[i].x+j,bricks[i].y+k,"=",bricks[i].color,0); } } break; } } } for(k=0;k<10;k++){ if(abs(yg.y+yg.h-bricks[k].y)<=2&&( (yg.x+yg.w>bricks[k].x&&yg.x+yg.w<bricks[k].x+bricks[k].w)|| (yg.x>bricks[k].x&&yg.x<bricks[k].x+bricks[k].w))){ stand=1; standBrick=k; yg.y=bricks[k].y-yg.h; break; } else if(k==9){ stand=0; standBrick=-1; } } if(stand==1){ drop=0; second++; if(bricks[standBrick].color==15&&second==15){ second=0; if(hp<10)hp++; } else if(bricks[standBrick].color==12){ second++; if(second==20){ second=0; hp--; playAudio(&RRR); } } else if(bricks[standBrick].color==8){ if(second==10){ second=0; bricks[standBrick].y=-100; } } } else{ if(drop<2)drop+=0.5; yg.y+=(int)drop; second=0; } if(yg.y<0){ yg.y+=10; drop=3; hp-=4; playAudio(&RRR); } for (k = 0 ; k < NUM_KEYS ; k++){ if(KEY_DOWN(key_val[k])){ switch (key_val[k]){ case VK_A: if(yg.x>=0)yg.x-=5; break; case VK_D: if(yg.x+yg.w<225)yg.x+=5; break; case VK_ESCAPE: return 3; break; } } } show_image(yg.pic,yg.x,yg.y); for(i=0;i<225;i++){ for(j=151;j<=170;j++){ putString(i,j," ",0,0); } } putStringLarge(large_font,159,158,"HP ",15); putStringLarge(large_font,159,152,"STAGE ",15); scoreCount++; score = (pow(scoreCount/300,1.5)); scoreStr[0]=score/100+'0'; scoreStr[1]=score/10%10+'0'; scoreStr[2]=score%10+'0'; putStringLarge(large_font,201,152,scoreStr,15); for(i=0;i<hp;i++){ for(j=1;j<5;j++){ for(k=0;k<=4;k++)putString(180+i*4+j,158+k,"|",12,0); } } for(i=0;i<225;i++)putString(i,0,"V",12,0); for(i=0;i<225;i++){ putString(i,149,"=",12,0); } for(i=0;i<150;i++){ putString(0,i,"|",0,12); putString(224,i,"|",0,12); } drawCmdWindow(); if(yg.y>150||hp<=0){ break; }; if(KEY_UP(VK_P)&&pDown1)pDown1=0; if(KEY_UP(VK_P)&&pDown2)pDown2=0; if(KEY_DOWN(VK_P)&&!pDown1){ pDown1=1; putStringLarge(large_font,45,70,"Press P to continue",12); drawCmdWindow(); Sleep(500); while(1){ if(KEY_DOWN(VK_P)&&!pDown2){ pDown2=1; break; } } } Sleep(20); } pauseAudio(&RRR); Image * jh =read_image(".\\pic\\jh.pixel",".\\pic\\jh.color"); show_image(jh,15,30); putStringLarge(large_font,75,80,"SCORE ",15); putStringLarge(large_font,120,80,scoreStr,15); drawCmdWindow(); Audio *barbar; openAudioFile(".\\wav\\88wav.wav",&barbar); playAudio(&barbar); Sleep(3500); int flagg = 1; putStringLarge(large_font, 45, 90, "Press esc to exit", 15); drawCmdWindow(); while(flagg){ if(KEY_DOWN(VK_ESCAPE))return 3; } clearScreen(); }
void MuitiplePlayers(void) { Font *large_font = read_font("font.txt"); /* 啟動鍵盤控制 */ initializeKeyInput(); char ch,prech='0'; char *card; card = (char*)malloc(sizeof(char)); *(card+1) = '\0'; int isWin=0,isLose=0; int count = 0, pick; int initime =clock(), time; int turn=2; // 1:Right 2:Left while(isWin<3 && isLose<3) { clearScreen(); time = clock() - initime; ch = getKeyEventVirtual(); switch(ch) { case VK_LEFT: //右方拍桌 if(( count==pick && time<10 )|| count==14) { //win(10); putStringLarge(large_font, 200, 20, "YOU WIN!!", 15, 15); drawCmdWindow(); Sleep(200); turn = 2; time = 0; isLose++; } else if(count==pick) {//show_image(*(poker+1),0,0); //drawCmdWindow(); //AIwin(); putStringLarge(large_font, 200, 20, "YOU LOSE! How slow you are!", 15, 15); drawCmdWindow(); Sleep(200); turn = 1; time = 0; isWin++; } else { //lose(10); putStringLarge(large_font, 200, 20, "YOU LOSE! Watch out the number!", 15, 15); drawCmdWindow(); Sleep(200); turn = 1; time = 0; isWin++; } break; break; case 0x58: //左方拍桌 if(( count==pick && time<10 )|| count==14) { //win(10); putStringLarge(large_font, 10, 20, "YOU WIN!!", 15, 15); drawCmdWindow(); Sleep(200); turn = 1; time = 0; isWin++; } else if(count==pick) { //AIwin(); putStringLarge(large_font, 10, 20, "YOU LOSE! How slow you are!", 15, 15); drawCmdWindow(); Sleep(200); turn = 2; time = 0; isLose++; } else { //lose(10); putStringLarge(large_font, 10, 20, "YOU LOSE! Watch out the number!", 15, 15); drawCmdWindow();//show_image(*(poker+1),0,0); //drawCmdWindow(); Sleep(200); turn = 2; time = 0; isLose++; } break; case 0x5A: //左方發牌 if(count==pick|| count==14) { putStringLarge(large_font, 10, 20, "YOU LOSE! Watch out the number!", 15, 15); drawCmdWindow(); Sleep(200); turn = 2; time = 0; isLose++; } else if(turn == 2) { count = count%13 +1; if(count<11) *card = ('0'+count); else if(count == 11) *card = 'J'; else if(count == 12) *card = 'Q'; else if(count == 13) *card = 'K'; putStringLarge(large_font, 100, 40, "NUM ", 0, 15); putStringLarge(large_font, 150, 40, card, 0, 15); pick = (rand()%13)+1; if(pick<11) *card = ('0'+pick); else if(pick == 11) *card = 'J'; else if(pick == 12) *card = 'Q'; else if(pick == 13) *card = 'K'; else if(pick == 14) *card = 'P'; putStringLarge(large_font, 100, 50, "CARD ", 0, 15); putStringLarge(large_font, 150, 50, card, 0, 15); time = 0; turn = 1; int ran = (rand()%4)+1; //show_image(poker[0][0],100,20); drawCmdWindow(); }//show_image(*(poker+1),0,0); //drawCmdWindow(); break; case VK_DOWN: //右方發牌 if(count==pick|| count==14) { putStringLarge(large_font, 200, 20, "YOU LOSE! Watch out the number!", 15, 15); drawCmdWindow(); Sleep(200); turn = 1; time = 0; isWin++; } else if(turn == 1) { count = count%13 +1; if(count<11) *card = ('0'+count); else if(count == 11) *card = 'J'; else if(count == 12) *card = 'Q'; else if(count == 13) *card = 'K'; putStringLarge(large_font, 100, 40, "NUM ", 0, 15); putStringLarge(large_font, 150, 40, card, 0, 15); pick = (rand()%13)+1; if(pick<11) *card = ('0'+pick); else if(pick == 11) *card = 'J'; else if(pick == 12) *card = 'Q'; else if(pick == 13) *card = 'K'; else if(pick == 14) *card = 'P'; putStringLarge(large_font, 100, 50, "CARD ", 0, 15); putStringLarge(large_font, 150, 50, card, 0, 15); time = 0; turn = 2; int ran = (rand()%4)+1; //show_image(poker[0][0],100,20); drawCmdWindow(); } break;//show_image(*(poker+1),0,0); //drawCmdWindow(); case VK_ESCAPE: break; } } if(winTimes==3) { Loser2(50,35);//send location Winner2(300,35);//send location showingPlane =1; } else if(loseTimes==3) { Loser2(300,35);//send location Winner2(50,35);//send location showingPlane =1; } }
void Menu(void) { /* 啟動鍵盤控制 */ initializeKeyInput(); //show_image(poker[0][3],150,100); char ch; int place = 0; int color1[3]; int color2[3]; //initialize bottoms int i; for( i=0; i<3; i++) { if(i==n) { color1[i] = 12; color2[i] = 12; } else { color1[i] = 2; color2[i] = 2; } } putStringLarge(large_font, 100, 20, "MENU", 15, 15); putStringLarge(large_font, 50, 30+10*1, "Single Player Mode", color1[0], color2[0]); putStringLarge(large_font, 50, 30+10*2, "Two Players Mode", color1[1], color2[1]); putStringLarge(large_font, 50, 30+10*3, "Help", color1[2], color2[2]); putStringLarge(large_font, 180, 100, "CTRL TO SETECT", 7, 7); ch = getKeyEventVirtual(); switch(ch) { case VK_UP: n = (n+2)%3; break; case VK_DOWN: n = (n+1)%3; break; case VK_CONTROL: switch(n) { case 0: showingPlane = 2; break; case 1: showingPlane = 3; break; case 2: showingPlane = 4; break; default: break; } } }