• 个人简介

    小游戏

    #include <bits/stdc++.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    using namespace std;
    int qian,a[11],b[11],c,d,e,f,l,i_;
    string filename = "c++彩票模拟器的钱.txt",s = "";
    bool l1,l2,l3,l4,l5,l6,l7;
    int main(){
    	srand(time(NULL));
    	if(!access(filename.c_str(), F_OK) == 0){
    		qian = 100;
    		ofstream file("c++彩票模拟器的钱.txt");
    		file << qian;
    		file.close();
    	}
        ifstream inputFile("c++彩票模拟器的钱.txt");
        getline(inputFile,s);
    	qian = atoi(s.c_str());
        inputFile.close();
    	cout << "欢迎来到彩票模拟器,你要玩还是不玩。(你初始有100彩元,每张彩票2元)(玩就输入1,不玩输就入0)\n";
    	cin >> l;
    	if(l >= 1){
    		while(1){
    			cout << "你想买多少张彩票。\n";
    			cin >> f;
    			if(f > 1){
    				while(qian < 2 * f){
    					cout << "你买不起" << f << "张彩票,请重新输入\n";
    					cin >> f;
    				}
    				qian -= 2 * f;
    			}
    			else if(f == 1) qian -= 2;
    			else if(f <= 0){
    				while(f <= 0){
    					cout << "请重新输入。\n";
    					cin >> f;
    					if(f > 1){
    						while(qian < 2 * f){
    							cout << "你买不起" << f << "张彩票,请重新输入\n";
    							cin >> f;
    						}
    						qian -= 2 * f;
    					}
    					else if(f == 1) qian -= 2;
    				}
    			}
    			else{
    				cout << "你不够钱了,你猜到我手中有多少彩元,那么我手中的彩元归你。(我手中有50~100彩元)\n";
    				d = rand() % 51 + 50;
    				cout << "现在开始猜吧。\n";
    				while(1){
    					cin >> e;
    					if(d > e) cout << "小了。\n";
    					else if(d < e) cout << "大了。\n";
    					else{
    						cout << "猜对了,恭喜你获得了" << d << "彩元。\n";
    						qian += d;
    						break;
    					}
    				}
    			}
    			for(i_ = 1 ; i_ <= f ; i_++){
    				cout << "第" << i_ << "张彩票。\n";
    				cout << "请输入选5个从01~35的号码。\n";
    				for(int i = 1 ; i <= 5 ; i++) cin >> a[i];
    				cout << "请输入选2个从01~12的号码。\n";
    				for(int i = 6 ; i <= 7 ; i++) cin >> a[i];
    				for(int i = 1 ; i <= 5 ; i++) b[i] = rand() % 35 + 1;
    				for(int i = 6 ; i <= 7 ; i++) b[i] = rand() % 12 + 1;
    				l1 = a[1] == b[1];
    				l2 = a[2] == b[2];
    				l3 = a[3] == b[3];
    				l4 = a[4] == b[4];
    				l5 = a[5] == b[5];
    				l6 = a[6] == b[6];
    				l7 = a[7] == b[7];
    				if(l1 && l2 && l3 && l4 && l5 && l6 && l7){
    					c = (rand() % 501 + 500) * 10000;
    					cout << "恭喜你中了一等奖,获得奖金" << c << "彩元。\n";
    					qian += c;
    				}
    				else if((l1 && l2 && l3 && l4 && l5) && (l6 || l7)){
    					c = (rand() % 5 + 1) * 100000;
    					cout << "恭喜你中了二等奖,获得奖金" << c << "彩元。\n";
    					qian += c;
    				}
    				else if(l1 && l2 && l3 && l4 && l5){
    					cout << "恭喜你中了三等奖,获得奖金10000彩元。\n";
    					qian += 10000;
    				}
    				else if(((l1 && l2 && l3 && l4) || (l1 && l2 && l3 && l5) || (l1 && l2 && l4 && l5) || (l1 && l3 && l4 && l5) || (l2 && l3 && l4 && l5)) && (l6 && l7)){
    					cout << "恭喜你中了四等奖,获得奖金3000彩元。\n";
    					qian += 3000;
    				}
    				else if(((l1 && l2 && l3 && l4) || (l1 && l2 && l3 && l5) || (l1 && l2 && l4 && l5) || (l1 && l3 && l4 && l5) || (l2 && l3 && l4 && l5)) && (l6 || l7)){
    					cout << "恭喜你中了五等奖,获得奖金300彩元。\n";
    					qian += 300;
    				}
    				else if(((l1 && l2 && l3) || (l1 && l2 && l4) || (l1 && l2 && l5) || (l1 && l3 && l4) || (l1 && l3 && l5) || (l1 && l4 && l5) || (l2 && l3 && l4) || (l2 && l3 && l5) || (l2 && l4 && l5) || (l3 && l4 && l5)) && (l6 && l7)){
    					cout << "恭喜你中了六等奖,获得奖金200彩元。\n";
    					qian += 200;
    				}
    				else if((l1 && l2 && l3 && l4) || (l1 && l2 && l3 && l5) || (l1 && l2 && l4 && l5) || (l1 && l3 && l4 && l5) || (l2 && l3 && l4 && l5)){
    					cout << "恭喜你中了七等奖,获得奖金100彩元。\n";
    					qian += 100;
    				}
    				else if(((l1 && l2 && l3) || (l1 && l2 && l4) || (l1 && l2 && l5) || (l1 && l3 && l4) || (l1 && l3 && l5) || (l1 && l4 && l5) || (l2 && l3 && l4) || (l2 && l3 && l5) || (l2 && l4 && l5) || (l3 && l4 && l5)) && (l6 || l7)){
    					cout << "恭喜你中了八等奖,获得奖金15彩元。\n";
    					qian += 15;
    				}
    				else if(((l1 && l2) || (l1 && l3) || (l1 && l4) || (l1 && l5) || (l2 && l3) || (l2 && l4) || (l2 && l5) || (l3 && l4) || (l3 && l5) || (l4 && l5)) && (l6 && l7)){
    					cout << "恭喜你中了八等奖,获得奖金15彩元。\n";
    					qian += 15;
    				}
    				else if((l1 && l2 && l3) || (l1 && l2 && l4) || (l1 && l2 && l5) || (l1 && l3 && l4) || (l1 && l3 && l5) || (l1 && l4 && l5) || (l2 && l3 && l4) || (l2 && l3 && l5) || (l2 && l4 && l5) || (l3 && l4 && l5)){
    					cout << "恭喜你中了九等奖,获得奖金5彩元。\n";
    					qian += 5;
    				}
    				else if(((l1 && l2) || (l1 && l3) || (l1 && l4) || (l1 && l5) || (l2 && l3) || (l2 && l4) || (l2 && l5) || (l3 && l4) || (l3 && l5) || (l4 && l5)) && (l6 || l7)){
    					cout << "恭喜你中了九等奖,获得奖金5彩元。\n";
    					qian += 5;
    				}
    				else if((l1 || l2 || l3 || l4 || l5) && (l6 && l7)){
    					cout << "恭喜你中了九等奖,获得奖金5彩元。\n";
    					qian += 5;
    				}
    				else if(l6 && l7){
    					cout << "恭喜你中了九等奖,获得奖金5彩元\n";
    					qian += 5;
    				}
    				else cout << "很遗憾,你没中奖。\n";
    			}
    			cout << "中奖号码是:";
    			for(int i = 1 ; i <= 7 ; i++){
    				if(b[i] < 10) cout << "0";
    				cout << b[i];
    				if(i == 5) cout << " |";
    				if(i == 7) cout << "。\n";
    				else cout << " ";
    			}
    			cout << "你还剩" << qian << "彩元。\n";
    			cout << "你还要玩吗?(玩就输入1,不玩就输入0)。\n";
    			cin >> l;
    			if(l == 0) break;
    		}
    	}
    	ofstream file("c++彩票模拟器的钱.txt");
    	file << qian;
    	file.close();
    	return 0;
    }
    
    #include <bits/stdc++.h>
    #include <conio.h>
    #include <windows.h>
    using namespace std;
    const int COLUMN[4] = { 0, 2, 5, 8 };
    const int DISC_CNT_MAX = 10;
    const int ROW_OP_CNT = 2, COL_OP_CNT = 16;
    const int ROW_MESSAGE = 3, COL_MESSAGE = 16;
    const int ROW_HELP = 15, COL_HELP = 1;
    const int ROW_MAX = 30, COL_MAX = 120;
    const int BLUE = 1;
    const int GREEN = 2;
    const int CYAN = 3;
    const int AQUA = 3;
    const int RED = 4;
    const int PURPLE = 5;
    const int YELLOW = 6;
    const int WHITE = 7;
    int n;
    stack<int> rod[4];
    int sz[4] = { 0 };
    int pos1, pos2;
    int key;
    bool prev_key_is_esc;
    int op_cnt;
    bool is_moving;
    int moved_disc;
    template <typename T>
    inline T read() {
    T x = 0;
    T multiplier = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-') {
            multiplier = -1;
        }
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = (x << 3) + (x << 1) + (ch & 15);
        ch = getchar();
    }
    return x * multiplier;
    }
    void set_caret_pos(int row = 1, int col = 1) {
    COORD pos;
    pos.X = col - 1;
    pos.Y = row - 1;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    }
    int get_caret_row() {
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
    return info.dwCursorPosition.Y + 1;
    }
    int get_caret_col() {
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
    return info.dwCursorPosition.X + 1;
    }
    pair<int, int> get_caret_pos() {
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
    return make_pair(info.dwCursorPosition.Y + 1, info.dwCursorPosition.X + 1);
    }
    void set_foreground_color(int x, bool intensity = false) {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                            x | (intensity << 3));
    }
    void set_cursor_visibility(bool visibility = true) {
    CONSOLE_CURSOR_INFO cc_info;
    cc_info.bVisible = visibility;
    cc_info.dwSize = 1;
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cc_info);
    }
    void disp_init_state(int n) {
    for (int i = 1; i <= n; i++) {
        set_caret_pos(i, COLUMN[1]);
        printf("%d", i);
    }
    for (int i = 1; i <= 3; i++) {
        set_caret_pos(n + 1, COLUMN[i] - 1);
        printf("---");
        set_caret_pos(n + 2, COLUMN[i]);
        putchar('A' + i - 1);
    }
     set_caret_pos(ROW_OP_CNT, COL_OP_CNT);
    printf("0");
    }
    void disp_help() {
    set_caret_pos(ROW_HELP, COL_HELP);
    printf("如何玩:\n"
           "数字表示光盘的尺寸.\n"
           "将A杆上圆盘移动到C杆上,每次一个.\n"
           "每个杆上的圆盘必须按大小升序堆叠.\n"
           "使用左右箭头键选择杆.\n"
           "按Enter键拾取选定杆上的顶部圆盘.\n"
           "然后使用左右键移动.\n"
           "按ESC取消当前移动.\n"
           "再次按Enter键可将圆盘放置.\n"
           "按R重新启动.\n"
           "按ESC键两次退出.\n");
    }
    void disp_pos(int pos1, int pos2 = 0) {
    for (int i = 1; i <= 3; i++) {
        set_caret_pos(n + 3, COLUMN[i]);
        printf(" ");
    }
    set_caret_pos(n + 3, COLUMN[pos1]);
    printf("^");
    if (pos2) {
        set_caret_pos(n + 3, COLUMN[pos2]);
        set_foreground_color(GREEN, true);
        printf("^");
        set_foreground_color(WHITE);
    }
    }
    void clear() {
    for (int i = 1; i <= DISC_CNT_MAX + 3; i++) {
        for (int j = 1; j <= COL_MAX; j++) {
            set_caret_pos(i, j);
            putchar(' ');
        }
    }
    }
    void moving_disc(int pos1, int pos2) {
    int x = rod[pos1].top();
     set_caret_pos(n + 1 - sz[pos1], COLUMN[pos1]);
    set_foreground_color(RED, true);
    printf("%d", x);
    set_foreground_color(WHITE);
     set_caret_pos(n - sz[pos2] + (pos1 == pos2), COLUMN[pos2]);
    set_foreground_color(GREEN, true);
    printf("%d", x);
    set_foreground_color(WHITE);
    }
    void update_discs(int pos1, int pos2) {
    int x = rod[pos1].top();
     set_caret_pos(n + 1 - sz[pos1], COLUMN[pos1]);
    printf("  ");
    rod[pos1].pop();
    sz[pos1]--;
     rod[pos2].push(x);
    sz[pos2]++;
    set_caret_pos(n + 1 - sz[pos2], COLUMN[pos2]);
    printf("%d", x);
    }
    void remove_temp_disc(int pos) {
    set_caret_pos(n - sz[pos], COLUMN[pos]);
    printf("  ");
    }
    void update_op_cnt() {
    op_cnt++;
    set_caret_pos(ROW_OP_CNT, COL_OP_CNT);
    printf("%d", op_cnt);
    }
    int main() {
    printf("输入光盘数量(不超过 %d): ", DISC_CNT_MAX);
    n = min(read<int>(), DISC_CNT_MAX);
     set_cursor_visibility(false);
    disp_help();
     for (; n <= DISC_CNT_MAX; n++) {
        clear();
         for (int i = 1; i <= 3; i++) {
            while (!rod[i].empty()) {
                rod[i].pop();
            }
            sz[i] = 0;
        }
         for (int i = n; i >= 1; i--) {
            rod[1].push(i);
        }
        sz[1] = n;
         is_moving = false;
        pos1 = 1;
        op_cnt = 0;
        prev_key_is_esc = false;
         disp_init_state(n);
        disp_pos(1);
        while (true) {
            if (sz[3] == n) {
                set_caret_pos(ROW_MESSAGE, COL_MESSAGE);
                if (op_cnt != (1 << n) - 1) {
                    printf("你用%d个动作完成了谜题.",op_cnt);
                } else {
                    printf("祝贺你用最少的动作完成了谜题 " );
                }
                Sleep(2000);
                break;
            }
             key = getch();
            if (key == 224) {
                key = getch();
                if (!is_moving) {
                    if (key == 75) { // Left arrow key
                        pos1 = (pos1 + 1) % 3 + 1;
                    } else if (key == 77) { // Right arrow key
                        pos1 = pos1 % 3 + 1;
                    }
                    disp_pos(pos1);
                } else {
                    remove_temp_disc(pos2);
                    if (key == 75) { // Left arrow key
                        pos2 = (pos2 + 1) % 3 + 1;
                    } else if (key == 77) { // Right arrow key
                        pos2 = pos2 % 3 + 1;
                    }
                    moving_disc(pos1, pos2);
                    disp_pos(pos1, pos2);
                }
            } else if (key == 13) { // Enter key
                if (!is_moving) {
                    if (rod[pos1].empty()) {
                        continue;
                    }
                    is_moving = true;
                    moved_disc = rod[pos1].top();
                    pos2 = pos1;
                    moving_disc(pos1, pos2);
                    disp_pos(pos1, pos2);
                } else {
                    if (!rod[pos2].empty() && rod[pos2].top() < moved_disc) {
                        set_caret_pos(ROW_MESSAGE, COL_MESSAGE);
                        printf("提示:光盘未按升序堆叠在棒上。");
                        continue;
                    }
                    is_moving = false;
                    update_discs(pos1, pos2);
                    update_op_cnt();
                    pos1 = pos2;
                    disp_pos(pos1);
                }
            } else if (key == 27) { // Escape key
                if (prev_key_is_esc) { // Double ESC
                    break;
                }
                if (is_moving) {
                    is_moving = false;
                    remove_temp_disc(pos2);
                    update_discs(pos1, pos1);
                    disp_pos(pos1);
                } else {
                    prev_key_is_esc = true;
                }
            } else if (key == 'R' || key == 'r') {
                n--;
                break;
            }
        }
         if (prev_key_is_esc && key == 27) { // Double ESC
            break;
        }
    }
     set_caret_pos(ROW_MAX - 1, 1);
     return 0;
    }
    
    #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 << "-";
    }
     
    /*** 首次输出蛇,其中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 main()
    {
    	system("mode con cols=80 lines=30"); //设置cmd窗口大小
    	system("color 2"); //设置字符颜色:0 黑;1 深蓝;2 深绿;3 深青;4 深红;5 深紫;6 深褐 
        cout << "--------------------贪吃蛇---------------------" << endl;
        cout << "先选择难度.请在1-10中输入1个数,1最简单,10则最难" << endl;
        cout << "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;
        cout << "-----------------------------------------------" << endl;
        cout << "请输入难度级别:" ;
        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);
            /*** 调节时间,单位是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;
    }
    
    #include <bits/stdc++.h>
    #include <conio.h>
    #include <windows.h>
    using namespace std;
    int i = 1,r;
    double qian = 0,jqq[1000001],a,cs = 0;
    int main(){
    	srand(time(NULL));
    	cout << "注: 这次不会保存游戏币。\n";
    	cout << "游戏规则: 每次按一次空格键可以加一游戏币,如果加到2147483647(int的整数取值最大范围)获胜。\n如果输入1就可以抽加钱器,你身上最多能使用5个加钱器(系统自动给你使用前5好加钱器),";
    	cout << "加钱器分三个等级分别是低级(100游戏币)、中级(10000游戏币)、高级(1000000游戏币),每个等级都有普通(67%)、稀有(28%)、史诗(4%)、传说(1%)的四个小等级,\n";
    	cout << "低级普通加钱器使用后每次按空格键可以增加5游戏币,低级稀有加钱器使用后每次按空格键可以增加10游戏币,低级史诗加钱器使用后获50游戏币,";
    	cout << "低级传说加钱器使用后每次按空格键可以增加500游戏币,\n中级普通加钱器使用后每次按空格键可以增加100游戏币,中级稀有加钱器使用后每次按空格键可以增加6000游戏币,";
    	cout << "中级史诗加钱器使用后每次按空格键可以增加10000游戏币,中级传说加钱器使用后每次按空格键可以增加70000游戏币,\n高级普通加钱器使用后每次按空格键可以增加30000游戏币";
    	cout << "高级稀有加钱器使用后每次按空格键可以增加100000游戏币,高级史诗加钱器使用后每次按空格键可以增加900000游戏币,";
    	cout << "高级传说加钱器使用后每次按空格键可以增加8000000游戏币。\n如果输入2就可以重生,重生钱会清零,但按一次空格键增加70%游戏币。\n"; 
    	int key;
    	while(qian < 2147483647){
    		key = _getch();
    		system("cls");
    		cout << "注: 这次不会保存游戏币。\n";
    		cout << "游戏规则: 每次按一次空格键可以加一游戏币,如果加到2147483647(int的整数取值最大范围)获胜。\n如果输入1就可以抽加钱器,你身上最多能使用5个加钱器(系统自动给你使用前5好加钱器),";
    		cout << "加钱器分三个等级分别是低级(100游戏币)、中级(10000游戏币)、高级(1000000游戏币),每个等级都有普通(67%)、稀有(28%)、史诗(4%)、传说(1%)的四个小等级,\n";
    		cout << "低级普通加钱器使用后每次按空格键可以增加5游戏币,低级稀有加钱器使用后每次按空格键可以增加10游戏币,低级史诗加钱器使用后获50游戏币,";
    		cout << "低级传说加钱器使用后每次按空格键可以增加500游戏币,\n中级普通加钱器使用后每次按空格键可以增加100游戏币,中级稀有加钱器使用后每次按空格键可以增加6000游戏币,";
    		cout << "中级史诗加钱器使用后每次按空格键可以增加10000游戏币,中级传说加钱器使用后每次按空格键可以增加70000游戏币,\n高级普通加钱器使用后每次按空格键可以增加30000游戏币";
    		cout << "高级稀有加钱器使用后每次按空格键可以增加100000游戏币,高级史诗加钱器使用后每次按空格键可以增加900000游戏币,";
    		cout << "高级传说加钱器使用后每次按空格键可以增加8000000游戏币。\n如果输入2就可以重生,重生钱会清零,但按一次空格键增加70%游戏币。\n"; 
    		if(key == 32){
    			sort(jqq+1,jqq+i,greater<double>());
    			qian = qian + (jqq[1] + jqq[2] + jqq[3] + jqq[4] + jqq[5] + 1) * pow(1.7,cs);
    			cout << "钱: " << int(qian) << " 重生次数:" << cs << " 每次能增加的钱数: " << (jqq[1] + jqq[2] + jqq[3] + jqq[4] + jqq[5] + 1) * pow(1.7,cs) << endl;
    		}
    		else if(key == 49){
    			system("cls");
    			cout << "注: 这次不会保存游戏币。\n";
    			cout << "游戏规则: 每次按一次空格键可以加一游戏币,如果加到2147483647(int的整数取值最大范围)获胜。\n如果输入1就可以抽加钱器,你身上最多能使用5个加钱器(系统自动给你使用前5好加钱器),";
    			cout << "加钱器分三个等级分别是低级(100游戏币)、中级(10000游戏币)、高级(1000000游戏币),每个等级都有普通(67%)、稀有(28%)、史诗(4%)、传说(1%)的四个小等级,\n";
    			cout << "低级普通加钱器使用后每次按空格键可以增加5游戏币,低级稀有加钱器使用后每次按空格键可以增加10游戏币,低级史诗加钱器使用后获50游戏币,";
    			cout << "低级传说加钱器使用后每次按空格键可以增加500游戏币,\n中级普通加钱器使用后每次按空格键可以增加100游戏币,中级稀有加钱器使用后每次按空格键可以增加6000游戏币,";
    			cout << "中级史诗加钱器使用后每次按空格键可以增加10000游戏币,中级传说加钱器使用后每次按空格键可以增加70000游戏币,\n高级普通加钱器使用后每次按空格键可以增加30000游戏币";
    			cout << "高级稀有加钱器使用后每次按空格键可以增加100000游戏币,高级史诗加钱器使用后每次按空格键可以增加900000游戏币,";
    			cout << "高级传说加钱器使用后每次按空格键可以增加8000000游戏币。\n如果输入2就可以重生,重生钱会清零,但按一次空格键增加70%游戏币。\n"; 
    			cout << "你要抽低级加钱器,还是中级加钱器,还是高级加钱器。(分别输入1,2,3)\n";
    			cin >> a;
    			r = rand() % 100 + 1;
    			if(a == 1){
    				if(qian < 100){
    					cout << "你没有足够的钱。\n";
    					continue;
    				}
    				else qian -= 100;
    				if(r >= 1 && r <= 67){
    					cout << "恭喜你抽到了低级普通加钱器。\n";
    					jqq[i] = 5;
    					i++;
    				}
    				else if(r >= 68 && r <= 95){
    					cout << "恭喜你抽到了低级稀有加钱器。\n";
    					jqq[i] = 10;
    					i++;
    				}
    				else if(r >= 96 && r <= 99){
    					cout << "恭喜你抽到了低级史诗加钱器。\n";
    					jqq[i] = 50;
    					i++;
    				}
    				else if(r == 100){
    					cout << "恭喜你抽到了低级传说加钱器。\n";
    					jqq[i] = 500;
    					i++;
    				}
    			}
    			else if(a == 2){
    				if(qian < 10000){
    					cout << "你没有足够的钱。\n";
    					continue;
    				}
    				else qian -= 10000;
    				if(r >= 1 && r <= 67){
    					cout << "恭喜你抽到了中级普通加钱器。\n";
    					jqq[i] = 100;
    					i++;
    				}
    				else if(r >= 68 && r <= 95){
    					cout << "恭喜你抽到了中级稀有加钱器。\n";
    					jqq[i] = 6000;
    					i++;
    				}
    				else if(r >= 96 && r <= 99){
    					cout << "恭喜你抽到了中级史诗加钱器。\n";
    					jqq[i] = 10000;
    					i++;
    				}
    				else if(r == 100){
    					cout << "恭喜你抽到了中级传说加钱器。\n";
    					jqq[i] = 70000;
    					i++;
    				}
    			}
    			else if(a == 3){
    				if(qian < 1000000){
    					cout << "你没有足够的钱。\n";
    					continue;
    				}
    				else qian -= 1000000;
    				if(r >= 1 && r <= 67){
    					cout << "恭喜你抽到了高级普通加钱器。\n";
    					jqq[i] = 30000;
    					i++;
    				}
    				else if(r >= 68 && r <= 95){
    					cout << "恭喜你抽到了高级稀有加钱器。\n";
    					jqq[i] = 100000;
    					i++;
    				}
    				else if(r >= 96 && r <= 99){
    					cout << "恭喜你抽到了高级史诗加钱器。\n";
    					jqq[i] = 900000;
    					i++;
    				}
    				else if(r == 100){
    					cout << "恭喜你抽到了高级传说加钱器。\n";
    					jqq[i] = 8000000;
    					i++;
    				}
    			}
    		}
    		else if(key == 50){
    			cout << "欢迎来重生。\n"; 
    			if(qian < 1000 * pow(10,cs)){
    				cout << "你没有足够的钱。\n";
    				continue;
    			}
    			qian = 0;
    			cs++;
    			cout << "重生成功。\n";
    		}
    	}
    	cout << "你赢了!\n";
    	return 0;
    }
    
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    #include <time.h>
    #define Height 25 //迷宫的高度,必须为奇数
    #define Width 25 //迷宫的宽度,必须为奇数
    #define Wall 1
    #define Road 0
    #define Start 2
    #define End 3
    #define Esc 5
    #define Up 1
    #define Down 2
    #define Left 3
    #define Right 4
    int map[Height+2][Width+2];
    void gotoxy(int x,int y) //移动坐标 
    {
    	COORD coord;
    	coord.X=x;
    	coord.Y=y;
    	SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
    }
    void hidden()//隐藏光标
    {
    	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    	CONSOLE_CURSOR_INFO cci;
    	GetConsoleCursorInfo(hOut,&cci);
    	cci.bVisible=0;
    	//赋1为显示,赋0为隐藏
    	SetConsoleCursorInfo(hOut,&cci);
    }
    void create(int x,int y) //随机生成迷
    {
    	int c[4][2]= {
    		0,1,1,0,0,-1,-1,0
    	}
    	;
    	//四个方向
    	int i,j,t;
    	//将方向打乱
    	for (i=0;i<4;i++) {
    		j=rand()%4;
    		t=c[i][0];
    		c[i][0]=c[j][0];
    		c[j][0]=t;
    		t=c[i][1];
    		c[i][1]=c[j][1];
    		c[j][1]=t;
    	}
    	map[x][y]=Road;
    	for (i=0;i<4;i++)
    	if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) {
    		map[x+c[i][0]][y+c[i][1]]=Road;
    		create(x+2*c[i][0],y+2*c[i][1]);
    	}
    }
    int get_key() //接收按键 
    {
    	char c;
    	while(c=getch()) {
    		if(c==27) return Esc;
    		//Esc
    		if(c!=-32)continue;
    		c=getch();
    		if(c==72) return Up;
    		//上
    		if(c==80) return Down;
    		//下
    		if(c==75) return Left;
    		//左
    		if(c==77) return Right;
    		//右
    	}
    	return 0;
    }
    void paint(int x,int y) //画迷宫 
    {
    	gotoxy(2*y-2,x-1);
    	switch(map[x][y]) {
    		case Start:
    		printf("入");
    		break;
    		//画入口
    		case End:
    		printf("出");
    		break;
    		//画出口
    		case Wall:
    		printf("▇");
    		break;
    		//画墙
    		case Road:
    		printf(" ");
    		break;
    		//画路
    	}
    }
    void game() {
    	int x=2,y=1;
    	//玩家当前位置,刚开始在入口处
    	int c;
    	//用来接收按键
    	while(1) {
    		gotoxy(2*y-2,x-1);
    		printf("A");
    		//画出玩家当前位置
    		if(map[x][y]==End) //判断是否到达出口 
    		{
    			gotoxy(30,24);
    			printf("\n");
    			//
    			printf("到达终点,按任意键结束");
    			getch();
    			break;
    		}
    		c=get_key();
    		if(c==Esc) {
    			gotoxy(0,24);
    			break;
    		}
    		switch(c) {
    			case Up: //向上走
    			if(map[x-1][y]!=Wall) {
    				paint(x,y);
    				x--;
    			}
    			break;
    			case Down: //向下走
    			if(map[x+1][y]!=Wall) {
    				paint(x,y);
    				x++;
    			}
    			break;
    			case Left: //向左走
    			if(map[x][y-1]!=Wall) {
    				paint(x,y);
    				y--;
    			}
    			break;
    			case Right: //向右走
    			if(map[x][y+1]!=Wall) {
    				paint(x,y);
    				y++;
    			}
    			break;
    		}
    	}
    }
    int main() {
    	int i,j;
    	srand((unsigned)time(NULL));
    	//初始化随即种子
    	hidden();
    	//隐藏光标
    	for (i=0;i<=Height+1;i++)
    	for (j=0;j<=Width+1;j++)
    	if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫
    	map[i][j]=Road; else map[i][j]=Wall;
    	create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1));
    	//从随机一个点开始生成迷宫,该点行列都为偶数
    	for (i=0;i<=Height+1;i++) //边界处理 
    	{
    		map[i][0]=Wall;
    		map[i][Width+1]=Wall;
    	}
    	for (j=0;j<=Width+1;j++) //边界处理 
    	{
    		map[0][j]=Wall;
    		map[Height+1][j]=Wall;
    	}
    	map[2][1]=Start;
    	//给定入口
    	map[Height-1][Width]=End;
    	//给定出口
    	for (i=1;i<=Height;i++)
    	for (j=1;j<=Width;j++) //画出迷宫
    	paint(i,j);
    	game();
    	//开始游戏
    	getch();
    	return 0;
    }