弹球-c++小游戏源码


#include<bits/stdc++.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#define jp(x) ((GetAsyncKeyState(x)&0x8000)?1:0)
using namespace std;
struct Button
{
    int x,y,color;
    const char *name;
    int len;
};
inline void GetPos(POINT &pt)
{
    HWND hwnd=GetForegroundWindow();
    GetCursorPos(&pt);
    ScreenToClient(hwnd,&pt);
    pt.y=pt.y/16;
    pt.x=pt.x/8;
}
inline void color(int a)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
inline void gto(int x,int y)
{
    COORD pos;
    pos.X=y;
    pos.Y=x;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
inline Button NewButton(int x,int y,int color,const char *name)
{
    Button t;
    t.x=x;
    t.y=y;
    t.name=name;
    t.color=color;
    t.len=strlen(name);
    gto(x,y),cout<<name;
    return t;
}
inline bool Preserve(Button A)
{
    gto(A.x,A.y),color(A.color);
    POINT pt;
    GetPos(pt);
    if(pt.y==A.x&&(pt.x>=A.y&&pt.x<=A.y+A.len))
    {
        if(KEY_DOWN(MOUSE_MOVED))return 1;
    }
    return 0;
}
inline void dis_mouse()
{
    ShowCursor(false);
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    GetConsoleCursorInfo(hOut,&cci);
    cci.bVisible=false;
    SetConsoleCursorInfo(hOut,&cci);
}
inline void print(int x,int y,int col,string c)
{
    color(col);
    y*=2;
    gto(x,y);
    cout<<c;
    color(7);
}
int ma[100][100]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                  {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                  {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                  {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                  {1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1},
                  {1,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,2,1},
                  {1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1},
                  {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                  {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                  {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                  {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
int lm=5,rm=5;
int scl=0,scr=0;
int bx=5,by=11;
int gogo;//1左上,2左,3左下,4右上,5右,6右下 
int fx[10]={0,-1, 0, 1,-1, 0, 1};
int fy[10]={0,-1,-1,-1, 1, 1, 1};
inline void printmap()
{
    for(register int i=0;i<=10;i++)
        for(register int j=0;j<=30;j++)
        {
            if(ma[i][j]==0)print(i,j,7,"  ");
            if(ma[i][j]==1)print(i,j,8,"■");
            if(ma[i][j]==2)print(i,j,4,"■");
            if(ma[i][j]==3)print(i,j,7,"●");
            gto(11,20);
            printf("%d:%d",scl,scr);
        }
}
int main()
{
    srand(time(NULL));
    gogo=rand()%6+1;
    dis_mouse();
    system("mode con cols=46 lines=16");
    print(1,0,7,"弹球");
    Button pvp=NewButton(5,0,7,">pvp");
    Button pvc=NewButton(7,0,7,">pvc");
    while(1)
    {
        if(Preserve(pvp))
        {
            printmap();
            while(1)
            {
                if(jp('W'))
                {
                    if(by==2)gogo=4;
                    if(lm>2)
                    {
                        ma[lm+1][1]=0;
                        print(lm+1,1,7,"  ");
                        lm--;
                        ma[lm-1][1]=2;
                        print(lm-1,1,4,"■");
                    }
                    Sleep(50);
                }
                if(jp('S'))
                {
                    if(by==2)gogo=6;
                    if(lm<8)
                    {
                        ma[lm-1][1]=0;
                        print(lm-1,1,7,"  ");
                        lm++;
                        ma[lm+1][1]=2;
                        print(lm+1,1,4,"■");
                    }
                    Sleep(50);
                }
                if(jp(38))
                {
                    if(by==21)gogo=1;
                    if(rm>2)
                    {
                        ma[rm+1][21]=0;
                        print(rm+1,21,7,"  ");
                        rm--;
                        ma[rm-1][21]=2;
                        print(rm-1,21,4,"■");
                    }
                    Sleep(50);
                }
                if(jp(40))
                {
                    if(by==21)gogo=3;
                    if(rm<8)
                    {
                        ma[rm-1][21]=0;
                        print(rm-1,21,7,"  ");
                        rm++;
                        ma[rm+1][21]=2;
                        print(rm+1,21,4,"■");
                    }
                    Sleep(50);
                }
                if(gogo==1)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=3;
                    if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=4;
                    if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    Sleep(100);
                }
                if(gogo==2)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
                    if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
                    print(bx,by,7,"●"); 
                    Sleep(100);
                }
                if(gogo==3)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=1;
                    if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
                    if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    Sleep(100);
                }
                if(gogo==4)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=6;
                    if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=1;
                    if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    Sleep(100);
                }
                if(gogo==5)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=2;
                    if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    Sleep(100);
                }
                if(gogo==6)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=4;
                    if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=3;
                    if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    Sleep(100);
                }
                if(scl==3)
                {
                    system("cls");
                    printf("player 1 wins!");
                    Sleep(3096);
                    system("cls");
                    scl=scr=0;
                    print(1,0,7,"弹球");
                    print(5,0,7,">pvp");
                    print(7,0,7,">pvc");
                    break;
                }
                if(scr==3)
                {
                    system("cls");
                    printf("player 2 wins!");
                    Sleep(3096);
                    system("cls");
                    scl=scr=0;
                    print(1,0,7,"弹球");
                    print(5,0,7,">pvp");
                    print(7,0,7,">pvc");
                    break;
                }
            }
        }
        if(Preserve(pvc))
        {
            printmap();
            while(1)
            {
                if(jp('W'))
                {
                    if(by==2)gogo=4;
                    if(lm>2)
                    {
                        ma[lm+1][1]=0;
                        print(lm+1,1,7,"  ");
                        lm--;
                        ma[lm-1][1]=2;
                        print(lm-1,1,4,"■");
                    }
                }
                if(jp('S'))
                {
                    if(by==2)gogo=6;
                    if(lm<8)
                    {
                        ma[lm-1][1]=0;
                        print(lm-1,1,7,"  ");
                        lm++;
                        ma[lm+1][1]=2;
                        print(lm+1,1,4,"■");
                    }
                }
                if(gogo==1)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=3;
                    if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=4;
                    if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    int isgo=rand()%5;
                    if(isgo!=0)
                    {
                        if(by==21)gogo=1;
                        if(rm>2)
                        {
                            ma[rm+1][21]=0;
                            print(rm+1,21,7,"  ");
                            rm--;
                            ma[rm-1][21]=2;
                            print(rm-1,21,4,"■");
                        }
                        Sleep(100);
                    }
                    Sleep(100);
                }
                if(gogo==2)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
                    if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
                    print(bx,by,7,"●"); 
                    Sleep(100);
                }
                if(gogo==3)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=1;
                    if(by==1&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=5;
                    if(by==1&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scr++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    int isgo=rand()%5;
                    if(isgo!=0)
                    {
                        if(by==21)gogo=3;
                        if(rm<8)
                        {
                            ma[rm-1][21]=0;
                            print(rm-1,21,7,"  ");
                            rm++;
                            ma[rm+1][21]=2;
                            print(rm+1,21,4,"■");
                        }
                        Sleep(100);
                    }
                    Sleep(100);
                }
                if(gogo==4)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==0)bx-=fx[gogo],by-=fy[gogo],gogo=6;
                    if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=1;
                    if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    int isgo=rand()%5;
                    if(isgo==0)
                    {
                        if(by==21)gogo=1;
                        if(rm>2)
                        {
                            ma[rm+1][21]=0;
                            print(rm+1,21,7,"  ");
                            rm--;
                            ma[rm-1][21]=2;
                            print(rm-1,21,4,"■");
                        }
                        Sleep(100);
                    }
                    Sleep(100);
                }
                if(gogo==5)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=2;
                    if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    Sleep(100);
                }
                if(gogo==6)
                {
                    print(bx,by,7,"  ");
                    bx+=fx[gogo],by+=fy[gogo];
                    if(bx==10)bx-=fx[gogo],by-=fy[gogo],gogo=4;
                    if(by==21&&ma[bx-fx[gogo]][by]==2)bx-=fx[gogo],by-=fy[gogo],gogo=3;
                    if(by==21&&ma[bx-fx[gogo]][by]!=2)ma[bx][by]=0,bx=5,by=11,ma[bx][by]=3,gogo=rand()%6+1,scl++,printmap(),Sleep(2048);
                    print(bx,by,7,"●");
                    int isgo=rand()%5;
                    if(isgo!=0)
                    {
                        if(by==21)gogo=3;
                        if(rm<8)
                        {
                            ma[rm-1][21]=0;
                            print(rm-1,21,7,"  ");
                            rm++;
                            ma[rm+1][21]=2;
                            print(rm+1,21,4,"■");
                        }
                        Sleep(100);
                    }
                    Sleep(100);
                }
                if(scl==3)
                {
                    system("cls");
                    printf("player 1 wins!");
                    Sleep(3096);
                    system("cls");
                    scl=scr=0;
                    print(1,0,7,"弹球");
                    print(5,0,7,">pvp");
                    print(7,0,7,">pvc");
                    break;
                }
                if(scr==3)
                {
                    system("cls");
                    printf("computer wins!");
                    Sleep(3096);
                    system("cls");
                    scl=scr=0;
                    print(1,0,7,"弹球");
                    print(5,0,7,">pvp");
                    print(7,0,7,">pvc");
                    break;
                }
            }
        }
    }
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SKCQTGZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值