【代码】Goc小游戏

Hello!大家好,我是@学生小羊,今天分享几个Goc游戏。

//注:以下代码为Goc原创代码。

大家可以在下面网址写入代码
www.51goc.com慧通教育
http://www.51goc.com
注:Goc编辑器路径:

www.51goc.com ➡ 登录 ➡ 游客登陆 ➡ 入门课程 ➡ WebGoc

实在不行就试一下 下面这个链接:

WebGoc
https://www.51goc.com/static/gocWebNet/gocWebNet.html?submitBt=0&insert=0&ra=60&winName=20200413

给点面子,评论一下这个作品吧!

1.口算测试

int a,b,lv=1,score=0,nd,yu,da,day,j,s_j=0,cuo=0;
int main(){
    p.picL(1,"boy0.png").picL(2,"boy1.png").picL(3,"boy2.png").picL(4,"boy3.png");
    p.rr(1000,1000,14).speed(10).up().hide();
    p.moveTo(0,150).text("加载中......",15,50);
    p.moveTo(0,-100).rr(400,20,15).r(400,20,0);
    wait(1);
    p.moveTo(-175,-100).rr(50,15,10).rt(90);
    wait(1);
    
    for(int i=1;i<7;i++)
    {
        p.fd(50).rr(50,15,10);
        wait(rand(1,2));
    }
    p.fd(50).rr(50,15,10);
    wait(0.5);
    p.moveTo(0,0).rr(1000,1000,14).text("加载成功!",15,75);
    wait(1);
    p.moveTo(-100,0).rr(1000,1000,14).text("欢迎来到口算测试,",15,20);
    wait(1);
    
    p.moveTo(30,-30);
    p.text("这是一个针对弟弟妹妹们练习口算而准备的软件,",15,20);
    p.moveTo(0,-90);
    wait(1);
    p.text("作者:小羊",15,20);
    p.moveTo(0,-120);
    p.text("无敌工作室出品",15,20);
    wait(3);
    p.picU(0);
    p.moveTo(0,0).rr(800,800,14);
    p.moveTo(0,200).text("规则",15,50);
    p.moveTo(-200,150).lt(90).text("1.先输入难度。",15,40);
    p.moveTo(0,100).text("2.等待一会儿后,看题目,输入答案。",15,40);
    p.moveTo(160,50).lt(90).fd(170).text("3.每答对一题加1分,每多5分就升级。",15,40).bk(170).rt(90);
    p.moveTo(0,0);
    cinTitle( "请输入初始难度(10-100,大于100的记为100,小于10的记为10):");
    cin>>nd;
    if(nd>100)
    {
        nd=100;
    }
    if(nd<10)
    {
        nd=10;
    }
    p.rr(800,800,14);
    p.speed(10).moveTo(200,370).text("分数:",15,40).rt(90);
    p.fd(90).oo(50,15).text(score,0,50).bk(100);
    p.lt(90).bk(100);
    p.moveTo(190,300).text("等级:",15,40).rt(90).fd(100).oo(50,15);
    p.text(lv,0,50).bk(90);
    p.lt(90);
    p.picL(5,"pan.png").moveTo(300,-100);
    for(int i=1;;i++)
    {
        int ans;
        //p.rr(1000,1000,14);
        p.moveTo(300,100).rr(300,200,14);
        p.moveTo(0,160).rr(400,60,14);
        a=rand(0,nd),b=rand(0,nd);
        p.moveTo(-200,100).rr(1600,100,14).ee(50,30,15);
        p.speed(10);
        if(lv%4==1)
        {
            p.moveTo(-100,100).rr(50,50,14).rr(10,50,15).rr(50,10,15);
            ans=a+b;
        }
        if(lv%4==2)
        {
            if(a<b)
            {
                int t=a;
                a=b;
                b=t;
            }
            p.moveTo(-100,100).rr(50,50,14).rr(50,10,15);
            ans=a-b;
        }
        if(lv%4==3)
        {
            if(a>=50)
               a=a-40;
            if(b>=50)
               b=b-40;
            
            p.moveTo(-100,100).rt(45);
            p.rr(50,50,14).rr(10,50,15).rr(50,10,15).lt(45);
            ans=a*b;
        }
        if(lv%4==0)
        {
            b=rand(1,nd),a=rand(1,nd);
            if(a<b)
            {
                int t=a;
                a=b;
                b=t;
            }
            
            p.moveTo(-100,100);
            p.rr(50,50,14).rr(50,50,14).rr(50,10,15);
            p.fd(20).oo(5,15).bk(40).oo(5,15);
            ans=a/b,yu=a%b;
        }
        p.speed(10);
        p.moveTo(-200,-200).rr(200,200,14);
        
        p.moveTo(0,100).ee(50,30,15);
        p.speed(5);
        p.moveTo(100,100).fd(20);
        p.rr(50,10,15).bk(40).rr(50,10,15);
        p.moveTo(200,100).ee(50,30,15);
        if(lv%4==0&&yu!=0)
        {
            p.moveTo(250,75).rt(90);
            for(int i=1;i<=6;i++)
            {
                p.oo(5,15).fd(15);
            }
            p.moveTo(350,100).oo(30,15).lt(90).fd(15);
            p.bk(15);
        }
        p.speed(10);
        
        p.moveTo(-200,100).text(a,0,40);
        
        p.moveTo(0,100).text(b,0,40);
        p.moveTo(150,120);
        cinTitle("请输入答案:");
        cin>>da;
        p.moveTo(200,100).text(da,0,40);
        
        if(lv%4==0&&yu!=0)
        {
            p.moveTo(325,120); 
            cinTitle("请输入余数:");
            cin>>day;
            p.moveTo(350,100).text(day,0,40);
            if(da==ans&&day==yu)
            {
                p.moveTo(0,150);
                p.text("恭喜你,答对了!",15,50);
                score++;
                wait(1);
                int djpd=score/5;
                lv=djpd+1;
        
                if(lv==5) j++,lv=1,nd+=100;
        
                if(lv+j*4==20) s_j++;
                p.speed(10).moveTo(200,370).text("分数:",15,40).rt(90);
                p.fd(90).oo(50,15).text(score,0,50).bk(100);
                p.lt(90).bk(100);
                p.moveTo(190,300).text("等级:",15,40).rt(90).fd(100).oo(50,15);
                p.text(djpd+1,0,50).bk(90);
                p.lt(90);
                p.moveTo(-200,-200);
                for(int i=1;i<=50/2;i++)
                {
                    p.rr(200,200,14).pic(i%4+1);
                    wait(0.1);
                }
                
                
                
            }
            else
            {
                p.moveTo(0,150); 
                p.text("阿欧,答错了!",15,50);
                wait(1);
                p.moveTo(-50,0).text("正确答案是:",15,50);
                p.moveTo(150,0).text(ans,13,50);
                p.moveTo(200,0).text("余",15,50);
                p.moveTo(250,0).text(yu,13,50);
                
                wait(2);
                p.moveTo(0,-40).rr(800,100,14);
                p.moveTo(250,0).rr(500,100,14);
                p.moveTo(300,-100).pic(1);
                cuo++;
            }
        }
        else
        {
            if(da==ans)
            {
                p.moveTo(0,150);
                p.text("恭喜你,答对了!",15,50);
                score++;
                wait(1);
                int djpd=score/5;
                lv=djpd+1;
        
                if(lv==5) j++,lv=1,nd+=100;
        
                if(lv+j*4==20) s_j++;
                p.speed(10).moveTo(200,370).text("分数:",15,40).rt(90);
                p.fd(90).oo(50,15).text(score,0,50).bk(100);
                p.lt(90).bk(100);
                p.moveTo(190,300).text("等级:",15,40).rt(90).fd(100).oo(50,15);
                p.text(djpd+1,0,50).bk(90);
                p.lt(90);
                p.moveTo(-200,-200);
                for(int i=1;i<=50/2;i++)
                {
                    p.rr(200,200,14).pic(i%4+1);
                    wait(0.1);
                }
                
            }
            else
            {
                p.moveTo(0,150);
                p.text("阿欧,答错了!",15,50);
                wait(1);
                p.moveTo(-50,0).text("正确答案是:",15,50);
                p.moveTo(150,0).text(ans,13,100);
                wait(2);
                p.moveTo(0,0).rr(800,150,14);
                cuo++;
            }
            
        }
        
        if(cuo==20)
        {
            for(int i=1;i<=500;i++){
                int a1=rand(-350,350),b1=rand(-350,350);
                int a=rand(1,14),b=rand(1,14);
                p.moveTo(a1,b1);
                p.rr(100,100,8).r(100,100,0);
                p.fd(45).rr(100,20,0).lt(90).fd(40).rt(90).bk(10);
                for(int i=1;i<=rand(2,4);i++)
                {
                    int aa=rand(35 ,80);
                    p.c(0).bk(20).rt(90).down().fd(aa).bk(aa).up();
                    p.lt(90);
                }
                wait(0.01);
            }
            p.rr(10000,10000,2).moveTo(0,100).lt(90).up().fd(50).oo(20,15);
            p.bk(100).oo(20,15);
            p.fd(50).rt(90).bk(50).ee(50,20,15);
            p.moveTo(0,0);
            p.text("不好意思,您的电脑已崩溃,正在抢救中......",15,40);
            wait(rand(1,3));
            p.rr(10000,10000,2).moveTo(0,100).lt(90).up().fd(50).oo(20,15);
            p.bk(100).oo(20,15);
            p.fd(50).rt(90).bk(50).ee(50,20,15);
            p.moveTo(0,0);
            p.text("不好意思,您的电脑已崩溃,抢救失败。",15,40);
            wait(1.5);
            p.rr(10000,10000,2).text("正在关机......",15,40);
            wait(rand(1,3));
            p.rr(1000,1000,0);
            return 0;
        }
        
    }
    return 0;
}

2.坦克

void tanke1()
{
    p.up();
    p.picU(0);
    p.rr(60,40,0);
    p.rr(50,50,8);
    p.rr(25,25,0);
    p.fd(20).rr(10,40,0).bk(20);
}
void tanke2()
{
    p.rt(90);
    p.up();
    p.picU(0);
    p.rr(60,40,0);
    p.rr(50,50,8);
    p.rr(25,25,0);
    p.fd(20).rr(10,40,0).bk(20);
}
void tanke3()
{
    p.rt(180);
    p.up();
    p.picU(0);
    p.rr(60,40,0);
    p.rr(50,50,8);
    p.rr(25,25,0);
    p.fd(20).rr(10,40,0).bk(20);
}
void tanke4()
{
    p.lt(90);
    p.up();
    p.picU(0);
    p.rr(60,40,0);
    p.rr(50,50,8);
    p.rr(25,25,0);
    p.fd(20).rr(10,40,0).bk(20);
}
void paodan1()
{
    p.lt(90);
    pen.alp(0.7).c(8).ee(10,20).c(0).ee(10,20);
    pen.up().bk(20).rr(20,40,8).rr(20,10,0).fd(20).alp(1);
    p.rt(90);
}
void paodan2()
{
    p.rt(90);
    pen.alp(0.7).c(8).ee(10,20).c(0).ee(10,20);
    pen.up().bk(20).rr(20,40,8).rr(20,10,0).fd(20).alp(1);
    p.lt(90);
}
void paodan3()
{
    pen.alp(0.7).c(8).ee(10,20).c(0).ee(10,20);
    pen.up().bk(20).rr(20,40,8).rr(20,10,0).fd(20).alp(1);
}
void paodan4()
{
    p.rt(180);
    pen.alp(0.7).c(8).ee(10,20).c(0).ee(10,20);
    pen.up().bk(20).rr(20,40,8).rr(20,10,0).fd(20).alp(1);
    p.lt(180);
}
 
int a,b,c,s=0,l=0;
int tankex,tankey;
int paodanx,paodany;
int sp=20;//速度
int tankefx=1;//坦克方向
int pdfs=0;//是否发射
int pdfx;
int stonex,stoney;
int stonehua=0;//是否重新画石头
int cishu=0;//打中次数
int bsec;
double daoshu=60;
 
void stone()
{
    for(int i=1;i<=5;i++)
    {
    if(stonehua==0)
    {
        stonex=rand(-250,250);
        stoney=rand(-250,250);    
        stonehua=1;        
    }
    p.moveTo(stonex,stoney);
        stonex+=rand(-l,l);
        stoney+=rand(-l,l);
    p.rr(50,50,6);
    if(s==0)
    {
        a=rand(1,3);
        b=rand(1,3);
        c=rand(1,3);
        s=1;
    }
       
    if((a==2&&b==2)||(b==2&&c==2)||(a==2&&c==2))
    {
        p.text("日军间谍",15,12);
        l=2;
    }
    else
    if(a==3&&b==3&&c==3)
    {
        p.text("日本军官",15,12);
        l=3;
    }
    else
    {
        p.text("日军",15,18);
        l=1;
    }
    
    }
    
}
void check()
{
    
    if(paodanx>=stonex-30&&paodanx<=stonex+30&&paodany>=stoney-30&&paodany<=stoney+30)
    {
        s=0;
        stonehua=0;
        paodanx=0;
        paodany=0;
        pdfs=0; 
        cishu+=l;
    }
}
 
int main()
{
    p.picU(0);
    p.speed(10).hide().moveTo(0,0);
    
    p.text("空格键发射炮弹,攻击日本军,有120秒的时间。",0,25);
    p.up().bk(50).down().text("日军1分,日军间谍2分,日本军官3分。",0,25);
    wait(5);
    for(;;)
    {
        p.speed(10000000000000000000000000000).hide();
        p.rr(800,800,10);//绿色背景  
        if(getTime()>=120)
        {
            p.moveTo(-100,0);
            p.text(" 你一共获得",15,25);
            p.moveTo(0,0);
            p.text(cishu,15,30);
            p.moveTo(20,0);
            p.text(" 分",15,25);
            break;
        }
        int k=getKey();//检测键盘按键,根据不同的按键,计算坦克新的坐标
        if(k==37)
        {
            tankex-=sp;
            tankefx=4;
        }
        if(k==39)
        {
            tankex+=sp;
            tankefx=2;
        }
        if(k==38)
        {
            tankey+=sp;
            tankefx=1;
        }
        if(k==40)
        {
            tankey-=sp;
            tankefx=3;
        }
        if(k==32)//空格键
        {
            pdfs=1;
            pdfx=tankefx;
            paodanx=tankex;
            paodany=tankey;
        }
        
        stone();//画石头
        p.speed(10).hide();
        if(pdfs==1)
        {
            p.moveTo(paodanx,paodany);
            if(pdfx==1)paodany+=10;
            if(pdfx==2)paodanx+=10;
            if(pdfx==3)paodany-=10;
            if(pdfx==4)paodanx-=10;
            if(tankefx==4)
                paodan1();
            if(tankefx==2)
                paodan2();//画炮弹    
            if(tankefx==1)
                paodan3();
            if(tankefx==3)
                paodan4();
        }
        p.moveTo(tankex,tankey);//到坦克坐标,根据坦克方向画出坦克
        if(tankefx==1)tanke1();
        if(tankefx==2)tanke2();
        if(tankefx==3)tanke3();
        if(tankefx==4)tanke4();
        
        p.moveTo(0,-200);        
        p.text(120-getTime());//输出倒计时时间
        check();//检测是否时间结束
        wait(0.0001);
        p.cls();
    }
 
 
 
    
    
    return 0;
}

3.扫雷

输入坐标(先行后列),动作(0是点击开启,1是标记为地雷,2是取消标记)

int n,m,k;
bool book[45][45],map[45][45];
void open(int x,int y){
    p.moveTo(-m*10,n*10);
    p.fd(20*(y-1)).rt(90).fd(20*(x-1)).lt(90);
    p.rr(20,20,8).r(20,20);
}
void dfs(int posx,int posy){
    if(posx<1||posy<1||posx>n||posy>n||book[posx][posy]){
        return;
    }
    book[posx][posy]=true;
    int nearby_bombs=0;
    for(int x_plus=-1;x_plus<=1;x_plus++){
        for(int y_plus=-1;y_plus<=1;y_plus++){
            if(x_plus==0&&y_plus==0) continue;
            if(map[posx+x_plus][posy+y_plus]){
                nearby_bombs++;
            }
        }
    }
    open(posx,posy);
    if(nearby_bombs) p.text(nearby_bombs,0,15);
    else{
        for(int x_plus=-1;x_plus<=1;x_plus++){
            for(int y_plus=-1;y_plus<=1;y_plus++){
                if(x_plus==0&&y_plus==0) continue;
                dfs(posx+x_plus,posy+y_plus);
            }
        }
    }
}
int main(){
    p.hide().up().speed(10);
    p.text("goc扫雷",10,100);
    p.bk(100).text("作者:水马&田木",12,75);
    p.fd(350).text("BOOM!",1,200);
    wait(3);
    p.cls();
    p.text("输入行数、列数、大概地雷数");
    cin>>n>>m>>k;
    int dl=0;
    p.cls();
    p.moveTo(-m*10,n*10);
    for(int i=1;i<=n;i++) p.fd(20).text(i,7,10).bk(20).rt(90).fd(20).lt(90);
    p.lt(90);
    p.moveTo(-m*10,n*10);
    for(int i=1;i<=n;i++) p.fd(20).text(i,7,10).bk(20).lt(90).fd(20).rt(90);
    p.rt(180);
    p.moveTo(-m*10,n*10);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            map[i][j]=(rand(1,n*m)<=k);
            if(map[i][j]) dl++;
            p.rgb(i*8,200-j*6,i*7-j*5).rr(20,20,16).r(20,20).fd(20);
        }
        p.rt(90).fd(20).rt(90).fd(m*20).lt(180);
    }
    int temp=dl;
    int x,y,mod,biaoji;
    while(1){
       cin>>x>>y>>mod;
       p.moveTo(-m*10,n*10);
        if(mod==1){
            if(book[x][y]||biaoji==temp) continue;
            p.fd(20*(y-1)).rt(90).fd(20*(x-1)).lt(90);
            p.rr(20,20,1).r(20,20);
            if(map[x][y]) dl--;
            biaoji++;
            if(dl==0){
                p.cls();
                p.moveTo(0,0);
                p.text("通关!",250,250);
                return 0;
            }
        }
        else if(mod==0){
            if(map[x][y]){
                p.cls().rr(1000,1000,1).rr(600,600,14).text("Boom!",0,100);
                wait(3);
                return 0;
            }
            else dfs(x,y);
        }
        else{
            p.fd(20*(y-1)).rt(90).fd(20*(x-1)).lt(90);
            p.rgb(x*8,200-y*6,x*7-y*5).rr(20,20,16).r(20,20);
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值