/ Vijos / 讨论 / 游戏 /

某沙雕放置加打子弹小游戏(以及某打油诗。。。。。。)

上讨论要支持,
身一人讨转发,
枕难眠辗床铺。

上平台抢关注,
卡难驻易赞助,
各位新年快乐!

BUG堆成山,不要介意......

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <windows.h>
#include <ctime>
#include<fstream>
#include <conio.h>
using namespace std;

void output(char a[20][20],int n,int m)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
            cout<<a[i][j]<<" ";
    cout<<endl;
    }   
}
char a[20][20]={{'|','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','|',},
                  {'|','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','|',},
            };
int pdzd=0;//判定是否按下子弹 
int zlie,zheng;//子弹的行和列 
char scsr=0,scsr1=0;
char shu,pds,zf;
char name;
int n=20,m=20;
int pd1=0,pd2=0,pd3=0;
int lie,heng;//列坐标和横坐标 
void manjiang(char *p);
DWORD WINAPI szd(LPVOID argv)
{
    while(1)
    {
        int ppdd=0;
        if(pdzd==1)
        {
            if(scsr=='d')
            {
                zlie=lie,zheng=heng; 
                while(a[zlie][zheng]!='_'&&a[zlie][zheng]!='|'&&ppdd==0)
                {
                    system("cls");
                    //if(a[zlie][zheng]!='0')
                    //{
                        if(pds=='w'||pds=='d'||pds=='a'||pds=='s'||pds=='j')
                        {
                            if(a[zlie][zheng]=='>')
                                a[zlie][zheng]=' ';
                        }
                        zheng++;
                        if(a[zlie][zheng]==' '||a[zlie][zheng]=='>')
                            a[zlie][zheng]='>'; 
                        if(a[zlie][zheng]=='.')
                            a[zlie][zheng]=' ',ppdd=1;
                        if(a[zlie][zheng]=='*')
                            a[zlie][zheng]='*'; 
                    //}
                    output(a,n,m);
                    cout<<endl;
                    cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
                    Sleep(100);
                }
                pdzd=0,ppdd=0;  
            }
            if(scsr=='a')
            {
                zlie=lie,zheng=heng; 
                while(a[zlie][zheng]!='_'&&a[zlie][zheng]!='|'&&ppdd==0)
                {
                    system("cls");
                    //if(a[zlie][zheng]!='0')
                    //{
                        if(pds=='w'||pds=='d'||pds=='a'||pds=='s'||pds=='j')
                        {
                            if(a[zlie][zheng]=='<')
                                a[zlie][zheng]=' ';
                        }
                        zheng--;
                        if(a[zlie][zheng]==' '||a[zlie][zheng]=='<')
                            a[zlie][zheng]='<'; 
                        if(a[zlie][zheng]=='.')
                            a[zlie][zheng]=' ',ppdd=1;
                        if(a[zlie][zheng]=='*')
                            a[zlie][zheng]='*';
                    //}
                    output(a,n,m);
                    cout<<endl;
                    cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
                    Sleep(100);
                }
                pdzd=0,ppdd=0;  
            }
            if(scsr=='w')
            {
                zlie=lie,zheng=heng; 
                while(a[zlie][zheng]!='_'&&a[zlie][zheng]!='|'&&ppdd==0)
                {
                    system("cls");
                    //if(a[zlie][zheng]!='0')
                    //{
                        if(pds=='w'||pds=='d'||pds=='a'||pds=='s'||pds=='j')
                        {
                            if(a[zlie][zheng]=='^')
                                a[zlie][zheng]=' ';
                        }
                        zlie--;
                        if(a[zlie][zheng]==' '||a[zlie][zheng]=='^')
                            a[zlie][zheng]='^'; 
                        if(a[zlie][zheng]=='.')
                            a[zlie][zheng]=' ',ppdd=1;
                        if(a[zlie][zheng]=='*')
                            a[zlie][zheng]='*';
                    //}
                    output(a,n,m);
                    cout<<endl;
                    cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
                    Sleep(100);
                }
                pdzd=0,ppdd=0;  
            }
            if(scsr=='s')
            {
                zlie=lie,zheng=heng; 
                while(a[zlie][zheng]!='_'&&a[zlie][zheng]!='|'&&ppdd==0)
                {
                    system("cls");
                    //if(a[zlie][zheng]!='0')
                    //{
                        if(pds=='w'||pds=='d'||pds=='a'||pds=='s'||pds=='j')
                        {
                            if(a[zlie][zheng]=='v')
                                a[zlie][zheng]=' ';
                        }
                        zlie++;
                        if(a[zlie][zheng]==' '||a[zlie][zheng]=='v')
                            a[zlie][zheng]='v'; 
                        if(a[zlie][zheng]=='.')
                            a[zlie][zheng]=' ',ppdd=1;
                        if(a[zlie][zheng]=='*')
                            a[zlie][zheng]='*';
                    //}
                    output(a,n,m);
                    cout<<endl;
                    cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
                    Sleep(100);
                }
                pdzd=0,ppdd=0;  
            }
        }
    }
    return 0;
}
void shang()
{
    cout<<"=============================================================================="<<endl;
}
void xia()
{
    cout<<"=============================================================================="<<endl;
}
/*char a[20][20]={{'!','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',},
                  {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','!',},
            };*/ 

int main()
{
    //这里是剧情
    //jq1:lie=19,heng=19
    //jq2:lie=0,heng=0
    //...... 
    
    
    
    manjiang("这是一个简单的绘画板,你只需要按WASD键走路(N键退出),想留下绘画痕迹就输入与字符有关的数\n");
    manjiang("可放置物品代表的含义:\n");
    manjiang("|:竖墙,只能纵向穿过,子弹无法击破\n"); 
    manjiang("_:横墙,只能横向穿过,子弹无法击破\n");
    manjiang(".:木板,穿不过,子弹可以击破\n");
    manjiang("*:草丛,可以穿过,子弹也可以穿过\n");
    manjiang("注:发射子弹时尽量不要走动,向同一个方向发射子弹第二次需要多摁三下(不能连续发两发)\n");
    manjiang("输入要代表你的字符(一个)\n");
    cin>>name; 
    manjiang("开始游戏\n"); 
    system("cls");
    output(a,n,m);
    
    int pdzx=0;
    int hh,hl; 
    char pdss;
    HANDLE th=CreateThread( 0,0,szd,0,0,0);
    system("cls");
    a[10][10]=name;
    lie=10;
    heng=10;
    output(a,n,m);
    while(1)
    {
        if(pd3==0)
        {
            shu=getch();
        }
        pd3=0;
        if(shu=='w'||shu=='W')
        {
            system("cls");
            if(a[lie][heng]!='0')
            {
                if(pds=='w'||pds=='d'||pds=='a'||pds=='s')
                {
                    if(a[lie][heng]==name)
                        a[lie][heng]=' ';
                }
                lie--;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;  
            }
            if(lie==0||a[lie][heng]=='_'||a[lie][heng]=='.')
            {
                if(a[lie][heng]=='_')
                    a[lie][heng]='_';
                else
                    a[lie][heng]=='.';
                lie++; 
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;
            }
            if(pdzx!=0)
            {
                if(a[hl][hh]==name)
                    a[hl][hh]=' ';
                pdzx=0;
            }
            output(a,n,m);  
            cout<<endl;
            cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
        }
        if(shu=='s'||shu=='S')
        {
            system("cls");
            if(a[lie][heng]!='0')
            {
                if(pds=='w'||pds=='d'||pds=='a'||pds=='s')
                {
                    if(a[lie][heng]==name)
                        a[lie][heng]=' ';
                }
                lie++;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;  
            }
            if(lie==19||a[lie][heng]=='_'||a[lie][heng]=='.')
            {
                if(a[lie][heng]=='_')
                    a[lie][heng]='_';
                else
                    a[lie][heng]=='.';
                lie--;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;
            }
            if(pdzx!=0)
            {
                if(a[hl][hh]==name)
                    a[hl][hh]=' ';
                pdzx=0;
            }
            output(a,n,m);
            cout<<endl;
            cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
        }
        if(shu=='a'||shu=='A')
        {
            system("cls");
            if(a[lie][heng]!='0')
            {
                if(pds=='w'||pds=='d'||pds=='a'||pds=='s')
                {
                    if(a[lie][heng]==name)
                        a[lie][heng]=' ';
                }
                heng--;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;  
            }
            if(heng==0||a[lie][heng]=='|'||a[lie][heng]=='.')
            {
                if(a[lie][heng]=='|')
                    a[lie][heng]='|';
                else
                    a[lie][heng]=='.';
                heng++;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;
            }
            if(pdzx!=0)
            {
                if(a[hl][hh]==name)
                    a[hl][hh]=' ';
                pdzx=0;
            }
            output(a,n,m);
            cout<<endl;
            cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
        }
        if(shu=='d'||shu=='D')
        {
            system("cls");
            if(a[lie][heng]!='0')
            {
                if(pds=='w'||pds=='d'||pds=='a'||pds=='s')
                {
                    if(a[lie][heng]==name)
                        a[lie][heng]=' ';
                }
                heng++;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;  
            }
            if(heng==19||a[lie][heng]=='|'||a[lie][heng]=='.')
            {
                if(a[lie][heng]=='|')
                    a[lie][heng]='|';
                else
                    a[lie][heng]=='.';
                heng--;
                if(a[lie][heng]==' '||a[lie][heng]==name)
                    a[lie][heng]=name;
            }
            if(pdzx!=0)
            {
                if(a[hl][hh]==name)
                    a[hl][hh]=' ';
                pdzx=0;
            }
            output(a,n,m);
            cout<<endl;
            cout<<"表示符:j=发射子弹   y=清除   u=.   i=|   o=_   p=*";
        } 
        if(shu=='n'||shu=='N')
            break;
        pds=getch();
        if(pds=='w'||pds=='d'||pds=='a'||pds=='s')
        {
            shu=pds;
            pd3=1;
        }
        else
        {
            if(pds=='u')
            {
                a[lie][heng]='.';
                zf='.'; 
            }
            if(pds=='i')
            {
                a[lie][heng]='|';   
                zf='|';
            }
            if(pds=='o')
            {
                a[lie][heng]='_';
                zf='_'; 
            }
            if(pds=='p')
            {
                a[lie][heng]='*';
                zf='*'; 
            }
            if(pds=='y')
            {
                a[lie][heng]=' ';
                zf=' '; 
            }
            if(pds=='J'||pds=='j')
            {
                pdzd=1;
                if(scsr=='j'||scsr=='J')
                    scsr=pdss;
                pdss=scsr1;
                //HANDLE th=CreateThread( 0,0,szd,0,0,0);
                pdzx=1;
                hl=lie,hh=heng; 
            }
        }
        if(shu!='j'&&shu!='J')
            scsr1=shu;
        scsr=shu;
    }
}
void manjiang(char *p)
{
    while(1)
    {
        if(*p!=0)
            printf("%c",*p++);
        else
            break;
        Sleep(10);
    }
}

3 条评论

  • 1