C++小游戏开发:2048小游戏
程序员文章站
2022-07-02 20:12:37
用C++写的一个小游戏,没用到类。 开始用的清屏函数来刷新屏幕,但是屏幕闪烁严重,最后采用了移动光标方法来刷新屏幕,使游戏过程中屏幕不会闪烁。
#include
用C++写的一个小游戏,没用到类。 开始用的清屏函数来刷新屏幕,但是屏幕闪烁严重,最后采用了移动光标方法来刷新屏幕,使游戏过程中屏幕不会闪烁。
#include<iostream> #include<ctime> #include<stdlib.h> #include<conio.h> #include<windows.h> #include<fstream> using namespace std; int a[4][4]={0}; int score=0; void menu(); int if_end(); void gotoxy(int x,int y); void save_score(int x); void read_score(); void save_data(); void read_data(); void printf_num(); void rand_num(); void move(); int if_end() { int i,j,b=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(a[i][j]==0)b++; } } for(i=0;i<4;i++) { for(j=0;j<3;j++) { if(a[i][j]==a[i][j+1])b++; } } for(i=0;i<4;i++) { for(j=0;j<3;j++) { if(a[j][i]==a[j+1][i])b++; } } if(b!=0)b=1; return b; } void gotoxy(int x,int y) { COORD coord={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } void save_score(int x) { int i,j,t; int a[11]={0}; ifstream fin ("score.txt",ios::in); if(!fin) { ifstream fin ("score.txt",ios::trunc); } for(i=0;i<10;i++) { fin>>a[i]; } fin.close(); for(i=0;i<10;i++) { if(a[i]==x)x=0; } a[10]=x; for(i=10;i>0;i--) { for(j=i-1;j>=0;j--) { if(a[j]<a[i])<br> { a[j]^=a[i]; a[i]^=a[j]; a[j]^=a[i]; } } } ofstream fout ("score.txt",ios::out); if(!fout) { cout<<"Can't open output file!"<<endl;<br> exit(1); } for(i=0;i<10;i++) { fout<<a[i]<<endl;<br> } fout.close(); } void read_score() { int i,a[10]; system("cls"); ifstream fin ("score.txt",ios::in); if(!fin) { cout<<"Can't open output file!"<<endl;<br> getch(); system("cls"); menu(); } for(i=0;i<10;i++) { fin>>a[i]; } fin.close(); cout<<" 排行榜\n\n" ; for(i=0;i<10;i++) { printf(" %2d.",i+1); cout<<a[i]<<endl;<br> } } void printf_num() { int i,j; char p; cout<<"\n\n\n\n\n\n\n"; printf(" ┌──┬──┬──┬──┐\n"); for(i=0;i<4;i++) { printf(" "); for(j=0;j<4;j++) { if(j==0)cout<<"|"; if(a[i][j]!=0)printf("%4d|",a[i][j]); else cout<<" |"; } cout<<endl;<br> if (i < 3) { printf(" ├──┼──┼──┼──┤\n"); } else { printf(" └──┴──┴──┴──┘\n"); } } printf(" score:%d\n",score); save_data(); if(if_end()==0) { save_score(score); cout<<"\n\n\n GAME OVER!"<<endl<<"\n\n b="0;<br" br="" case="" char="" color="" cols="115" con="" else="" fin="" for="" fout="" i="3;i>=0;i--)<br" ifstream="" int="" j="3;j>0;j--)<br" k="0;k<3;k++)<br" lines="28")" loc="((int)(rand()%n)+1);<br" mode="" n="" nthanks="" num="=2)a[i][j]=4;<br" ofstream="" p="='y')<br" restrat="" return="" score="0;<br" thanks="" void=""></endl<<"\n\n></endl;<br></a[i]<<endl;<br></endl;<br></a[i]<<endl;<br></endl;<br></a[i])<br></fstream></windows.h></conio.h></stdlib.h></ctime>