游戏code

洛谷bolg  <----游戏

#include<bits/stdc++.h> 
#include<windows.h> 
#include <conio.h>
#define cins cin>>i;while(i!="1"&&i!="2"){out("请正确输入\n");cin>>i;}
#define couts Sleep(1000);cout
int mmm=1;
bool f=true;
using namespace std;
const int N = 15;//棋盘大小
const char ChessBoardFlag = ' ';
const char flag1 = 'O';
const char flag2 = 'X';
 
typedef struct Coordinate
{
    int x;
    int y;
}ChessCoordi;
 
class FiveChess
{
public:
    FiveChess()
    {
        InitChessBoard();
    }
 
    void Play()
    {
        ChessCoordi Pos1;
        ChessCoordi Pos2;
        while (1){
            int mode = ChoseMode();
            while (1){
                if (mode == 1){//玩家VS电脑
                    static size_t count = 1;
                    PalyerGo(Pos1, 1, flag1);
                    if (count++ >= 9 && GetWiner(Pos1, 1, flag1))
                        break;
                    ComputerGo(Pos2, flag2);
                    if (count++ >= 10 && GetWiner(Pos2, 0, flag2))
                       break;
                }
                else if (mode == 2){//玩家VS玩家
                    static size_t count = 1;
                    PalyerGo(Pos1, 1, flag1);
                    if (count++ >= 9 && GetWiner(Pos1,1, flag1))
                        break;
                    PalyerGo(Pos2,2 ,flag2);
                    if (count++ >= 10 && GetWiner(Pos2,2, flag2))
                        break;
                }
            }
            cout << "再来一局 y or no" << endl;
            char chose = 'y';
            cin >> chose;
            if (chose == 'n')
                break;
        }
    }
 
    void PrintChessBoard()
    {
        system("cls");
        for (size_t i = 0; i < N + 1; ++i)
        {
            for (size_t j = 0; j < N + 1; ++j)
            {
                if (i == 0){
                    if (j != 0)
                        printf("%d   ", j);
                    else if (j == 0)
                        printf("  ");
                }
                else if (j == 0){
                    if (i != 0)
                        printf("%2d", i);
                }
                else{
                    printf("%c  |", ChessBoard[i][j]);
                }
 
            }
            cout << endl;
            cout << "  ";
            for (size_t i = 1; i < N + 1; ++i){
                cout << "---+";
            }
            cout << endl;
        }
    }
 
    void InitChessBoard()
    {
        for (size_t i = 0; i < N + 1; ++i){
            for (size_t j = 0; j < N + 1; ++j){
                ChessBoard[i][j] = ChessBoardFlag;
            }
        }
    }
 
protected:
 
    int ChoseMode()
    {
        system("cls");
        InitChessBoard();
        cout << "请选择 1.玩家VS电脑 2.玩家VS玩家 3.退出" << endl;
        int chose = 0;
        cin >> chose;
        while (1){
            if (chose == 1)
                return chose;
            else if (chose == 2)
                return chose;
            else if (chose == 3)
                exit(1);
            else
                cout << "对不起 您的输入有误。。" << endl;
        }
    }
 
    void PalyerGo(ChessCoordi& Pos, int player, char flag)
    {
        PrintChessBoard();
        int x = 0;
        int y = 0;
        while (1){
            cout << "请玩家" << player << "下一步棋" << endl;
            cin >> Pos.x >> Pos.y;
            if (JudgePos(Pos))
                break;
            else
                cout << "玩家输入错误 ! 请重新输入" << endl;
        }
        ChessBoard[Pos.x][Pos.y] = flag;
    }
 
    void ComputerGo(ChessCoordi& Pos, char flag)
    {
        PrintChessBoard();
        int x = 0;
        int y = 0;
        while (1){
            x = rand() % N + 1;
            srand((unsigned int)time(NULL));
            y = rand() % N + 1;
            srand((unsigned int)time(NULL));//这种方式下生成的x,y一定在棋盘上
            if (ChessBoard[x][y] == ChessBoardFlag)
                break;
        }
        Pos.x = x;
        Pos.y = y;
        ChessBoard[Pos.x][Pos.y] = flag;
    }
 
    int GetVictory(ChessCoordi Pos, char flag)//判断是否有赢家
    {
        int begin = 0;//在检查对角线时 作为行坐标的开始 结束
        int end = 0;
        //检查行是否连续5个子
        int beginl = 0;//在检查对角线时 作为列坐标的开始 结束
        int endl = 0;
        (Pos.y - 4) > 0 ? begin = Pos.y - 4 : begin = 1;
        (Pos.y + 4) < N ? end = Pos.y + 4 : end = N;
        for (size_t i = Pos.x, j = begin; j + 4 <= end; ++j)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i][j + 1] && \
                flag == ChessBoard[i][j + 2] && flag == ChessBoard[i][j + 3] && \
                flag == ChessBoard[i][j + 4])
                return 1;
        }
        //检查列是否连续5个子
        (Pos.x - 4) > 0 ? begin = Pos.x - 4 : begin = 1;
        (Pos.x + 4) > N ? end = Pos.x + 4 : end = N;
        for (size_t j = Pos.y, i = begin; i + 4 <= end; ++i)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i + 1][j] && \
                flag == ChessBoard[i + 2][j] && flag == ChessBoard[i + 3][j] && \
                flag == ChessBoard[i + 4][j])
                return 1;
        }
 
        int len = 0;
        //检查主对角线是否满五个子
        (Pos.x > Pos.y) ? len = Pos.y - 1 : len = Pos.x - 1;
        if (len > 4)//找落子点到上 左两边的垂直距离较短的地方 如果其大于4 取4 不大于4 取其本身
            len = 4;
        begin = Pos.x - len;//向上 左移动适当距离找可能的五连子的起始位置
        beginl = Pos.y - len;
        (Pos.x > Pos.y) ? len = N - Pos.x : len = N - Pos.y;
        if (len > 4)
            len = 4;
        end = Pos.x + len;//向下 右移动适当距离找可能的五连子的终止位置
        endl = Pos.y + len;
        for (size_t i = begin, j = beginl; i + 4 <= end && j + 4 <= endl; ++i, ++j)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i + 1][j + 1] && \
                flag == ChessBoard[i + 2][j + 2] && flag == ChessBoard[i + 3][j + 3] && \
                flag == ChessBoard[i + 4][j + 4])
                return 1;
        }
        //检查副对角线是否满五个子
        (Pos.x - 1 > N - Pos.y) ? len = N - Pos.y : Pos.x - 1;
        if (len > 4)//找落子点到右 下两边的垂直距离较短的地方 如果其大于4 取4 不大于4 取其本身
            len = 4;
        begin = Pos.x - len;//向上 右移动适当距离找可能的五连子的起始位置
        beginl = Pos.y + len;
        (N - Pos.x > Pos.y - 1) ? len = Pos.y - 1 : len = N - Pos.x;
        end = Pos.x + len;//向下 左移动适当距离找可能的五连子的最终位置
        endl = Pos.y - len;
        for (size_t i = begin, j = beginl; i + 4 <= end && j - 4 >= endl; ++i, ++j)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i + 1][j - 1] && \
                flag == ChessBoard[i + 2][j - 2] && flag == ChessBoard[i + 3][j - 3] && \
                flag == ChessBoard[i + 4][j - 4])
                return 1;
        }
        //检查棋盘是否已满
        for (size_t i = 1; i < N + 1; ++i){
            for (size_t j = 1; j < N + 1; ++j){
                if (ChessBoard[i][j] == ChessBoardFlag)
                    return 0;//表示棋盘没满
            }
        }
        //和棋
        return -1;
    }
 
    bool GetWiner(ChessCoordi& Pos, int player, char flag)//判断是谁赢了
    {
        int n = 0;
        n = GetVictory(Pos, flag);
        PrintChessBoard();
        if (1 == n){
            if (0 == player)
                cout << "玩家1获胜" << endl;
            else if (1 == player)
                cout << "玩家1获胜" << endl;
            else
                cout << "电脑获胜"<<endl;
            return true;
        }
        else if (-1 == n){
            cout << "和棋" << endl;
            return true;
        }
        else{
            //还未分出胜负
            return false;
        }
 
    }
 
    bool JudgePos(const ChessCoordi& Pos)
    {
        if (Pos.x < N + 1 && Pos.x > 0 && Pos.y < N + 1 && Pos.x > 0\
            && ChessBoard[Pos.x][Pos.y] == ChessBoardFlag)
            return true;
 
        return false;
    }
 
private:
    char ChessBoard[N + 1][N + 1];
};
void out(string a)//输出函数 
{
    int i;
    for(i=0;i<a.length();i++)
    {
        Sleep(80);
        cout<<a[i];
    }
}
 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);
/*** 光标定位 ***/
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
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");
	}
}
 
//左上角坐标、右下角坐标、用row填充行、用col填充列
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<<"  p 暂停游戏。";
	SetPos(52,16);
	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<<"制作:LJF神犇";
	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( 'k' == 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)制作:最牛的LJF";
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;
}
 
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 << "-";
}
 
/*** 首次输出蛇,其中snake[0]代表头 ***/
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 w,s=1; 
string i,name;
int namee(string name){
    getline(cin,name); 
    if(name.size()>10){
        out("看没看?!(n<=10)\n");
        namee(name);
    } 
    else{
        out("你好 ");
        out(name);
    }
}
int main(){
    int sb=7; 
    system("color F0");
    if(s==1){
        out("游戏说明:\n");
        out("除了取名外,只用数字键\n"); 
        Sleep(1000); 
        couts<<"5"<<" "; 
        couts<<"4"<<" "; 
        couts<<"3"<<" "; 
        couts<<"2"<<" "; 
        couts<<"1"<<" \n";
        Sleep(1000);
        out("游戏开始\n"); 
        Sleep(300);
        system("cls");
        Sleep(500);
        out("Hi,你叫什么名字(长度<=10)\n"); 
        namee(name);
    }
    out("\n剧情:\n"); 
    while(1){
    out("你是一个帅B,一天,你打开了电脑\n"); 
    out("1,打开c++\n2,打开Minecraft\n3,关电脑\n");
    cin>>i;
    while(i!="1"&&i!="2"&&i!="3"){
        cout<<"请正确输入\n";
        cin>>i;
    }
    if(i=="1"){ 
        out("你打开了c++\n");  
        out("你打了一个a+b\n"); 
        out("你觉得不爽\n");  
        out("又打了一个Hello World\n");  
        out("你还是觉得不爽\n"); 
        out("可是却没有题刷\n"); 
        out("你打算怎么干\n");
        out("1,关电脑\n2,继续\n"); 
        cins;
    if(i=="2")//支线2 
    {  
        w=2;
        out("你又做了一道黑题\n");
        out("但是没做出来\n"); 
        out("觉得很是不爽\n");  
        out("于是玩起了死循环\n"); 
        out(".....\n");
    }
    if(i=="1")//支线1 
    {
        out("你关掉了电脑\n");
        out("觉得很不道德\n");
        out("所以你打开了《信息学奥赛一本通》\n");
        out("你打算学什么?\n");
        out("1,顺序结构\n2,数据结构\n");
        cins;
        if(i=="2") {
             out("由于你看不懂\n");
             out("所以\n");  
        }   
        out("你打开了顺序结构\n") ; 
        out("你一下就懂了\n") ;
        out("你合上书\n" );
        out("1,开电脑\n2,开电脑\n") ;
        cins;
        out("你开启了电脑\n") ;
    }
    couts<<"***********\n***********\n***********\n***********\n";
    out("你的电脑死机了\n你打算?\n") ;
    out("1,修电脑\n2,不管他\n") ;
    cins;
    if(i=="2") {
         out("你在房间里徘徊\n"); 
         out("无聊至极,") ;
         out("刚好在口袋里找到了车钥匙\n"); 
         out("1.去修电脑\n2.出去玩\n");
         cin>>mmm;
         switch(mmm){
            case 1: break;
            case 2: out("你被车撞死了\n");break;
         }
    } 
    if(i=="1"){
     out("你决定去修电脑\n") ; 
     out("你去找车钥匙\n") ;
    while(true){
        out("1,去房间\n2,去餐厅\n3,掏口袋\n") ;
        cin>>i;
        while(i!="1"&&i!="2"&&i!="3")
        {cout<<"请正确输入\n";
        cin>>i;}
        if(i=="1"||i=="2")
        {out("你找不到车钥匙\n") ;
        continue;}
        else{out("你找到了车钥匙\n");  
            break;}}}
    if(mmm!=2){
    out("你坐上了车\n听起了");
    cout<<"FM.luogu\n";
    out("没一会就到了\n你给了维修公司电脑\n又给了1000元\n过了一会儿\n电脑修好了\n你把修好的电脑带回家\n1,开电脑\n2,不理它\n");
    cins;
    if(w==2)
    {
        if(i=="1"){
            out("你打开了电脑\n你做起了没做完的黑题\n你莫名其妙的AK IOI\n");
        }
        if(i=="2")
        out("你想起了你没做完的黑题\n依旧打开了电脑\n");
        out("你苦思冥想\n但依旧没做出来\n你一气之下直接抄了十道黑题\n结果第二天你被棕名了\n"); 
        } 
    else 
    {
        if(i=="1")
            out("你开启了电脑\n");
        if(i=="2")
        {
            out("你想起了你刚学的顺序结构\n");
            out("你依旧打开了电脑\n");
        } 
        out("你点击了http://ybt.ssoier.cn:8088/index.php\n");
        out("点击了第一章 C++语言入门\n");
        out("A了梯形面积\n");
        out("又A了电影票\n");
        out("还A了牛吃草\n");
        out("其他的都不会\n");
        out("你想起了老师在openjudge noi布置的作业\n");
        out("1,打开openjudge noi\n2,什么事都不干\n");
        cins;
        if(i=="1"){ 
        out("你打开了openjudge noi\n");
        out("登录以后\n");
        out("做了和上面一模一样的题\n");
        out("完成了老师布置的作业\n") ; 
        out("你又打开了luogu.com.cn\n");
        out("点击了题单广场\n");
        out("也做了和上面一模一样的题\n");
        out("外加一题超级马里奥\n");
        out("开学后\n");
        out("你被老师表扬了\n");} 
        if(i=="2")
        {
            out("你没打开了openjudge noi\n");
            out("于是在开学的时候\n"); 
            out("你被老师打了一顿\n"); 
        } 
    }
    }
    } 
    else{if(i=="2"){//主线2 Minecraft 
        out("你打开了Minecraft\n");
        out("你想玩\n"); 
        out("结果你的显卡带不动\n"); 
        out("你电脑炸了\n"); 
        }
        else{
            out("你妈看见了\n"); 
            out("把你干了一顿\n");
            out("你哭晕在厕所\n");    
        } 
    }//结束 
    cout<<"the end";
    Sleep(1000);
    system("cls");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
    out("如果重玩请按'0'\n不同的输入有不同的情况哦\n");
    cin>>i;
    if(i=="0"){//重来 
        w=0;
        system("cls");
        system("color F4");
        s++;
        out("这是你的第");cout<<s<<"轮\n"; 
        sb--;
        out("你还有"); Sleep(80); cout<<sb; out("种结果\n");
        continue;
    } 
    else{
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
        system("cls");
        out("制作不易,\n");
        out("作者:wyx2628041658 and hzpy\n");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
        out("你想玩别的吗?\n");
		out("1,贪吃蛇\n2,俄罗斯方块\n3,五子棋\n4,飞机大战\n");
		cin>>i;
    while(i!="1"&&i!="2"&&i!="3"&&i!="4"){
        cout<<"请正确输入\n";
        cin>>i;
    }
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		if(i=="1"){
			system("cls");
	cout << "--------------------贪吃蛇---------------------" << endl;
    cout << "请注意窗口大小,以免发生错位.建议将窗口调为最大." << endl;
    cout << "先选择难度.请在1-10中输入1个数,1最简单,10则最难" << endl;
    cout << "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;
    cout << "-----------------------------------------------" << endl;
    m=25;
	n=40; 
    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);

        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;
    		}
		} 
		else{
			
			
			
			
			
			
			
			
			if(i=="2"){
				
				
				
				
				
				
				
				system("cls");
				MessageBox (NULL, "欢迎来到俄罗斯方块游戏!", "温馨提示", MB_OK);
	system ("mode coon cols=200 lines=100"); 
	system ("mode con cols=70 lines=35");
	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 (--times == 0) {
			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 ();
			}
			else{
				if(i=="4"){
					srand((int)time(0));	//随机种子
	HideCursor();	//隐藏光标
	
	Game game;
	int a = drawMenu();
	if(a == 2)
		game.rank = 20;
	system("cls");
	drawPlaying();
	game.Playing();
				} 
				if(i=="3"){FiveChess a;
    a.InitChessBoard();
    a.PrintChessBoard();
    a.Play();
					
				}
			} 
		}
        out("bye!\n"); 
        system("pause");
        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);
	string s = "GAME OVER";
	for (int i = 0; i < s.size (); i++) {
		Sleep (80);
		cout << s[i];
	}
	gotoXY (hOut, 8, 9);
	s = "空格键:重来";
	for (int i = 0; i < s.size (); i++) {
		Sleep (80);
		cout << s[i];
	}
	cout << endl;
	gotoXY (hOut, 8, 10);
	s = "ESC键:退出";
	MessageBox (NULL, "很遗憾,您输了!", "温馨提示", MB_OK);
	for (int i = 0; i < s.size (); i++) {
		Sleep (80);
		cout << s[i];
	}
	char key;
	while (true) {
		key = _getch ();
		if (key == 32) {
			return;
		} else 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 -= 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 += 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;
}

游戏发布站整站程序代码是一款以asp+access的游戏发布网站。版本功能强大,无任何漏洞,无任何限制.修改QQ以及网站地址就可以直接用(修正搜索引擎优化,若干BUG) 【详细功能】 1、私服分套红固顶,套黄推荐,以及私服分类支持; 2、首页分套红固顶、套黄推荐、今天开放、即将开放、昨天开放和所有私服显示; 3、套黄推荐私服当天自动提升并红字加粗显示,系统自动排名; 4、私服搜索查找功能; 5、全站自动生成HTML页面功能,后台操作过程中即可更新相关HTML页面; 6、页面关键字可在后台修改; 7、私服分类支持各种私服类型,具体操作点击 基本设置→游戏类型 内有说明; 8、私服按开放时间排名,套红和套黄私服可在后台按发布时间控制排名; 9、后台批量审核、删除等,信息灵活管理; 10、任意在线发布各类私服、家族信息,后台可设置为自动审核和手动审核两种; 11、家族也具有固顶、分类功能,管理员后台操作; 12、游戏类型自由设置,如传奇、传奇3、天龙八部、完美世界、魔兽、天堂等; 13、游戏版本功能,可在后台添加或修改; 14、各种私服单页面显示功能,无限分类,可选择查看分类私服; 15、首页横幅广告功能,支持FLASH和图片,数量不限,可控制排名; 16、站内所有广告均在后台管理,支持FLASH和图片; 17、广告价格栏目内容可在后台添加或修改; 18、文章和下载全部后台添加,支持固定等功能; 19、优化所有代码,使其运行更快; 20、全站生成HTML静态页面,与后台分离,更安全、更稳定、更方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值