【代码】Goc小游戏

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;
}

4.城市攻防战(C++)

外插一个C++游戏哈。

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD);
PROCSETCONSOLEFONT SetConsoleFont;
POINT Windowpos(){POINT pt;GetCursorPos(&pt);HWND h=GetForegroundWindow();ScreenToClient(h,&pt);pt.x=(pt.x+4)/10+0.5;pt.y=pt.y/8+0.5;swap(pt.x,pt.y);return pt;}
int mouse;POINT pt;float kx,ky;int ti(float a) {return ((int)(a*10+5))/10;}
void Print(int a){HMODULE hKernel32 = GetModuleHandle("kernel32");SetConsoleFont = (PROCSETCONSOLEFONT)GetProcAddress(hKernel32,"SetConsoleFont");SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),a);}
void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
//Setpos中,横5和竖5是一样的长度,在C,N中我们把y*2存入,/2输出 ,所以 支持4.5 
struct node {float x,y,fx,fy;int kind,staytime,blood,CD,enemy,turn=6;bool life;} M[100001],E[100001];//Mytower Enemy Bullet
struct bullet {float x,y,vx,vy,h;int kind,staytime,enemy,endx,endy,up;bool life;} B[100001];//,ice,medical,durg,
float Espeed[7]=    {-1,    0.14,   0.2,    0.08,   0.3,    0.3,    0.1};//敌人速度 
float Bspeed[7]=    {-1,    0.6,    0.6,    0.6,    1,      0.1,    0.6};//打塔的子弹速度 
float Bfspeed[7]=   {-1,    5,    5,    5,     1,    5,  5};//打敌的子弹速度 
float MR[7]=        {-1,    12,     10,     25,     8,      15,     20};
float ER[7]=        {-1,    5,      1.8,    8,      7,      1,      10};
int MCDmax[7]=      {10000, 10,     7,      60,     2,      90,     50};
int ECDmax[7]=      {-1,    30,     10,     40,     25,     1,      40};
int Mblood[7]=      {-1,1000,1000,1000,1000,1000,1000};
int Eblood[7]=      {-1,100,200,400,800,1600,3200};
bool Zhan[50][50];
//Pk_Pb : personkill_or_placeboom
int m[51][101],n[51][101],o[51][101],T,CD,CDmax,Day,ml,mr,el,er,bl,br,money=1e9,Level=1,endless;
void Color(int a)
{
    if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
    if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
    if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
    if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    if(a>=6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
}
void C(int i,int j){Color(0);
    Setpos(i,j/2.0);int N=n[i][j];if(N==-1) printf(" ");if(N>=0&&N<=9) printf("%d",N);
    if(N==-2) printf("+");if(N==-3) Color(5),printf("+"),n[i][j]=-1,o[i][j]=4;if(N==-4) Color(3),printf("+"),n[i][j]=-1,o[i][j]=4;
    //以下字符占2格 
    if(N==11) Color(1),printf("О");if(N==13) Color(3),printf("◎");if(N==14) Color(4),printf("+");if(N==16) Color(5),printf("◎");
    if(N==-11) Color(1),printf("⊙");if(N==-12) Color(2),printf("⊙");if(N==-13) Color(3),printf("⊙");if(N==-14) Color(4+rand()%2),printf("█");if(N==-15) Color(1),printf("●");if(N==-16) Color(5),printf("¤");
    if(N==49) Color(0),printf("营");if(N==50) Color(0),printf("墙");if(N==51) Color(1),printf("●");if(N==52) Color(2),printf("■");if(N==53) Color(3),printf("▲");if(N==54) Color(4),printf("▼");if(N==55) Color(6),printf("◆");if(N==56) Color(5),printf("★");
    if(N==81) Color(1),printf("○");if(N==82) Color(2),printf("□");if(N==83) Color(3),printf("△");if(N==84) Color(4),printf("▽");if(N==85) Color(6),printf("◇");if(N==86) Color(5),printf("☆");
    if(N==1001)  printf("╔");//if(N==1002)  printf("╦");
    if(N==1003)  printf("╗");if(N==1004)  printf("╠");if(N==1005)  printf("╣");if(N==1006)  printf("╚");if(N==1007)  printf("╩");if(N==1008)  printf("╝");
    if(N==1011)  printf("↖");if(N==1012)  printf("↑");if(N==1013)  printf("↗");if(N==1014)  printf("←");if(N==1015)  printf("→");if(N==1016)  printf("↙");if(N==1017)  printf("↓");if(N==1018)  printf("↘");

}
void Map(int a){if(a==1){for(int i=1;i<=50;i++)for(int j=1;j<=100;j++){
if(n[i][j]!=m[i][j]||T%800==0){C(i,j);if(n[i][j]>=50||n[i][j]<=-10) n[i][j+1]=-1,j++;}
if(o[i][j]==1) C(i,j);if(o[i][j]>0) o[i][j]--;
}
for(int i=1;i<=50;i++)for(int j=1;j<=100;j++){m[i][j]=n[i][j];}}
}
void N(float x,float y,int w){int xx=(int)(x+0.5),yy=(int)(y*2.0+0.5);if(xx>49||yy>98||xx<1||yy<1) return;else n[xx][yy]=w;}
int Turn[9][2]={{0,0},{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
void Circle(int x,int y,int kind,int ex)
{int R;
    if(kind==1){int k=M[ex].kind;R=MR[k];int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-2);
    if(k==3) for(int i=0;i<=360;i+=15) R=10,N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-2);
    }
    if(kind==-1){int k=M[ex].kind;R=MR[k];int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-1);
    if(k==3) for(int i=0;i<=360;i+=15) R=10,N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-1);
    }
    if(kind==2){R=ex;int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-3);
    }
    if(kind==-2){R=ex;int next=20-0.5*R;
    for(int i=0;i<=360;i+=next) N(x+R*sin(3.1416*i/180),y+R*cos(3.1416*i/180),-4);
    }
}
void Cout(int a,int kind){
    if(kind==1)//炮台
    {
        float x=M[a].x,y=M[a].y;
        N(x,y,M[a].kind+50);
        if(a==1) N(x,y,49);
        int i=1;if(M[a].blood>=100) i=2;
        for(i;i<=8;i++) N(x+Turn[i][0],y+Turn[i][1],1000+i),Zhan[(int)x+Turn[i][0]][(int)y+Turn[i][1]]=1;
        int t=M[a].turn;
//      N(Turn[t][0],y+Turn[t][1],1010+t);
        int b=max(0,M[a].blood),bb=0;while(b>0){bb++;N(x-1,y+1-0.5*bb,b%10);b/=10;}
    }
    if(kind==2)//人 
    {
        float x=E[a].x,y=E[a].y;
        N(x,y,E[a].kind+80);
        N(x+1,y,1012);//
        Zhan[(int)x][(int)y]=Zhan[(int)x+1][(int)y]=1;
//      N(x+1,y,1010+E[a].turn);
        int b=max(0,E[a].blood),bb=0;while(b>0){bb++;N(x-1,y+1-0.5*bb,b%10);b/=10;}
    }
    if(kind==3)//对塔子弹 
    {
        float x=B[a].x,y=B[a].y;
        N(x,y,10+B[a].kind);
    }
    if(kind==4)//对人子弹 
    {
        float x=B[a].x,y=B[a].y;
        N(x-B[a].h,y,-10+B[a].kind);
    }
}
int Find_enemy(int Who,int good_or_bad){
    int ans=-1,r=rand()%2;float ansx=1e9,x;//搜敌人 
if(good_or_bad>=1){float X=M[Who].x,Y=M[Who].y;
    if(good_or_bad==2) X=E[Who].x,Y=E[Who].y;
    for(int i=el;i<=er;i++){if(E[i].life==0) continue;x=sqrt((E[i].x-X)*(E[i].x-X)+(E[i].y-Y)*(E[i].y-Y));
    if(good_or_bad==2&&E[i].kind==4) continue;
    if(M[Who].kind==3&&x<10) continue;//迫击炮 
    if(M[Who].kind==6&&ans!=-1&&ansx>x) ansx=x;//火箭炮
    if(ansx>x) ansx=x,ans=i;
    if(ansx==x) {int r=rand()%2;if(r==1) ansx=x,ans=i;}}}
    if(good_or_bad==0){float X=E[Who].x,Y=E[Who].y;for(int i=ml;i<=mr;i++) {if(M[i].life==0) continue;x=sqrt((M[i].x-X)*(M[i].x-X)+(M[i].y-Y)*(M[i].y-Y));if(ansx>x) ansx=x,ans=i;if(ansx==x) {int r=rand()%2;if(r==1) ansx=x,ans=i;}}}
    return ans;
}
void Find_boomkill(int Who,float r,bool good_or_bad,int kill){
    float x,X=B[Who].x,Y=B[Who].y;int kk=(float)kill/2.5;kill+=rand()%kk-kk/5;
    if(good_or_bad==1){for(int i=el;i<=er;i++){if(E[i].life==0) continue;x=sqrt((E[i].x-X)*(E[i].x-X)+(E[i].y-Y)*(E[i].y-Y));if(r>=x) E[i].blood=min(E[i].blood-kill,Eblood[E[i].kind]+Day+50);}
}//搜敌人
    else{for(int i=ml;i<=mr;i++){if(M[i].life==0) continue;x=sqrt((M[i].x-X)*(M[i].x-X)+(M[i].y-Y)*(M[i].y-Y));if(r>=x) M[i].blood-=kill;}
}//搜炮台
}
void Die(){
    for(int i=ml;i<=mr;i++){
        if(M[i].blood<=0) M[i].life=0;
//      if(M[i].life==0&&i==ml) ml++;
    }
    for(int i=el;i<=er;i++){
        if(E[i].blood<=0) E[i].life=0;
//      if(E[i].life==0&&i==el) el++;
    }
    for(int i=bl;i<=br;i++){
        if(B[i].x+B[i].vx<1||B[i].x+B[i].vx>49||B[i].y+B[i].vy<1||B[i].y+B[i].vy>98) {B[i].life=0;}
        if(B[i].staytime>=100) B[i].life=0;
//      if(B[i].life==0&&i==bl) bl++;
    }
//  if(el>er) el=er=0,memset(E,0,sizeof(E));if(bl>br) bl=br=0,memset(B,0,sizeof(B));
}
void Move(int a){
    if(a==2)
    {
    for(int i=ml;i<=mr;i++){if(M[i].life==0) continue;Cout(i,1);}
    for(int i=el;i<=er;i++){if(E[i].life==0) continue;Cout(i,2);}
    return;
    }
    for(int i=ml;i<=mr;i++){
        if(M[i].life==0) continue;
        else{M[i].staytime++;int e=M[i].enemy;if(E[e].life==0) M[i].enemy=-1;

            if(M[i].kind==5&&M[i].enemy==-1&&M[i].CD<=70&&T%2==0) M[i].CD++;
            if(M[i].kind==0&&M[i].blood<=500&&T%20==0) M[i].blood++;
        if(M[i].enemy==-1||M[i].kind==4) M[i].enemy=Find_enemy(i,1);//喷火器 
        if(M[i].enemy!=-1)
    {int k=M[i].enemy;
        float X=M[i].x,Y=M[i].y,Ax=E[k].x-X,Ay=E[k].y-Y;if(Ay==0) Ay=1e-6;float Turnn=abs(Ax/Ay*1.0),Dis=sqrt((E[k].x-X)*(E[k].x-X)+(E[k].y-Y)*(E[k].y-Y));

        if(Dis>MR[M[i].kind]){M[i].enemy=-1;}
        else
        {M[i].CD++;
            if((M[i].kind!=6&&M[i].CD>=MCDmax[M[i].kind])||(M[i].kind==6&&M[i].CD<=21&&M[i].CD%4==0))//火箭炮 
            {
            if(M[i].kind==6) M[i].enemy=Find_enemy(i,1);
            if(Turnn>=sqrt(2)+1){if(Ay>0) M[i].turn=2;else M[i].turn=7;}
            else if(Turnn>=1.0/(sqrt(2)+1)*1.0){if(Ax>0&&Ay>0) M[i].turn=1;else if(Ax<0&&Ay>0) M[i].turn=3;else if(Ax<0&&Ay<0) M[i].turn=8;else M[i].turn=6;}
            else {if(Ax>0) M[i].turn=5;else M[i].turn=4;}
            br++,B[br].x=X,B[br].y=Y;
            B[br].kind=-M[i].kind;///
            B[br].life=1,B[br].enemy=M[i].enemy,B[br].endx=E[M[i].enemy].x,B[br].endy=E[M[i].enemy].y,B[br].staytime=0;
            }
            if(M[i].CD>=MCDmax[M[i].kind]) M[i].CD=0;
        }
    }Cout(i,1);}}
    for(int i=el;i<=er;i++){
        if(E[i].life==0) continue;
        else{E[i].staytime++;E[i].CD++;
        int e=E[i].enemy;if(M[e].life==0||(E[i].kind==4&&E[e].life==0)) E[i].enemy=-1;
//        if(T%100==1) E[i].enemy=-1;
        if(E[i].enemy==-1) {E[i].enemy=Find_enemy(i,0);if(E[i].kind==4) E[i].enemy=Find_enemy(i,2);}
        if(E[i].enemy!=-1){int k=E[i].enemy;int Mkx=M[k].x;int Mky=M[k].y;if(E[i].kind==4) Mkx=E[k].x,Mky=E[k].y;
        float X=E[i].x,Y=E[i].y;float Dis=sqrt((Mkx-X)*(Mkx-X)+(Mky-Y)*(Mky-Y));
        float Ax=Mkx-X,Ay=Mky-Y,S=Espeed[E[i].kind];if(Ay==0) Ay=1e-6;float Turnn=abs(Ax/Ay*1.0);
        if(Dis>ER[E[i].kind]){float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;E[i].x+=vx,E[i].y+=vy;}
        else{
        if(E[i].CD>=ECDmax[E[i].kind]){
//        if(Turnn>=sqrt(2)+1){if(Ay>0) E[i].turn=7;else E[i].turn=2;}
//        else if(Turnn>=1.0/(sqrt(2)+1)*1.0){if(Ax>0&&Ay>0) E[i].turn=8;else if(Ax<0&&Ay>0) E[i].turn=6;else if(Ax<0&&Ay<0) E[i].turn=1;else E[i].turn=3;}
//        else {if(Ax>0) E[i].turn=4;else E[i].turn=5;}

        if(E[i].kind==5) E[i].blood=-1;//炮灰 ///
        if(E[i].kind==4){
            br++,B[br].x=X,B[br].y=Y;
            B[br].kind=4;///
            B[br].life=1,B[br].enemy=E[i].enemy,B[br].endx=E[E[i].enemy].x,B[br].endy=E[E[i].enemy].y,B[br].staytime=0;
        }
        else{
        br++,B[br].x=X,B[br].y=Y;
        B[br].kind=E[i].kind;///
        B[br].life=1,B[br].enemy=E[i].enemy,B[br].endx=M[E[i].enemy].x,B[br].endy=M[E[i].enemy].y,B[br].staytime=0;
        }

        E[i].CD=0;}
        }
        }Cout(i,2);
        }
    }
    for(int i=bl;i<=br;i++){
        if(B[i].life==0) continue;
        else if(B[i].kind>0)//对塔子弹 >0
        {
            B[i].staytime++;
            int k=B[i].enemy;
            int Mkl=M[k].life,Mkx=M[k].x,Mky=M[k].y;
            if(B[i].kind==4) Mkl=B[k].life,Mkx=B[k].x,Mky=B[k].y;
            if(k!=-1&&Mkl==1) B[i].endx=Mkx,B[i].endy=Mky;
            float kx=B[i].endx,ky=B[i].endy,X=B[i].x,Y=B[i].y;float Ax=kx-X,Ay=ky-Y,S=Bspeed[B[i].kind];float Dis=sqrt(Ax*Ax+Ay*Ay);float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;
            B[i].x+=vx,B[i].y+=vy;//别改,对的! 
            if(Dis<=S){
                //打中了,减血 
                B[i].x=B[i].endx,B[i].y=B[i].endy;
                if(B[i].kind==1) Find_boomkill(i,1.5,0,20),Circle(B[i].endx,B[i].endy,-2,1);
                if(B[i].kind==2) Find_boomkill(i,1.5,0,10),Circle(B[i].endx,B[i].endy,-2,1);
                if(B[i].kind==3) Find_boomkill(i,3,0,20),Circle(B[i].endx,B[i].endy,-2,3);
                if(B[i].kind==4) Find_boomkill(i,2,1,-5),Circle(B[i].endx,B[i].endy,-2,2);
                if(B[i].kind==5) Find_boomkill(i,3,0,50),Circle(B[i].endx,B[i].endy,-2,3);//炮灰 
                if(B[i].kind==6) Find_boomkill(i,2,0,20),Circle(B[i].endx,B[i].endy,-2,2);
                B[i].life=0;continue;
            }
            Cout(i,3);
        }
        else//对人子弹 <0
        {
            B[i].staytime++;
            int k=B[i].enemy;if(k!=-1&&E[k].life==1) B[i].endx=E[k].x,B[i].endy=E[k].y;
            float kx=B[i].endx,ky=B[i].endy,X=B[i].x,Y=B[i].y;float Ax=kx-X,Ay=ky-Y,S=Bfspeed[-B[i].kind];float Dis=sqrt(Ax*Ax+Ay*Ay);float vx=Ax*S/Dis*1.0,vy=Ay*S/Dis*1.0;

            if(B[i].kind==-3){B[i].x+=1.0/(49.0-B[i].staytime)*Ax;B[i].y+=1.0/(49.0-B[i].staytime)*Ay;

            if(T%2==0){
            if(B[i].up==1){if(B[i].h<3) B[i].h++;else if(B[i].h<6) B[i].h+=0.5;else B[i].up++;}else if(B[i].up<=6) B[i].up++;else{if(B[i].h>3) B[i].h-=0.5;else B[i].h--;}}
            }
            else B[i].x+=vx,B[i].y+=vy;//抛物线
            if(B[i].kind==-3&&B[i].staytime>=48) {B[i].x=B[i].endx,B[i].y=B[i].endy,Find_boomkill(i,5,1,30),Circle(B[i].endx,B[i].endy,2,4);B[i].life=0;continue;}
            else if(B[i].kind!=-3&&Dis<=S)//打中了,减血 
            {
                if(B[br].kind==-2) B[i].endx+=rand()%7-3,B[i].endy+=rand()%7-3;//重机枪 
                B[i].x=B[i].endx,B[i].y=B[i].endy;
                if(B[i].kind==-1) Find_boomkill(i,2,1,20),Circle(B[i].endx,B[i].endy,2,2);
                if(B[i].kind==-2) Find_boomkill(i,2,1,20),Circle(B[i].endx,B[i].endy,2,2);
                if(B[i].kind==-4) Find_boomkill(i,2,1,5),Circle(B[i].endx,B[i].endy,2,2);
                if(B[i].kind==-5) Find_boomkill(i,3,1,120),Circle(B[i].endx,B[i].endy,2,3);
                if(B[i].kind==-6) Find_boomkill(i,3,1,40),Circle(B[i].endx,B[i].endy,2,3);
                B[i].life=0;continue;
            }
            Cout(i,4);
        }
    }
    Die();//开始处理 life=0,前面不要有 life=0 
}
void StartWar(int D)
{
  for(int i=-1;i<=(int)T/1000;i++){
    int XY=rand()%4,W=rand()%49+1,x,y,k,R=rand()%100;
    if(Level==2) XY=3;if(Level==3) XY=3*(rand()%2);
    if(XY==0) x=1,y=W;if(XY==1) x=49,y=W;if(XY==2) x=W,y=1;if(XY==3) x=W,y=49;
    k=rand()%6+1;///
    er++,E[er].x=x,E[er].y=y,E[er].kind=k,E[er].life=1,E[er].blood=Eblood[k]+Day;
  }
}
void Start()
{Color(0);
money=1e9;
    Setpos(51,0),printf("┏━━┓┏━━┓┏━━┓┏━━┓┏━━┓┏━━┓");
    Setpos(52,0),printf("┃$100┃┃$120┃┃$150┃┃$180┃┃$200┃┃$250┃");
    Setpos(53,0),printf("┃ ● ┃┃ ■ ┃┃ ▲ ┃┃ ▼ ┃┃ ◆ ┃┃ ★ ┃");Setpos(53,30),printf("Money: %d     ",money);
    Setpos(54,0),printf("┗━━┛┗━━┛┗━━┛┗━━┛┗━━┛┗━━┛");Setpos(53,40),printf("Day: %d     ",Day);
}
void Click()
{
	money=1e9;
    int What;
    pt=Windowpos();
    if(pt.x<50||pt.y>25) return;
    else What=pt.y/4+1;
    if(What==1) if(money>=100) money-=100;else return;
    if(What==2) if(money>=120) money-=120;else return;
    if(What==3) if(money>=150) money-=150;else return;
    if(What==4) if(money>=180) money-=180;else return;
    if(What==5) if(money>=200) money-=200;else return;
    if(What==6) if(money>=250) money-=250;else return;
    Color(0),Setpos(53,30),printf("Money: %d     ",money);
    mr++;M[mr].x=25;M[mr].kind=What;M[mr].blood=Mblood[What];M[mr].life=1;M[mr].CD=MCDmax[What]-1;
    while(mouse)
    { 
        mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
        pt=Windowpos();
        M[mr].x=min(48,max(2,(int)pt.x)),M[mr].y=min(48,max(2,(int)pt.y));
        Circle(M[mr].x,M[mr].y,1,mr);
        Move(2);Map(1);Sleep(30);
        for(int i=0;i<=8;i++) N(M[mr].x+Turn[i][0],M[mr].y+Turn[i][1],-1),N(M[mr].x+Turn[i][0],M[mr].y+Turn[i][1]+0.5,-1); 
        Circle(M[mr].x,M[mr].y,-1,mr);
    }
    system("cls");memset(n,-1,sizeof(n));memset(m,-1,sizeof(m));Start();
}
void Menu()
{
    system("mode con cols=50 lines=28");Print(1);Color(0);
    Setpos(5,7);cout<<"欢迎来到  海岛奇胎  !";
    Setpos(7,12);cout<<"作者:胎神大大";
    Setpos(8,12);cout<<"原名:城市守卫战 3.0";
    Setpos(10,2);cout<<"规则:见城市守卫战,略有调整,可以自己摸索!";
    Setpos(12,5);cout<<"请选择地图:";Setpos(13,7);cout<<"1.围城  ";Setpos(14,7);cout<<"2.长城  ";Setpos(15,7);cout<<"3.王者  ";Setpos(16,7);cout<<"4.放射  ";Setpos(17,7);cout<<"5.真空(魔鬼难度)";Setpos(19,7);cout<<"输入负数则开启无尽模式";Setpos(20,9);cout<<"例:-1:无尽围城";
    endless=0;A:char a=_getch();if(a=='-') {endless=1;goto A;}else if(a<'1'||a>'5') goto A;else Level=a-'0';
    system("mode con cols=100 lines=56");Print(2);
}
int main(){
	money=1e9;
    CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
    St:Menu();Start();
    memset(n,-1,sizeof(n));memset(m,-1,sizeof(m));memset(M,0,sizeof(M));memset(E,0,sizeof(E));memset(B,0,sizeof(B));
    T=ml=mr=el=er=bl=br=0;CDmax=160;Day=1;
    money=1000;if(Level==5) money=1500;
    mr++,M[mr].x=25,M[mr].y=25,M[mr].kind=0,M[mr].life=1,M[mr].blood=2000;
    if(Level==2) M[mr].y=2;
    if(Level==3) M[mr].x=48,M[mr].y=2;
if(Level==1) for(int i=0;i<=360;i+=30) mr++,M[mr].x=25+10*sin(3.1416*i/180),M[mr].y=25+10*cos(3.1416*i/180),-2,M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==2) for(int i=5;i<50;i+=6) mr++,M[mr].x=i,M[mr].y=20,M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=i,M[mr].y=10,M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==3) for(int i=-90;i<=0;i+=45) mr++,M[mr].x=48+8*sin(3.1416*i/180),M[mr].y=2+8*cos(3.1416*i/180),-2,M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=48+16*sin(3.1416*i/180),M[mr].y=2+16*cos(3.1416*i/180),-2,M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=48+24*sin(3.1416*i/180),M[mr].y=2+24*cos(3.1416*i/180),-2,M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
if(Level==4) for(int i=30;i<=390;i+=60) mr++,M[mr].x=25+8*sin(3.1416*i/180),M[mr].y=25+8*cos(3.1416*i/180),-2,M[mr].kind=0,M[mr].life=1,M[mr].blood=500,mr++,M[mr].x=25+15*sin(3.1416*i/180),M[mr].y=25+15*cos(3.1416*i/180),-2,M[mr].kind=0,M[mr].life=1,M[mr].blood=500;
    while(M[1].life==1)
    {
        T++;
        memset(n,-1,sizeof(n));//这里默认全输空格 
        //鼠标,键盘,暂停操作
        mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
        pt=Windowpos();N(pt.x,pt.y,-2);
        if(mouse) Click();
        if(Day>=100&&endless==0) break;
        CD--;if(CD<=0){CD=CDmax;StartWar(Day);Day++;Setpos(53,40),printf("Day: %d     ",Day);}
            if(T%50==0) money=min(money+10,1000),Setpos(53,30),printf("Money: %d     ",money);
        Move(1);Map(1);Sleep(30);
    }
    if(Day>=100) {system("color 6E"),Sleep(1000);for(int i=1;i<=1000;i++) cout<<"YOU WIN !!  ";system("pause");system("color 0F");}
    else {system("color 7F"),Sleep(1000);for(int i=1;i<=1000;i++) cout<<"GAME OVER...  ";system("pause");system("color 0F");}
    system("cls");
    goto St;
    return 0;
}

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package 华容道; import java.awt.*; import java.awt.event.*; //主函数 public class Main { public static void main(String[] args) { new Hua_Rong_Road(); } } //人物按钮颜色 class Person extends Button implements FocusListener{ int number; Color c=new Color(255,245,170); Person(int number,String s) { super(s); setBackground(c);//人物的颜色背景是黄色 this.number=number; c=getBackground(); addFocusListener(this);//好像是焦点监听器 } public void focusGained(FocusEvent e) { setBackground(Color.red);//只要单击该按钮则按钮变颜色 } public void focusLost(FocusEvent e) { setBackground(c);//上一个按钮回复原先的颜色 } } //华容道总类 class Hua_Rong_Road extends Frame implements MouseListener,KeyListener,ActionListener{ Person person[] = new Person[10]; Button left,right,above,below; Button restart = new Button("Start");//重新开始按钮 public Hua_Rong_Road() { init(); setBounds(100,100,320,360); setVisible(true);//设置Frame为可见,默认为不可见 validate(); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); } public void init() { setLayout(null); add(restart); restart.setBounds(100, 320, 120, 25); restart.addActionListener(this); String name[]={"我","陆逊","姜维","陈宫","许攸","邓艾","周瑜","庞统","诸葛亮","贾诩"}; for(int k=0;k<name.length;k++) { person[k]=new Person(k,name[k]); person[k].addMouseListener(this); person[k].addKeyListener(this); add(person[k]); }//为所有的按钮注册所需的东西 person[0].setBounds(104, 54, 100, 100); person[1].setBounds(104,154, 100, 50); person[2].setBounds(54, 154, 50, 100); person[3].setBounds(204, 154, 50, 100);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值