/ Vijos / 讨论 / 游戏 /

数字游戏

#include<bits/stdc++.h>
#pragma execution_character_set("utf-8")
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define __color(attr); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),attr);
#define color(attr); __color(attr);
#define __gotoxy(x,y); SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),{x,y});
#define gotoxy(x,y); __gotoxy((SHORT)(x),(SHORT)(y));
#define ll long long
using namespace std;
int WIDTH=16;
int HEIGHT=16;
int MINE_COUNT=40;
int minezone[1024][1024];
bool mark[1024][1024];
bool vis[1024][1024];
int vis_quantity;
bool exploded;
int wordsize_width,wordsize_height;
void init_minezone(){
    srand((unsigned int)(time(NULL)));
    for(int i=WIDTH*HEIGHT;i>WIDTH*HEIGHT-MINE_COUNT;i--){
        int tmp=rand()%i;
        bool flag=0;
        for(int j=1;j<=WIDTH&&!flag;j++){
            for(int k=1;k<=HEIGHT&&!flag;k++){
                if(minezone[j][k]>=1000)continue;
                if(tmp--)continue;
                minezone[j-1][k-1]++;
                minezone[j-1][k]++;
                minezone[j-1][k+1]++;
                minezone[j][k-1]++;
                minezone[j][k]=1000;
                minezone[j][k+1]++;
                minezone[j+1][k-1]++;
                minezone[j+1][k]++;
                minezone[j+1][k+1]++;
                flag=1;
            }
        }
    }
    for(int i=1;i<=WIDTH;i++){
        for(int j=1;j<=HEIGHT;j++){
            if(minezone[i][j]>=1000)minezone[i][j]=1000;
        }
    }
    for(int i=0;i<=WIDTH+1;i++){
        minezone[i][0]=-1;
        minezone[i][HEIGHT+1]=-1;
        vis[i][0]=1;
        vis[i][HEIGHT+1]=1;
    }
    for(int i=0;i<=HEIGHT+1;i++){
        minezone[0][i]=-1;
        minezone[WIDTH+1][i]=-1;
        vis[0][i]=1;
        vis[WIDTH+1][i]=1;
    }
}
bool GetConsoleWordSize(int &width,int &height){
    HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
    if(hConsole==INVALID_HANDLE_VALUE)return 0;
    CONSOLE_FONT_INFO cfi;
    if(!GetCurrentConsoleFont(hConsole, FALSE, &cfi))return 0;
    width=cfi.dwFontSize.X;
    height=cfi.dwFontSize.Y;
    return 1;
}
bool GetSelectedWordPos(LPPOINT lpPoint,int nWidth,int nHeight) {
    HWND hConsoleWnd=GetConsoleWindow();
    if(hConsoleWnd!=GetForegroundWindow())return 0;
    if(!GetCursorPos(lpPoint))return 0;
    if(!ScreenToClient(hConsoleWnd,lpPoint)) return 0;
    if(nWidth<=0||nHeight<=0)return 0;
    lpPoint->x/=nWidth;
    lpPoint->y/=nHeight;
    return 1;
}
void detect(int x,int y){
    if(vis[x][y])return;
    vis[x][y]=1;
    vis_quantity++;
    mark[x][y]=0;
    if(minezone[x][y]==1000){
        exploded=1;
        return;
    }
    if(minezone[x][y]>0)return;
    for(int dx=-1;dx<=1;dx++){
        for(int dy=-1;dy<=1;dy++){
            detect(x+dx,y+dy);
        }
    }
}
bool DisableConsoleSelect(){
    HANDLE hIn=GetStdHandle(STD_INPUT_HANDLE);
    if(hIn==INVALID_HANDLE_VALUE)return 0;
    DWORD Mode;
    if(!GetConsoleMode(hIn,&Mode))return 0;
    if(!SetConsoleMode(hIn,Mode&(~ENABLE_QUICK_EDIT_MODE)&(~ENABLE_MOUSE_INPUT)))return 0;
    return 1;
}
bool HideConsoleCursor(){
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    if(hOut==INVALID_HANDLE_VALUE)return 0;
    CONSOLE_CURSOR_INFO cci;
    if(!GetConsoleCursorInfo(hOut,&cci))return 0;
    cci.bVisible=FALSE;
    if(!SetConsoleCursorInfo(hOut,&cci))return 0;
    return 1;
}
bool ShowConsoleCursor(){
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    if(hOut==INVALID_HANDLE_VALUE)return 0;
    CONSOLE_CURSOR_INFO cci;
    if(!GetConsoleCursorInfo(hOut,&cci))return 0;
    cci.bVisible=TRUE;
    if(!SetConsoleCursorInfo(hOut,&cci))return 0;
    return 1;
}
void print(){
    POINT mouse;
    
    GetSelectedWordPos(&mouse,wordsize_width,wordsize_height);
    int MouseGridX=(mouse.x-1)/2;
    
    int MouseGridY=mouse.y;
    
    bool MouseValid=((mouse.x-1)%2==0);
    
    for(int i=1;i<=WIDTH;i++){
        
        for(int j=1;j<=HEIGHT;j++){
            
            
            gotoxy(i*2+1,j);
            bool hovered=(i==MouseGridX&&j==MouseGridY&&MouseValid);
            if(vis[i][j]){
                
                if(minezone[i][j]<1000){
                    
                    WORD ColorCode=0x04;
                    
                    if(minezone[i][j]==0)ColorCode=0x08;
                    
                    
                    if(minezone[i][j]==1)ColorCode=0x01;
                    
                    if(minezone[i][j]==2)ColorCode=0x02;
                    
                    
                    color(hovered?(ColorCode|0xF0):ColorCode);
                    
                    printf("%d",minezone[i][j]);
                    
                }
            }else if(mark[i][j]){
                
                color(hovered?0xFC:0x0C);
                
                putchar('P');
            }else{
                
                color(hovered?0xF8:0x08);
                
                putchar('+');
                
            }
        }
    }
}
void final_print(){
    
    
    if(!exploded){
        
        print();
        
        return;
        
    }
    for(int i=1;i<=WIDTH;i++){
        
        for(int j=1;j<=HEIGHT;j++){
            
            gotoxy(i*2+1,j);
            
            if(mark[i][j]&&minezone[i][j]!=1000){
                
                color(0x0D);
                
                putchar('F');
                
            }else if(minezone[i][j]==1000){
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                if(vis[i][j]){
                    
                    color(0x4F);
                    
                }else{
                    
                    color(0x0F);
                    
                }
                
                putchar('X');
            }
        }
    }
}

static int pane[11][16];

static char get;

struct GRAPH{
    
    int code,x[5],y[5];
    
}graph,templategraph[24]={0,0,1,1,1,1,0,0,1,2,2,1,0,0,1,2,2,0,1,1,1,1,2,0,1,1,1,1,0,0,1,2,2,3,0,0,1,2,2,0,1,1,1,1,4,0,0,1,1,1,0,0,0,1,2,5,0,0,0,1,2,0,2,1,1,1,6,0,1,1,1,2,0,0,1,2,2,7,0,0,1,2,2,0,1,1,1,0,8,0,0,0,1,2,0,0,1,1,1,9,0,1,1,1,0,0,0,1,2,2,10,0,0,1,2,2,0,1,1,1,2,11,0,1,1,1,2,0,2,1,0,0,12,0,0,1,1,1,0,0,1,0,1,13,0,0,1,0,0,0,0,0,1,0,14,0,0,1,0,0,0,0,1,1,1,15,0,1,1,0,0,0,0,1,1,1,16,0,1,0,1,1,0,0,1,1,2,17,0,1,1,2,0,0,1,2,1,1,18,0,1,1,1,2,0,0,1,2,1,19,0,1,1,0,2,0,1,0,1,1,20,0,0,1,2,2,0,1,1,1,2,21,0,1,1,1,2,0,2,1,0,0,22,0,0,0,1,2,0,0,1,1,1,23,0,0,1,1,1,0,2,2,1,0};
class G_M{
    
    public:
        
        void spin();
        
        
        void left();
        
        
        void right();
        
        void fall();
        
}graphmove;

class G_T{
    
    public:
        
        bool leftfolded();
        
        bool rightfolded();
        
        bool landed();
}graphtest;

class G_O{
    
    public:
        
        void create();
        
        void freezeup();
        
}graphoption;

class P_T{
    
    public:
        bool linefilled(int);
        
}panetest;
class P_O{
    
    public:
        void pastegraph();
        
        void removegraph();
        
        
        
        void offset(int);
        
        void print();
        
}paneoption;

void G_M::spin(){
    
    
    
    
    static int x,y;
    x=graph.x[0];y=graph.y[0];
    
    graph=templategraph[((!(graph.code%4-3))?graph.code-3:graph.code+1)];
    graph.x[0]=x;graph.y[0]=y;
    
    
    
    
}

void G_M::left(){
    
    graph.x[0]--;
    
}
void G_M::right(){
    
    graph.x[0]++;
    
}

void G_M::fall(){
    
    graph.y[0]--;
}

bool G_T::landed(){
    
    for(int i=1;i<5;i++){
        
        //if(graph.y[i]+graph.y[0]==1)return 1;
        
        if(pane[graph.x[i]+graph.x[0]][graph.y[i]+graph.y[0]-1]==2)return 1;
    }
    
    return 0;
    
}
int graphcode;

void G_O::create(){
    
    graphcode=rand()%24;
    
    graph=templategraph[graphcode];
    
    graph.x[0]=rand()%3+3;
    
    graph.y[0]=13;
    
}
void G_O::freezeup(){
    
    for(int i=1;i<5;i++)
    
        pane[graph.x[i]+graph.x[0]][graph.y[i]+graph.y[0]]=2;
        
}
bool P_T::linefilled(int y){
    
    int scores=0;
    
    
    
    for(int i=1;i<10;i++)
    
        if(pane[i][y]==2)scores++;
        
    if(scores==9)return 1;
    return 0;
}

ll qwqw(){
    
    cout<<1<<",自己算吧。"<<endl; 
} 
void P_O::pastegraph(){
    for(int i=1;i<5;i++)
    
        pane[graph.x[i]+graph.x[0]][graph.y[i]+graph.y[0]]=1;
        
}
void P_O::removegraph(){
    
    for(int i=1;i<10;i++)
    
    
        for(int j=1;j<16;j++)
        
            if(pane[i][j]==1)pane[i][j]=0;
}
void P_O::offset(int y){
    
    
    for(int i=y;i<13;i++)
    
        for(int j=1;j<10;j++)
        
            pane[j][i]=pane[j][i+1];
            
            
            
}
void P_O::print(){
    
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),{0,0});
    
    color(19);
    
    cout<<"                      ";
    
    color(7);
    cout<<'\n';
    for(int i=12;i>0;i--){
        color(17);
        cout<<"  ";
        
        for(int j=1;j<10;j++){
            
            
        }
        color(17);
        cout<<"  ";
        
        color(7);
        
        cout<<'\n';
    }
    color(17);
    cout<<"                      ";
    color(7);
    cout<<'\n'; 
}
ll ab;
ll bbbbbb;

ll aaaaaa;


ll aaaaa[100000000];


ll bbbbb[100000000];


ll a;
ll b;

ll f;

ll bb(ll d){
    ll e;
    e=d;
    e+=d;
    e-=d;
    e++;
    e--;
    f=e;
    return e;
}

ll aa(ll aaa,ll bbb){
    ll c=0;
    for(ll i=1;i<=aaa;i++)
    
    
    
    {
        c++;
    } 
    for(ll i=1;i<=bbb;i++)
    {
        c++;
    } 
    c++;
    c--;
    c+=999;
    c-=999;
    bb(c);
}
int _1=20,_2=20,_3=0,_4=77,_5=200,_6=1;
vector<pair<int,int>> _7;
pair<int,int> _8;
bool _9=0;
int __,_$;





void ____() {
    CONSOLE_CURSOR_INFO ___;
    GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&___);
    
    
    
    
    ___.bVisible=0;
    
    
    
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&___);
}
void ___$() {
    _8={rand()%(_1-2)+2,rand()%(_2-2)+2};
    for(auto&p:_7)if(p==_8){___$();return;}
}





int _a=48,_b=28,_c=0,_d=0,_e=150,_f=0;
bool _g=0;
struct _h{int x,y;};
struct _i{_h p;int hp,type;};

struct _j{_h p;int life;};
_h _k;
vector<_j> _l;
vector<_i> _m;








vector<_h> _n;

void _o(){CONSOLE_CURSOR_INFO _;GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&_);_.bVisible=0;SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&_);}

void _p(){
    static int _=0;
    if(GetAsyncKeyState(VK_SPACE)&0x8000){
        if(++_>6){_=0;_l.push_back({{_k.x,_k.y-1},0});}
    }else _=6;
    for(auto _=_l.begin();_!=_l.end();){
        _->p.y-=2;
        if(_->p.y<2||_->life>20){_=_l.erase(_);continue;}
        _->life++;
        if(_->life%3==0)_->p.x++;
        ++_;
    }
}

void _q(){
    if(rand()%100<(_g?18:8)){
        int _=rand()%2;
        if(_==0)_m.push_back({{rand()%(_a-3)+2,1},2,0});
        else _m.push_back({{rand()%(_a-3)+2,1},1,1});
    }
    
}



void _t(){
    if(GetAsyncKeyState('A')&0x8000)if(_k.x>2)_k.x--;
    if(GetAsyncKeyState('D')&0x8000)if(_k.x<_a-2)_k.x++;
    if(GetAsyncKeyState('W')&0x8000)if(_k.y>2)_k.y--;
    if(GetAsyncKeyState('S')&0x8000)if(_k.y<_b-2)_k.y++;
}




#define _Q(w) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),w)
#define __K(x,y) SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),{x,y})
#pragma execution_character_set("utf-8")
using namespace std;




void ___$fdg(){
    __K(0,0);_Q(0x0F);
    cout<<"  ";
    for(int i=1;i<=_a;i++)cout<<setw(2)<<i;
    cout<<endl;
    for(int i=1;i<=_b;i++){
        cout<<setw(2)<<i;
    }
}

bool ___$sf$(int x,int y,int p){
    for(int dx=-1;dx<=1;dx++)for(int dy=-1;dy<=1;dy++){
        if(dx==0&&dy==0)continue;
        int cnt=0;
        for(int k=1;k<5;k++){
            int nx=x+dx*k,ny=y+dy*k;
            
        }
        if(cnt>=4)return 1;
    }
    return 0;
}


void __$__() {
    if(_4=='w'||_4=='W')__=-0,_$=-1;
    else if(_4=='s'||_4=='S')__=0,_$=1;
    else if(_4=='a'||_4=='A')__=-1,_$=0;
    else if(_4=='d'||_4=='D')__=1,_$=0;
    pair<int,int> _0=_7.front();
    _0.first+=__;_0.second+=_$;
    if(_0.first<=0||_0.first>_1||_0.second<=0||_0.second>_2){_9=1;return;}
    for(auto&p:_7)if(p==_0){_9=1;return;}
    _7.insert(_7.begin(),_0);
    if(_0==_8){_3++;_8.first=-1;___$();}
    else _7.pop_back();
}
signed main(){
    cout<<"数字 游戏:"<<'\n';
    cout<<"数字不要为小数和负数,不要太大"<<endl; 
    cout<<"输入第一个数:"<<endl;
    cin>>a;
    cout<<"输入第二个数:"<<endl; 
    cin>>b;
    cout<<"加载时间可能较长,请耐心等待!"<<endl;
    cout<<"资源加载中.";
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=380000000;i++){
            ab+=i;
            ab-=i;
        }
        cout<<" .";
        if(j==5){
            cout<<endl;
        } 
    }
    cout<<"更新中.";
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=600000000;i++){
            ab+=i;
            ab-=i;
        }
        cout<<" .";
        if(j==5){
            cout<<endl;
        } 
    }
    cout<<"下载地图中.";
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=200000000;i++){
            ab+=i;
            ab-=i;
        }
        cout<<" .";
        if(j==5){
            cout<<endl;
        } 
    }
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;cout<<endl;
    cout<<endl;cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;cout<<endl;
    cout<<"他们的和:";
    aa(a,b);
    for(ll i=1;i<f;i++){
        cout<<1<<"+";
    }
    qwqw();
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab+=i;
            ab-=i;
        }
    }
    for(ll j=1;j<=5;j++){
        for(ll i=1;i<=10000000;i++){
            ab++;
            ab-=i;
        }
    }
    cout<<"游戏结束,再见"; 
    return 0;
}

1 条评论

  • 1