送给粉丝们的一些小游戏(由于程序较多,可能会有一点卡,敬请原谅)

最近,我因为没有时间没有发博文,但是粉丝们还是一直关注得我.所以,今天我决定给你们一些报答,请看下面的一些C++游戏(注意:以下所有游戏都请用英文输入法游玩!!!!!):

1.飞机大战小游戏

//一定要是英文输入法!!!!! 
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string>
using namespace std;
 
/*=============== all the structures ===============*/
 
typedef struct Frame
{
    COORD position[2];
    int flag;
}Frame;
 
 
/*=============== all the functions ===============*/
 
void SetPos(COORD a)// set cursor 
{
    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(out, a);
}
 
void SetPos(int i, int j)// set cursor
{
    COORD pos={i, j};
    SetPos(pos);
}
 
void HideCursor()
{
    CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
//把第y行,[x1, x2) 之间的坐标填充为 ch
void drawRow(int y, int x1, int x2, char ch)
{
    SetPos(x1,y);
    for(int i = 0; i <= (x2-x1); i++)
        cout<<ch;
}
 
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawRow(COORD a, COORD b, char ch)
{
    if(a.Y == b.Y)
        drawRow(a.Y, a.X, b.X, ch);
    else
    {
        SetPos(0, 25);
        cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
        system("pause");
    }
}
 
//把第x列,[y1, y2] 之间的坐标填充为 ch
void drawCol(int x, int y1, int y2, char ch)
{
    int y=y1;
    while(y!=y2+1)
    {
        SetPos(x, y);
        cout<<ch;
        y++;
    }
}
 
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawCol(COORD a, COORD b, char ch)
{
    if(a.X == b.X)
        drawCol(a.X, a.Y, b.Y, ch);
    else
    {
        SetPos(0, 25);
        cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
        system("pause");
    }
}
void drawFrame(COORD a, COORD  b, char row, char col)
{
    drawRow(a.Y, a.X+1, b.X-1, row);
    drawRow(b.Y, a.X+1, b.X-1, row);
    drawCol(a.X, a.Y+1, b.Y-1, col);
    drawCol(b.X, a.Y+1, b.Y-1, col);
}
 
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
{
    COORD a={x1, y1};
    COORD b={x2, y2};
    drawFrame(a, b, row, col);
}
 
void drawFrame(Frame frame, char row, char col)
{
    COORD a = frame.position[0];
    COORD b = frame.position[1];
    drawFrame(a, b, row, col);
}
 
void drawPlaying()
{
    drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;
    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame
    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame
    drawFrame(49, 9, 79, 20, '-', '|');//    draw operate frame
    drawFrame(49, 20, 79, 24, '-', '|');//    draw other message frame
    SetPos(52, 6);
    cout<<"得分:";
    SetPos(52, 7);
    cout<<"称号:";
    SetPos(52,10);
    cout<<"操作方式:";
    SetPos(52,12);
    cout<<"  a,s,d,w 控制战机移动。";
    SetPos(52,14);
    cout<<"  空格 发射子弹";
    SetPos(52,16);
    cout<<"  p 暂停游戏。";
    SetPos(52,18);
    cout<<"  e 退出游戏。";
}
 
//在[a, b)之间产生一个随机整数
int random(int a, int b)
{
    int c=(rand() % (a-b))+ a;
    return c;
}
 
//在两个坐标包括的矩形框内随机产生一个坐标
COORD random(COORD a, COORD b)
{
    int x=random(a.X, b.X);
    int y=random(a.Y, b.Y);
    COORD c={x, y};
    return c;
}
 
bool  judgeCoordInFrame(Frame frame, COORD spot)
{
    if(spot.X>=frame.position[0].X)
        if(spot.X<=frame.position[1].X)
            if(spot.Y>=frame.position[0].Y)
                if(spot.Y<=frame.position[0].Y)
                    return true;
    return false;
}
 
void printCoord(COORD a)
{
    cout    <<"( "<<a.X<<" , "<<a.Y<<" )";
}
 
void printFrameCoord(Frame a)
{
    printCoord(a.position[0]);
    cout    <<" - ";
    printCoord(a.position[1]);
}
 
int drawMenu()
{
    SetPos(30, 1);
    cout<<"P l a n e  W a r";
    drawRow(3, 0, 79, '-');
    drawRow(5, 0, 79, '-');
    SetPos(28, 4);
    cout<<"w 和 s 选择, k 确定";
    SetPos(15, 11);
    cout<<"1. 简单的敌人";
    SetPos(15, 13);
    cout<<"2. 冷酷的敌人";
    drawRow(20, 0, 79, '-');
    drawRow(22, 0, 79, '-');
    SetPos(47, 11);
    cout<<"简单的敌人:";
    SetPos(51, 13);
    cout<<"简单敌人有着较慢的移动速度。";
    SetPos(24, 21);
    cout<<"制作:呦呦鹿鸣^_^";
    int j=11;
    SetPos(12, j);
    cout<<">>";
 
    //drawFrame(45, 9, 79, 17, '=', '|');
 
    while(1)
    {    if( _kbhit() )
        {    
            char x=_getch();
            switch (x)
            {
            case 'w' :
                    {    
                        if( j == 13)
                        {
                            SetPos(12, j);
                            cout<<" ";
                            j = 11;
                            SetPos(12, j);
                            cout<<">>";
                            SetPos(51, 13);
                            cout<<"            ";
                            SetPos(47, 11);
                            cout<<"简单的敌人:";
                            SetPos(51, 13);
                            cout<<"简单敌人有着较慢的移动速度,容易对付。";
                        }
                        break;
                    }
            case 's' :
                    {    
                        if( j == 11 )
                        {
                            SetPos(12, j);
                            cout<<" ";        
                            j = 13;
                            SetPos(12, j);
                            cout<<">>";
                            SetPos(51, 13);
                            cout<<"              ";
                            SetPos(47, 11);
                            cout<<"冷酷的敌人:";
                            SetPos(51, 13);
                            cout<<"冷酷的敌人移动速度较快,难对付哟!!!";
                        }
                        break;
                    }
            case 'k' :
                    {    
                        if (j == 8)    return 1;
                        else return 2;
                    }
            }
        }
    }
}
 
/* 
DWORD WINAPI MusicFun(LPVOID lpParamte)
{
    //DWORD OBJ;
    sndPlaySound(TEXT("bgm.wav"), SND_FILENAME|SND_ASYNC);
    return 0;
}
*/
 
 
/*================== the Game Class ==================*/
 
class Game
{
public:
    COORD position[10];
    COORD bullet[10];
    Frame enemy[8];
    int score;
    int rank;
    int rankf;
    string title;
    int flag_rank;
 
    Game ();
    
    //初始化所有
    void initPlane();
    void initBullet();
    void initEnemy();
 
    //初始化其中一个
    //void initThisBullet( COORD );
    //void initThisEnemy( Frame );
 
    void planeMove(char);
    void bulletMove();
    void enemyMove();
    
    //填充所有
    void drawPlane();
    void drawPlaneToNull();
    void drawBullet();
    void drawBulletToNull();
    void drawEnemy();
    void drawEnemyToNull();
 
    //填充其中一个
    void drawThisBulletToNull( COORD );
    void drawThisEnemyToNull( Frame );
 
    void Pause();
    void Playing();
    void judgePlane();
    void judgeEnemy();
 
    void Shoot();
 
    void GameOver();
    void printScore();
};
 
Game::Game()
{
    initPlane();
    initBullet();
    initEnemy();
    score = 0;
    rank = 25;
    rankf = 0;
    flag_rank = 0;
}
 
void Game::initPlane()
{
    COORD centren={39, 22};
    position[0].X=position[5].X=position[7].X=position[9].X=centren.X;
    position[1].X=centren.X-2;    
    position[2].X=position[6].X=centren.X-1;
    position[3].X=position[8].X=centren.X+1;
    position[4].X=centren.X+2;
    for(int i=0; i<=4; i++)
        position[i].Y=centren.Y;
    for(int i=6; i<=8; i++)
        position[i].Y=centren.Y+1;
    position[5].Y=centren.Y-1;
    position[9].Y=centren.Y-2;
}
 
void Game::drawPlane()
{
    for(int i=0; i<9; i++)
    {
        SetPos(position[i]);
        if(i!=5)
            cout<<"O";
        else if(i==5)
            cout<<"|";        
    }
}
 
void Game::drawPlaneToNull()
{
    for(int i=0; i<9; i++)
    {
        SetPos(position[i]);
        cout<<" ";
    }    
}
 
void Game::initBullet()
{
    for(int i=0; i<10; i++)
        bullet[i].Y = 30;
}
 
void Game::drawBullet()
{
    for(int i=0; i<10; i++)
    {
        if( bullet[i].Y != 30)
        {
            SetPos(bullet[i]);
            cout<<"^";    
        }
    }
}
 
void Game::drawBulletToNull()
{
    for(int i=0; i<10; i++)
        if( bullet[i].Y != 30 )
            {
                COORD pos={bullet[i].X, bullet[i].Y+1};
                SetPos(pos);
                cout<<" ";
            }    
}
 
void Game::initEnemy()
{
    COORD a={1, 1};
    COORD b={45, 15};
    for(int i=0; i<8; i++)
    {
        enemy[i].position[0] = random(a, b);
        enemy[i].position[1].X = enemy[i].position[0].X + 3;
        enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
    }
}
 
void Game::drawEnemy()
{
    for(int i=0; i<8; i++)
        drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
}
 
void Game::drawEnemyToNull()
{
    for(int i=0; i<8; i++)
    {
        drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');
    }        
}
 
void Game::Pause()
{
    SetPos(61,2);
    cout<<"               ";
    SetPos(61,2);
    cout<<"暂停中...";
    char c=_getch();
    while(c!='p')
        c=_getch();
    SetPos(61,2);
    cout<<"         ";
}
 
void Game::planeMove(char x)
{
    if(x == 'a')
        if(position[1].X != 1)
            for(int i=0; i<=9; i++)
                position[i].X -= 2;
                
    if(x == 's')
        if(position[7].Y != 23)
            for(int i=0; i<=9; i++)
                position[i].Y += 1;
 
    if(x == 'd')
        if(position[4].X != 47)
            for(int i=0; i<=9; i++)
                position[i].X += 2;
 
    if(x == 'w')
        if(position[5].Y != 3)
            for(int i=0; i<=9; i++)
                position[i].Y -= 1;
}
 
void Game::bulletMove()
{
    for(int i=0; i<10; i++)
    {
        if( bullet[i].Y != 30)
        {
            bullet[i].Y -= 1;
            if( bullet[i].Y == 1 )
            {
                COORD pos={bullet[i].X, bullet[i].Y+1};
                drawThisBulletToNull( pos );
                bullet[i].Y=30;
            }
                
        }
    }
}
 
void Game::enemyMove()
{
    for(int i=0; i<8; i++)
    {
        for(int j=0; j<2; j++)
            enemy[i].position[j].Y++;
 
        if(24 == enemy[i].position[1].Y)
        {
            COORD a={1, 1};
            COORD b={45, 3};
            enemy[i].position[0] = random(a, b);
            enemy[i].position[1].X = enemy[i].position[0].X + 3;
            enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
        }
    }
}
 
void Game::judgePlane()
{
    for(int i = 0; i < 8; i++)
        for(int j=0; j<9; j++)
            if(judgeCoordInFrame(enemy[i], position[j]))
            {
                SetPos(62, 1);
                cout<<"坠毁";
                drawFrame(enemy[i], '+', '+');
                Sleep(1000);
                GameOver();
                break;
            }
}
 
void Game::drawThisBulletToNull( COORD c)
{
    SetPos(c);
    cout<<" ";
}
 
void Game::drawThisEnemyToNull( Frame f )
{
    drawFrame(f, ' ', ' ');
}
 
void Game::judgeEnemy()
{
    for(int i = 0; i < 8; i++)
        for(int j = 0; j < 10; j++)
            if( judgeCoordInFrame(enemy[i], bullet[j]) )
            {
                score += 5;
                drawThisEnemyToNull( enemy[i] );
                COORD a={1, 1};
                COORD b={45, 3};
                enemy[i].position[0] = random(a, b);
                enemy[i].position[1].X = enemy[i].position[0].X + 3;
                enemy[i].position[1].Y = enemy[i].position[0].Y + 2;                    
                drawThisBulletToNull( bullet[j] );
                bullet[j].Y = 30;
            }
}
 
void Game::Shoot()
{
    for(int i=0; i<10; i++)
        if(bullet[i].Y == 30)
        {
            bullet[i].X = position[5].X;
            bullet[i].Y = position[5].Y-1;
            break;
        }
}
 
void Game::printScore()
{
    if(score == 120 && flag_rank == 0)
    {
        rank -= 3;
        flag_rank = 1;
    }
 
    else if( score == 360 && flag_rank == 1)
    {
        rank -= 5;
        flag_rank = 2;
    }
    else if( score == 480 && flag_rank == 2)
    {
        rank -= 5;
        flag_rank = 3;
    }
    int x=rank/5;
    SetPos(60, 6);
    cout<<score;
 
    if( rank!=rankf )
    {
        SetPos(60, 7);
        if( x == 5)
            title="初级飞行员";
        else if( x == 4)
            title="中级飞行员";
        else if( x == 3)
            title="高级飞行员";
        else if( x == 2 )
            title="王牌飞行员";
        cout<<title;
    }
    rankf = rank;
}
 
void Game::Playing()
{
    //HANDLE MFUN;
    //MFUN= CreateThread(NULL, 0, MusicFun, NULL, 0, NULL); 
 
    drawEnemy();
    drawPlane();
 
    int flag_bullet = 0;
    int flag_enemy = 0;
 
    while(1)
    {
        Sleep(8);
        if(_kbhit())
        {
            char x = _getch();
            if ('a' == x || 's' == x || 'd' == x || 'w' == x)
            {
                drawPlaneToNull();
                planeMove(x);
                drawPlane();
                judgePlane();
            }            
            else if ('p' == x)
                Pause();
            else if( ' ' == x)
                Shoot();
            else if( 'e' == x)
            {
                //CloseHandle(MFUN);
                GameOver();
                break;
            }
                
        }
        /* 处理子弹 */
        if( 0 == flag_bullet )
        {
            bulletMove();
            drawBulletToNull();
            drawBullet();
            judgeEnemy();
        }            
        flag_bullet++;
        if( 5 == flag_bullet )
            flag_bullet = 0;
 
        /* 处理敌人 */
        if( 0 == flag_enemy )
        {
            drawEnemyToNull();
            enemyMove();            
            drawEnemy();
            judgePlane();
        }
        flag_enemy++;
        if( flag_enemy >= rank )
            flag_enemy = 0;
 
        /* 输出得分 */
        printScore();
    }
}
 
void Game::GameOver()
{
    system("cls");                
    COORD p1={28,9};
    COORD p2={53,15};
    drawFrame(p1, p2, '=', '|');
    SetPos(36,12);
    string str="Game Over!";
    for(int i=0; i<str.size(); i++)
    {
        Sleep(80);
        cout<<str[i];
    }
    Sleep(1000);
    system("cls");
    drawFrame(p1, p2, '=', '|');
    SetPos(31, 11);
    cout<<"击落敌机:"<<score/5<<" 架";
    SetPos(31, 12);
    cout<<"得  分:"<<score;
    SetPos(31, 13);
    cout<<"获得称号:"<<title;
    SetPos(30, 16);
    Sleep(1000);
    cout<<"继续? 是(y)| 否(n)制作:呦呦鹿鸣^_^";
as:
    char x=_getch();
    if (x == 'n')
        exit(0);
    else if (x == 'y')
    {
        system("cls");
        Game game;
        int a = drawMenu();
        if(a == 2)
            game.rank = 20;
        system("cls");
        drawPlaying();
        game.Playing();
    }
    else goto as;
}
 
/*================== the main function ==================*/
int main()
{
    //游戏准备
    srand((int)time(0));    //随机种子
    HideCursor();    //隐藏光标
    
    Game game;
    int a = drawMenu();
    if(a == 2)
        game.rank = 20;
    system("cls");
    drawPlaying();
    game.Playing();
}

2.走迷宫小游戏

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
const long long n=29,jg=25;
string p=" *!|-=.<^>1234567890@$%?&_~";
long long r=1;
char f='y';
void print(string a[n])
{
    system("cls");
    for(long long i=0;i<n;i++)
    cout<<a[i]<<endl;
}
void tc()
{
	system("cls");
	cout<<"\n\n\n\n\n                    欢迎下次再玩,拜拜!!!\n";
	cout<<"                    制作:呦呦鹿鸣\n";
	cout<<"                  (按空格结束)";
	long long ok='\0';
	while(ok=getch(),ok!=' ');
	system("cls");
	return ;
}
void hf()
{
	char t='\0';
	while(t!=' ')
	{
		system("cls");
		cout<<"\n\n\n\n	    			   	A D键换皮肤    空格确定\n\n";
		cout<<"\n\n\n\n						  "<<p[r]<<"\n";
		t=getch();
		if(t=='a')r--;
		else
		if(t=='d')r++;
		if(r<1)r=jg;
		if(r>jg)r=1;
	}
	system("cls");
	return ;
}
void sm()
{
	system("cls");
	cout<<"\n\n		说明:\n\n\n";
	cout<<"					按空格开始游戏后\n";
	cout<<"					  W\n";
	cout<<"					A S D\n";
	cout<<"					移动\n";
	cout<<"			   		按R键返回起点\n";
	cout<<"			   		按P键返回主界面\n";
	cout<<"			   		#号为墙        \n";
	cout<<"                 你是*号        \n";
	cout<<"			   		+号处为终点\n\n\n";
	cout<<"			按空格继续···";
	long long ok='\0';
	while(ok=getch(),ok!=' ');
	system("cls");
	return ;
}
void hys()
{
	system("cls");
	cout<<"\n\n\n\n\n\n\n\n\n按1【日间色】\n";
	cout<<"按2【夜间色】\n";
	cout<<"按3【黑客】\n";
	cout<<"按4【科幻】\n";
	cout<<"按5【紫水晶】\n";
	char s;
	s=getch();
	while(s!='1'&&s!='2'&&s!='3'&&s!='4'&&s!='5')s=getch();
	switch(s-'0')
	{
		case 1:
			system("color f0");
			break;
		case 2:
			system("color 0f");
			break;
		case 3:
			system("color 0a");
			break;
		case 4:
			system("color 09");
			break;
		case 5:
			system("color 01");
			break;
	}
	system("cls");
	return ;
}
int main(){
	system("color f0");
	while(1)
	{
		long long xx=1,yy=1;
		system("cls");
		f='y';
		cout<<"\n\n\n\n\n\n\n\n\n\n\n";
		cout<<"                                                      迷宫游戏\n";
		cout<<"                                                   按空格开始游戏\n";
		cout<<"                                                   按0退出游戏\n";
		cout<<"                                                   按1换皮肤\n";
		cout<<"                                                   按2游戏说明\n";
		cout<<"                                                   按3换颜色\n";
		cout<<"\n\n\n\n\n\n\n";
		long long ok=getch();
		while(ok!='0'&&ok!='1'&&ok!='2'&&ok!=' '&&ok!='3'&&ok!='4')ok=getch();
		switch(ok){
			case ' ':
				break;
			case '0':
				tc();
				return 0;
				break;
			case '1':
				hf();
				f='n';
				break;
			case '2':
				sm();
				f='n';
				break;
			case '3':
				hys();
				f='n';
				break;
		}
		while(f=='y')
		{
			system("cls");
			string a[n];
		    long long x,y,qx,qy;
		    long long ch;
			srand(time(0));
			cout<<"输入迷宫序号(1~8):";
			long long s;
			cin>>s;
			switch(s){
				case 1:
					qx=1;
					qy=1;
					a[0]="###########";
		    	    a[1]="#   #   # #";
		    	    a[2]="# #   #   #";
					a[3]="# ##### ###";
					a[4]="# #   ###+#";
					a[5]="#   #     #";
					a[6]="###########";
		    		break;
		    	case 2:
					qx=8;
					qy=12;
					a[0]="####################";
					a[1]="#+   #       #     #";
					a[2]="# ##   #### ###  # #";
					a[3]="#  ####      ##### #";
					a[4]="###   # # ##       #";
					a[5]="##### ########## # #";
					a[6]="#     ## ###   ##  #";
					a[7]="## ###   ### # ## ##";
					a[8]="#      #     #     #";
					a[9]="####################";
					break;
				case 3:
					qx=1;
					qy=1; 
					a[0]="###################";
					a[1]="# #   #   #   #   #";
					a[2]="# # # # # # # # # #";
					a[3]="# # # # # # # # # #";
					a[4]="# # # # # # # # # #";
					a[5]="# # # # # # # # # #";
					a[6]="# # # # # # # # # #";
					a[7]="# # # # # # # # # #";
					a[8]="# # # # # # # # # #";
					a[9]="# # # # # # # # # #";
				   a[10]="#   #   #   #   #+#";
				   a[11]="####################";
					break;
				case 4:
					qx=1;
					qy=1;
					a[0]="########################################";
					a[1]="#                                      #";
					a[2]="# #################################### #";
					a[3]="# #                                  # #";
					a[4]="# # ###################### ##### #######";
					a[5]="# # #+        #     #    # ###         #";
					a[6]="# # # # # ######### # #### ##  #### ## #";
					a[7]="# # # # # ##        #      ## ##  #  # #";
					a[8]="# # # ### ## # # ########### ##  ##  # #";
					a[9]="# # # # #    # # # #        #    #   # #";
				   a[10]="# # ### ###### ### # ######## ##### ## #";
				   a[11]="# # # #            #              #  # #";
				   a[12]="# # # ######## ############## #####  # #";
				   a[13]="# # #                                # #";
				   a[14]="# # ################################## #";
				   a[15]="# #                                  # #";
				   a[16]="# #################################### #";
				   a[17]="#                                      #";
				   a[18]="########################################";
				    break;
				case 5:
					qx=1;
					qy=1;
					a[0]="########################################";
					a[1]="#                      #               #";
					a[2]="# ########### ################# ###### #";
					a[3]="# #         # #               # ##   # #";
					a[4]="# # # #### ## # ## # #### ##### ## # # #";
					a[5]="# # # #       #  # #    #        # # # #";
					a[6]="# # #  #### ###### ############### #   #";
					a[7]="# # ##    #      # #               # # #";
					a[8]="# #  #### ######## ################# # #";
					a[9]="# ##    #      # # #       #####   # # #";
				   a[10]="#   ########## #   #       #     ### # #";
				   a[11]="###     #        # #       # ##### # # #";
				   a[12]="#   ######################## #     # # #";
				   a[13]="# # #                        # ## #  ###";
				   a[14]="# ### #### ####### ########### #### ## #";
				   a[15]="#     #    #                      #   +#";
				   a[16]="########################################";
					break;
				case 6:
					qx=1;
					qy=1;
					a[0]="##################################################################################################################";
					a[1]="#                                                                                                                #";
					a[2]="# # ############################################################################################################ #";
					a[3]="# #  ###       #############                                                                           ###       #";
					a[4]="# ##  ## ######           +# ######################################################################### # # ### # #";
					a[5]="# ###  # ################### # # # # #                                                               # # # #   # #";
					a[6]="# ####           #                     ############################################################# # #   # # # #";
					a[7]="# #####################################         ##################                               ##  # ##### # # #";
					a[8]="# ######                                # #####   ##########       + ########################### ## ##       # # #";
					a[9]="# #      ######### ############## ###### #     ##          # #####################     ############  ######### # #";
				   a[10]="# # #####        # ######       #        # #######  ######## #                     ###                       # # #";
				   a[11]="# #     # ###### # ####   ##### ##########       # #         # ##### ##############   ###################### # ###";
				   a[12]="# ##### # #   ## # #### ##            #    ##### ############# #######              #     #                  # # #";
				   a[13]="# #   # #   # ## # ##   #  ############ ## #   # #        #            ############# ###### ################ # # #";
				   a[14]="# # # # ##### ## # ## ##  #   #   #   # ##   # # # ###### # ######### #              #############  ######## ### #";
				   a[15]="# # # #       ## # #  #     #   #   #   #####  #       #  # #         ###############             #            # #";
				   a[16]="# ### ########## # # #################################### # #####################################  ############# #";
				   a[17]="# #              #       ##                               #                                   ####               #";
				   a[18]="# # ####################### ################################################################# ################## #";
				   a[19]="#                         #  #                                                                                  +#";
				   a[20]="##################################################################################################################";
					break;
				case 7:
					qx=1;
					qy=1;
					a[0]="#############################################################";
					a[1]="# ###+#                                                   #+#";
					a[2]="# #  ###### ##############################################  #";
					a[3]="# # # #   # #                                             ###";
					a[4]="# # # # # #   # ########################################### #";
					a[5]="# # # # # ##### #                                           #";
					a[6]="# # # # #       # ######################################### #";
					a[7]="# # # # #########                                         # #";
					a[8]="# # # # ################################################  # #";
					a[9]="# # # # #+++++++++++++++++++++++++++++++++++++++++++++++### #";
				   a[10]="# # # # #+++++++++++++++++++++++++++++++++++++++++++++++  # #";
				   a[11]="# # # # #+++++++++++++++++++++++++++++++++++++++++++++++# # #";
				   a[12]="# # # # ################################### ############# # #";
				   a[13]="# # # # #                                  #           ## # #";
				   a[14]="# # # # # ##### ################# ####################    # #";
				   a[15]="# # # # # #  ## #               # #   #   #   #   #   ### # #";
				   a[16]="# # # # # #+#   # ############# # # #   #   #   #   #     # #";
				   a[17]="# # # # # #######  #   #   #  # # # ####################### #";
				   a[18]="# # #+# #            #   #  #+# #      #################### #";
				   a[19]="# # ### ####################### ########################### #";
				   a[20]="#                                                           #";
				   a[21]="#############################################################";
				   break;
				case 8:
					qx=1;
					qy=1;
					a[0]="##########################";
					a[1]="#                        #";
					a[2]="# ###################### #";
					a[3]="# #+   #   #   #   #   # #";
					a[4]="#  #   #+#   #   #   #   #";
					a[5]="##########################";
					break;
			}
			xx=x=qx,yy=y=qy;
			a[x][y]=p[r];
		    print(a);
		    while(a[x][y]!='+'){
		        ch=getch();
		        if(ch=='q'){
		        	xx=x;
		        	yy=y;
				}
				if(ch=='e'){
					a[x][y]=' ';
					a[xx][yy]=p[r];
					x=xx;
					y=yy;
				}
		        if(ch=='r'){
		        	a[x][y]=' ';
		        	a[qx][qy]=p[r];
		        	x=qx;
		        	y=qy;
				}
		        if(ch=='p'){
		        	f='n';
		        	break;
				}
		        if((ch=='a'&&a[x][y-1]=='+')||(ch=='d'&&a[x][y+1]=='+')||(ch=='s'&&a[x+1][y]=='+')||(ch=='w'&&a[x-1][y]=='+')){
		        	break;
				}
		        if(ch==27)break;
		        if(ch==97&&a[x][y-1]==' '||a[x][y-1]=='|')
				{
		            a[x][y]=' ';
		            y--;
		            a[x][y]=p[r];
		        }
		        if(ch==100&&a[x][y+1]==' '||a[x][y+1]=='|')
				{
		            a[x][y]=' ';
		            y++;
		            a[x][y]=p[r];
		        }
		        if(ch==115&&a[x+1][y]==' '||a[x+1][y]=='|')
				{
		            a[x][y]=' ';
		            x++;
		            a[x][y]=p[r];
		        }
		        if(ch==119&&a[x-1][y]==' '||a[x-1][y]=='|')
				{
		            a[x][y]=' ';
		            x--;
		            a[x][y]=p[r];
		        }
		        print(a);
		    }
		    system("cls");
		    if(f=='n')break;
		    cout<<"you win!!!"<<endl;
		    cout<<"按空格继续···";
		    ok='\0';
		    while(ok=getch(),ok!=' ');
			system("cls");
		    cout<<"是否继续(y/n)";
		    while(f=getch(),f!='y'&&f!='n');
		}
	}
    return 0;
}

3.愤怒的小鸟小游戏

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
const double pi=3.1415926536;
int toint(float a){return ((int)(a*10+5))/10;}
void Color(int a)
{
    if(a==0||a==14||a==20) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==1||a==12) 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||a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
    if(a==5||a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
    if(a==16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    if(a==17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
    if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN);
}
void SetPos(float x,float y){
    int xx=toint(x),yy=toint(y);
    COORD pos;pos.X=yy*2,pos.Y=xx;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
struct node{
    int W,W2,S,mS;
    float X,Y;
    float vx,vy;
    float ax,ay;
    bool go,boom;
}blt[100001],pig[100001],boo[100001];
int T,yX,yY,Xy,put,K,K2,Sle,What;
int Bot,Pit,Blt,Pig,Sco,pigk,scok;
int m[41][41];
void Cout(int a,int x,int y)
{
    if(a==1) SetPos(x,y),Color(5),cout<<put<<' ';
    if(y==202)
    {
        SetPos(pig[a].X,pig[a].Y);cout<<"  ";
        if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y);cout<<"  ",SetPos(pig[a].X-1,pig[a].Y);cout<<"  ";
        if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),cout<<"  ";
        if(pig[a].W==5) SetPos(pig[a].X-1,pig[a].Y),cout<<"  ",SetPos(pig[a].X-1,pig[a].Y-1),cout<<"  ";
    }
    if(a==2)
    for(int i=0;i<=40;i++)
    for(int j=0;j<=40;j++)
    {
        if(i<=18&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"■";
        if(m[i][j]>=2&&m[i][j]<=19) SetPos(i,j),Color(5),cout<<"█",m[i][j]++;
        if(m[i][j]>19&&m[i][j]<=29) SetPos(i,j),Color(0),cout<<"█",m[i][j]++;
        if(m[i][j]==30) SetPos(i,j),Color(0),cout<<"  ",m[i][j]=0;
        if(m[i][j]>=31&&m[i][j]<=49) SetPos(i,j),Color(0),cout<<"■",m[i][j]++;
        if(m[i][j]==50) SetPos(i,j),Color(7),cout<<"■",m[i][j]=1;
    }
    if(y==666)
    {
        SetPos(blt[a].X,blt[a].Y);
        Color(10+blt[a].W),cout<<"●";
    }Color(0);
}
void Go(int a)
{
    SetPos(blt[a].X,blt[a].Y);cout<<"  ";
    blt[a].X+=blt[a].vx/2;blt[a].Y+=blt[a].vy/2;blt[a].vx+=blt[a].ax/2;blt[a].vy+=blt[a].ay/2;
    if(blt[a].X>=20) blt[a].X=19;
    if(blt[a].X>20||blt[a].Y>38||blt[a].X<0||blt[a].Y<=0) blt[a].go=1;
    if(blt[a].W2==1&&blt[a].Y>=Xy) blt[a].go=1,Sle=0;//地跑鸟
    if(blt[a].W2==0)
    {
        for(int i=0;i<=blt[a].vx/2+1;i++)
        {
            if(blt[a].vx>0&&m[toint(blt[a].X)+i][toint(blt[a].Y)]==1) //上反弹
            {
                if(blt[a].W!=5) blt[a].boom=1;
                blt[a].X=toint(blt[a].X)+i-1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx*0.4,blt[a].vy=blt[a].vy*0.8;
                if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
                if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            }
            if(blt[a].vx<0&&m[toint(blt[a].X)-i][toint(blt[a].Y)]==1) //下反弹
            {
                if(blt[a].W!=5) blt[a].boom=1;
                blt[a].X=toint(blt[a].X)+i+1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx,blt[a].vy=blt[a].vy*0.8;
                if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
                if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            }
        }
        if(abs(blt[a].vx)<=0.1&&abs(blt[a].vy)<=0.1&&abs(blt[a].ay)<=0.1)
        {
            blt[a].go=1;
            if(blt[a].W==5) Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[a].go=1;
        }
    }
    if(blt[a].go==0) Cout(a,0,666);
}
void Kill(int a)
{
    if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
    if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
    int R=rand()%50;Cout(a,202,202);
    //清除猪猪
    pig[a].X+=pig[a].vx/2;pig[a].Y+=pig[a].vy/2;pig[a].vx+=pig[a].ax/2;pig[a].vy+=pig[a].ay/2;
    for(int i=-2;i<=pig[a].vx/2+1;i++)
    {
        if(m[toint(pig[a].X)+i][toint(pig[a].Y)]==1) //上反弹
        pig[a].X=toint(pig[a].X)+i-1,pig[a].Y+=pig[a].vy/2,pig[a].vx=-pig[a].vx*0.5,pig[a].vy=pig[a].vy*0.8;
    }
    for(int i=Blt-10;i<=Blt;i++)
    {
        if(pig[a].W==5&&blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
        if(pig[a].W==5&&m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
        if(blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1)
        {
            if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[i].go=1;
            m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;
        }
        if(m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30)
        {
            if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            pig[a].go=1,Pig--,Sco+=10;break;
        }
        if((pig[a].W==2||pig[a].W==3)&&blt[i].go==0&&abs(pig[a].X-2-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;}
        if((pig[a].W==2||pig[a].W==3)&&m[toint(pig[a].X-2)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X-2)][toint(pig[a].Y)]<30) {pig[a].go=1,Pig--,Sco+=10;break;}
    }
    //弄死猪猪
    if(pig[a].go==0){
        if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
        if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
        int Xx=toint(pig[a].X),Xy=toint(pig[a].Y);
        if(pig[a].W==6) SetPos(pig[a].X,pig[a].Y),Color(9),cout<<"TN",Color(0);
        else{
        SetPos(pig[a].X,pig[a].Y),Color(2),cout<<"●";
        if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y),Color(0),cout<<"○",SetPos(pig[a].X-1,pig[a].Y),cout<<"|";
        if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),Color(2),cout<<"﹃";
        if(pig[a].W==5)
        {
            SetPos(pig[a].X-1,pig[a].Y),Color(8);SetPos(pig[a].X-1,pig[a].Y-1),cout<<"▁";
            if(pig[a].W2==0)cout<<"▅";if(pig[a].W2==1)cout<<"▃";if(pig[a].W2==2)cout<<"▂";if(pig[a].W2==3) pig[a].W=1,pig[a].W2=0,SetPos(pig[a].X-1,pig[a].Y-1),cout<<"  ";
        }
        }
        //输出猪猪
        if(pig[a].W==2&&pig[a].X>pig[a].S) pig[a].W=3,pig[a].ax=-0.4,pig[a].vx=1.5;
        else if(pig[a].W==3&&pig[a].X<=pig[a].S) pig[a].W=2,pig[a].ax=0.4,pig[a].vx=-1.5;
        if((pig[a].W==2||pig[a].W==3)&&(pig[a].Y<=10||pig[a].Y>=38)) pig[a].vy*=-1;
        if(pig[a].W==4&&R==0&&pig[a].X==20) pig[a].vx=-((rand()%40)/10);
        if(pig[a].W==4)
        {
            int r=rand()%20;
            for(int i=Blt-10;i<=Blt;i++) if(r<=5&&blt[i].go==0&&pig[a].Y-blt[i].Y<=5&&abs(blt[i].X-pig[a].X)<=1.5&&r<5) r=0;
            if(r==0)
            {
                m[toint(pig[a].X)][toint(pig[a].Y)-2]=10;m[toint(pig[a].X)][toint(pig[a].Y)-3]=2;
                for(int j=toint(pig[a].Y)-1;j>=toint(pig[a].Y)-5;j--)
                {
                    for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0&&!(blt[i].W==3&&blt[i].boom==1)&&blt[i].W2==0&&toint(blt[i].Y)==j&&abs(blt[i].X-pig[a].X)<=2) blt[i].vy=-2;
                    for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0&&toint(pig[i].Y)==j&&abs(pig[i].X-pig[a].X)<=2) pig[i].vy=-1;
                }
            }
        }
        //移动猪猪
        if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
        if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
        if(pig[a].X>20||pig[a].Y>38||pig[a].X<0||pig[a].Y<=0) pig[a].go=1,Pig--,Cout(a,202,202);
        //清除猪猪
    }
}
void Creat(int a,int p)
{
    if(a==-1&&p==-1)
    {
        Blt++;blt[Blt].W=What;blt[Blt].W2=1;
        blt[Blt].vy=1;blt[Blt].X=19;blt[Blt].Y=0;blt[Blt].boom=1;
    }
    else if(a==0&&p==-1)
    {
        int u=rand()%7+1,U=rand()%30;
        if(u>=5) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=1;
        if(u==1) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].vy=0.5,pig[Pit].ax=0.5,pig[Pit].S=rand()%5+7,pig[Pit].W=2;
        if(u==2) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=4;
        if(u==3) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=5;
        if(u==4) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=6;
        if(U==1) Bot++,boo[Bot].Y=rand()%13+15,boo[Bot].X=(rand()%4)*3+8,boo[Bot].S=0,boo[Bot].mS=rand()%2+2,boo[Bot].W2=1;
    }
    else
    {
        Blt++;blt[Blt].W=What;
        if(a==1) blt[Blt].X=yX;blt[Blt].Y=yY;blt[Blt].ax=0.5; //抛物线
        blt[Blt].vx=-3.5*sin(p*pi/180);
        blt[Blt].vy=3*cos(p*pi/180);
        if(p<=45) blt[Blt].vy*=1+(0.33-0.01*(45-p));
        if(p>=45) blt[Blt].vy*=1+(0.33-0.01*(p-45));
        if(blt[Blt].W==6) blt[Blt].vy*=1.2,blt[Blt].ax=0.4;
    }
}
void Boom(int a)
{
    if(boo[a].W2==0)
    {
        int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
        if(s==ms) return;
        for(int i=x-s;i<=x+s;i++)
        for(int j=y-s;j<=y+s;j++)
        {
            float k=(i-x)*(i-x)+(j-y)*(j-y)-s*s;
            if(k<=s&&k>=-s&&i<=20&&j<=38&&i>=0&&j>0&&m[i][j]!=1) m[i][j]=2;
        }boo[a].S++;
    }
    if(boo[a].W2==1)
    {
        int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
        if(s==ms) return;
        if(y-s>10) m[x][y-s]=31-31*(boo[a].W2-1);
        if(y+s<40) m[x][y+s]=31-31*(boo[a].W2-1);
        boo[a].S++;
    }
}
void Move(int a)
{
    Color(5);
    if(a==-2) SetPos(17,Xy),cout<<"        ",SetPos(18,Xy),cout<<"        ",SetPos(19,Xy),cout<<"        ",SetPos(20,Xy),cout<<"       ";
    if(a==-1) SetPos(17,Xy),cout<<"        ",SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==0) SetPos(18,Xy),cout<<"  ┃",Color(What+10),cout<<"●",Color(5),cout<<"┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==1) SetPos(18,Xy),cout<<"  ",Color(What+10),cout<<"●",Color(5),cout<<"  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==2) SetPos(18,Xy),Color(What+10),cout<<"●",Color(5),cout<<"┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==3) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),Color(What+10),cout<<"●",Color(5),cout<<"╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==4) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),Color(What+10),cout<<"●",Color(5),cout<<"   ▏";
    if(a==5) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"  ",Color(What+10),cout<<"●",Color(5),cout<<" ▏";
    if(a==6) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"    ",Color(What+10),cout<<"●",Color(5),cout<<" ";
    Color(0);
}
void Start(){
    char g;Color(5);system("cls");
    SetPos(1,1);cout<<"------- 愤 怒 的 小 鸟 -------";Color(0);
    SetPos(3,1);cout<<"空格瞄准,按X触发小胎技能,←→移动弹弓";
    SetPos(5,1);cout<<"猪猪技能自动触发,空中会有墙出现。";
    SetPos(7,1);cout<<"危险值由命中率,猪的存活时间计算!";
    SetPos(9,1);cout<<"危险值点满后失败!1500分通关!";
    SetPos(1,20);cout<<"-------- 小 鸟 技 能 --------";
    SetPos(3,20);Color(11),cout<<"●",Color(0),cout<<":无技能";
    SetPos(5,20);Color(12),cout<<"●",Color(0),cout<<":分身!不同分身初速度大小相同,";
    SetPos(6,20);cout<<"        方向不同。";
    SetPos(7,20);Color(13),cout<<"●",Color(0),cout<<":加速!以当前速度做匀速直线运动,";
    SetPos(8,20);cout<<"          且免疫狙击猪的冲击。";
    SetPos(9,20);Color(14),cout<<"●",Color(0),cout<<":投蛋!并获得向上速度做匀速直线";
    SetPos(10,20);cout<<"          运动,快达可以穿墙。";
    SetPos(11,20);Color(15),cout<<"●",Color(0),cout<<":爆炸!";
    SetPos(13,20);Color(16),cout<<"●",Color(0),cout<<":回旋!开始做向左加速运动!发射";
    SetPos(14,20);cout<<"          时获得双倍水平速度。";
    SetPos(15,20);Color(17),cout<<"●",Color(0),cout<<":[被动] 弹跳力为普通鸟三倍。发射";
    SetPos(16,20);cout<<"          时获得1.5倍水平、竖直速度。";
    SetPos(11,1);cout<<"-------- 猪 猪 技 能 --------";
    SetPos(13,2);Color(2),cout<<"●",Color(0),cout<<":无技能";
    SetPos(14,1);Color(8),cout<<"▁▅";
    SetPos(15,2);Color(2),cout<<"●",Color(0),cout<<":防御力为普通猪三倍";
    SetPos(16,2);cout<<"○";
    SetPos(17,2);cout<<"│:做空中简谐运动,受死范围";
    SetPos(18,2);Color(2),cout<<"●",Color(0),cout<<"  为普通猪两倍。";
    SetPos(19,2);cout<<"    有几率跳起或发射冲击波,冲";
    SetPos(20,1);Color(2),cout<<"﹃●",Color(0),cout<<":炸开小鸟与同类,可以引爆TNT!";
    SetPos(18,20);Color(5),cout<<"按 y 开始游戏!";
    A:if(kbhit()) g=_getch();
    if(g!='y') goto A;
}
int main(){
    system("mode con cols=79 lines=22");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));St:Start();system("cls");
    memset(blt,0,sizeof(blt));memset(pig,0,sizeof(pig));
    memset(boo,0,sizeof(boo));memset(m,0,sizeof(m));
    T=put=K=K2=Sle=What=Pig=Sco=0;pigk=scok=-1;
    Xy=4,yX=18,yY=6;Blt=20,Bot=20,Pit=60;Color(7);
    SetPos(19,14);cout<<"■";
    SetPos(20,13);cout<<" █▍";m[19][14]=m[20][13]=m[20][14]=1;
    SetPos(21,0);for(int i=0;i<39;i++) cout<<"■",m[21][i]=1;
    Color(0);What=rand()%5+1;
    while(1)
    {
        if(Sco>=1500) break;
        T++;K=0;Color(0);
        if(Sco!=scok) SetPos(1,1),cout<<"分数:"<<Sco<<' ';
        if(Pig!=pigk){SetPos(3,1);cout<<"危险值:";int aa=min(Sco/100,10);Pig+=aa;
        SetPos(3,5);if(Pig<=2) Color(2);else if(Pig<=4) Color(16);else if(Pig<=6) Color(7);else if(Pig<=9) Color(6);
        else if(Pig<=12) Color(3);else if(Pig<=15) Color(17);else Color(11);
        for(int i=1;i<=Pig;i++) cout<<"■";Color(0);cout<<' '<<Pig;for(int i=1;i<=5;i++) cout<<"  ";
        if(Pig>18) break;Pig-=aa;}
        scok=Sco;pigk=Pig;
        if(GetAsyncKeyState(VK_LEFT)&0x8000&&Xy>0) Move(-2),Xy--,K=1;
        if(GetAsyncKeyState(VK_RIGHT)&0x8000&&Xy<10) Move(-2),Xy++,K=1;
        if(K==1)
        {
            if(put==0&&Sle==0) Move(0);
            else Move(-1);
        }
        if(kbhit())
        {
            char g=_getch();
            if(g=='x'||g=='X')
            {
                for(int i=Blt-10;i<=Blt;i++)
                if(blt[i].go==0&&blt[i].boom==0&&blt[i].W!=1&&blt[i].W!=7)
                {
                    blt[i].boom=1;
                    if(blt[i].W==2)
                    {
                        Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*1.2;blt[Blt].vx=blt[i].vx+1;
                        blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
                        Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*0.7;blt[Blt].vx=blt[i].vx-1;
                        blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
                    }
                    if(blt[i].W==3) blt[i].vy=fmax(blt[i].vy*1.5,2.5),blt[Blt].vx+=1,blt[i].ax=0;
                    if(blt[i].W==4)
                    {
                        blt[i].vx=-3;blt[i].ax=0.1;Blt++;blt[Blt].boom=1;blt[Blt].W=10;
                        blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].ax=blt[i].ax,blt[Blt].vx=1;
                    }
                    if(blt[i].W==5) Bot++,boo[Bot].X=blt[i].X,boo[Bot].Y=blt[i].Y,boo[Bot].S=1,boo[Bot].mS=5,blt[i].go=1;
                    if(blt[i].W==6) blt[i].ay=-1,blt[i].ax=0.3,blt[i].vx=min(blt[i].vx/2,(float)0);
                    break;
                }
            }
        }
        if(GetAsyncKeyState(' ')&0x8000&&K==0&&Sle==0)
        {
            if(put<=5) Move(1),yX=18,yY=Xy+1;
            else if(put<=20) Move(2),yX=18,yY=Xy;
            else if(put<=40) Move(3),yX=19,yY=Xy;
            else if(put<=60) Move(4),yX=20,yY=Xy;
            else if(put<=80) Move(5),yX=20,yY=Xy+1;
            else Move(6),yX=20,yY=Xy+2;
            if(put==0) K2=1;if(put==90) K2=-1;
            if(K2==1) put+=min(rand()%7+1,90-put);
            if(K2==-1) put-=min(rand()%7+1,put);
            Cout(1,17,Xy+2);
        }
        if((!(GetAsyncKeyState(' ')&0x8000)&&(put!=0))||(put!=0&&K==1))
        Move(-1),Creat(1,put),put=0,yX=18,yY=5,Sle=1,What=rand()%7+1,Creat(-1,-1),Sco=max(Sco-5,0);
        for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0) Go(i);
        for(int i=Bot-10;i<=Bot;i++) if(boo[i].go==0) Boom(i),Cout(2,0,0);
        for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0) Kill(i);
        if(Sle!=0) Move(-1);
        else if(put==0) Move(0);
        if(T%300==0) system("cls"),pigk=scok=-1;
        if(T%100==0)
        {
            Color(7);
            for(int i=0;i<=18;i++)
            for(int j=0;j<=40;j++) if(m[i][j]==1&&T%100==0) SetPos(i,j),cout<<"■";
            SetPos(19,14),cout<<"■",SetPos(20,13),cout<<" █▍";
            SetPos(21,0);for(int i=0;i<39;i++) cout<<"■";Color(0);
        }
        if(T%min(50,(2000-Sco)/30)==0) Pig++,Creat(0,-1);
        Sleep(30);
    }
    if(Sco<1500) {SetPos(9,17);system("color 7F");Color(11);cout<<"YOU DIE !";}
    else {SetPos(9,17);system("color 6E");Color(5);cout<<"YOU WIN !";}
    SetPos(11,16);Sleep(1000);cout<<"play again? (y/n)";Sleep(1000);char g;
    A:if(kbhit()) g=_getch();SetPos(18,0);
    if(g=='n') return 0;
    else if(g!='y') goto A;
    else if(g=='y') goto St;
}

4.贪吃蛇小游戏

/************************贪吃蛇***********************/
/**********************2012-11-20*********************/
 
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <cmath>
#include <windows.h>
using namespace std;

 
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
 
void locate(int x,int y)
{
    coord.X=y;
    coord.Y=x;
    SetConsoleCursorPosition(hout,coord);
};

void hide()
{
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(hout, &cursor_info);
}
 

double random(double start, double end)
{
    return start+(end-start)*rand()/(RAND_MAX + 1.0);
}
 

int m,n;
 
struct node{
    int x,y;
}snake[1000];
 
int snake_length,dir;
node food;
int direct[4][2]={{-1,0},{1,0},{0,-1},{0,1}};

void print_wall(){
    cout << " ";
    for (int i=1;i<=n;i++)
        cout << "-";
    cout << endl;
    for (int j=0;j<=m-1;j++)
    {
        cout << "|";
        for (int i=1;i<=n;i++) cout << " ";
        cout << "|" << endl;
    }
    cout << " ";
    for (int i=1;i<=n;i++)
        cout << "-";
}

void print_snake(){
    locate(snake[0].x,snake[0].y);
    cout << "@";
    for (int i=1;i<=snake_length-1;i++)
    {
        locate(snake[i].x,snake[i].y);
        cout << "*";
    }
}

bool is_correct(){
    if (snake[0].x==0 || snake[0].y==0 || snake[0].x==m+1 || snake[0].y==n+1) return false;
    for(int i=1;i<=snake_length-1;i++){
        if (snake[0].x==snake[i].x && snake[0].y==snake[i].y) return false;
    }
    return true;
}

bool print_food()
{
    srand((unsigned)time(0));
    bool e;
    while (1)
    {
        e=true;
        int i=(int) random(0,m)+1,j=(int) random(0,n)+1;
        food.x=i;food.y=j;
        for (int k=0;k<=snake_length-1;k++)
        {
            if (snake[k].x==food.x && snake[k].y==food.y)
            {
                e=false;break;
            }
        }
        if (e) break;
    }
    locate(food.x,food.y);
    cout << "$";
    return true;
}

bool go_ahead()
{
    node temp;
    bool e=false;
    temp=snake[snake_length-1];
    for (int i=snake_length-1;i>=1;i--)
        snake[i]=snake[i-1];
    snake[0].x+=direct[dir][0];
    snake[0].y+=direct[dir][1];
    locate(snake[1].x,snake[1].y);
    cout << "*";

    if (snake[0].x==food.x && snake[0].y==food.y)
    {
        snake_length++;
        e=true;
        snake[snake_length-1]=temp;
    }
    if (!e)
    {
        locate(temp.x,temp.y);
        cout << " ";
    }
    else
        print_food();
    locate(snake[0].x,snake[0].y);
    cout << "@";
    if (!is_correct())
    {
        system("cls");
        cout << "You lose!" << endl << "Length: " << snake_length << endl;
        return false;
    }
    return true;
}
int main(){
	cout << RAND_MAX;
    cout << "--------------------贪吃蛇---------------------" << endl;
    cout << "请先输入两个数,表示地图大小.要求长宽均不小于10." << endl;
    cout << "请注意窗口大小,以免发生错位.建议将窗口调为最大." << endl;
    cout << "再选择难度.请在1-10中输入1个数,1最简单,10则最难" << endl;
    cout << "如果你碰到了墙,就会游戏失败,系统会清算你的长度." << endl;
    cout << "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;
    cout << "-----------------------------------------------" << endl;
    cin >> m >> n;
    if (m<10 || n<10 || m>25 || n>40)
    {
        cout << "ERROR" << endl;
        system("pause");
        return 0;
    }
    int hard;
    cin >> hard;
    if (hard<=0 || hard>100)
    {
        cout << "ERROR" << endl;
        system("pause");
        return 0;
    }
    snake_length=5;
    clock_t a,b;
    char ch;
    double hard_len;
    for (int i=0;i<=4;i++)
    {
        snake[i].x=1;
        snake[i].y=5-i;
    }
    dir=3;
    system("cls");
    hide();
    print_wall();
    print_food();
    print_snake();
    locate(m+2,0);
    cout << "Now length: ";
    while (1)
    {
        /*** 难度随长度增加而提高 ***/
        hard_len=(double)snake_length/(double) (m*n);
        /*** 调节时间,单位是ms ***/
        a=clock();
        while (1)
        {
            b=clock();
            if (b-a>=(int)(400-30*hard)*(1-sqrt(hard_len))) break;
        }
        /*** 接受键盘输入的上下左右,并以此改变方向 ***/
        if (kbhit())
        {
            ch=getch();
            if (ch==-32)
            {
                ch=getch();
                switch(ch)
                {
                case 72:
                    if (dir==2 || dir==3)
                        dir=0;
                    break;
                case 80:
                    if (dir==2 || dir==3)
                        dir=1;
                    break;
                case 75:
                    if (dir==0 || dir==1)
                        dir=2;
                    break;
                case 77:
                    if (dir==0 || dir==1)
                        dir=3;
                    break;
                }
            }
        }
        /*** 前进 ***/
        if (!go_ahead()) break;
        /*** 在最后输出此时长度 ***/
        locate(m+2,12);
        cout << snake_length;
    }
    system("pause");
    return 0;
}

5.飞翔的小鸟简易版

#include<iostream>
#include<cstdlib>
#include<conio.h>
#include<windows.h>
using namespace std;
int x=50;  //边界的x和y
int y=20;
int birdx=x/5;
int birdy=y/4;
int speed=0;//控制速度
int speed2=0;//控制障碍物的来临速度
int xx=x/2;//障碍物的x坐标
int yy= rand()%(y/2);
 
int count=0;//记录笨鸟的得分
 
 
void notin();
void in();
void gotoxy(int x,int y)
     {
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=x;
	pos.Y =y;
	SetConsoleCursorPosition(handle,pos);
}
void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor_info={1,0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void show()//开始的初始化(达到循环显示的目的)
{
         gotoxy(0,0) ;
         	HideCursor()   ;
         	for(int i=1;i<y;++i){
         		for(int j=1;j<x;++j){
         			if(j==birdx&&i==birdy){
         				cout<<"\b"<<"鸟"; //\b的作用是因为输出的汉字多占了一个大小的空间,\b删除之前一个位置的输出
					 }
					 else if(j==xx&&(i>=1&&i<=yy)||j==xx&&(i>=yy+5&&i<=y))
					 cout<<"*" ;
 
					 else
					 cout<<" ";
				 }
				 cout<<endl;
			 }
 
			 cout<<"得分:"<<count/6<<endl;
 
}
void in()
{
if(kbhit())
{
	   string ss;
	  ss=getch();
 
		  if(ss==" ")
		  {
			if(birdy>3)birdy-=3;
		  }
 
 
}
}
void notin()  //改变小鸟的位置和障碍物的位置
{
		if (birdx==xx&& (birdy>=yy&&birdy<=yy+5))
        count+=1;
 
      if(speed!=3)
      {
      	speed++;
	  }
	   if(birdy!=y&&speed==3)
   {
		   birdy+=1;
		   speed=0;
	}
 
 
	  if(speed2!=5)
	  {
	  	speed2++;
	  }
	  else if(speed2==5)
	  {
	  	if(xx>0)
	  {
	  	xx--;
 
	  }
 
 
	  if(xx==0)
	  {
	  	 xx=x/2;//障碍物的x坐标
         yy= rand()%(y/2);
         while(yy==0)
         {
			yy= rand()%(y/2);
		 }
 
	  }
   speed2=0;
	  
}
 
 
 
}
int main()
{
	   while(yy==0)
{
	  yy= rand()%(y/2);
}
      while(1)
{
 
 
		    show();
		    notin();
		    in() ;
		    if(birdx==xx&&(((birdy>1&&birdy<yy))||(birdy >yy+5&&birdy<y)))
{
		 cout<<"YOU ARE FILLED!!"<<endl;
		 break;
}
 
 
 
}
		return 0;
}

6.生化危机游戏

/*
    游玩提示:
	  1.开局让输入1~7,输入8,可以开挂(可以拥有子弹和食物共20000000份).
	  2.假如没有开挂,让输入子弹,食物时,输入666666 5201314,可以开启秘籍(最多拥有999份子弹和999份食物).
*/
#include<bits/stdc++.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;
int mzhg,zd,swhm,qxs,swx,sn,mp,tongguan,sw1,zd1,sn1,mz1,mp1,zbbj,ccg,mzzd,mz,tongguan1,sw,x,s,cdd,jg,qiang,gun,by,vv,gjj[100],hjj[100],zjj[100],kg=0,ch;
void Read() {
	ifstream in("丧尸危机存档.in");
	in>>mzhg>>zd>>swhm>>qxs>>swx>>sn>>mp>>tongguan>>sw1>>zd1>>sn1>>mz1>>mp1>>zbbj>>ccg>>mzzd>>mz>>tongguan1>>sw>>x>>s>>cdd>>jg>>qiang>>gun>>by>>vv;
	for(int i=0; i<=99; i++) in>>gjj[i];
	for(int i=0; i<=99; i++) in>>hjj[i];
	for(int i=0; i<=99; i++) in>>zjj[i];
	in.close();
}
void Save() {
	ofstream out("丧尸危机存档.in");
	out<<mzhg<<' '<<zd<<' '<<swhm<<' '<<qxs <<' '<<swx<<' '<<sn<<' '<<mp<<' '<<tongguan<<' '<<sw1<<' '<<zd1<<' '<<sn1<<' '<<mz1<<' '<<mp1<<' '<<zbbj<<' '<<ccg<<' '<<mzzd<<' '<<mz<<' '<<tongguan1<<' '<<sw<<' '<<x<<' '<<s<<' '<<cdd<<' '<<jg<<' '<<qiang<<' '<<gun<<' '<<by<<' '<<vv<<'\n';
	for(int i=0; i<=99; i++) out<<' '<<gjj[i];
	out<<'\n';
	for(int i=0; i<=99; i++) out<<' '<<hjj[i];
	out<<'\n';
	for(int i=0; i<=99; i++) out<<' '<<zjj[i];
	out<<'\n';
	out.close();
}
void Slowsay(string a) {
	int l=a.size();
	for(int i=0; i<l; i++) {
		cout<<a[i];
		Sleep(20);
	}
	printf("\n");
	Sleep(100);
}
int read() {
	char ch=_getch();
	while(ch>'9'||ch<'0') ch=_getch();
	return ch-48;
}
void qp() {
	system("cls");
	if(swx==2) Slowsay("王,"),zd=99999,sw=99999;
	Slowsay("当前你的状态是\n");
	printf("子弹 %d,食物 %d\n",zd,sw);
}
int esl(){
	system("cls");
	Slowsay("你,饿死了。\n");
	if(vv==0) ch=_getch();
	hjj[1]=1;
	Slowsay("Bad End  1\n");
	ch=_getch();
	s++;
	return 0;
}
int mzd(){
	hjj[2]=1;
	system("cls");
	Slowsay("你,被丧尸咬死了。\n");
	if(vv==0) ch=_getch();
	Slowsay("Bad End   2\n");
	ch=_getch();
	s++;
	return 0;
}
int hd1(){
	system("cls");
	Slowsay("在某一天,你家门口响起了敲门声,你打开门,外面的发现让你欣喜若狂\n");
	Slowsay("政府的救援部队已经消灭了这个城市的丧尸,\n他们在这个城市的各个角落搜索着可能存在的幸存者.\n");
	Slowsay("Happy End-----苟到最后\n");
	Sleep(1000);
	gjj[1]=1;
	return 0;
}
int hd2(){
	system("cls");
	Slowsay("在与妹子相处的这些时间里,你与她相爱了\n");
	Slowsay("你们的生活是那样的幸福\n");
	Slowsay("直到有一天......\n");
	Slowsay("基地首领希望你去执行一个任务,你选择\n");
	Slowsay("1.独自一人前往\n");
	Slowsay("2.和妹子一起去\n");
	while(true){
		int x;
		x=read();
		if(x<1||x>2){
			Slowsay("请重新输入\n");
			continue;
		}
		if(x==1){
			Slowsay("当你完成任务回来的时候,发现——\n");
			Slowsay("基地被丧尸攻破了\n");
			Slowsay("这个基地的所有人都被丧尸杀了,一个人都没跑出来\n");
			hjj[4]=1;
			Slowsay("Bad End    4");
			s++;
		}
		if(x==2){
			Slowsay("当你和妹子完成任务回来时,\n");
			Slowsay("基地已经变成一片废墟了\n");
			Slowsay("你和妹子没有办法,只能到处流浪\n");
			Slowsay("不过,两个人总比一个人要好\n");
			gjj[2]=1;
			Slowsay("Happy End------神仙眷侣");
		}
		break;
	}
	Sleep(1000);
	return 0;
}
int hd3(){
	system("cls");
	Slowsay("你就这样平静的生活在这个基地里\n");
	Slowsay("直到某一天,大量的丧尸进攻了这里\n");
	if(zd>9){
		Slowsay("每个人都在尽自己的努力去守卫基地\n");
		Slowsay("每个人都做到了自己能做到的\n");
		Slowsay("最后,奇迹出现了\n");
		Slowsay("大家成功守住了基地\n");
		Slowsay("而你,也因为在守卫过程中立下大功成为了这个基地的英雄\n");
		Slowsay("顺便说一句,到死了你也没女朋友\n");
		gjj[3]=1;
		Slowsay("Happy End-----英雄不朽");
		return 0;
	}
	Slowsay("丧尸的数量实在太多了,\n");
	Slowsay("尽管基地的大家都在尽全力防守\n");
	Slowsay("可基地还是被攻破了\n");
	Slowsay("而你,也死在了这里\n");
	s++;
	hjj[5]=1;
	Slowsay("Bad End     5");
	Sleep(1000);
}
int hd4(){
	system("cls");
	Slowsay("在于少年相处的这些时间里");
	Slowsay("你尽力地保护着他");
	Slowsay("而他也常常给你带来惊喜");
	Slowsay("慢慢的,你开始认清你自己");
	Slowsay("你是个gay");
	Slowsay("于是,你就和少年性福快乐的生活在了一起");
	Slowsay("Happy End-----认清自己");
	gjj[4]=1;
	Sleep(1000);
}
int td(){
	system("cls");
	char ch;
	Slowsay("那箱饼干与你的枪一起发出了强光\n");
	Slowsay("紧接着,他们融为了一体\n");
	Slowsay("当光芒散去时,整个世界都发生了变化\n");
	Slowsay("所有的丧尸都变回了人类\n");
	Slowsay("伟大的勇士!丧尸危机终于解除了!!接下来,是普天同庆的大狂欢!!!\n");
	Slowsay("True End-----拯救世界\n");
	Sleep(1000);
	Slowsay("???????????????????????????????????");
	Slowsay("......这是怎么回事......");
	Slowsay("......为什么......");
	Slowsay("......不是普通的......");
	Slowsay("......从何而来......");
	Sleep(1000);
	Slowsay("。 。 。 。 。 。是谁。 。 。 。 。 。");
	Slowsay("你陷入沉思。");
	if(zjj[1]!=1){
		Slowsay("获得线索-----奇特的枪与饼干");
	}
	zjj[1]=1;
	Sleep(1000);
}
int td2(){
	system("cls");
	char ch;
	Slowsay("你的变异已经开始了");
	Slowsay("你开始疯狂的进食,直到把自己的胃撑破");
	Slowsay("然后,就眼前一黑失去意识");
	Slowsay("再次醒来时,你已经是一个丧尸了");
	Slowsay("奇怪的是,你还保留着自己的意识");
	Slowsay("你感觉到自己的力气变得更大,速度变得更快");
	Slowsay("或许变成丧尸也不错————你这样想着");
	Slowsay("True End-----认清!·本我");
	if(zjj[2]!=1){
		Sleep(2000);
		Slowsay("获得线索-----延迟变异!·少年");
	}
	zjj[2]=1;
	Sleep(1000);
}
int bd8(){
	Slowsay("坐在椅子上的是一个15岁左右的少年");
	Slowsay("正在你因为他的年龄而惊讶时");
	Slowsay("少年却站了起来,看向了你身后的妹子");
	Slowsay("“差不多了吧”,妹子这样说道");
	Slowsay("“可以了”,这是少年的回答");
	Slowsay("然后,你就感到脖子一阵剧痛");
	Sleep(1000);
	Slowsay("在你失去意识前,妹子一直没有松口。");
	s++;
	Slowsay("Bad End     8");
	if(hjj[8]==0){
		Sleep(2000);
		Slowsay("获得线索-----早已变异!·妹子");
	}
	hjj[8]=1;
	Sleep(1000);
}
int td3(){
	system("cls");
	Slowsay("你和妹子冲出了丧尸的围杀,");
	Slowsay("可是当你们来到那个幸存者基地时");
	Slowsay("却发现那个基地有一些不对");
	Slowsay("所有人都死气沉沉的");
	Slowsay("你们直接走向了首领的房间");
	Sleep(1000);
	if(zjj[2]==1&&zjj[3]==1){
		bd8();
		return 0;
	}
	Slowsay("换完子弹的你想离开");
	Slowsay("就在你快要离开的时候,妹子抓住了你的手");
	Slowsay("“我喜欢你,别走”,她这样说");
	Slowsay("于是,你留了下来");
	Slowsay("你们的生活是那样的幸福");
	Slowsay("直到有一天......");
	Sleep(1000);
	Slowsay("基地首领希望你去执行一个任务,\n");
	Slowsay("在执行任务的过程中");
	Slowsay("妹子曾被丧尸咬到过一口");
	Slowsay("她以为你没有发现");
	Slowsay("而你却在远处看到了这一幕");
	Slowsay("奇怪的是,她却并没有变异\n");
	Slowsay("那一刹那你突然想起,");
	Slowsay("你们的房间里,总是弥漫着一股血腥的味道......");
	Sleep(1000);
	Slowsay("Happy End------神仙眷侣");
	Sleep(1000);
	Slowsay("???????????????????????????????????");
	Slowsay("True End------认清?·妹子");
	if(zjj[3]==0){
		Sleep(2000);
		Slowsay("获得线索-----不变异?·妹子");
	}
	zjj[3]=1;
	Sleep(1000);
}
int td4(){
	system("cls");
	Slowsay("当丧尸危机爆发时,你正呆在家里\n");
	char ch=_getch();
	if(vv==0) ch=_getch();
	system("cls");
	Slowsay("当丧*#******丧尸危机*$*&*^&*机爆发时,**你正呆***&*爆发******#在家里**\n");
	Sleep(1000);
	Slowsay("***检*#******测到*不**丧尸危**88机*$匹*$**机爆发时,**配***#在家里****\n");
	Sleep(2000);
	Slowsay("L当****#OG****I危机*$N**E机爆***(RR*8%#404)**发时,**你O*****#在家R里!\n");
	Sleep(2000);
	system("cls");
	if(vv==0) ch=_getch();
	Slowsay("有什么不对劲");
	Slowsay("你这样想着");
	Slowsay("过去了好多天,\n你还是一个人都没有遇到,\n除了丧尸就是丧尸");
	Slowsay("为什么他们......不见了?");
	Slowsay("\n");
	Slowsay("True End------验证失败");
	zjj[4]=1;
	if(zbbj==0)
		Slowsay("进阶线索-----乱码,废弃与失联"),zbbj=1;
	Sleep(1000);
}
int td5(){
	system("cls");
	Slowsay("当少年死去后,整个世界好像变得不同了");
	Slowsay("所有的活人在一瞬间消失");
	Slowsay("所有的丧尸当场去世");
	Slowsay("你的眼前只剩下了黑暗");
	Slowsay("不知道过去了多久,你死了");
	Slowsay("Bad End......");
	Sleep(1000);
	Slowsay("不,还没有结束");
	Slowsay("虽然好像和往常死去之后的感觉一样");
	Slowsay("但是。。。好像。。。");
	Sleep(1000);
	Slowsay("有延迟?。。。");
	Slowsay("。。。在这段时间里,你的思考一直没停。。。");
	Slowsay("True End-----死亡姗姗来迟");
	s++;
	if(zjj[5]==0)
		Slowsay("进阶线索-----少年之死");
	zjj[5]=1;
	Sleep(1000);
}
int tg3(){
	Slowsay("当你再次睁开眼时");
	Slowsay("你发现自己躺在一个营养仓内");
	Slowsay("你无比的确认这就是真实的世界");
	Slowsay("脑中的一切开始明晰起来");
	Slowsay("你认为自己知道了一切的真相");
	Slowsay("去杀光人类吧!!!!");
	Slowsay("你这样想着");
	Slowsay("在身着白大褂的丧尸们的欢呼声中");
	Slowsay("你打碎了玻璃,跑出了营养仓");
	Slowsay("来到了外面这个被战争破坏得满目疮痍的世界");
	Slowsay("战火硝烟,炮声隆隆");
	Slowsay("你熟练的发出嘶吼,呼唤着周围的丧尸");
	Slowsay("你指挥着他们,毁掉了一个又一个人类的基地");
	Slowsay("最后,在这场世纪战争中,丧尸们艰难地取得了胜利");
	Slowsay("作为它们的英雄,你自豪的统治着世界。");
	Slowsay("虽然,其实,在那些你不知道的地方");
	Slowsay("一个个一样的营养仓中,装着一个个一样的你。");
	Slowsay("---------------游戏终极剧情通关-------------");
	tongguan1=2;
	Save();
	Sleep(1000);
}
int tg2(){
	Slowsay("当你再次睁开眼时");
	Slowsay("你发现自己躺在一个营养仓内");
	Slowsay("你无比的确认这就是真实的世界");
	Slowsay("可是你却发现自己没法操纵身体");
	Slowsay("隔着玻璃,一个黑色的身影正在操作着");
	Slowsay("你清晰的看见那个人的大脑裸露出来,与你的接在一起");
	Slowsay("这时,又有一大波记忆涌入脑海。");
	Slowsay("“少年与妹子......是以“成功者”“英雄”“神话传说”为原型创造的人物......”");
	Slowsay("“游戏中的情节与场景......取材于现实世界真实案例......”");
	Slowsay("再往后,你的脑中一片混乱。");
	Slowsay("“...舍弃.........熟练..我....智慧..学习........获得.....”");
	Slowsay("“.....种族...探索.......杀...进化.........帮助..需要.....”");
	Slowsay("“...成熟....兵器.....无敌..下风.......战争...伟大.....英雄.....”");
	Slowsay("激昂的声音一直回荡着。");
	Slowsay("---------------游戏进阶剧情通关-------------");
	tongguan1=1;
	Sleep(1000);
}
int td6(){
	Slowsay("一天以后,少年回来了");
	Slowsay("一起回来的还有妹子");
	Slowsay("“找到了......”");
	Slowsay("少年的手中拿着一个破损的铭牌");
	Slowsay("铭牌上的字迹很诡异,但写着熟悉的内容:");
	Slowsay("【22-08-03...】");
	Slowsay("“你的......”");
	Slowsay("妹子神色复杂的看了你一眼");
	Slowsay("“我们是一类人......”");
	Slowsay("“现在,让我把你带出去吧。”");
	if(qxs==1&&swx==0) {
		tg2();
		return 0;
	} else {
		Slowsay("一股强烈的撕扯感出现到了你身上");
		if(swx==1) Slowsay("此时的你,是如此渴望着死亡与结局\n你大笑着张开双臂,迎接了死亡。");
		else Slowsay("此时的你并不能接受如此巨大的伤害"),Slowsay("你死了。");
		Slowsay("Bad End      14");
		if(hjj[14]==0)
			Slowsay("进阶线索-----外面的世界");
		hjj[14]=1;
		s++;
	}
	Sleep(1000);
}

int bd6(){
	system("cls");
	Slowsay("你感觉到自己正在变异,");
	Slowsay("意识开始逐渐模糊起来");
	Slowsay("你的肚子正无比渴望着食物,你啃噬着触及的一切!");
	Slowsay("但是不够,你的身躯饿得干枯,你甚至开始食用自己的躯体!");
	Slowsay("接着,你眼前一黑,再也没有醒来......");
	s++;
	hjj[6]=1;
	Slowsay("Bad End      6");
	Sleep(1000);
}

int bd3(){
	system("cls");
	char ch;
	Slowsay("长久的等待终于让你失去了理智,你疯了。\n");
	Slowsay("Bad End   3\n");
	hjj[3]=1;
	Sleep(1000);
	if(mp==-1){
		Slowsay("当政府的救援队打开你家的门时,你嘶吼着扑了上去");
		if(zd>0)
			Slowsay("他们试图将你击毙,却被你提前一枪击倒");
		else{
			Slowsay("你被他们击毙了");
			Slowsay("Bad End       12");
			s++;
			hjj[12]=1;
			return 0;
		}
		Slowsay("你如同一个熟练的猎手,狩猎着救援队");
		Slowsay("当他们全部死去后,你开始享用起你的大餐");
		Slowsay("Bad End           13");
		if(by==0)
			Sleep(2000),Slowsay("进阶线索-----早已变异!·本我"),by=1;
		hjj[13]=1;
		return 0;
	}
	s++;
}
int bd7(){
	s++;
	system("cls");
	Slowsay("你,被狗咬死了");
	Slowsay("Bad End      7");
	hjj[7]=1;
	Sleep(1000);
}

int bd15(){
	s++;
	Slowsay("你发现这笔迹有些不对");
	Slowsay("就好像是新写上去的一样");
	Slowsay("认字迹的话,好像还十分熟悉");
	Sleep(1000);
	Slowsay("正当你想的入迷的时候,你的脖子被咬住了");
	Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
	Slowsay("Bad End     15");
	if(hjj[15]==0) {
		Sleep(2000);
		Slowsay("进阶线索-----伪造......");
	}
	hjj[15]=1;
	Sleep(1000);
}
int tgg3(){
	system("cls");
	Slowsay("你杀掉了少年,并吃掉了他的尸体");
	Slowsay("世界开始崩塌");
	tg3();
	Sleep(1000);
}
int bd9(){
	s++;
	system("cls");
	Slowsay("诡异的是,当你杀光了跟来的丧尸后,发现地下室里并没有丧尸");
	Slowsay("这里有的,只是一个穿着白大褂的尸体");
	Slowsay("在尸体的衣服口袋中,你找到了一个笔记本");
	Slowsay("****(无法辨认)1号****进展*****永生**");
	Slowsay("今********,*号诞生了,他比其*****更*");
	Slowsay("有些不对,*****的发育*****太快***");
	Slowsay("2号的**被***出有*****强感染性*****");
	Slowsay("**********************************");
	Slowsay("***瓶颈,或许我们**应该****活体样本");
	Slowsay("**,**样本*****失去活性,*****但**在动\n");
	if(mp==-1) {
		bd15();
		return 0;
	}
	Slowsay("正当你看的入迷的时候,你的脖子被咬住了");
	Slowsay("在死前,你隐约听到了少年的声音,“Again.”");
	Slowsay("Bad End     9");
	if(hjj[9]==0) {
		Sleep(2000);
		Slowsay("获得线索-----实验体·1号和2号");
	}
	hjj[9]=1;
	Sleep(1000);
}

int tg(){
	system("cls");
	Slowsay("不知为何,当你走到这里时,感到世界在一瞬间发生了变化");
	Slowsay("你不知道这个变化发生在那里,你只知道,现在的世界十分违和");
	Slowsay("或许,这个世界不是真实的");
	Slowsay("当你的脑中出现了这个的时候,你眼前的世界,蹦塌了");
	Slowsay("于此同时,大量记忆冲进了你的脑海");
	Slowsay("不,它们只是回来了,这本身就是你的记忆");
	Slowsay("他们在一开始被一些虚假的记忆所替换");
	Slowsay("从记忆中,你得知你此时正在玩一个vr游戏");
	Slowsay("少年与妹子则是游戏的npc");
	Slowsay("这款游戏号称有着超强的代入感");
	Slowsay("你在发售当天就买来玩了");
	Slowsay("“这游戏真是了不起啊”,你这样想着,“再玩一次吧”");
	Slowsay("...是啊,没错,这一切只是游戏,游戏。............");
	Sleep(1000);
	Slowsay("躺在仓中的你,自始至终,都没有睁开眼。");
	Slowsay("---------------游戏基础剧情通关-------------");
	cdd=0;
	tongguan=1;
	Sleep(1000);
}
int cg(){
	system("cls");
	Slowsay("你感觉到违和感在不断加深");
	Slowsay("世界好像不再是真实的");
	Slowsay("你现在脑中只有一种想法\n");
	Sleep(1000);
	Slowsay("活下去!越久越好!!!");
	Sleep(1000);
}
int cg2(){
	system("cls");
	system("Color C");
	Slowsay("违和感在此时已经聚集到了顶峰\n");
	Slowsay("你的脑中想清楚了一切\n");
	Slowsay("1.那么,下一步是  杀光他们\n");
	Slowsay("2.那么,下一步是  团结起来\n");
	x=read();
	if(x==1)
		Slowsay("已立起尸王线flag,接下来,去打通全 15 badend!"),swx=1,qxs=1;
	else
		Slowsay("“看来你还是没懂啊......”背后传来冷冷的声音\n\n“ A  G  A  I  N   . ”");
	system("Color F");
	Sleep(1000);
}
int Swx(){
	system("cls");
	Slowsay("哈。。。哈。。。哈。。。。。。");
	Slowsay("我。。。已经完成了。。。");
	Slowsay("所有的死法。。。我都体验了一遍了。。。");
	Slowsay("我。。。一直是只丧尸吧。。。");
	Slowsay("无论被打倒多少次。。。我都会站起来继续。。。");
	Slowsay("只要是我想通的结局。。。我便一定会通掉它。。。");
	Slowsay("只要是我想杀的人。。。我便一定会杀死他。。。");
	Slowsay("只要是我想知道的真相。。。我便一定会知晓它。");
	Slowsay("我。。。已经不是以前的那个懦弱无能的我了。。。");
	Slowsay("这一轮。。。我。。。要成为王!!!\n");
	Slowsay("在实验室中,为首者发出低哑的嘶吼:");
	Slowsay("所有人员一级戒备!实验,进入最后阶段!!");
	Slowsay("------------终极剧情-尸王线开启!------------");
	cdd=0;
}
int bd10(){
	system("cls");
	Slowsay("你发现了另一个基地");
	Slowsay("弹尽粮绝的你选择加入了他们");
	Slowsay("之后的每一天都十分单调");
	Slowsay("外出寻找物资,然后天黑了回家睡觉");
	Slowsay("应该是这样吗?");
	Slowsay("也许吧");
	Slowsay("Bad End     10");
	hjj[10]=1;
	Sleep(1000);
}
int hd5(){
	Slowsay("没关系的,一切都会过去的");
	Slowsay("你这样说的");
	Slowsay("他似乎感觉到了你的善意,一点一点向你靠近");
	Slowsay("你紧紧的抱住了他");
	Slowsay("我会保护好你的");
	Sleep(1000);
	Slowsay("Happy End-----跨越物种的gay~");
	Sleep(1000);
}
int sswj(){
	Save();
	system("cls");
	int w=0;
	mp=0;
	if(tongguan==1&&zjj[4]==0) {
		Slowsay("检测到你已通关,是否领取特殊物品\n");
		Slowsay("1.领取");
		Slowsay("2.不领取");
		while(true) {
			x=read();
			if(x==1)
				mp=-1;
			if(x==2) {
				td4();
				return 0;
			}
			break;
		}
	}else if(tongguan==1){
		Slowsay("检测到你已通关,已领取特殊物品\n");
		mp=-1;
	}
	char ch;
	if(cdd==1){
		Slowsay("是否读取存档\n");
		Slowsay("1.读取\n");
		Slowsay("2.不读取\n");
		x=read();
		if(x==1){
			sw=sw1;
			zd=zd1;
			sn=sn1;
			mz=mz1;
			mp=mp1;
			goto cddd1;
		}
	}
	system("cls");
	Slowsay("当丧尸危机爆发时,你正呆在家里\n");
	if(vv==0) ch=_getch();
	if(kg==1){
	    Slowsay("你有200000000点物资可以分配到子弹和食物上");
    }else{
	    Slowsay("你有10点物资可以分配到子弹和食物上");
    }
	if(swx==2) Slowsay("...\n\n但是!不!我已经不会再惧怕食物短缺与丧尸小兵了!\n\n我,应当是世界的王!!\n"),zd=99999,sw=99999;
	else {
		if(vv==0) ch=_getch();
		int x,y;
		qiang=0;
		gun=0;
		zd=0;
		sw=0;
		mz=0;
		mzzd=0;
		sn=0;
		mzhg=0;
		Slowsay("\n请输入你的选择(此次输入需键入回车,例:5 5 )\n");  //输入666666 5201314可以得到999份食物和999份子弹 
		while(true){
			scanf("%d%d",&x,&y);
			zd=x;
			sw=y;
			if((kg==0? x+y!=10:x+y!=200000000)||x<0||y<0){
				if(x==666666&&y==5201314){
					Slowsay("启用秘籍\n");
					Slowsay("请输入你真正需要的子弹数和食物数(上限:999 )\n");
					scanf("%d%d",&x,&y);
					zd=min(x,999);
					sw=min(y,999);
					break;
				}
				Slowsay("请重新输入\n");
				w++;
				if(w>5) {
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
					Slowsay("行了行了,这只是第一个选择而已\n"),
					        Slowsay("有必要这么皮吗\n"),
					        Slowsay("自动分配食物3个子弹7个\n");
					if(vv==0) ch=_getch();
					sw=3,zd=7;
					break;
				}
			} else break;
		}
	}
	Slowsay("你的家里是个较为安全的地方,你可以选择搜索你家的物资或是去邻居家看看\n");
	if(vv==0) ch=_getch();
	Slowsay("1.留在家中\n");
	Slowsay("2.前往邻居家\n");
	while(true) {
		x=read();
		if(x!=1&&x!=2)
			Slowsay("请重新输入\n");
		else if(x==1) {
			if(swx==2) {
				Slowsay("饿啊!为什么我还呆在家里!!");
				break;
			} else {
				Slowsay("在二楼,你发现了一些食物食物+3\n");
				if(vv==0) ch=_getch();
				Slowsay("在家里过了一夜,食物-1\n");
				sw=sw+2;
				break;
			}
		} else {
			if(swx==2) {
				Slowsay("可恶!为什么邻居家里没有人!!");
				break;
			} else {
				Slowsay("在前往邻居家的路上,你遇到了丧尸\n");
				if(vv==0) ch=_getch();
				if(zd<1) {
					Slowsay("你朝他开了一枪,不过枪里没有子弹,你被他咬死了\n");
					if(vv==0) ch=_getch();
					hjj[11]=1;
					Slowsay("Bad End      11\n");
					s++;
					if(vv==0) ch=_getch();
					Slowsay("另外在说一句,一个子弹都不带,还到处乱浪,你是真的作");
					return 0;
				} else {
					Slowsay("你用你手中的枪结束了他的生命,子弹-1\n");
					zd=zd-1;
					if(vv==0) ch=_getch();
					Slowsay("邻居家里不知为何并没有人,你在仔细搜索后发现了一个弹夹,里面有4发子弹\n");
					zd+=4;
					if(vv==0) ch=_getch();
					Slowsay("在邻居家过了一夜后,食物-2\n");
					sw=sw-2;
					if(sw<0) {
						esl();
						return 0;
					}
				}
				break;
			}
		}
	}
	if(vv==0) ch=_getch();
	qp();
	Slowsay("你回想起这附近有一座商场,你决定\n");
	if(vv==0) ch=_getch();
	Slowsay("1.前往商场\n");
	Slowsay("2.到处乱走\n");
	Slowsay("3.留在屋子里\n");
	while(true) {
		x=read();
		if(x!=1&&x!=2&&x!=3) {
			Slowsay("请重新输入\n");
			continue;
		}
		if(swx==2&&x==1) {
			system("cls"),Slowsay("你循着残存的记忆前往商场,找到了适合你膨胀体型的衣服,可以继续隐藏下去。\n\n"),mz=1;
			break;
		} else if(swx==2&&x==2) {
			system("cls"),Slowsay("你到处乱走,见人即杀,丧尸与人类的血混合着溅满了街道,\n惨叫连连,火光接天,如同末世一般。\n你站在尸山上狂笑,不屑于看那些渺小的灵魂。\n\n然而,你丝毫没有注意,一个娇小的身影远远的看到了你,捂着嘴逃之夭夭。\n\n"),mz=10086;
			break;
		} else if(swx==2&&x==3) {
			system("cls");
			Slowsay("你如一名老练的猎手忍耐着饥饿,终于等来了敲门声。\n你得意洋洋的屠杀着这送上门来的大餐\n并跟踪着逃兵进入了幸存者基地。\n那一天,残阳似血,为浸染大地的红再镶上一道道金光。\n\n");
			Sleep(1000);
			return 0;
		} else if(x==3) {
			if(sw<2) {
				esl();
				return 0;
			}
			Slowsay("无聊正在逐渐消磨你的意志,但你还是坚持了下来。食物-2\n");
			sw=sw-2;
			if(vv==0) ch=_getch();
			Slowsay("之后的每一天你都是这样,独自一人在家中等待救援\n");
			if(vv==0) ch=_getch();
			Slowsay("在过了好久之后\n");
			cout<<mp;
			if(sw<6) {
				esl();
				return 0;
			}
			x=rand()%2;
			if(x==1&&mp==0) {
				hd1();
				return 0;
			} else {
				bd3();
				return 0;
			}
		} else if(x==2) {
			int xx=rand()%3;
			if(xx!=0) {
				Slowsay("在到处乱走的过程中,你遇到了来自世界各地的丧尸,子弹-2\n");
				if(zd<2) {
					mzd();
					return 0;
				}
				zd=zd-2;
			} else {
				Slowsay("在到处乱走的过程中,你走入了一处曾为战场的废墟\n");
				if(vv==0) ch=_getch();
				Slowsay("你循着硝烟味,终于找到了军队残留的弹药箱,子弹+6\n");
				zd+=6;
			}
			break;
		} else if(x==1) {
			if(zd<4) {
				mzd();
				return 0;
			}
			Slowsay("在前往商场的过程中,你遇到了丧尸,子弹-4\n");
			zd=zd-4;
			if(vv==0) ch=_getch();
			Slowsay("你在商场发现了食物与子弹,食物+3,子弹+2\n");
			sw=sw+3;
			zd=zd+2;
			break;
		}
	}
	if(mz!=10086) {
		Slowsay("你在回家的路上发现了一个女幸存者\n");
		if(vv==0) ch=_getch();
		Slowsay("她试图向你讨要食物,你的选择是\n");
		Slowsay("1.不给\n");
		Slowsay("2.给她2份食物\n");
		Slowsay("3.给她2份子弹\n");
		Slowsay("4.给她一枪\n");
		while(true) {
			x=read();
			if(x<1||x>4) {
				Slowsay("请重新输入。\n");
				continue;
			}
			if(x==1) {
				Slowsay("妹子生气的走了。\n");
				if(vv==0) ch=_getch();
			}
			if(x==2) {
				if(sw<2) {
					Slowsay("食物不足\n");
					continue;
				}
				sw=sw-2;
				mzhg++;
				Slowsay("你的食物-2,妹子好感度+1\n");
				if(vv==0) ch=_getch();
			}
			if(x==3) {
				if(zd<2) {
					Slowsay("子弹不足\n");
					continue;
				}
				mzzd=1;
				Slowsay("你给了妹子两份子弹,妹子离开了\n"),zd=zd-2;
				if(vv==0) ch=_getch();
			}
			if(x==4) {
				if(zd<1) {
					Slowsay("子弹不足\n");
					continue;
				}
				zd=zd-1;
				Slowsay("你一枪杀死了妹子,并从她的尸体上找到了4份食物\n");
				sw=sw+4;
				mzhg=-1;
				if(swx==2) Slowsay("你吃掉了妹子的尸体,真是人间佳肴!\n"),mzhg=-10086;
			}
			if(swx==2&&x!=4) Slowsay("你看着妹子的背影在心中狂笑\n"),mzhg=10086;
			break;
		}
	}
	Slowsay("又过了一夜,你的食物-2\n");
	if(vv==0) ch=_getch();
	qp();
	sw=sw-2;
	if(sw<0) {
		esl();
		return 0;
	}
	if(mzhg==1) Slowsay("那个妹子又来找到了你,并邀请你加入他们的幸存者基地\n");
	else Slowsay("你在附近发现了一个幸存者基地\n");
	if(swx!=2) {
		Slowsay("在前往基地的途中,你遇到了丧尸\n");
		Slowsay("你且战且退,大量丧尸把你逼进了一家商店\n");
		Slowsay("门口的丧尸越来越多,你选择\n");
		Slowsay("1.杀出去\n");
		Slowsay("2.守在这\n");
		while(true) {
			x=read();
			if(x<1||x>2) {
				Slowsay("请重新输入\n");
				continue;
			}
			if(x==1) {
				int res=0;
				if(mzhg>0)
					res=1;
				else res=3;
				if(zd<res) {
					mzd();
					return 0;
				}
				zd=zd-res;
				printf("你消耗了一些子弹冲了出去,子弹-%d\n",res);
				if(mzzd==1&&mp==-1) {
					Slowsay("妹子在她杀死的丧尸的尸体上找到了许多物资,子弹+7,食物+3\n");
					zd=zd+7;
					sw=sw+3;
					mz=1;
					break;
				}
				x=rand()%5;
				if(res==1&&x!=3)
					Slowsay("妹子为了帮你突围,被丧尸咬到,然后自杀了。\n"),mzhg=-1;
				if(x==3&&res==1) {
					td3();
					return 0;
				}
			} else if(x==2) {
				if(zd<5) {
					mzd();
					return 0;
				}
				zd=zd-5;
				Slowsay("你守在这家商店里直到杀死了所有找来的丧尸,子弹-5\n");
				if(mzhg==1){
					Slowsay("妹子在商店中发现了一把有很多子弹的废弃的枪,子弹+10086\n");
					zd+=10086;
					if(vv==0) ch=_getch();
					Slowsay("但是妹子在翻找货架的时候被沾了丧尸血的货架划伤\n");
					Slowsay("妹子自杀了\n");
					mzhg=-1;
				}
			}
			break;
		}
	}
	if(vv==0) ch=_getch();
	qp();
	Slowsay("你来到了这个幸存者基地\n");
	if(mz==10086) {
		system("cls");
		Slowsay("人们在一位年轻首领的带领下顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n哪怕战友们一个个倒下\n哪怕首领被你愤怒的捏爆脑袋\n没有一个人放弃战斗,没有一个人抛弃希望\n\n最后,奇迹出现了\n\n在基地的废墟中,你的尸体沉重的倒下。\n\n");
		s++;
		Sleep(1000);
		return 0;
	}
	Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
	printf("你还有%d份食物,%d份子弹\n",sw,zd);
	if(vv==0) ch=_getch();
	Slowsay("请输入你需要的子弹数(0-9)\n");
	while(true) {
		x=read();
		if(x<0||x>sw) {
			Slowsay("请重新输入\n");
			continue;
		}
		sw=sw-x;
		zd=zd+x;
		if(x>=1) {
			Slowsay("首领很开心你能提供稀缺的食物,多给了你1份子弹\n");
			zd=zd+2;
		}
		break;
	}
	if(vv==0) ch=_getch();
	qp();
	Slowsay("又过了一天,食物-2");
	sw=sw-2;
	if(sw<0) {
		esl();
		return 0;
	}
	if(vv==0) ch=_getch();
	system("cls");
	Slowsay("基地首领希望你加入这个基地\n");
	Sleep(500);
	Slowsay("你的选择是\n");
	Sleep(500);
	system("Color C");
	Slowsay("1.留在这");
	Slowsay("2.离开");
	while(true) {
		x=read();
		if(x<1||x>2) {
			Slowsay("请重新输入\n");
			continue;
		}
		system("Color F");
		if(swx==2&&x==1) {
			system("cls");
			Slowsay("在一个月黑风高的夜里,你终于忍不住袭击了营地。\n年轻首领被你梦中封喉。\n人们顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n没有一个人放弃战斗,没有一个人抛弃希望\n但是他们失败了。\n在基地的废墟中,英雄们的尸体沉重的倒下。\n\n而你狂笑着吞噬着一切。\n\n");
			Sleep(1000);
			return 0;
		} else if(x==1) {
			if(mzhg>-1) hd2();
			else hd3();
			return 0;
		} else if(x==2) {
			Slowsay("你决定\n");
			Slowsay("1.当天离开\n");
			Slowsay("2.再停留一天\n");
			while(true) {
				x=read();
				if(x<1||x>2) {
					Slowsay("请重新输入\n");
					continue;
				}
				if(x==1) break;
				if(x==2) {
					if(vv==0) ch=_getch();
					qp();
					Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n");
					printf("你还有%d份食物,%d份子弹\n",sw,zd);
					if(vv==0) ch=_getch();
					Slowsay("请输入你需要的子弹数\n");
					while(true) {
						x=read();
						if(x<0||x>sw) {
							Slowsay("请重新输入\n");
							continue;
						}
						sw=sw-x;
						zd=zd+x;
						if(x>=3) {
							Slowsay("首领很开心你能提供稀缺的食物,多给了你3份子弹\n");
							zd=zd+3;
						}
						break;
					}
					sw=sw-2;
					if(sw<0) {
						esl();
						return 0;
					}
					Slowsay("又过了一夜,食物-2\n");
				}
				break;
			}
			Slowsay("在你离开的时候,一个少年跑了过来。\n");
			Slowsay("他说,他想要和你一起走\n");
			Slowsay("1.带上他\n");
			Slowsay("2.不带他\n");
			while(true) {
				x=read();
				if(x<1||x>2) {
					Slowsay("请重新输入\n");
					continue;
				}
				if(x==2) {
					Slowsay("少年生气的离开了");
					if(swx!=2) Slowsay(",当他走远了,你才发现\n\n在刚刚的接触中,他偷走了你所有的子弹\n");
					else Slowsay("\n当你走远后,你才发现,少年一直冷笑着跟在你的身后\n"),sn=1;
					zd=0;
				}
				if(x==1) {
					Slowsay("你选择上少年一起走\n");
					Slowsay("少年将他身上带着的一份食物交给了你\n");
					sw=sw+1;
					Slowsay("食物消耗+1,少年入队\n");
					sn=1;
				}
				break;
			}
		}
		break;
	}
	if(vv==0) ch=_getch();
	qp();
	printf("你在路边的一座没人的房子里过了一夜,食物-%d\n",2+sn);
	sw=sw-2-sn;
	if(vv==0) ch=_getch();
	if(sn==1&&swx==2) {
		Slowsay("\n1.杀了少年,这时没人可以阻止你!\n");
		Slowsay("2.我决定在少年面前一直隐瞒到底\n");
		x=read();
		if(x==1) {
			Slowsay("少年不见了,难道他发现了......\n\n你一回头,少年咯咯笑着咬住你的脖子\n\n你应该等我虚弱时再下手啊.....\n\n");
			s++;
			return 0;
		}
	}
	if(sw<0) {
		esl();
		return 0;
	}
	Slowsay("是否存档?\n");
	Slowsay("1.存档(记录当前进度,只能有一个存档)\n");
	Slowsay("2.不存\n");
	x=read();
	if(x==1) {
		cdd=1;
		sw1=sw;
		zd1=zd;
		mp1=mp;
		mz1=mz;
		sn1=sn;
		Slowsay("存档成功");
	}
cddd1:
	qp();
	if(sn==1) {
		vv=0;
		Slowsay("今天一早你就被少年叫醒了,\n");
		if(vv==0) ch=_getch();
		Slowsay("他在床底下发现了一箱方便面,食物+8\n");
		sw=sw+8;
		Slowsay("少年向你讨要武器,你决定\n");
		Slowsay("1.把枪给他\n");
		Slowsay("2.把捡到的水管给他\n");
		Slowsay("3.什么都不给他\n");
		while(true) {
			x=read();
			if(x<1||x>3) {
				Slowsay("请重新输入\n");
				continue;
			}
			if(x==1) gun=0,qiang=2;
			if(x==2) gun=2,qiang=1;
			if(x==3) gun=0,qiang=1;
			break;
		}
	} else {
		Slowsay("你在冰箱里发现了几包巧克力\n");
		if(vv==0) ch=_getch();
		Slowsay("希望它们还没过期吧,食物+3\n");
		sw=sw+3;
	}
	if(vv==0) ch=_getch();
	Slowsay("今天你们来到了一家大商场\n");
	Slowsay("你决定\n");
	Slowsay("1.独自探索1楼\n");
	Slowsay("2.独自探索2楼\n");
	if(sn==1) {
		Slowsay("3.和少年一起探索2楼");
	}
	while(true) {
		x=read();
		if(x<1||x>3) {
			Slowsay("请重新输入\n");
			continue;
		}
		if(x==1) {
			Slowsay("你在一楼发现了一些子弹,子弹+3\n");
			zd=zd+3;
			Slowsay("奇怪的是,一只丧尸都没有看到\n");
			if(vv==0) ch=_getch();
			if(sn>0) {
				if(qiang==2) {
					Slowsay("当你来到二楼时,发现了一地尸体\n");
					Slowsay("少年就倒在这尸体中间,他死前手还紧紧握着枪\n");
					Slowsay("你把枪拿了回来,并在少年的尸体下面发现了一箱压缩饼干\n");
					Slowsay("食物+10086\n");
					if(vv==0) ch=_getch();
					sw+=10086;
					if(sw>10000&&zd>9000) {
						td();
						return 0;
					}
					sn=0;
					qiang=1;
				} else {
					Slowsay("当你来到二楼时,发现了少年的尸体\n");
					if(vv==0) ch=_getch();
					sn=0;
					Slowsay("你紧紧握着手中的枪,猛地一回头\n");
					Slowsay("四周大量的丧尸向你涌来\n");
					if(vv==0) ch=_getch();
					zd=zd-5;
					if(zd<0) {
						mzd();
						return 0;
					}
					Slowsay("你杀光了这些丧尸,子弹-5\n");
					if(vv==0) ch=_getch();
					Slowsay("你在二楼找到了食物,食物+3\n");
					sw+=3;
				}
			}
		}
		if(x==2) {
			Slowsay("你来到了二楼,数之不尽的丧尸忽然从阴影中窜出\n");
			if(qiang==2) {
				Slowsay("尽管你没了枪也尽力抵抗,可丧尸的数量实在太多。\n");
				mzd();
				return 0;
			}
			if(vv==0) ch=_getch();
			zd-=5;
			if(zd<0) {
				Slowsay("尽管你尽力抵抗,可丧尸的数量实在太多。\n");
				mzd();
				return 0;
			}
			Slowsay("你杀光了这些丧尸,子弹-5\n");
			if(vv==0) ch=_getch();
			Slowsay("你在二楼找到了食物,食物+3\n");
			sw+=3;
			if(sn==1) {
				Slowsay("少年在一楼找到了子弹,子弹+3\n");
				zd=zd+3;
			}
		}
		if(x==3&&sn==1) {
			system("cls");
			Slowsay("你们来到了二楼\n");
			if(vv==0) ch=_getch();
			system("Color C");
			Slowsay("数之不尽的丧尸从阴影中窜出");
			Slowsay("尽管你们尽力抵抗,可丧尸的数量实在太多。");
			if(gun!=2&&qiang!=2) {
				Slowsay("没有武器的少年被当场咬死。");
				if(mp==-1&&mz==0){
					td5();
					return 0;
				}
				sn=0;
			}
			Slowsay("其中一只丧尸趁你不注意冲到了你的旁边");
			if(gun==2) Slowsay("就在你要被咬死的时候,少年扔出了手中的水管\n,救下了你");
			else if(qiang!=2) {
				zd=zd-3;
				if(zd<0) {
					mzd();
					return 0;
				}
				Slowsay("你赶忙回头几枪补掉了这只丧尸,子弹-3");
			}
			zd=zd-3;
			if(qiang==2||zd<0) {
				system("Color F");
				mzd();
				return 0;
			}
			system("Color F");
			Slowsay("经过了一番苦战,你们终于战胜了所有丧尸,子弹-3");
			if(vv==0) ch=_getch();
		}
		break;
	}
	if(vv==0) ch=_getch();
	qp();
	if(vv==0) ch=_getch();
	printf("又过了一夜,食物-%d\n",sn+2);
	sw=sw-2-sn;
	if(sw<0) {
		esl();
		return 0;
	}
	qp();
	Slowsay("今天在出门的时候\n");
	Slowsay("你遇到了一条流浪狗\n");
	Slowsay("1.用枪打死它\n");
	Slowsay("2.用食物打发它\n");
	while(true) {
		x=read();
		if(x<1||x>2) {
			Slowsay("请重新输入\n");
			continue;
		}
		if(x==1) {
			zd=zd-1;
			if(zd<0) {
				bd7();
				return 0;
			}
			Slowsay("你一枪打死了这条狗,子弹-1\n");
			if(sn==0) break;
			Slowsay("在打死了狗之后,你忽然发现少年的脸色不太好\n");
			if(vv==0) ch=_getch();
			Slowsay("原来,在昨天的商场中,少年早就被咬了一口");
			Slowsay("他一直瞒着你,不敢说出来");
			Slowsay("此时,他闻到了血腥味,看到了尸体,已经忍不住,濒临变异了!!");
			Slowsay("你决定\n");
			Slowsay("1.杀了他\n");
			Slowsay("2.不杀他\n");
			int a3=0;
			if(gjj[4]==1&&zd<4) {
				Slowsay("3.安抚他\n");
				a3=1;
			}
			while(1) {
				x=read();
				if(x<1||x>3||(x==3&&a3==0)) {
					Slowsay("请重新输入\n");
					continue;
				}
				if(x==1) {
					if(swx==2) {
						if(mzhg<-1000) tgg3();
						else Slowsay("\n“杀我还早的很呢......”\n\n少年咯咯笑着挡下了你所有的攻击\n\n“因为你还不是一个优秀的丧尸......”"),Sleep(1000),mzd();
						return 0;
					}
					if(vv==0) ch=_getch();
					if(mp==-1&&mz==0) {
						Slowsay("奇怪的是,你直接秒掉了他。\n");
						Sleep(1000);
						sn=0;
						td5();
						return 0;
					} else if(mp==-1&&mz!=0) {
						Slowsay("突然,妹子出现了。\n");
						Slowsay("“放着我来!”,妹子与少年搏斗起来,妹子的力气极大,竟然真的压制住了少年!\n");
						Slowsay("在你的惊恐目光下,少年的皮肤渐渐变淡,重新变回了“人”!\n");
						Slowsay("这时,你才注意到少年的声音一直带着点沙哑,如同低吼一般\n");
						Slowsay("“我没事。”他说。\n");
					} else {
						system("Color C");
						Slowsay("你试着向他开枪,子弹穿过了他的身体\n");
						Slowsay("你十分惊恐,疯狂地倾泻着手中的弹药\n");
						Slowsay("“没有用的。”少年咯咯笑着向你走进,\n");
						Slowsay("而他的伤口却以肉眼可见的速度愈合!\n");
						Slowsay("怎么可能!怎么可能,怎么可能......\n");
						system("Color F");
						mzd();
						if(zjj[9]==0) {
							Slowsay("获得线索-----无敌变异!·少年\n");
							Sleep(1000);
							zjj[9]=1;
						}
						return 0;
					}
				}
				if(x==2) {
					system("Color C");
					Slowsay("你看着少年变异\n");
					Slowsay("奇怪的是,他变异后并没有像其他的丧尸一样,向你扑过来\n");
					Slowsay("而是躲在墙角瑟瑟发抖\n");
					Slowsay("你慢慢的走过去\n");
					Slowsay("就在你走近的时候,少年突然暴起\n");
					Slowsay("狠狠地咬住了你的手臂\n");
					Slowsay("你赶忙用枪打死他,可是为时已晚\n");
					system("Color F");
					sn=0;
					if(sw>=6) {
						td2();
						return 0;
					} else {
						bd6();
						return 0;
					}
				}
				break;
			}
			if(x==3&&gjj[4]==1) {
				gjj[5]=1;
				hd5();
				return 0;
			}
		}
		if(x==2) {
			sw=sw-1;
			if(sw<0) {
				bd7();
				return 0;
			}
			Slowsay("你用一份食物引开了这条狗,食物-1\n");
		}
		break;
	}
	if(swx==2) {
		system("cls");
		if(sn==1) Slowsay("少年的变异的很突然,但身为丧尸的你没有受到攻击\n你们结伴一起狩猎着人类\n只是,与少年相处的越久,你就越发感受到他的强大。\n你只好收起杀心跟在他后面。\n应该是这样吗?"),Sleep(1000),Slowsay("\n\n“我错过了机会”\n");
		else Slowsay("少年死后,你无聊的屠杀着一切,\n在接下来的几天里,你轻松的杀掉了城中所有的生物\n之后,你只能天天游荡,无助的面对着这座死城\n应该是这样吗?\n"),Sleep(1000),Slowsay("\n“我走错了路。”");
		Sleep(1000);
		return 0;
	}
	if(vv==0) ch=_getch();
	if(sn==1&&sw>=4&&gun==2&&zd>5) {
		hd4();
		return 0;
	}
	if(sn==1) {
		Slowsay("又过了一天,食物-2\n");
		sw=sw-2;
		if(sw<0) {
			esl();
			return 0;
		}
		if(vv==0) ch=_getch();
		system("cls");
		Slowsay("今天早上,你发现少年不见了\n");
		Slowsay("你决定\n");
		Slowsay("1.去寻找他\n");
		Slowsay("2.不去找他\n");
		while(true) {
			x=read();
			if(x<1||x>2) {
				Slowsay("请重新输入\n");
				continue;
			}
			if(x==1) {
				system("cls");
				qp();
				Slowsay("你通过蛛丝马迹一路追踪,来到了一座大厦前\n");
				Slowsay("在路上,你遭遇了丧尸,子弹-2\n");
				zd=zd-2;
				if(zd<0) {
					mzd();
					return 0;
				}
				Slowsay("你决定\n");
				system("Color C");
				Slowsay("1.破门!冲入大厦\n");
				Slowsay("2.悄悄开门,潜入大厦\n");
				Slowsay("3.寻找其它的入口\n");
				while(true){
					x=read();
					if(x<1||x>3) {
						Slowsay("请重新输入\n");
						continue;
					}
					if(x==1) {
						int xx=rand()%4;
						Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
						Slowsay("丧尸似乎被你惊醒,如同海啸般向你涌来!");
						system("Color F");
						if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
						else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
						else Sleep(1000),mzd();
						return 0;
					}
					if(x==2) {
						int xx=rand()%6;
						Slowsay("你进入大厦才发现这里几乎充满了丧尸!");
						system("Color F");
						Slowsay("怎么回事!!你害怕得定在原地,奇怪的是它们并没有向你扑来,只是疲惫的看着你。");
						Slowsay("定睛一看,丧尸们个个躯体畸形,断手断脚者不乏其数");
						Slowsay("再一看,这些丧尸们被奇怪的机器束缚,不得踏出大厦一步。");
						Slowsay("你大着胆子靠近一个丧尸,发现它的头上有着模糊的字迹");
						Slowsay("【21.7.29,失败】");
						Sleep(1000);
						Slowsay("瞬间,那个丧尸惊恐地捂住头上的字,发出奇怪的吼声!");
						Slowsay("其它丧尸如同被激怒,海啸般向你涌来!");
						if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9();
						else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9();
						else Sleep(1000),mzd();
						return 0;
					}
					if(x==3) {
						system("Color F");
						Slowsay("你走入刚刚的大街,你的老相识开心地吐着舌头看着你");
						Slowsay("......后面跟着它的一堆朋友......");
						Slowsay("......你被讨食的狗狗们追着跑过了两条大街,不停地扔出食物来减缓它们的攻势......");
						if(sw>5) Slowsay("终于,它们全部满足的趴倒在了地上。\n领头狗如同可以听懂人话一样,将你带到了一个隐蔽的地道口前......"),sw-=5,bd9();
						else bd7();
						return 0;
					}
					break;
				}
			}
			break;
		}
	}
	qp();
	if(vv==0) ch=_getch();
	if(mz==1&&sn==1&&swx==0) {
		td6();
		return 0;
	}
	Slowsay("又过了一天,食物-2");
	sw=sw-2;
	if(sw<0) {
		esl();
		return 0;
	}
	Sleep(500);
	Slowsay("遭遇丧尸,子弹-3");
	zd=zd-3;
	if(zd<0) {
		mzd();
		return 0;
	}
	Sleep(500);
	Slowsay("又过了一天,食物-2");
	sw=sw-2;
	if(sw<0) {
		esl();
		return 0;
	}
	Sleep(500);
	Slowsay("遭遇丧尸,子弹-2");
	zd=zd-2;
	if(zd<0) {
		mzd();
		return 0;
	}
	Sleep(500);
	if(ccg==1) {
		tg();
		return 0;
	} else {
		bd10();
		return 0;
	}
}
int main() {
	srand(time(0));
	Read();
	int go=0;
	while(tongguan1!=2) {
		int v=0;
		char ch;
		mp=0;
		if(go==1) {
			Sleep(1000);
			if(vv==0) ch=_getch();
			system("cls");
			Save();
		}
		go=1;
		Slowsay("1.进行游戏\n");
		Slowsay("2.查看成就\n");
		Slowsay("3.查看线索(获得全部线索后通关游戏)\n");
		Slowsay("4.获得一条随机的提示\n");
		Slowsay("5.游戏相关\n");
		Slowsay("6.极速模式\n");
		Slowsay("7.退出游戏\n");
		x=read();
		if(x==1) {
			sswj();
			if(s>50&&swhm==0) {
				swhm=1;
				Slowsay("又死了啊......");
				Slowsay("这已经是第几次了呢......");
				Slowsay("一个柔和的声音从耳边传来");
				Slowsay("或许早该放弃了");
				Sleep(1000);
				Slowsay("获得线索-----计数者");
			}
		}
		if(x==2) {
			int v1=0;
			system("cls");
			if(tongguan1==2) Slowsay("\n已通关终极剧情\n");
			if(tongguan1==1) Slowsay("\n已通关进阶剧情(进阶不重要!终极才是王道!)\n");
			if(tongguan==1) Slowsay("\n已通关基础剧情\n");
			int v=0;
			Slowsay("\nHappy Bnd 达成\n");
			if(gjj[1]==1) Slowsay("苟到最后\n");
			else Slowsay("未达成\n");
			if(gjj[2]==1) Slowsay("神仙眷侣\n");
			else Slowsay("未达成\n");
			if(gjj[3]==1) Slowsay("英雄不朽\n");
			else Slowsay("未达成\n");
			if(gjj[4]==1) Slowsay("认清自己\n");
			else Slowsay("未达成\n");
			if(gjj[5]==1) Slowsay("跨越物种的gay\n");
			else Slowsay("未达成\n");
			Slowsay("\n");
			Slowsay("Bad End 达成(共15个)\n");
			for(int i=1; i<=17; i++)
				if(hjj[i]==1)
					printf("%d ",i),v1++;
			if(v1>=15&&swx==1)
				swx=2,cdd=0,Swx();
			Slowsay("\n");
			printf("当前死亡次数:%d",s);
			Slowsay("\n");
			Slowsay("True End 达成\n");
			if(zjj[1]==1) Slowsay("拯救世界\n");
			else Slowsay("未达成\n");
			if(zjj[3]==1) Slowsay("认清?·妹子\n");
			else Slowsay("未达成\n");
			if(zjj[2]==1) Slowsay("认清!·本我\n");
			else Slowsay("未达成\n");
			if(zjj[4]==1) Slowsay("验证失败\n");
			else Slowsay("未达成\n");
			if(zjj[5]==1) Slowsay("死亡姗姗来迟\n");
			else Slowsay("未达成\n");
			Slowsay("\n");
			if(vv==0) char ch=_getch();
		}
		if(x==3) {
			system("cls");
			int v=0;
			Slowsay("基础线索\n");
			if(zjj[1]==1) Slowsay("    奇特的枪与饼干\n"),v++;
			else Slowsay("    ?????\n");
			if(zjj[2]==1) Slowsay("    延迟变异?·少年\n"),v++;
			else Slowsay("    ?????\n");
			if(zjj[9]==1) Slowsay("    无敌变异!·少年\n"),v++;
			else Slowsay("    ?????\n");
			if(zjj[3]==1) Slowsay("    不变异?  ·妹子\n"),v++;
			else Slowsay("    ?????\n");
			if(hjj[8]==1) Slowsay("    早已变异!·妹子\n"),v++;
			else Slowsay("    ?????\n");
			if(hjj[9]==1) Slowsay("    实验体·1号和2号\n"),v++;
			else Slowsay("    ?????\n");
			if(v>=6&&ccg==0) {
				Sleep(2000);
				cdd=0;
				cg();
				ccg=1;
			}
			Slowsay("进阶线索\n");
			if(swhm==1) Slowsay("    计数者\n"),v++;
			else Slowsay("    ?????\n");
			if(zbbj==1) Slowsay("    乱码,废弃与失联\n"),v++;
			else Slowsay("    ?????\n");
			if(by==1) Slowsay("    早已变异!·本我\n"),v++;
			else Slowsay("    ?????\n");
			if(hjj[15]==1) Slowsay("    伪造......\n"),v++;
			else Slowsay("    ?????\n");
			if(zjj[5]==1) Slowsay("    少年之死\n"),v++;
			else Slowsay("    ?????\n");
			if(hjj[14]==1) Slowsay("    外面的世界\n"),v++;
			else Slowsay("    ?????\n");
			if(v>=12&&qxs==0) {
				Sleep(2000);
				cg2();
				cdd=0;
				Sleep(1000);
				Slowsay("-------- 游戏进阶结局已解锁(快前往达成吧)--------");
				qxs=1;
			}
			if(vv==0) ch=_getch();
		}
		if(x==4) {
			system("cls");
			int y=rand()%3;
			if(y==0) {
				Slowsay("【稀有提示】");
				x=rand()%14;
				if(x==0) Slowsay("【稀有结局提示】 试试 0 10 开局!");
				else if(x==1) Slowsay("【稀有结局提示】 最好的爱总要先错过~");
				else if(x==2) Slowsay("【剧情提示】 二周目:少年变异后有新剧情!");
				else if(x==3) Slowsay("【剧情提示】 不变异的妹子总有一天会在营地暴露!再来一遍!");
				else if(x==4) Slowsay("【剧情提示】 弹尽粮绝之时,变异的少年会记起上辈子的爱情!再来一遍!");
				else if(x==5) Slowsay("【剧情提示】 第二天,和首领换更多子弹,他会更开心!");
				else if(x==6) Slowsay("【剧情提示】 在家里等待疯掉?再来一遍!");
				else if(x==7) Slowsay("【剧情提示】 二周目:再次进入实验室吧!");
				else if(x==8) Slowsay("【剧情提示】 二周目:神枪手妹子...");
				else if(x==9) Slowsay("【剧情提示】 二周目:不带子弹!等待救援!");
				else if(x==10) Slowsay("【通关方式】 二周目:在获得所有线索后前往“外面的世界”。");
				else if(x==11) Slowsay("【通关方式】 三周目:(都提示这么明显了)吃掉妹子,杀掉少年。");
				else if(x==12) Slowsay("【线索提示】 死亡很多次后......(有个地方可以刷死亡次数)");
				else Slowsay("【???】 666666,5201314(会错过一些线索与结局!)");
			} else {
				x=rand()%14;
				if(x==0) Slowsay("加了好感后,妹子有几率不死");
				else if(x==1) Slowsay("少年喜欢子弹");
				else if(x==2) Slowsay("乱走有时可以获得子弹");
				else if(x==3) Slowsay("冲进去活下来几率更大");
				else if(x==4) Slowsay("分头探商店可以获得更多资源");
				else if(x==5) Slowsay("有一些结局只能通关后触发");
				else if(x==6) Slowsay("有一些结局要脸好才能触发");
				else if(x==7) Slowsay("有一些结局要通其他结局后才能触发");
				else if(x==8) Slowsay("大多数时候,你认为一个地方没有好结局只是因为你食物/子弹不够");
				else if(x==9) Slowsay("绝大多数的线索来自结局");
				else if(x==10) Slowsay("三大重叠剧情线路:普通,进阶,尸王线");
				else if(x==11) Slowsay("本游戏是一个剧情严谨,人物丰满,细思极恐的好!游!戏!~");
				else if(x==12) Slowsay("事实证明剧情游戏是最难调的!有Bug一定要去博客说出来啊!(luogu.com.cn/blog/z1e2k3i4/)");
				else Slowsay("完成目标后,需要在线索,成就界面开启新剧情哦");
			}
			if(vv==0) char ch=_getch();
			continue;
		}
		if(x==5) {
			system("cls");
			Slowsay("作者:小小小苗\n");
			Slowsay("改错,调试,搬运,游玩:胎神大大(就是在游戏论坛翻到的宝藏而已emm......)\n");
		}
		if(x==6) {
			system("cls");
			if(vv==0) vv=1,Slowsay("已开启极速模式");
			else vv=0,Slowsay("已关闭极速模式");
		}
		if(x==7){
			system("cls");
			Slowsay("想退?死吧!!");
			s++;
		}
		if(x==8){
			if(kg==0) kg=1;
			else kg=0;
		}
	}
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
	Slowsay("Thanks for playing......");
	Sleep(1000);
	Slowsay("您已通关,我亲爱的 终极丧尸,成功者,杀人机器,你还没杀够吗?......");
	system("Color C");
}

7.2048小游戏

#include<iostream>
#include<vector>
#include<ctime>
#include<cstdlib>
using namespace std;
class Game_2048{
public:
    Game_2048();
    ~Game_2048();
    void introduction();
    bool judgeOver();                            //判断游戏是否结束
    void reSize();
    void printBoard();                          //打印函数
    void getRand();                              //随机在棋盘上生成2,4;
    void slide();                                //滑动
private:
    int m=4, n=4;
    char op;                                   //用户操作
    vector< vector<int> >     board;                                //棋盘
    vector<int>  row;
    bool judgeInsert(int x,int y);
    bool judgeSlide();                               //判断是否能滑动,(未写完)
    void copyBoard(vector< vector<int> > &newBoard,vector< vector<int> > &board);
    void inputOp();
    char getOp();                            //返回操作符

    bool judgeLeftSlide(bool mark=true);
    void leftSlide();                            //左滑动

    bool judgeRightSlide(bool mark = true);
    void rightSlide();

    bool judgeUpSlide(bool mark = true);
    void upSlide();

    bool judgeDownSlide(bool mark = true);
    void downSlide();

    void reStart();
    void enlarge();
};

int main(){
    Game_2048 NB;
    NB.introduction();
    NB.getRand();
    NB.printBoard();
    while (!NB.judgeOver()){
        NB.slide();
        NB.getRand();
        NB.printBoard();
    } 
    cout << "游戏结束!!!\n";
    system("pause");
    return 0;

}

void Game_2048::introduction()
{
    cout << "这是一个2048游戏,规则如下:\n";
    cout << "上划:W;\n下滑:S;\n左划:A;\n右划:D;\n退出:Q;\n重新开始:R;\n请输入下次操作,\n";
}

void Game_2048::slide()
{
    inputOp();
    switch (getOp())
    {
    case 'a':
    case 'A':
        if (judgeLeftSlide())
            do
                leftSlide();
            while (judgeLeftSlide(false));
        else
        {
            cout << "无法左滑动,请重试!!!\n";
            slide();
        }
        break;
    case 'd':
    case 'D':
        if (judgeRightSlide())
            do
                rightSlide();
        while (judgeRightSlide(false));        
        else
        {
            cout << "无法右滑动,请重试!!!\n";
            slide();
        }
        break;
    case 'w':
    case 'W':
        if(judgeUpSlide())
            do
            upSlide();
        while (judgeUpSlide(false));
        else
        {
            cout << "无法上滑动,请重试!!!\n";
            slide();
        }
        break;
    case 's':
    case 'S':
        if(judgeDownSlide())
            do    
                downSlide();
            while (judgeDownSlide(false));
        else
        {
            cout << "无法下滑动,请重试!!!\n";
            slide();
        }
        break;
    case 'p':
    case 'P':
        enlarge();
        break;
    case 'q':
    case 'Q':
        exit(0);
        break;
    case 'r':
    case 'R':
        reStart();
        break;
    default:
        cout << "输入错误,作为惩罚,随机生成一个数!\n";
        break;
    }
}


void Game_2048::reStart()
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
            board[i][j] = 0;
        }
}

void Game_2048::enlarge()
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
        {
            board[i][j] *= 2;
        }
}


char Game_2048::getOp()
{
    return op;
}

void Game_2048::upSlide()
{
    for (int j = 0; j < n; j++)
        for (int i = m - 1; i > 0; i--) {                              //n-1!!
            if (board[i][j] != 0 && board[i - 1][j] == 0)            //移动
            {
                    board[i - 1][j] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int j = 0; j < n; j++)
        for (int i = m - 1; i > 0; i--) {
            if (board[i][j] != 0 && board[i-1][j] == board[i][j])  //覆盖
            {
                board[i-1][j] += board[i][j];
                board[i][j] = 0;
            }
        }
}

bool Game_2048::judgeUpSlide(bool mark)
{
    if (mark)
    {
        for (int i = 0; i < m; i++)
            for (int j = n - 1; j > 0; j--)
            {
                if (board[i][j] == 0)
                return true;
            }
    }
    for (int j = 0; j < n; j++)
        for (int i = m - 1; i > 0; i--) {                              //n-1!!
            if (board[i][j] != 0 && board[i - 1][j] == 0)            //移动
                return true;
            if (board[i][j] != 0 && board[i - 1][j] == board[i][j])  //覆盖
                return true;
        }
    return false;
}

bool Game_2048::judgeDownSlide(bool mark)
{
    if (mark) {
        for (int i = 0; i < m; i++)
            for (int j = n - 1; j > 0; j--)
                {
                    if (board[i][j] == 0)
                        return true;
                }
        
    }
    for (int j = 0; j < n; j++)
                for (int i = 0; i < m - 1; i++) {                              //n-1!!
                    if (board[i][j] != 0 && board[i + 1][j] == 0)            //移动
                        return true;
                    if (board[i][j] != 0 && board[i + 1][j] == board[i][j])  //覆盖
                        return true;

                }
    return false;
}

void Game_2048::downSlide()
{
    for (int j = 0; j < n; j++)
        for (int i = 0; i < m - 1; i++) {                         
            if (board[i][j] != 0 && board[i + 1][j] == 0)            //移动
            {
                    board[i + 1][j] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int j = 0; j < n; j++)
        for (int i = 0; i < m - 1; i++) {
            if (board[i][j] != 0 && board[i + 1][j] == board[i][j])  //覆盖
            {
                board[i + 1][j] += board[i][j];
                board[i][j] = 0;
            }
        }
}


void Game_2048::rightSlide()
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n - 1; j++) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j + 1] == 0)            //移动
            {
                    board[i][j + 1] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n - 1; j++) {
            if (board[i][j] != 0 && board[i][j + 1] == board[i][j])  //覆盖
            {
                board[i][j + 1] += board[i][j];
                board[i][j] = 0;
            }
        }
}

bool Game_2048::judgeRightSlide(bool mark )
{
    if (mark) {
        for (int i = 0; i < m; i++)
            for (int j = n - 1; j > 0; j--)
            {
                if (board[i][j] == 0)
                    return true;
            }
    }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n - 1; j++) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j + 1] == board[i][j])  //覆盖
                return true;
            if (board[i][j] != 0 && board[i][j + 1] == 0)
                return true;
        }
    return false;
}

void Game_2048::leftSlide()
{
    for (int i = 0; i < m; i++)
        for (int j = 1; j < n; j++) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j - 1] == 0)            //移动
            {
                    board[i][j - 1] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int i = 0; i < m; i++)
        for (int j = 1; j < n; j++) {
            if (board[i][j] != 0 && board[i][j - 1] == board[i][j])  //覆盖
            {
                board[i][j - 1] += board[i][j];
                board[i][j] = 0;
            }
        }
}

bool Game_2048::judgeLeftSlide(bool mark)
{
    if (mark) {
        for (int i = 0; i < m; i++)
                for (int j = n - 1; j > 0; j--)
                {
                    if (board[i][j] == 0)
                        return true;
                }
    }
    for (int i = 0; i < m; i++)
        for (int j = n - 1; j > 0; j--) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j - 1] == 0)            //移动
                return true;
            if (board[i][j] != 0 && board[i][j - 1] == board[i][j])  //覆盖
                return true;
        }
    return false;
}

bool Game_2048::judgeOver()
{
    if (op == 'q' || op == 'Q')
        return true;
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
            if (board[i][j] == 2048)
            {
                printBoard();
                cout << "有数字达到了2048,恭喜!!!\n";
                return true;
            }    
        }

    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
             if (board[i][j] == 0)
                return false;
        }
    if (judgeSlide())
        return false;
    else
    {
        cout << "无法再滑动\n";
        return true;
    }
        
}

bool Game_2048::judgeSlide()
{
    vector< vector<int> >     copyBoard;                                //棋盘
    vector<int>  copyRow;
    for (int i = 0; i < n; i++) {
        copyRow.push_back(0);
    }
    for (int i = 0; i < m; i++) {
        copyBoard.push_back(copyRow);
    }
    copyBoard = board;
    upSlide();
    downSlide();
    leftSlide();
    rightSlide();
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
        {
            if (board[i][j] == 0) {
                board = copyBoard;
                return true;
            }    
        }
    return false;
}

void Game_2048::copyBoard(vector< vector<int> >& newBoard, vector< vector<int> >&     board)
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            newBoard[i][j] = board[i][j];
}

bool Game_2048::judgeInsert(int x,int y)
{
    if (board[x][y] == 0)
        return true;
    else
        return false;
}
void Game_2048::getRand()
{
    srand(time(0));
    int x, y,val;
    do
    {
        x = rand() % m;
        y = rand() % n;
    } while (!judgeInsert(x,y));
    val = (rand() % 2 + 1)*2;
    board[x][y] = val;

}

void Game_2048::inputOp()
{
    cin >> op;
}
void Game_2048::reSize()
{
    cout << "请输入棋盘大小m*n\n";
    cin >> m >> n;
    Game_2048();
}

Game_2048::~Game_2048()
{
}

Game_2048::Game_2048()
{
    for (int i = 0; i < n; i++){
        row.push_back(0);
    }
    for (int i = 0; i < m; i++){
        board.push_back(row);
    }
}
void Game_2048::printBoard(){
    cout << "\n--------------\n";
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cout << board[i][j];
            if (j < n-1)
            {
                cout << "—";
            }
            if (j == n-1 && i < m-1)
            {
                cout << endl;
                int count = 0;
                while (count++ < n-1)
                {
                    cout << "|  ";
                }
                cout << "|" << endl;
            }
        }
    }

    cout << "\n--------------\n" ;
}

 8.扫雷小游戏(无尽)

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

#define MAXN 35
#define MIDX 10
#define MIDY 40
#define CG 25
#define CK 80

int G,K,Lnum,Wnum;//G为地图高,K为地图,Lnum为地图中的雷数,Wnum为剩余的小旗数
int nx,ny;//现在光标所在的位置
bool QR=0,Lose=0,is_flag_true[MAXN][MAXN];//QR为确认模式是否打开,Lose为是否输,第三个是这个位置上的旗是否放对
char map[MAXN][MAXN],tmap[MAXN][MAXN];//第一个是只有雷和空地的地图,第二个是玩家能看到的地图
int map1[MAXN][MAXN],mapc[MAXN][MAXN];//map1为数字的地图,其中0代表空地,-1为雷,1-8为周围雷的个数
//mapc为当前格子的颜色
int col[10]={240,249,242,252,241,244,243,240,248};//col[i]表示windows扫雷中i的颜色,col[0]为空格的颜色
int d[10][4]={{0},{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};//8个方向
bool ZB;//作弊是否打开

/*各种函数*/
void color(int);//颜色
void gto(int,int);//光标位置
void make();//制作随机地图
void print();//打印地图等
bool check(int,int);//判断坐标是否合法
bool is_win();//判断是否赢
bool is_lose();//是否输
void dfs(int,int);//用深搜来打开方块
void st(int,int);//试探,即windows扫雷中的左右键同时按
void flag(int,int);//小旗
void bj(int,int);//标记
void swt();//确认模式
void again();//重新开始
void zb();//作弊模式
void mainmain();//主函数
void print_real_map();//打印最终的地图
void begin();//各种操作

int main()
{
mainmain();
}

void color(int a){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}
void gto(int x,int y)
{
COORD pos;pos.X=y;pos.Y=x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

void make()
{
for(int i=1;i<=G;i++)
for(int j=1;j<=K;j++)
map[i][j]='#';//初始化
for(int i=1;i<=Lnum;i++)
{
int x=rand()%G+1,y=rand()%K+1;
while(map[x][y]=='O')
x=rand()%G+1,y=rand()%K+1;
map[x][y]='O';
}//随机放雷
for(int i=1;i<=G;i++)
for(int j=1;j<=K;j++)
{
if(map[i][j]=='O')map1[i][j]=-1,mapc[i][j]=240;//如果是雷
else
{
for(int k=1;k<=8;k++)
if(map[i+d[k][0]][j+d[k][1]]=='O')
map1[i][j]++;//计算周围雷的个数
mapc[i][j]=col[map1[i][j]];//根据格子上的数设置颜色
}
}
for(int i=1;i<=G;i++)
for(int j=1;j<=K;j++)
if(mapc[i][j]==0)//空地
mapc[i][j]=240;
}
void print()
{
system("cls");
gto(0,MIDY-4); color(233); printf("扫雷  cyh");
color(240);
gto(1,MIDY);
for(int i=2;i<=G+1;i++)
{
gto(i,0);
for(int j=1;j<=K;j++)
printf("#"),tmap[i-1][j]='#';//初始化玩家所看到的地图
}

gto(2,0);
nx=2,ny=0;
color(15);
printf("@");

color(15);
gto(2,2*K+5);printf("-----规则-----");
gto(3,2*K+5);printf("wasd:选择位置");
gto(4,2*K+5);printf("空格:打开");
gto(5,2*K+5);printf("1键:试探周围8个方块,如果其中有雷则不会打开,无");
gto(6,2*K+5);printf(" 雷或旗帜标对了则会将周围无雷的位置打开,");
gto(7,2*K+5);printf(" 如果试探时周围有标错的旗帜,则会游戏失败");
gto(8,2*K+5);printf(" 必须额外确认一次,以便查看周围被试探的区域");
gto(9,2*K+5);printf("2键:放置/取消小旗(F)");
gto(10,2*K+5);printf("3键:放置/取消标记(?)");
gto(11,2*K+5);printf("4键:打开/关闭确认模式,即每次操作需再按一次确认");
gto(12,2*K+5);printf("5键:打开/关闭作弊模式,即显示原本地图");
gto(13,2*K+5);printf("0键:重新开始");
gto(14,2*K+5);printf("作弊地图中黑色0是雷"); 
gto(G+4,0);printf("-----操作提示-----\n");
printf("请选择方块进行操作");

gto(1,2*K+10);color(12);printf("剩余小旗数:%d",Wnum=Lnum);
}

bool check(int x,int y){return y>=0&&y<K&&x>=2&&x<G+2;}
//因为地图是从2行0列开始打的,而地图是从1行1列开始存的,所以gto(x,y)走到的是map[x-1][y+1]
bool is_win()
{
int cnt=0;
for(int i=1;i<=G;i++)
for(int j=1;j<=K;j++)
if(map[i][j]=='#'&&map1[i][j]==-1)
cnt++;
if(cnt==Lnum) return 1;
//所有没被打开的方块都是雷=>胜利
for(int i=1;i<=G;i++)
for(int j=1;j<=K;j++)
if((tmap[i][j]!='F'&&map1[i][j]==-1)||(tmap[i][j]=='F'&&map1[i][j]!=-1))
return 0;
return 1;
//所有雷都标有旗
}
bool is_lose(){return Lose;}

void dfs(int x,int y)
{
if(map1[x-1][y+1]>0)//只要边界全部是数字就return
{
gto(x,y),color(mapc[x-1][y+1]),printf("%d",map1[x-1][y+1]);
tmap[x-1][y+1]=map1[x-1][y+1]+'0';
return;
}
gto(x,y);color(255);
tmap[x-1][y+1]=' ';
printf(" ");//因为下面判断了雷,上面判断了数字,这里就一定是空地
for(int i=1;i<=8;i++)
{
int xx=x+d[i][0]-1,yy=y+d[i][1]+1;//这里的xx和yy是在map中的,而不是gto中的
if(check(xx+1,yy-1)&&tmap[xx][yy]=='#'&&map1[xx][yy]!=-1)//所以check和dfs的参数要变化
dfs(xx+1,yy-1);
}
}
void st(int x,int y)
{
for(int i=1;i<=8;i++)
{
int xx=x+d[i][0],yy=y+d[i][1];
if(check(xx,yy))
{
gto(xx,yy);
if(tmap[xx-1][yy+1]!='#')
color(mapc[xx-1][yy+1]-128);//减去128使周围的8个格子的背景颜色变为灰色
else
color(112);//这里特判一下'#',应该可以不用
printf("%c",tmap[xx-1][yy+1]);
}
}
gto(G+5,0),color(15),printf("请确认 ");
//试探必须额外确认一次,规则上有说
char c=getch();
if(c=='1')
{
for(int i=1;i<=8;i++)
{
int xx=x+d[i][0],yy=y+d[i][1];
if(check(xx,yy))
if(tmap[xx-1][yy+1]=='F'&&map1[xx-1][yy+1]!=-1)//试探时有格子的小旗标错了=>失败
{
Lose=1;
return;
}
}
for(int i=1;i<=8;i++)
{
int xx=x+d[i][0],yy=y+d[i][1];
if(check(xx,yy))
if(map1[xx-1][yy+1]==-1&&tmap[xx-1][yy+1]!='F')//试探是有格子为雷=>取消打开
return;
}
for(int i=1;i<=8;i++)
{
int xx=x+d[i][0],yy=y+d[i][1];
if(check(xx,yy)&&tmap[xx-1][yy+1]=='#')//打开周围8个格子
dfs(xx,yy);
}
}
}
void flag(int x,int y)
{
x-=1,y+=1;
if(tmap[x][y]=='F')//原本为小旗=>取消小旗
{
tmap[x][y]='#';mapc[x][y]=240;
gto(x+1,y-1),color(240),printf("#");
Wnum++;//更新小旗数
}
else//否则就放置小旗
{
is_flag_true[x][y]=map1[x][y]==-1;//判断小旗是否放对
tmap[x][y]='F';mapc[x][y]=253;
gto(x+1,y-1),color(253),printf("F");
Wnum--;//更新小旗数
}
gto(1,2*K+10);color(12);printf("剩余小旗数: ");
gto(1,2*K+22);printf("%d",Wnum);//更新小旗数
}
void bj(int x,int y)//和放小旗差不多,只是不用更新is_flag_true
{
x-=1,y+=1;
if(tmap[x][y]=='?')
{
gto(x+1,y-1),color(240),printf("#");
tmap[x][y]='#';mapc[x][y]=240;
}
else
{
if(tmap[x][y]=='F')//如果原本这个位置上是小旗,而你把它变为了标记,就要更新小旗数
{
Wnum++;
gto(1,2*K+10);color(12);printf("剩余小旗数: ");
gto(1,2*K+22);printf("%d",Wnum);
}
gto(x+1,y-1),color(240),printf("?");
tmap[x][y]='?';mapc[x][y]=240;
}
}
void swt(){QR=!QR;}
void zb()
{
if(ZB)//如果本来作弊打开了就把作弊地图清除
{
for(int i=1;i<=G;i++)
{
gto(i+1,K+2);
for(int j=1;j<=K;j++)
color(15),printf(" ");
}
ZB=0;
}
else//否则打印作弊地图
{
for(int i=1;i<=G;i++)
{
gto(i+1,K+2);
for(int j=1;j<=K;j++)
{
color(mapc[i][j]);
if(map1[i][j]==-1) printf("O");
else if(map1[i][j]>0) printf("%d",map1[i][j]);
else printf(" ");
}
}
ZB=1;
}
}
void again()
{
G=K=Lnum=nx=ny=Lose=ZB=0;
QR=0;
memset(is_flag_true,0,sizeof(is_flag_true));
memset(map,0,sizeof(map));
memset(tmap,0,sizeof(tmap));
memset(map1,0,sizeof(map1));
memset(mapc,0,sizeof(mapc));
color(15);
system("cls");//初始化
mainmain();
}

void begin()//各种操作
{
char c=getch(); 
gto(G+5,0),color(15),printf("请选择方块进行操作");
color(240);
if(c=='w'&&check(nx-1,ny))
{
gto(nx,ny);
if(tmap[nx-1][ny+1]!='#'||tmap[nx-1][ny+1]==' ')
color(mapc[nx-1][ny+1]);
printf("%c",tmap[nx-1][ny+1]);
gto(nx-=1,ny);color(15);printf("@");
}
else if(c=='s'&&check(nx+1,ny))
{
gto(nx,ny);if(tmap[nx-1][ny+1]!='#'||tmap[nx-1][ny+1]==' ')color(mapc[nx-1][ny+1]);printf("%c",tmap[nx-1][ny+1]);
gto(nx+=1,ny);color(15);printf("@");
}
else if(c=='a'&&check(nx,ny-1))
{
gto(nx,ny);if(tmap[nx-1][ny+1]!='#'||tmap[nx-1][ny+1]==' ')color(mapc[nx-1][ny+1]);printf("%c",tmap[nx-1][ny+1]);
gto(nx,ny-=1);color(15);printf("@");
}
else if(c=='d'&&check(nx,ny+1))
{
gto(nx,ny);if(tmap[nx-1][ny+1]!='#'||tmap[nx-1][ny+1]==' ')color(mapc[nx-1][ny+1]);printf("%c",tmap[nx-1][ny+1]);
gto(nx,ny+=1);color(15);printf("@");
}
//上下左右移动
else
{
if(c==' '&&(!(tmap[nx-1][ny+1]<='9'&&tmap[nx-1][ny+1]>='0'))&&tmap[nx-1][ny+1]!='F')
{
mapc[nx-1][ny+1]=col[map1[nx-1][ny+1]];//如果本来放了标记,mapc[nx-1][ny+1]的颜色为黑色,在打开时里面的颜色却不一定是黑色
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()==' ')
{
if(map1[nx-1][ny+1]==-1) {Lose=1;return;}
dfs(nx,ny);
}
}
else
{
if(map1[nx-1][ny+1]==-1) {Lose=1;return;}
dfs(nx,ny);
}
}
else if(c=='1')
{
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()=='1') st(nx,ny);
}
else st(nx,ny);
for(int i=1;i<=8;i++)
{
int xx=nx+d[i][0],yy=ny+d[i][1];
if(check(xx,yy))
{
gto(xx,yy);
if(tmap[xx-1][yy+1]!='#') color(mapc[xx-1][yy+1]);
else color(240);
printf("%c",tmap[xx-1][yy+1]);
}
}
}
else if(c=='2'&&(tmap[nx-1][ny+1]>'9'||tmap[nx-1][ny+1]<'1'))
{
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()=='2') flag(nx,ny);
}
else flag(nx,ny);
}
else if(c=='3'&&(tmap[nx-1][ny+1]>'9'||tmap[nx-1][ny+1]<'1'))
{
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()=='3') bj(nx,ny);
}
else bj(nx,ny);
}
else if(c=='4')
{
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()=='4') swt();
}
else swt();
}
else if(c=='5')
{
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()=='5') zb();
}
else zb();
}
else if(c=='0')
{
if(QR)
{
gto(G+5,0),color(15),printf("请确认 ");
if(getch()=='0') again();
}
else again();
}
}
}

void mainmain()
{
system("mode con cols=120 lines=35");//设置窗口大小
srand((unsigned)time(NULL));
int mode;
printf("1.初级\n2.中级\n3.高级\n4.自定义\n");
scanf("%d",&mode);if(mode>4) mode=4;
if(mode==1) G=9,K=9,Lnum=10;
else if(mode==2) G=16,K=16,Lnum=40;
else if(mode==3) G=16,K=30,Lnum=99;//三种等级的参数
else
{
printf("请输入雷区高度:");scanf("%d",&G);
printf("请输入雷区宽度:");scanf("%d",&K);
printf("请输入雷个数(建议不超过总大小的三分之一):");scanf("%d",&Lnum);
if(G>24) G=24;if(K>30) K=30;
if(G<9) G=9;if(K<9) K=9;
if(Lnum<10) Lnum=10;if(Lnum>G*K*9/10) Lnum=G*K*9/10;
//控制参数的范围,最后一个if是雷的数量不超过地图大小的9/10
}
make();
print();
while(1)
{
begin();
bool f1=is_win(),f2=is_lose();
if(f1||f2)
{
gto(0,0);
if(f1)
color(202),gto(0,0),printf("你 赢 了!!是否重来?(y/n)");
if(f2)
color(137),gto(0,0),printf("你 输 了!!是否重来?(y/n)");//输赢
print_real_map();
char c=getch();
if(c=='y'||c=='Y') again();
else
{
color(15);
system("cls");
gto(MIDX,MIDY-5);
printf("欢迎下次再来");
return;
}
}
}
}
void print_real_map()
{
color(240);
for(int i=1;i<=G;i++)
{
gto(i+1,0);
for(int j=1;j<=K;j++)
{
if(tmap[i][j]=='F'&&is_flag_true[i][j]==0)//如果旗标错了显示红色的X
color(252),printf("X");
else if(map1[i][j]==-1)//雷为黑色O
color(240),printf("O");
else if(map1[i][j]==0)//空
color(240),printf(" ");
else//数字
color(mapc[i][j]),printf("%d",map1[i][j]);
}
}
}

9.俄罗斯方块小游戏

#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
#include<windows.h>
#include<conio.h>

using namespace std;

int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } };
int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } };
int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } };
int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } };
int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } };
int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } };
int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } };
int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } };
int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } };
int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } };
int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } };
int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } };
int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } };

void initialWindow(HANDLE hOut);//初始化窗口
void initialPrint(HANDLE hOut);//初始化界面
void gotoXY(HANDLE hOut, int x, int y);//移动光标
void roundBlock(HANDLE hOut, int block[4][4]);//随机生成方块并打印到下一个方块位置
bool collisionDetection(int block[4][4], int map[21][12], int x, int y);//检测碰撞
void printBlock(HANDLE hOut, int block[4][4], int x, int y);//打印方块
void clearBlock(HANDLE hOut, int block[4][4], int x, int y);//消除方块
void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//左移
void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//右移
void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//顺时针旋转90度
int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y);//加速下落
void myStop(HANDLE hOut, int block[4][4]);//游戏暂停
void gameOver(HANDLE hOut, int block[4][4], int map[21][12]);//游戏结束
void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint);//判断是否能消行并更新分值
int main()
{
    int map[21][12];
    int blockA[4][4];//候选区的方块
    int blockB[4][4];//下落中的方块
    int positionX, positionY;//方块左上角的坐标
    bool check;//检查方块还能不能下落
    char key;//用来存储按键
    int val;//用来控制下落速度
    int fraction;//用来存储得分
    int checkpoint;//用来存储关卡
    int times;
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出设备句柄
    initialWindow(hOut);
initial:
    gotoXY(hOut, 0, 0);
    initialPrint(hOut);
    check = true;
    val = 50;
    fraction = 0;
    checkpoint = 1;
    times = val;
    for (int i = 0; i < 20; ++i)
    {
        for (int j = 1; j < 11; ++j)
        {
            map[i][j] = 0;
        }
    }
    for (int i = 0; i < 20; ++i)
    {
        map[i][0] = map[i][11] = 1;
    }
    for (int i = 0; i < 12; ++i)
    {
        map[20][i] = 1;
    }

    srand((unsigned)time(NULL));
    roundBlock(hOut, blockA);
    while (true)
    {
        if (check)
        {
            eliminateRow(hOut, map, val, fraction, checkpoint);
            check = false;
            positionX = -3;
            positionY = 4;
            if (collisionDetection(blockA, map, positionX, positionY))
            {
                for (int i = 0; i < 4; ++i)
                {
                    for (int j = 0; j < 4; ++j)
                    {
                        blockB[i][j] = blockA[i][j];
                    }
                }
                roundBlock(hOut, blockA);
            }
            else
            {
                gameOver(hOut, blockA, map);
                goto initial;
            }
        }
        printBlock(hOut, blockB, positionX, positionY);
        if (_kbhit())
        {
            key = _getch();
            switch (key)
            {
            case 72:
                myUp(hOut, blockB, map, positionX, positionY);
                break;
            case 75:
                myLeft(hOut, blockB, map, positionX, positionY);
                break;
            case 77:
                myRight(hOut, blockB, map, positionX, positionY);
                break;
            case 80:
                switch (myDown(hOut, blockB, map, positionX, positionY))
                {
                case 0:
                    check = false;
                    break;
                case 1:
                    check = true;
                    break;
                case 2:
                    gameOver(hOut, blockB, map);
                    goto initial;
                default:
                    break;
                }
                break;
            case 32:
                myStop(hOut, blockA);
                break;
            case 27:
                exit(0);
            default:
                break;
            }
        }
        Sleep(20);
        if (0 == --times)
        {
            switch (myDown(hOut, blockB, map, positionX, positionY))
            {
            case 0:
                check = false;
                break;
            case 1:
                check = true;
                break;
            case 2:
                gameOver(hOut, blockB, map);
                goto initial;
            default:
                break;
            }
            times = val;
        }
    }
    cin.get();
    return 0;
}

void initialWindow(HANDLE hOut)
{
    SetConsoleTitle("俄罗斯方块");
    COORD size = { 80, 25 };
    SetConsoleScreenBufferSize(hOut, size);
    SMALL_RECT rc = { 0, 0, 79, 24 };
    SetConsoleWindowInfo(hOut, true, &rc);
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    SetConsoleCursorInfo(hOut, &cursor_info);
}

void initialPrint(HANDLE hOut)
{
    SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    for (int i = 0; i < 20; ++i)
    {
        cout << "■                    ■☆                      ☆" << endl;
    }
    gotoXY(hOut, 26, 0);
    cout << "☆☆☆☆☆☆☆☆☆☆☆";
    gotoXY(hOut, 0, 20);
    cout << "■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆";
    gotoXY(hOut, 26, 1);
    cout << "分    数:      ";
    gotoXY(hOut, 26, 2);
    cout << "关    卡:      ";
    gotoXY(hOut, 26, 4);
    cout << "下一方块:";
    gotoXY(hOut, 26, 9);
    cout << "操作方法:";
    gotoXY(hOut, 30, 11);
    cout << "↑:旋转 ↓:速降";
    gotoXY(hOut, 30, 12);
    cout << "→:右移 ←:左移";
    gotoXY(hOut, 30, 13);
    cout << "空格键:开始/暂停";
    gotoXY(hOut, 30, 14);
    cout << "Esc 键:退出";
    gotoXY(hOut, 26, 16);
    cout << "关    于:";
    gotoXY(hOut, 30, 18);
    cout << "俄罗斯方块V1.0";
    gotoXY(hOut, 35, 19);
}

void gotoXY(HANDLE hOut, int x, int y)
{
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(hOut, pos);
}

void roundBlock(HANDLE hOut, int block[4][4])
{
    clearBlock(hOut, block, 5, 15);
    switch (rand() % 19)
    {
    case 0:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block00[i][j];
            }
        }
        break;
    case 1:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block01[i][j];
            }
        }
        break;
    case 2:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block02[i][j];
            }
        }
        break;
    case 3:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block03[i][j];
            }
        }
        break;
    case 4:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block04[i][j];
            }
        }
        break;
    case 5:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block05[i][j];
            }
        }
        break;
    case 6:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block06[i][j];
            }
        }
        break;
    case 7:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block07[i][j];
            }
        }
        break;
    case 8:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block08[i][j];
            }
        }
        break;
    case 9:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block09[i][j];
            }
        }
        break;
    case 10:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block10[i][j];
            }
        }
        break;
    case 11:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block11[i][j];
            }
        }
        break;
    case 12:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block12[i][j];
            }
        }
        break;
    case 13:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block13[i][j];
            }
        }
        break;
    case 14:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block14[i][j];
            }
        }
        break;
    case 15:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block15[i][j];
            }
        }
        break;
    case 16:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block16[i][j];
            }
        }
        break;
    case 17:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block17[i][j];
            }
        }
        break;
    case 18:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block18[i][j];
            }
        }
        break;
    default:
        break;
    }
    printBlock(hOut, block, 5, 15);
}

bool collisionDetection(int block[4][4], int map[21][12], int x, int y)
{
    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            if (x + i >= 0 && y + j >= 0 && map[x + i][y + j] == 1 && block[i][j] == 1)
            {
                return false;
            }
        }
    }
    return true;
}

void printBlock(HANDLE hOut, int block[4][4], int x, int y)
{
    switch (block[0][0])
    {
    case 10:
    case 11:
        SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);
        break;
    case 12:
    case 13:
    case 14:
    case 15:
        SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        break;
    case 16:
    case 17:
    case 18:
    case 19:
        SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        break;
    case 20:
    case 21:
    case 22:
    case 23:
        SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
        break;
    case 24:
    case 25:
        SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        break;
    case 26:
    case 27:
        SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
        break;
    case 28:
        SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
        break;
    default:
        break;
    }
    for (int i = 0; i < 4; ++i)
    {
        if (i + x >= 0)
        {
            for (int j = 0; j < 4; ++j)
            {
                if (block[i][j] == 1)
                {

                    gotoXY(hOut, 2 * (y + j), x + i);
                    cout << "■";
                }
            }
        }
    }
}

void clearBlock(HANDLE hOut, int block[4][4], int x, int y)
{
    for (int i = 0; i < 4; ++i)
    {
        if (i + x >= 0)
        {
            for (int j = 0; j < 4; ++j)
            {
                if (block[i][j] == 1)
                {
                    gotoXY(hOut, 2 * (y + j), x + i);
                    cout << "  ";
                }
            }
        }
    }
}

void gameOver(HANDLE hOut, int block[4][4], int map[21][12])
{
    SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
    gotoXY(hOut, 9, 8);
    cout << "GAME OVER";
    gotoXY(hOut, 8, 9);
    cout << "空格键:重来";
    gotoXY(hOut, 8, 10);
    cout << "ESC键:退出";
    char key;
    while (true)
    {
        key = _getch();
        if (key == 32)
        {
            return;
        }
        if (key == 27)
        {
            exit(0);
        }
    }
}

int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y)
{
    if (collisionDetection(block, map, x + 1, y))
    {
        clearBlock(hOut, block, x, y);
        ++x;
        return 0;
    }
    if (x < 0)
    {
        return 2;
    }
    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            if (block[i][j] == 1)
            {
                map[x + i][y + j] = 1;
                SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
                gotoXY(hOut, 2 * (y + j), x + i);
                cout << "■";
            }
        }
    }
    return 1;
}

void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
    if (collisionDetection(block, map, x, y - 1))
    {
        clearBlock(hOut, block, x, y);
        --y;
    }
}

void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
    if (collisionDetection(block, map, x, y + 1))
    {
        clearBlock(hOut, block, x, y);
        ++y;
    }
}

void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
    switch (block[0][0])
    {
    case 10:
        if (collisionDetection(block01, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block01[i][j];
                }
            }
        }
        break;
    case 11:
        if (collisionDetection(block00, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
        }
        else if (collisionDetection(block00, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block00, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            ++y;
        }
        else if (collisionDetection(block00, map, x, y - 2))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            y = y - 2;
        }
        else if (collisionDetection(block00, map, x, y + 2))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            y = y + 2;
        }
        break;
    case 12:
        if (collisionDetection(block03, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block03[i][j];
                }
            }
        }
        else if (collisionDetection(block03, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block03[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block03, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block03[i][j];
                }
            }
            ++y;
        }
        break;
    case 13:
        if (collisionDetection(block04, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block04[i][j];
                }
            }
        }
        else if (collisionDetection(block04, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block04[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block04, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block04[i][j];
                }
            }
            ++y;
        }
        break;
    case 14:
        if (collisionDetection(block05, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block05[i][j];
                }
            }
        }
        else if (collisionDetection(block05, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block05[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block05, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block05[i][j];
                }
            }
            ++y;
        }
        break;
    case 15:
        if (collisionDetection(block02, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block02[i][j];
                }
            }
        }
        else if (collisionDetection(block02, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block02[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block02, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block02[i][j];
                }
            }
            ++y;
        }
        break;

    case 16:
        if (collisionDetection(block07, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block07[i][j];
                }
            }
        }
        else if (collisionDetection(block07, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block07[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block07, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block07[i][j];
                }
            }
            ++y;
        }
        break;
    case 17:
        if (collisionDetection(block08, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block08[i][j];
                }
            }
        }
        else if (collisionDetection(block08, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block08[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block08, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block08[i][j];
                }
            }
            ++y;
        }
        break;
    case 18:
        if (collisionDetection(block09, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block09[i][j];
                }
            }
        }
        else if (collisionDetection(block09, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block09[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block09, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block09[i][j];
                }
            }
            ++y;
        }
        break;
    case 19:
        if (collisionDetection(block06, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block06[i][j];
                }
            }
        }
        else if (collisionDetection(block06, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block06[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block06, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block06[i][j];
                }
            }
            ++y;
        }
        break;
    case 20:
        if (collisionDetection(block11, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block11[i][j];
                }
            }
        }
        else if (collisionDetection(block11, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block11[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block11, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block11[i][j];
                }
            }
            ++y;
        }
        break;
    case 21:
        if (collisionDetection(block12, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block12[i][j];
                }
            }
        }
        else if (collisionDetection(block12, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block12[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block12, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block12[i][j];
                }
            }
            ++y;
        }
        break;
    case 22:
        if (collisionDetection(block13, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block13[i][j];
                }
            }
        }
        else if (collisionDetection(block13, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block13[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block13, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block13[i][j];
                }
            }
            ++y;
        }
        break;
    case 23:
        if (collisionDetection(block10, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block10[i][j];
                }
            }
        }
        else if (collisionDetection(block10, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block10[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block10, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block10[i][j];
                }
            }
            ++y;
        }
        break;
    case 24:
        if (collisionDetection(block15, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block15[i][j];
                }
            }
        }
        else if (collisionDetection(block15, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block15[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block15, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block15[i][j];
                }
            }
            ++y;
        }
        break;
    case 25:
        if (collisionDetection(block14, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block14[i][j];
                }
            }
        }
        else if (collisionDetection(block14, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block14[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block14, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block14[i][j];
                }
            }
            ++y;
        }
        break;
    case 26:
        if (collisionDetection(block17, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block17[i][j];
                }
            }
        }
        else if (collisionDetection(block17, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block17[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block17, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block17[i][j];
                }
            }
            ++y;
        }
        break;
    case 27:
        if (collisionDetection(block16, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block16[i][j];
                }
            }
        }
        else if (collisionDetection(block16, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block16[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block16, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block16[i][j];
                }
            }
            ++y;
        }
        break;
    default:
        break;
    }
}

void myStop(HANDLE hOut, int block[4][4])
{
    clearBlock(hOut, block, 5, 15);
    SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
    gotoXY(hOut, 30, 7);
    cout << "游戏暂停";
    char key;
    while (true)
    {
        key = _getch();
        if (key == 32)
        {
            gotoXY(hOut, 30, 7);
            cout << "        ";
            printBlock(hOut, block, 5, 15);
            return;
        }
        if (key == 27)
        {
            exit(0);
        }
    }
}

void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint)
{
    SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
    for (int i = 19; i >= 0; --i)
    {
        int x = 0;
        for (int j = 1; j < 11; ++j)
        {
            x += map[i][j];
        }
        if (x == 10)
        {
            fraction += 100;
            if (val > 1 && fraction / 1000 + 1 != checkpoint)
            {
                checkpoint = fraction / 1000 + 1;
                val -= 5;
            }
            for (int m = i; m > 0; --m)
            {
                for (int n = 1; n < 11; ++n)
                {
                    map[m][n] = map[m - 1][n];
                    gotoXY(hOut, 2 * n, m);
                    if (map[m][n] == 1)
                    {
                        cout << "■";
                    }
                    else
                    {
                        cout << "  ";
                    }
                }
            }
            ++i;
        }
    }
    gotoXY(hOut, 36, 1);
    cout << fraction;
    gotoXY(hOut, 36, 2);
    cout << checkpoint;
}

10.狼人杀小游戏

#include<bits/stdc++.h>
#include<windows.h>
#define  /*白色*/white SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
#define  /*初始色*/original SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
#define  /*红色*/red SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);
#define /*绿色*/green SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
#define /*蓝色*/blue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE);
#define /*黄色*/yellow SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_GREEN);
#define /*粉色*/pink SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_BLUE);
#define /*淡蓝*/lightblue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN |FOREGROUND_BLUE);
using namespace std;
void Slowsay(string a){
	for(int i=0;i<a.size();i++){
		cout<<a[i];
		Sleep(20);
	}
	Sleep(100);
} 
int life[7]={1,1,1,1,1,1};
int potions[5]={-1,1};
int vote[7]={0};
string name[7]={"预言家","女巫","平民","平民","狼人","狼人"}; 
int seer(int x,int y,int n,int p1,int p2,int l1,int l2)
{
int rescued;
int die;
int die_potions;
bool gameover=false;
while(gameover==false){
	Slowsay("\n下一天:----------------------------\n");
    for(int i=1;i<=4;i++){
        if(i==1&&(life[l1]>=0 or life[l2]>=0)){
            Slowsay("狼人");
            srand((unsigned)time(NULL)); 
            die=rand()%6;
            while(name[die]=="狼人"||life[die]==-1) die=rand()%6;
            life[die]--;
            Slowsay("狼人杀了");
            Slowsay(name[die]);
            cout<<'\n';
        }
        if(i==2&&life[x]>=0){
        	Slowsay("预言家:\n");
        	Slowsay("你是预言家,请输入0~5的编号(代表相应的人)(除了");
        	cout<<x;
        	Slowsay("号)来预言\n");
            int res;
            cin>>res;
            if(name[res]=="平民"||name[res]=="女巫"||name[res]=="预言家") cout<<"好人"<<endl; 
            if(name[res]=="狼人") cout<<"坏人"<<endl; 
        }
        if(i==3&&life[n]>=0){
        	Slowsay("女巫:");
            int dor;
            srand((unsigned)time(NULL)); 
            dor=rand()%3;
            if(dor==0){
                die_potions=rand()%6;
                while(name[die_potions]=="女巫"||life[die_potions]<=0) die_potions=rand()%6;
                life[die_potions]--;
                potions[dor]++;
                Slowsay("女巫杀了");
                Slowsay(name[die_potions]);
                cout<<endl;
            }
            if(dor==1){
                int help;
                for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;
                potions[dor]--;
                Slowsay("女巫救了");
                Slowsay(name[help]);
                cout<<endl;
            }
            if(dor==2){
            	Slowsay("没用药");
            }
        }
        if(i==4)
        {
            int sum_die=0;
            Slowsay("今晚");
            for(int j=0;j<6;j++)
            {
                if(life[j]==0) 
                {
                    sum_die++;
                    life[j]--;
                    cout<<j;
                    Slowsay("号");
					Slowsay(name[j]);
					Slowsay("死了"); 
                }
            } 
            if(sum_die==0) Slowsay("是平安夜");
            int fl=0,fp=0;
            for(int j=0;j<6;j++)
            {
                if(life[j]==1)
                {
                    if(name[j]=="狼人") fl++;
                    else fp++;
                }
            }
            if(fl==0){
                Slowsay("\n平民赢了\n");
                gameover=true;
                continue;
            }
            if(fp==0){
            	Slowsay("\n狼人赢了\n");
                gameover=true; 
                continue;
            }
            Slowsay("\n投票\n");
            int a[7]={0,0,0,0,0,0};
            for(int j=0;j<6;j++){
                if(j==x&&life[x]==1){
                	Slowsay("请投0~5号你认为是狼人的");
                    int ps;
                    cin>>ps;
                    a[ps]++;
                }
                else if(life[j]==1){
                    srand((unsigned)time(NULL)); 
                    int cs;
                    cs=rand()%6;
                    while(life[cs]!=1||cs==j) cs=rand()%6;
                    a[cs]++;
                }
            }
            Slowsay("投票结果:\n0 1 2 3 4 5\n");
            for(int j=0;j<6;j++) cout<<a[j]<<" ";
            cout<<endl;
            int max=-1,mp;
            for(int j=0;j<6;j++) if(a[j]>=max) max=a[j],mp=j;
            cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;
            life[mp]=-1; 
            int good=0,bad=0;
            for(int j=0;j<6;j++){
                if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;
                if(life[j]==1&&name[j]=="狼人") bad++;
            }
            if(bad==0){
            	Slowsay("平民赢了\n");
                gameover=true;
            }
            if(good==0){
            	Slowsay("狼人赢了\n");
                gameover=true;
            }
        }
    }
    system("pause");
}
return 0;
}
int Lycan(int x,int y,int n,int p1,int p2,int l1,int l2)
{
int rescued;
int die;
int die_potions;
bool gameover=false;
while(gameover==false){
	Slowsay("\n下一天:----------------------------\n");
    for(int i=1;i<=4;i++){
        if(i==1&&life[x]>=0){
        	Slowsay("狼人:\n你是狼人,请输入0~5的编号(代表相应的人)(除了");
        	cout<<x<<'和'<<l1+l2-x;
        	Slowsay("号)来杀死\n");
            cin>>die;
            life[die]--;
            Slowsay("狼人杀了");
            cout<<name[die]<<endl;
        }
        if(i==1&&life[x]==-1&&life[l1+l2-x]>=0){
        	Slowsay("狼人:\n");
            srand((unsigned)time(NULL)); 
            die=rand()%6;
            while(name[die]=="狼人"||life[die]==-1) die=rand()%6;
            life[die]--;
            Slowsay("狼人杀了");
            cout<<name[die]<<endl;
        }
        if(i==2&&life[y]>=0){
        	Slowsay("预言家:\n预言完毕");
        }
        if(i==3&&life[n]>=0){
        	Slowsay("女巫:\n");
            int dor;
            srand((unsigned)time(NULL)); 
            dor=rand()%3;
            if(dor==0){
                die_potions=rand()%6;
                while(name[die_potions]=="女巫"||life[die_potions]<=0) die_potions=rand()%6;
                life[die_potions]--;
                potions[dor]++;
                Slowsay("女巫杀了");
                Slowsay(name[die_potions]);
                cout<<endl;
            }
            if(dor==1){
                int help;
                for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;
                potions[dor]--;
                Slowsay("女巫救了");
                Slowsay(name[help]);
                cout<<endl;
            }
            if(dor==2){
            	Slowsay("没用药\n");
            }
        }
        if(i==4){
            int sum_die=0;
            Slowsay("今晚");
            for(int j=0;j<6;j++)
            {
                if(life[j]==0) 
                {
                    sum_die++;
                    life[j]--;
                    cout<<j;
                    Slowsay("号");
                    Slowsay(name[j]);
                    Slowsay("死了");
                }
            } 
            if(sum_die==0) Slowsay("是平安夜");
            int fl=0,fp=0;
            for(int j=0;j<6;j++){
                if(life[j]==1){
                    if(name[j]=="狼人") fl++;
                    else fp++;
                }
            }
            if(fl==0){
            	Slowsay("\n平民赢了\n");
                gameover=true;
                continue;
            }
            if(fp==0){
            	Slowsay("狼人赢了");
                gameover=true; 
                continue;
            }
            Slowsay("\n投票\n");
            int a[7]={0,0,0,0,0,0};
            for(int j=0;j<6;j++){
                if(j==x&&life[x]==1){
                	Slowsay("请投0~5号你认为是狼人的");
                    int ps;
                    cin>>ps;
                    a[ps]++; 
                }
                else if(life[j]==1){
                    srand((unsigned)time(NULL)); 
                    int cs;
                    cs=rand()%6;
                    while(life[cs]!=1||cs==j) cs=rand()%6;
                    a[cs]++;
                }
            }
            Slowsay("投票结果:\n0 1 2 3 4 5");
            for(int j=0;j<6;j++) cout<<a[j]<<" ";
            cout<<endl;
            int max=-1,mp;
            for(int j=0;j<6;j++) if(a[j]>=max) max=a[j],mp=j;
            cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;
            life[mp]=-1; 
            int good=0,bad=0;
            for(int j=0;j<6;j++)
            {
                if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;
                if(life[j]==1&&name[j]=="狼人") bad++;
            }
            if(bad==0){
            	Slowsay("平民赢了");
                gameover=true;
            }
            if(good==0){
            	Slowsay("狼人赢了");
                gameover=true;
            }
        }
    }
    system("pause");
}
return 0;
}
int witch(int x,int y,int n,int p1,int p2,int l1,int l2)
{
int rescued;
int die;
int die_potions;
bool gameover=false;
while(gameover==false){
	Slowsay("\n下一天:----------------------------\n");
    for(int i=1;i<=4;i++){
        if(i==1&&(life[l1]>=0 or life[l2]>=0)){
        	Slowsay("狼人:");
            srand((unsigned)time(NULL)); 
            die=rand()%6;
            while(name[die]=="狼人"||life[die]==-1) die=rand()%6;
            life[die]--;
            Slowsay("狼人杀了");
            Slowsay(name[die]);
            cout<<endl;
        }
        if(i==2&&life[y]>=0){
        	Slowsay("预言家:\n预言完毕");
        }
        if(i==3&&life[n]>=0){
        	Slowsay("女巫:\你是女巫,请输入d、r、n。d代表要杀、r代表要救,n代表不用药n");
            char dor;
            cin>>dor;
            if(dor=='d'){
            	Slowsay("请输入0~5号你要杀的人(除了");
            	cout<<n;
            	Slowsay("号)\n");
                cin>>die_potions;
                life[die_potions]--;
                potions[0]++;
                Slowsay("女巫杀了");
                Slowsay(name[die_potions]);
                cout<<endl;
            }
            if(dor=='r'){
                int help;
                for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;
                potions[1]--;
                Slowsay("女巫救了");
                Slowsay(name[help]);
            }
            if(dor=='n'){
            	Slowsay("没用药\n");
            }
        }
        if(i==4){
            int sum_die=0;
            Slowsay("今晚");
            cout<<"";
            for(int j=0;j<6;j++)
            {
                if(life[j]==0) 
                {
                    sum_die++;
                    life[j]--;
                    cout<<j;
                    Slowsay("号");
                    Slowsay(name[j]);
                    Slowsay("死了");
                }
            } 
            if(sum_die==0) Slowsay("是平安夜");
            int fl=0,fp=0;
            for(int j=0;j<6;j++)
            {
                if(life[j]==1)
                {
                    if(name[j]=="狼人") fl++;
                    else fp++;
                }
            }
            if(fl==0){
            	Slowsay("\n平民赢了\n");
                gameover=true;
                continue;
            }
            if(fp==0){
            	Slowsay("\n狼人赢了\n");
                gameover=true; 
                continue;
            }
            Slowsay("\n投票\n");
            cout<<endl<<""<<endl; 
            int a[7]={0,0,0,0,0,0};
            for(int j=0;j<6;j++){
                if(j==x&&life[x]==1){
                	Slowsay("请投0~5号你认为是狼人的");
                    int ps;
                    cin>>ps;
                    a[ps]++; 
                }
                else if(life[j]==1){
                    srand((unsigned)time(NULL)); 
                    int cs;
                    cs=rand()%6;
                    while(life[cs]!=1||cs==j) cs=rand()%6;
                    a[cs]++;
                }
            }
            Slowsay("投票结果:\n0 1 2 3 4 5\n");
            for(int j=0;j<6;j++) cout<<a[j]<<" ";
            cout<<endl;
            int max=-1,mp;
            for(int j=0;j<6;j++) if(a[j]>=max) max=a[j],mp=j;
            cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;
            life[mp]=-1; 
            int good=0,bad=0;
            for(int j=0;j<6;j++)
            {
                if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;
                if(life[j]==1&&name[j]=="狼人") bad++;
            }
            if(bad==0){
            	Slowsay("平民赢了\n");
                gameover=true;
            }
            if(good==0){
            	Slowsay("狼人赢了\n");
                cout<<""<<endl;
                gameover=true;
            }
        }
    }
    system("pause");
}
return 0;
}
int commoner(int x,int y,int n,int p1,int p2,int l1,int l2){
int rescued;
int die;
int die_potions;
bool gameover=false;
while(gameover==false){
	Slowsay("\n下一天:----------------------------\n");
    for(int i=1;i<=4;i++){
        if(i==1&&(life[l1]>=0 or life[l2]>=0)){
        	Slowsay("狼人:\n");
            srand((unsigned)time(NULL)); 
            die=rand()%6;
            while(name[die]=="狼人"||life[die]==-1) die=rand()%6;
            life[die]--;
            Slowsay("狼人杀了");
            Slowsay(name[die]);
            cout<<endl;
        }
        if(i==2&&life[y]>=0){
        	Slowsay("预言家:\n预言完毕\n");
        }
        if(i==3&&life[n]>=0){
        	Slowsay("女巫:\n");
            int dor;
            srand((unsigned)time(NULL)); 
            dor=rand()%3;
            if(dor==0){
                die_potions=rand()%6;
                while(name[die_potions]=="女巫"||life[die_potions]<=0) die_potions=rand()%6;
                life[die_potions]--;
                potions[dor]++;
                Slowsay("女巫杀了");
				Slowsay(name[die_potions]); 
                cout<<endl;
            }
            if(dor==1){
                int help;
                for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;
                potions[dor]--;
                Slowsay("女巫救了");
                Slowsay(name[help]);
                cout<<endl;
            }
            if(dor==2){
            	Slowsay("没用药");
            }
        }
        if(i==4){
            int sum_die=0;
            Slowsay("今晚");
            for(int j=0;j<6;j++){
                if(life[j]==0){
                    sum_die++;
                    life[j]--;
                    cout<<j;
                    Slowsay("号");
                    Slowsay(name[j]);
                    Slowsay("死了");
                }
            } 
            if(sum_die==0) Slowsay("是平安夜");
            int fl=0,fp=0;
            for(int j=0;j<6;j++)
            {
                if(life[j]==1)
                {
                    if(name[j]=="狼人") fl++;
                    else fp++;
                }
            }
            if(fl==0) 
            {
                cout<<endl<<"平民赢了"<<endl; 
                gameover=true;
                continue;
            }
            if(fp==0)
            {
                cout<<endl<<"狼人赢了"<<endl;
                gameover=true; 
                continue;
            }
            cout<<endl<<"投票"<<endl; 
            int a[7]={0,0,0,0,0,0};
            for(int j=0;j<6;j++)
            {
                if(j==x&&life[x]==1) 
                {
                    cout<<"请投0~5号你认为是狼人的";
                    int ps;
                    cin>>ps;
                    a[ps]++; 
                }
                else if(life[j]==1)
                {
                    srand((unsigned)time(NULL)); 
                    int cs;
                    cs=rand()%6;
                    while(life[cs]!=1||cs==j) cs=rand()%6;
                    a[cs]++;
                }
            }
            cout<<"投票结果:"<<endl;
            cout<<"0 1 2 3 4 5"<<endl;
            for(int j=0;j<6;j++) cout<<a[j]<<" ";
            cout<<endl;
            int max=-1,mp;
            for(int j=0;j<6;j++) if(a[j]>=max) max=a[j],mp=j;
            cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;
            life[mp]=-1; 
            int good=0,bad=0;
            for(int j=0;j<6;j++)
            {
                if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;
                if(life[j]==1&&name[j]=="狼人") bad++;
            }
            if(bad==0) 
            {
                cout<<"平民赢了"<<endl;
                gameover=true;
            }
            if(good==0) 
            {
                cout<<"狼人赢了"<<endl;
                gameover=true;
            }
        }
    }
    system("pause");
}
return 0;
}
int main()
{
begin:
white
cout<<"          狼人杀"<<endl;
yellow
cout<<"1个预言家 ";
yellow
cout<<"1个女巫 " ;
yellow
cout<<"2个平民 ";
green
cout<<" 2个狼人"<<endl;
original
Sleep(1000);
srand((unsigned)time(NULL)); 
for(int i=1;i<=1000;i++)
{
    int x=rand()%6; 
    int y=rand()%6;
    swap(name[x],name[y]);
}
int player=rand()%6;
cout<<"你是";
red
cout<<name[player]<<endl;
original
cout<<"您的编号是"<<player<<endl<<endl;
Sleep(2000);
int l1,l2,l=1;
int y;
int n;
int p1,p2,p=1;
for(int i=0;i<6;i++)
{
    if(name[i]=="狼人"&&l==1) 
    {
        l1=i;
        l++;
        continue;
    }
    if(name[i]=="狼人"&&l==2) l2=i,l++;
    if(name[i]=="预言家") y=i;
    if(name[i]=="女巫") n=i;
    if(name[i]=="平民"&&p==1) 
    {
        p1=i;
        p++;
        continue;
    }
    if(name[i]=="平民"&&p==2) p2=i,p++;
}
if(player==y) seer(player,y,n,p1,p2,l1,l2);
if(player==l1 or player==l2) Lycan(player,y,n,p1,p2,l1,l2);
if(player==n) witch(player,y,n,p1,p2,l1,l2);
if(player==p1 or player==p2) commoner(player,y,n,p1,p2,l1,l2);
else return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值