c++游戏乒乓球源代码

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <math.h>
#define Framelen 80
#define Framedep 25
#define Pi 3.14
double xx=5,yy=15;
int x,y,bx=2,drct=20,bnum=40,hp=8;
bool end=0;
int brick[5][8]={{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1}};
void setpos(int x,int y)
{
    COORD pos={x,y};
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hOut, pos);
}
void drctmove(int speed,int drct)
{
    xx+=(cos((Pi/180)*drct))*speed;
    yy-=(sin((Pi/180)*drct))*speed;
    x=int(xx);y = int(yy);
    
}
void drawsq(int x1,int y1,int x2,int y2,char f)
{
    for(int i = x1;i <= x2;i ++)
    {
        setpos(i,y1);printf("%c",f);
    }
    for(int i = x1;i <= x2;i ++)
    {
        setpos(i,y2);printf("%c",f);
    }
    for(int i = y1;i <= y2;i ++)
    {
        setpos(x1,i);printf("%c",f);
    }
    for(int i = y1;i <= y2;i ++)
    {
        setpos(x2,i);printf("%c",f);
    }
}
void drawbrick()
{
    for(int i = 0;i < 5;i ++)
    {
        for(int j = 0;j < 8;j ++)
        {
            if(brick[i][j])
            {
                for(int k = 1;k <= 8;k ++)
                {
                    setpos(j*10+k+1,i*2+2);
                    printf("^");
                }
            }
            else
            {
                for(int k = 1;k <= 8;k ++)
                {
                    setpos(j*10+k+1,i*2+2);
                    printf(" ");
                }
            }
        }
    }
}
void drawboard(char f)
{
    for(int i = bx;i <= bx+8;i ++)
    {
        setpos(bx+i,Framedep-2);
        printf("%c",f);
    }
}
void collidetest()
{
    bool brk=0;
    if(x==2||x==Framelen-2)
    {
        drct=180-drct;
    }
    else if(y==2)
    {
        drct*=-1;
    }
    else if(y==Framedep-3)
    {
        for(int i=bx-1;i<=bx+9;i++)
        {
            if(bx+i==x)
            {
                drct*=-1;
                break;
            }
        }
    }
    else if(y==Framedep-1)
    {
        drct=20;
        xx=5;
        yy=15;
        hp--;
    }
    else if(y==11)
    {
        for(int i=0;i<8;i++)
        {
            for(int j=0;j<=10;j++)
            {
                if(x==i*10+j&&brick[4][i]==1)
                {
                    brick[4][i]=0;
                    drawbrick();
                    drct*=-1;
                    brk=1;
                    bnum--;
                    break;
                }
            }
            if(brk)
            {
                break;
            }
        }
    }
    else if(y==9)
    {
        for(int i=0;i<8;i++)
        {
            for(int j=0;j<=10;j++)
            {
                if(x==i*10+j&&brick[3][i]==1)
                {
                    brick[3][i]=0;
                    drawbrick();
                    drct*=-1;
                    brk=1;
                    bnum--;
                    break;
                }
            }
            if(brk)
            {
                break;
            }
        }
    }
    else if(y==7)
    {
        for(int i=0;i<8;i++)
        {
            for(int j=0;j<=10;j++)
            {
                if(x==i*10+j&&brick[2][i]==1)
                {
                    brick[2][i]=0;
                    drawbrick();
                    drct*=-1;
                    brk=1;
                    bnum--;
                    break;
                }
            }
            if(brk)
            {
                break;
            }
        }
    }
    else if(y==5)
    {
        for(int i=0;i<8;i++)
        {
            for(int j=0;j<=10;j++)
            {
                if(x==i*10+j&&brick[1][i]==1)
                {
                    brick[1][i]=0;
                    drawbrick();
                    drct*=-1;
                    brk=1;
                    bnum--;
                    break;
                }
            }
            if(brk)
            {
                break;
            }
        }
    }
    else if(y==3)
    {
        for(int i=0;i<8;i++)
        {
            for(int j=0;j<=10;j++)
            {
                if(x==i*10+j&&brick[0][i]==1)
                {
                    brick[0][i]=0;
                    drawbrick();
                    drct*=-1;
                    brk=1;
                    bnum--;
                    break;
                }
            }
            if(brk)
            {
                break;
            }
        }
    }
}
int main()
{
    system("color 0E");
    setpos(Framelen/2,0);
    printf("按下空格开始游戏!");
    setpos(Framelen/2,2);
    printf("A/D键操控反弹板");
    setpos(Framelen/2,4);
    printf("Maker :Yang Hanbo");
    char key;
    while(1)
    {
        key=getch();
        if(key==' ')
        {
            system("cls");
            break;
        }
    }
    drawsq(1,1,Framelen,Framedep,'*');
    drawbrick();
    drawboard('-');
    while(1)
    {
        setpos(x,y);printf(" ");
        drctmove(1,drct);
        setpos(x,y);printf("〇");
        collidetest();
        Sleep(20+bnum);
        if(kbhit())
        {
            key=getch();
            if(key=='a'||key=='d')
            {
                drawboard(' ');
                switch(key)
                {
                    case 'a':
                    {
                        if(bx >= 2)
                        {
                            bx--;
                            break;
                        }
                    }
                    case 'd':
                    {
                        if(bx<=34)
                        {
                            bx ++;
                            break;
                        }
                    }
                }
                drawboard('-');
            }
        }
         if(hp == 0)
         {
             system("cls");
             setpos(0,0);
            printf("Failed!");
              setpos(0,1);
            printf("Maker:Yang Hanbo");
            return 0;
        }
        if(bnum == 0)
        {
            system("cls");
             setpos(0,0);
            printf("Success!");
              setpos(0,1);
            printf("Maker:Yang Hanbo");
            return 0;
        }
        setpos(0,0);
        printf("HP:%i",hp);
    }
    return 0;
}

创作不易,随手点个赞吧。。。。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值