akioi c++ 代码

akioi c++ 代码代码 akioic 代码

大家好,欢迎来到IT知识分享网。

#include<iostream> #include<cstdio> #include<cstdlib> #include<conio.h> #include<ctime> #include<cmath> #include<windows.h> bool ak; using namespace std; int score=0,best=0; int premove[5][5]; void SCAB(int ForgC, int BackC){ 
    WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor); } char instruction[36][35]={ 
    "EDITION 1.03", "get AK to win!", " ", "Use arrow keys or", "WASD to move block", "Use R to restart game", "Use Q to quit game", " ", "BLOCKS", "CE=2 compile error", "@=4 judging", "RE=8 runtime error", "TLE=16 time limit exceeded", "MLE=32 memory limit exceeded", "ILE=64 idleness limit exceeded", "OLE=128 output limit exceeded", "UKE=256 unknown error", "WA=512 wrong answer", "PC=1024 partly correct", "AC=2048 accepted", "PE=4096 presentation error", "DOJ=8192 denial of judging", "SJE=16384 special judge error", "AU=32768", "AK=65536 (win)", "#=*1 pragma...", "O2=*2", "O3=*4", " ", "made by jiangpeiyuan", "original 2048:", "https://2048game.com/", "original AK-IOI:", "https://ak-ioi.com/apps/oi-2048/", " ", "Hope You Like It!" }; char endskin[14][61]={ 
    "+----------------------------------------------------------+", "| A FFFFF OOO ! |", "| # # A A F O O ! # # |", "| A A FFFFF O O ! |", "| /---\\ AAAAA F O O /---\\ |", "| / \\ A A F OOO ! / \\ |", "+----------------------------------------------------------+", "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+", "|.........................A....K..KK.......................|", "+...#...#................A.A...K.K.................#...#...+", "|................-----..A...A..KK.....-----................|", "+..\\...../..............AAAAA..K.K................\\...../..+", "|...\\---/...............A...A..K..KK...............\\---/...|", "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+" }; int color_type[20]={ 
   0,6,1,5,13,13,13,13,0,4,3,2,12,10,8,14,9,15,14,9}; char scorenum[9][41]={ 
    "----------------------------------------", " ", " # # # ", "# # # # # # # # # # # # # ", "# # # # # # ", "# # # # # # # # # # # # # ", " # # # ", " ", "----------------------------------------" }; char intro[9][30]={ 
    "@.@.@.@.@.@.@.@.@.@.@.@.@.@.@", ". .", "@ # ] ]] III OOO III @", ". # # ] ] I O O I .", "@ # # ]] @ I O O I @", ". ] ] I O O I .", "@ # # ] ]] III OOO III @", ". .", "@.@.@.@.@.@.@.@.@.@.@.@.@.@.@" }; char endd[5][14]={ 
    " BBBB JJJ ", " B B J ", " BBBB J ", " B B J J ", " BBBB JJ " }; char better[36][16]={ 
    "~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~", "~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~~~~~#~#~~~~~~","~~~~~~~~~~","~~~~~~#~#~~~~~~","~~~~~~~~~~","~~~~~~#~#~~~~~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~", "~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~&&&&&~&&&&&~~","~~&~~~&~~~~~&~~","~~&~~~&~&&&&&~~","~~&~~~&~&~~~~~~","~~&&&&&~&&&&&~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~", "~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~","~~@#@#@~@#@#@~~","~~#~~~#~~~~~#~~","~~@~~~@~@#@#@~~","~~#~~~#~~~~~#~~","~~@#@#@~@#@#@~~","~~~~~~~~~~~~~~~","~~~~~~~~~~~~~~~" }; char tiles[160][16]={ 
    " "," "," "," "," "," "," "," "," ", "@@@@@@@@@@@@@@@","@ @","@ |||| ||||| @","@ | | @","@ | ||||| @","@ | | @","@ |||| ||||| @","@ @","@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@","@ * @","@ $$$$$ @","@ $ * @","@ @","@ * $ @","@ $$$$$ @","@ * @","@@@@@@@@@@@@@@@", "&&&&&&&&&&&&&&&","& &","& !!!! !!!!! &","& ! ! ! &","& !!!! !!!!! &","& ! ! ! &","& ! !! !!!!! &","& &","&&&&&&&&&&&&&&&", "&&&&&&&&&&&&&&&","& &","& # &","& # # # &","& # # &","& # # # &","& # &","& &","&&&&&&&&&&&&&&&", "#","#.............#","#.%.%.%...%%%.#","#.%%%.%...%...#","#.%%%.%...%%%.#","#.%.%.%...%...#","#.%.%.%%%.%%%.#","#.............#","#", "#","#.............#","#.@@@.@...@@@.#","#..@..@...@...#","#..@..@...@@@.#","#..@..@...@...#","#.@@@.@@@.@@@.#","#.............#","#", "]]]]]]]]]]]]]]]","].............]","].OOO.O...OOO.]","].O.O.O...O...]","].O.O.O...OOO.]","].O.O.O...O...]","].OOO.OOO.OOO.]","].............]","]]]]]]]]]]]]]]]", "]]]]]]]]]]]]]]]","].............]","].$.$.$.$.$$$.]","].$.$.$.$.$...]","].$.$.$$..$$$.]","].$.$.$.$.$...]","].$$$.$.$.$$$.]","].............]","]]]]]]]]]]]]]]]", "XXXXXXXXXXXXXXX","X-------------X","X-W-W-W---W---X","X-W-W-W--W-W--X","X-W-W-W-W---W-X","X-W-W-W-WWWWW-X","X--W-W--W---W-X","X-------------X","XXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXX","X-------------X","X-@@@@---@@@@-X","X-@---@-@-----X","X-@@@@--@-----X","X-@-----@-----X","X-@------@@@@-X","X-------------X","XXXXXXXXXXXXXXX", "$$$$$$$$$$$$$$$","$-------------$","$---%----%%%%-$","$--%-%--%-----$","$-%---%-%-----$","$-%%%%%-%-----$","$-%---%--%%%%-$","$-------------$","$$$$$$$$$$$$$$$", "$$$$$$$$$$$$$$$","$-------------$","$-PPPP--PPPPP-$","$-P---P-P-----$","$-PPPP--PPPPP-$","$-P-----P-----$","$-P-----PPPPP-$","$-------------$","$$$$$$$$$$$$$$$", "///","/&&&&&&&&&&&&&/","/&..&&...&&&.&/","/&.&.&.&.&&&.&/","/&.&.&.&.&&&.&/","/&.&.&.&.&.&.&/","/&..&&...&&.&&/","/&&&&&&&&&&&&&/","///", "///","/&&&&&&&&&&&&&/","/&& &&& & &/","/& &&&&& & &&&/","/&& &&&& & &/","/&&& & & & &&&/","/& &&& && &/","/&&&&&&&&&&&&&/","///", "|-|-|-|-|-|-|-|","-@@@@@@@@@@@@@-","|@@@`@@@`@@@`@|","-@@`@`@@.@@@.@-","|@`@@@`@`@@@`@|","-@.`.`.@.@@@.@-","|@`@@@`@@.`.@@|","-@@@@@@@@@@@@@-","|-|-|-|-|-|-|-|", "---.---.---.---",".@#@#@#@#@#@#@.","-#@# #@# #@ #-",".@# # #@ @ @#@.","-# #@# # @#@#-",".@ @ @ @#@.","-# #@# # #@ #-",".@#@#@#@#@#@#@.","---.---.---.---", }; int a[5][5]={ 
    { 
   1,3,2,1}, { 
   4,7,3,1}, { 
   6,10,4,2}, { 
   2,3,2,4} }; char pressing; void checkmovement(){ 
    int key; while(true){ 
    key=0; if(_kbhit) key=getch(); if(key==72||key==119){ 
    pressing='u'; break; } if(key==75||key==97){ 
    pressing='l'; break; } if(key==115||key==80){ 
    pressing='d'; break; } if(key==100||key==77){ 
    pressing='r'; break; } if(key==113){ 
    pressing='Q'; break; } if(key==114){ 
    pressing='R'; break; } } } void print(){ 
    for(int i=0;i<9;i++){ 
    SCAB(color_type[i+9],0); printf("%s ",intro[i]); int pf=; while(pf){ 
    for(int j=score/pf%10*4;j<=score/pf%10*4+3;j++){ 
    if(score<pf) SCAB(8,0); else SCAB(7,0); printf("%c",scorenum[i][j]); } pf/=10; } printf("\n"); } printf("\n"); for(int i=0;i<4;i++){ 
    for(int j=0;j<9;j++){ 
    for(int k=0;k<4;k++){ 
    if(a[i][k]>=0){ 
    SCAB(7,color_type[a[i][k]]); printf("%s",tiles[a[i][k]*9+j]); } else{ 
    SCAB(color_type[16+a[i][k]*-1],0); printf("%s",better[-a[i][k]*9+j]); } } SCAB(7,0); printf(" "); if(i*9+j>=9&&i*9+j<=24) SCAB(color_type[i*9+j-8],0); if(i*9+j==16) SCAB(7,0); printf("%s",instruction[i*9+j]); printf("\n"); } } printf("\n"); for(int i=0;i<5;i++){ 
    SCAB(0,2); printf("%s",endd[i]); SCAB(0,0); printf(" "); int pf=; SCAB(0xe,0); while(pf){ 
    for(int j=best/pf%10*4;j<=best/pf%10*4+3;j++){ 
    printf("%c",scorenum[i+2][j]); } pf/=10; } printf("\n"); } } int gameover; void createrandomblock(){ 
    int emptyx[18],emptyy[18]; int cnt=0; for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++){ 
    if(a[i][j]==0){ 
    cnt++; emptyx[cnt]=i; emptyy[cnt]=j; } } } srand(time(NULL)); int num=rand()%cnt+1; int ran[16]={ 
   1,1,1,1,1,1,1,1,1,1,1,2,2,-1,-1,-2}; a[emptyx[num]][emptyy[num]]=ran[rand()%16]; } void startgame(){ 
    ak=false; score=0; gameover=0; for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++) a[i][j]=0; } createrandomblock(); createrandomblock(); } void moveblock(){ 
    if(pressing=='l'){ 
    for(int i=0;i<4;i++){ 
    int putpoint=0; for(int j=0;j<4;j++){ 
    if(a[i][j]!=0){ 
    a[i][putpoint]=a[i][j]; if(putpoint!=j) a[i][j]=0; putpoint++; } } for(int j=0;j<4;j++){ 
    if(a[i][j]>0&&a[i][j]<16&&a[i][j]==a[i][j+1]){ 
    a[i][j]++; a[i][j+1]=0; score+=pow(2,a[i][j]); } else if(a[i][j]==-2&&a[i][j]==a[i][j+1]){ 
    a[i][j]=-3; a[i][j+1]=0; score+=pow(2,a[i][j]); } else if(a[i][j]<=-1&&a[i][j+1]>0&&a[i][j+1]<=17+a[i][j]){ 
    if(premove[i][j]!=0&&premove[i][j+1]!=0){ 
    a[i][j]=a[i][j+1]-a[i][j]-1; a[i][j+1]=0; score+=pow(2,a[i][j]); } } else if(a[i][j+1]<=-1&&a[i][j]>0&&a[i][j]<=17+a[i][j+1]){ 
    if(premove[i][j]!=0&&premove[i][j+1]!=0){ 
    a[i][j]=a[i][j]-a[i][j+1]-1; a[i][j+1]=0; score+=pow(2,a[i][j]); } } } putpoint=0; for(int j=0;j<4;j++){ 
    if(a[i][j]!=0){ 
    a[i][putpoint]=a[i][j]; if(putpoint!=j) a[i][j]=0; putpoint++; } } } } / else if(pressing=='r'){ 
    for(int i=0;i<4;i++){ 
    int putpoint=3; for(int j=3;j>=0;j--){ 
    if(a[i][j]!=0){ 
    a[i][putpoint]=a[i][j]; if(putpoint!=j) a[i][j]=0; putpoint--; } } for(int j=3;j>=0;j--){ 
    if(a[i][j]>0&&a[i][j]<16&&a[i][j]==a[i][j-1]){ 
    a[i][j]++; a[i][j-1]=0; score+=pow(2,a[i][j]); } else if(a[i][j]==-2&&a[i][j]==a[i][j-1]){ 
    a[i][j]=-3; a[i][j-1]=0; score+=pow(2,a[i][j]); } else if(a[i][j]<=-1&&a[i][j-1]>0&&a[i][j-1]<=17+a[i][j]){ 
    if(premove[i][j]!=0&&premove[i][j-1]!=0){ 
    a[i][j]=a[i][j-1]-a[i][j]-1; a[i][j+1]=0; score+=pow(2,a[i][j]); } } else if(a[i][j-1]<=-1&&a[i][j]>0&&a[i][j]<=17+a[i][j-1]){ 
    if(premove[i][j]!=0&&premove[i][j-1]!=0){ 
    a[i][j]=a[i][j]-a[i][j-1]-1; a[i][j-1]=0; score+=pow(2,a[i][j]); } } } putpoint=3; for(int j=3;j>=0;j--){ 
    if(a[i][j]!=0){ 
    a[i][putpoint]=a[i][j]; if(putpoint!=j) a[i][j]=0; putpoint--; } } } }  else if(pressing=='u'){ 
    for(int i=0;i<4;i++){ 
    int putpoint=0; for(int j=0;j<4;j++){ 
    if(a[j][i]!=0){ 
    a[putpoint][i]=a[j][i]; if(putpoint!=j) a[j][i]=0; putpoint++; } } for(int j=0;j<4;j++){ 
    if(a[j][i]>0&&a[j][i]<16&&a[j][i]==a[j+1][i]){ 
    a[j][i]++; a[j+1][i]=0; score+=pow(2,a[j][i]); } else if(a[j][i]==-2&&a[j][i]==a[j+1][i]){ 
    a[j][i]=-3; a[j+1][i]=0; score+=pow(2,a[j][i]); } else if(a[j][i]<=-1&&a[j+1][i]>0&&a[j+1][i]<=17+a[j][i]){ 
    if(premove[j][i]!=0&&premove[j+1][i]!=0){ 
    a[j][i]=a[j+1][i]-a[j][i]-1; a[j+1][i]=0; score+=pow(2,a[j][i]); } } else if(a[j+1][i]<=-1&&a[j][i]>0&&a[j][i]<=17+a[j+1][i]){ 
    if(premove[j][i]!=0&&premove[j+1][i]!=0){ 
    a[j][i]=a[j][i]-a[j+1][i]-1; a[j+1][i]=0; score+=pow(2,a[j][i]); } } } putpoint=0; for(int j=0;j<=3;j++){ 
    if(a[j][i]!=0){ 
    a[putpoint][i]=a[j][i]; if(putpoint!=j) a[j][i]=0; putpoint++; } } } }  else if(pressing=='d'){ 
    for(int i=0;i<4;i++){ 
    int putpoint=3; for(int j=3;j>=0;j--){ 
    if(a[j][i]!=0){ 
    a[putpoint][i]=a[j][i]; if(putpoint!=j) a[j][i]=0; putpoint--; } } for(int j=3;j>=0;j--){ 
    if(a[j][i]>0&&a[j][i]<16&&a[j][i]==a[j-1][i]){ 
    a[j][i]++; a[j-1][i]=0; score+=pow(2,a[j][i]); } else if(a[j][i]==-2&&a[j][i]==a[j-1][i]){ 
    a[j][i]=-3; a[j-1][i]=0; score+=pow(2,a[j][i]); } else if(a[j][i]<=-1&&a[j-1][i]>0&&a[j-1][i]<=17+a[j][i]){ 
    if(premove[j][i]!=0&&premove[j-1][i]!=0){ 
    a[j][i]=a[j-1][i]-a[j][i]-1; a[j-1][i]=0; score+=pow(2,a[j][i]); } } else if(a[j-1][i]<=-1&&a[j][i]>0&&a[j][i]<=17+a[j-1][i]){ 
    if(premove[j][i]!=0&&premove[j-1][i]!=0){ 
    a[j][i]=a[j][i]-a[j-1][i]-1; a[j-1][i]=0; score+=pow(2,a[j][i]); } } } putpoint=3; for(int j=3;j>=0;j--){ 
    if(a[j][i]!=0){ 
    a[putpoint][i]=a[j][i]; if(putpoint!=j) a[j][i]=0; putpoint--; } } } } } void checkover(){ 
    bool flag1=true; for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++) { 
    if(a[i][j]<=0) flag1=false; } } for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++){ 
    if(a[i][j]==a[i+1][j]&&a[i][j]!=0) flag1=false; if(a[i][j]==a[i][j+1]&&a[i][j]!=0) flag1=false; } } if(flag1) gameover=1; } void over(); void checkak(){ 
    bool flag=false; for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++) if(a[i][j]==16) flag=true; } if(flag){ 
    gameover=2; over(); gameover=0; ak=true; } } void over(){ 
    system("cls"); for(int i=0;i<9;i++){ 
    SCAB(color_type[i+9],0); printf("%s ",intro[i]); int pf=; while(pf){ 
    for(int j=score/pf%10*4;j<=score/pf%10*4+3;j++){ 
    if(score<pf) SCAB(8,0); else SCAB(7,0); printf("%c",scorenum[i][j]); } pf/=10; } printf("\n"); } printf("\n"); for(int i=0;i<4;i++){ 
    for(int j=0;j<9;j++){ 
    if(9*i+j>=15&&9*i+j<=21){ 
    if(gameover==1){ 
    SCAB(0,12); printf("%s",endskin[9*i+j-15]); } else{ 
    SCAB(0,11); printf("%s",endskin[9*i+j-15+7]); } } else{ 
    for(int k=0;k<4;k++){ 
    if(a[i][k]>=0){ 
    SCAB(7,color_type[a[i][k]]); printf("%s",tiles[a[i][k]*9+j]); } else{ 
    SCAB(color_type[16+a[i][k]*-1],0); printf("%s",better[-a[i][k]*9+j]); } } } SCAB(7,0); printf(" "); if(i*9+j>=9&&i*9+j<=24) SCAB(color_type[i*9+j-8],0); if(i*9+j==16) SCAB(7,0); printf("%s",instruction[i*9+j]); printf("\n"); } } printf("\n"); for(int i=0;i<5;i++){ 
    SCAB(0,2); printf("%s",endd[i]); SCAB(0,0); printf(" "); int pf=; SCAB(0xe,0); while(pf){ 
    for(int j=best/pf%10*4;j<=best/pf%10*4+3;j++){ 
    printf("%c",scorenum[i+2][j]); } pf/=10; } printf("\n"); } } int main(){ 
    while(true){ 
    startgame(); system("cls"); print(); while(!gameover){ 
    checkmovement(); if(pressing=='Q') exit(0); if(pressing=='R') break; for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++) premove[i][j]=a[i][j]; } moveblock(); system("cls"); print(); for(int i=1;i<=;i++){ 
    i*=2; i/=2; i+=2; i-=2; } bool flag=false; for(int i=0;i<4;i++){ 
    for(int j=0;j<4;j++){ 
    if(a[i][j]!=premove[i][j]){ 
    flag=true; } } } best=max(best,score); if(flag){ 
    score++; createrandomblock(); best=max(best,score); system("cls"); print(); } if(!ak){ 
    checkak(); if(ak){ 
    checkmovement(); system("cls"); print(); if(pressing=='R') break; if(pressing=='Q') return 0; } } checkover(); } if(gameover!=0){ 
    over(); checkmovement(); if(pressing=='Q') exit(0); } } return 0; } 

求点赞收藏关注。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127757.html

(0)
上一篇 2025-09-05 15:15
下一篇 2025-09-05 15:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信