goc小游戏

大家好,我是@黑客小羊,今天给大家几个游戏代码

1.象棋

int a[114][514],b,c,d,g;
int cc=0;
int check(){
    p.moveTo(-420,-280);
    string ob;
    int num;
    cin>>ob>>num;
    if(ob=="cg")cc=num;
}
int abs(int v){
    if(v<0)v=v-v-v;
    return v;
}
int f(int v){
    return 0+(v>=8&&v<=14)*1;
}
string st(int k){
    if(k==1 )return "将";
    if(k==2 )return "仕";
    if(k==3 )return "象";
    if(k==4 )return "馬";
    if(k==5 )return "車";
    if(k==6 )return "砲";
    if(k==7 )return "卒";
    if(k==8 )return "帅";
    if(k==9 )return "士";
    if(k==10)return "相";
    if(k==11)return "马";
    if(k==12)return "车";
    if(k==13)return "炮";
    if(k==14)return "兵";
}
int can(int q,int w,int e,int r){
    if(cc==1)return 1;
    int k=a[q][w];string tr=st(a[q][w]);
    if(f(k)!=g)return 0;
    if((f(a[q][w])==f(a[e][r]))&&(a[e][r]!=0))return 0;
    if(tr=="車"||tr=="车"){
        if(q==e){
            if(w>r)
                for(int i=w-1;i>r;i--)if(a[q][i]!=0)return 0;
            if(w<r) 
                for(int i=w+1;i<r;i++)if(a[q][i]!=0)return 0;
        }
        else if(w==r){
            if(q>e)
                for(int i=q-1;i>e;i--)if(a[i][w]!=0)return 0;
            if(q<e) 
                for(int i=q+1;i<e;i++)if(a[i][w]!=0)return 0;
        }
        else if(q!=e&&w!=r)return 0;
    }
    if(tr=="馬"||tr=="马"){
        if(a[q-1][w]==0){
            if(q-2==e&&w+1==r)return 1;
            if(q-2==e&&w-1==r)return 1;
        }
        if(a[q+1][w]==0){
            if(q+2==e&&w+1==r)return 1;
            if(q+2==e&&w-1==r)return 1;
        }
        if(a[q][w-1]==0){
            if(q+1==e&&w-2==r)return 1;
            if(q-1==e&&w-2==r)return 1;
        }
        if(a[q][w+1]==0){
            if(q-1==e&&w+2==r)return 1;
            if(q+1==e&&w+2==r)return 1;
        }
        return 0;
    }
    if(tr=="象"||tr=="相"){
        if(f(k)==0){
            if(q+2==e&&w+2==r&&a[q+1][w+1]==0)return 0+(r<=5);
            if(q+2==e&&w-2==r&&a[q+1][w-1]==0)return 0+(r<=5);
            if(q-2==e&&w+2==r&&a[q-1][w+1]==0)return 0+(r<=5);
            if(q-2==e&&w-2==r&&a[q-1][w-1]==0)return 0+(r<=5);
        }
        if(f(k)==1){
            if(q+2==e&&w+2==r&&a[q+1][w+1]==0)return 0+(r>=6);
            if(q+2==e&&w-2==r&&a[q+1][w-1]==0)return 0+(r>=6);
            if(q-2==e&&w+2==r&&a[q-1][w+1]==0)return 0+(r>=6);
            if(q-2==e&&w-2==r&&a[q-1][w-1]==0)return 0+(r>=6);
        }
        return 0;
    }
    if(tr=="仕"||tr=="士"){
        if(!(e>=4&&e<=6))return 0;
        if(f(k)==0){
            return 0+(abs(q-e)==1&&abs(w-r)==1&&r<=3);
        }
        if(f(k)==1){
            return 0+(abs(q-e)==1&&abs(w-r)==1&&r>=8);
        }
        return 0;
    }
    if(tr=="将"){
        if(st(a[e][r])=="帅"&&q==e&&a[e][r]!=0){
            for(int i=w+1;i<=r-1;i++)
                if(a[q][i]!=0)return 0;
            return 1;
        }
        return 0+(4<=e&&e<=6&&1<=r&&r<=3&&(abs(q-e)+abs(w-r)==1));
    }
    if(tr=="帅"){
        if(st(a[e][r])=="将"&&q==e&&a[e][r]!=0){
            w=w+r;r=w-r;w=w-r;
            for(int i=w+1;i<=r-1;i++)
                if(a[q][i]!=0)return 0;
            return 1;
        }
        return 0+(4<=e&&e<=6&&8<=r&&r<=10&&(abs(q-e)+abs(w-r)==1));
    }
    if(tr=="炮"||tr=="砲"){
        int u=0;
        if(q==e){
            if(w>r)
                for(int i=w-1;i>=r;i--)u+=(0+(a[q][i]!=0));
            if(w<r) 
                for(int i=w+1;i<=r;i++)u+=(0+(a[q][i]!=0));
            if(a[e][r]==0)return 0+(u==0);
            else return 0+(u-1==1);
        }
        else if(w==r){
            if(q>e)
                for(int i=q-1;i>=e;i--)u+=(0+(a[i][w]!=0));
            if(q<e) 
                for(int i=q+1;i<=e;i++)u+=(0+(a[i][w]!=0));
            if(a[e][r]==0)return 0+(u==0);
            else return 0+(u-1==1);
        }
        else if(q!=e&&w!=r)return 0;
    }
    if(tr=="兵"||tr=="卒"){
        if(f(k)==0){
            if(w<=5)
                return 0+(q==e&&w+1==r);
            else 
                return 0+((q==e&&w+1==r)||(q-1==e&&w==r)||(q+1==e&&w==r));
        }
        if(f(k)==1){
            if(w>=6)
                return 0+(q==e&&w-1==r);
            else 
                return 0+((q==e&&w-1==r)||(q-1==e&&w==r)||(q+1==e&&w==r));
        }
    }
    return 1;
}
int win(){
    int x=0,y=0;
    for(int i=1;i<=9;i++){
        for(int j=1;j<=10;j++){
            if(a[i][j]==1)x=1;
            if(a[i][j]==8)y=1;
        }
    }
    p.moveTo(0,0);
    if(x==0){
        p.rr(800,800,15).text("红方胜利",1,114);
        wait(1);
        return 1;
    }
    if(y==0){
        p.rr(800,800,15).text("黑方胜利",0,114);
        wait(1);
        return 1;
    }
    return 0;
}
int draw(){
    p.moveTo(0,0).rt(90).rr(800,800,15).c(2).size(4.4);
    for(int i=0;i<9;i++)p.moveTo(-315,280-i*70).fd(630);
    p.rt(90);
    for(int i=0;i<10;i++)p.moveTo(-315+i*70,280).fd(560);
    p.moveTo(0,0).rr(66,556,15).rt(180);
    p.textSize(30);
    p.moveTo(0,200).text("楚",2);
    p.moveTo(0,100).text("河",2);
    p.moveTo(0,-100).text("汉",2);
    p.moveTo(0,-200).text("界",2);
    p.moveTo(-315,70).lineTo(-175,-70);
    p.moveTo(-175,70).lineTo(-315,-70);
    p.moveTo(315,70).lineTo(175,-70);
    p.moveTo(175,70).lineTo(315,-70);
    for(int i=1;i<=9;i++){
        for(int j=1;j<=10;j++){
            p.moveTo(-315+(j-1)*70,280-(i-1)*70);
            if(b==1){
                if((can(c,d,i,j))){
                    p.ee(32.5,32.5,3);
                }
            }
            if(a[i][j]!=0){
                p.c(f(a[i][j]));
                p.oo(23,15).o(23);
                p.text(st(a[i][j]));
            }
        }
    }
    if(b==1){
        p.moveTo(-315+(d-1)*70,280-(c-1)*70).size(5).o(30,10);
    }
    p.moveTo(0,350).rr(120,70,2).rr(114,64,g);
    if(g==1)
        p.moveTo(220,-330).text("move",0,35);
    win();
    p.moveTo(0,-360).o(30,11).textSize(22.5).text("again",11);
    p.moveTo(-280,360).text("GoC Chinese Chess",0);
    p.moveTo(280,360).text("Made With Skun",0);
    p.moveTo(-350,-350).size(6).c(0).r(90,27,11).size(3).text("check");
}
int cm(int cx,int cy){
    for(int i=1;i<=9;i++){
        for(int j=1;j<=10;j++){
            if(can(cx,cy,i,j))
                return 1;
        }
    }
    return 0;
}
int moss(){
    p.moveTo(-220,-330).rr(100,50,15).text("thinking",0,35);
    int v,fx,fy,t=0;
    while(1){
        v=rand(1,16);
        for(int i=1;i<=9;i++){
            for(int j=1;j<=10;j++){
                if(a[i][j]==v){fx=i;fy=j;t=1;}
            }
        }
        if(t==1&&cm(fx,fy))break;
    }
    p.moveTo(-315+(fy-1)*70,280-(fx-1)*70).size(5).o(30,10);
    if(t==0)return 0;
    while(1){
        int mx=rand(1,9),my=rand(1,10);
        if(can(fx,fy,mx,my)){
            cout<<a[fx][fy]<<' '<<"move from("<<fx<<','<<fy<<")to("<<mx<<','<<my<<")\n";
            a[mx][my]=a[fx][fy];
            a[fx][fy]=0;
            g=1-g;
            p.rr(200,40,15);
            return 0;
        }
        wait(0);
    }
}
int pc(){
    draw();
    while(1){
        waitMouse();
        if(mouseIn(-350,-350,30))check();
        if(mouseIn(0,-360,30)){
            p.moveTo(0,-360).size(3).o(32,1);
            while(mouseDown())wait(0);
            return 0;
        }
        int x=getMDX(),y=getMDY(),t=0;
        for(int i=1;i<=9;i++){
            for(int j=1;j<=10;j++){
                if(mouseIn(-315+(j-1)*70,280-(i-1)*70,30))
                    {x=i;y=j;t=1;break;}
            }
            if(t==1)break;
        }
        if(!(x==getMDX()&&y==getMDY())){
            if(b==0&&a[x][y]==0)continue;
            if(c==x&&d==y&&b==1)b=0;
            else b++;
            if(b==2){
                b=0;
               if(can(c,d,x,y)==1){
                    if(a[x][y]!=0)cout<<a[x][y]<<" die\n";
                    a[x][y]=a[c][d];a[c][d]=0;
                    g=1-g;draw();
                    cout<<a[x][y]<<' ';
                }
                else cout<<a[c][d]<<" can't ";
                cout<<"move from("<<c<<','<<d<<")to("<<x<<','<<y<<")\n";
            }
            c=x;d=y;
        }
        if(win()==1)return 0;
        if(g==0)moss();
        draw();
    }
    return 0;
}
int pp(){
    draw();
    while(1){
        waitMouse();
        if(mouseIn(-350,-350,30))check();
        if(mouseIn(0,-360,30)){
            p.moveTo(0,-360).size(3).o(32,1);
            while(mouseDown())wait(0.01);
            return 0;
        }
        int x=getMDX(),y=getMDY(),t=0;
        for(int i=1;i<=9;i++){
            for(int j=1;j<=10;j++){
                if(mouseIn(-315+(j-1)*70,280-(i-1)*70,30))
                    {x=i;y=j;t=1;break;}
            }
            if(t==1)break;
        }
        if(!(x==getMDX()&&y==getMDY())){
            if(b==0&&a[x][y]==0)continue;
            if(c==x&&d==y&&b==1)b=0;
            else b++;
            if(b==2){
                b=0;
               if(can(c,d,x,y)==1){
                    if(a[x][y]!=0)cout<<a[x][y]<<" die\n";
                    a[x][y]=a[c][d];a[c][d]=0;
                    g=1-g;draw();
                    cout<<a[x][y]<<' ';
                }
                else  cout<<a[c][d]<<" can't ";
                cout<<"move from("<<c<<','<<d<<")to("<<x<<','<<y<<")\n";
            }
            c=x;d=y;
        }
        if(win()==1)return 0;
        draw();
        if(g==0)
            p.moveTo(-220,-330).text("move",0,35);
    }
    return 0;
}
int si(){
    b=0;g=1;cc=0;
    for(int i=1;i<=9;i++){
        for(int j=1;j<=11;j++){
            a[i][j]=0;
        }
    }
    for(int i=0;i<5;i++)a[5-i][1]=a[5+i][1]=i+1;
    a[2][3]=6;a[8][3]=6;
    for(int i=1;i<=9;i+=2)a[i][4]=7;
    for(int i=0;i<5;i++)a[5-i][10]=a[5+i][10]=i+1+7;
    a[2][8]=13;a[8][8]=13;
    for(int i=1;i<=9;i+=2)a[i][7]=14;
    cout<<"chess initialization\n";p.c(2);
    p.rr(8000,8000,15);
    p.moveTo(0,180).text("GoC Chinese Chess",0,87);
    p.moveTo(0,90).text("GCCC          Made With Skun",0,51);
    p.size(6);
    p.moveTo(-200,-200).o(125).text("player",0,85);
    p.moveTo( 200,-200).o(125).text("computer",0,58);
    p.moveTo(350,-380).text("v2.0",0,24);
    while(1){
        waitMouse();
        if(mouseIn(-200,-200,130)){
            p.moveTo(-200,-200).size(5).o(128,1);
            while(mouseDown())wait(0.01);
            pp();
            return 0;
        }
        if(mouseIn( 200,-200,130)){
            p.moveTo( 200,-200).size(5).o(128,1);
            while(mouseDown())wait(0.01);
            pc();
            return 0;
        }
        wait(0);
    }
}
int main(){
    p.speed(10).size(4).hide();
    while(1){
        si();
    }
    return 0;
}

2.猜数游戏

int main(){
    p.hide().rr(1000,1000,14);
    p.text("欢迎来到猜数游戏",1,60);
    p.moveTo(0,-100);
    p.text("请猜",1,60);
    int z;
    int a;
    int b;
    p.rt(90).up();
    a=rand()%10+1;
    cin>>b;
    for(z=0;b!=a;z++)
       if(b==a){
         p.cls();
         p.text("猜对了");
       }else if(b<a)
       {    p.cls();
            p.text(" 猜小了").fd(60).text("再猜:");
            cin>>b;
       }
       else if(b>a)
       {    p.cls();
            p.text("猜大了").fd(60).text("再猜:");
            cin>>b;
       }
    p.cls().text("猜对了").fd(60);
    p.text("共猜了").rt(90).fd(60).text(z+1).fd(30).text("次");
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值