20粉粉福

· · 休闲·娱乐

拖了几天的粉福来啦!!!!!
1.my头像
2.my个人中心封面(原图)
3.C++游戏:

#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <stdio.h>
#define pa system("pause") 

using namespace std;

struct Info {
    int num, di; //di:地盘 (1:绿 | 2:黄 | 0:无)
} a[6];

int y = 2, g = 2, w = 1, opt;//y:黄色地盘 |  g:绿色地盘 | w:无人地盘
bool err1, err2;

inline int write(const string _Str) {
    for (int i = 0; i < (int)_Str.size(); i++) {
        putchar(_Str[i]);
        Sleep(50);
    }
    return EOF;
}

void init() {
    for (int i = 1; i <= 5; i++) {
        a[i].num = rand() % 6 + 1;
    }
    a[1].di = a[2].di = 1;
    a[3].di =  0;
    a[4].di = a[5].di = 2;
}

void out() {
    system("cls");
    printf ("地图:\n**************\n");
    for (int i = 1; i <= 5; i++) {
        switch (a[i].di) {
            case 1:
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
                break;
            case 2:
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
                break;
            default:
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
                break;
        }
        if (a[i].num < 0)
            a[i].num = 0;
        printf ("%d ", a[i].num);
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
    }
    printf ("\n**************\n");
}

void tian() {
    Sleep(1000);
    write ("天降神兵!\n");
    Sleep(1500);
    system("cls");
    int cl = rand() % 5 + 1;
    out();
    printf ("降在总第%d个兵营,加三个兵!", cl);
    Sleep(1000);
    a[cl].num += 3;
}

void f1(int n, int l, int m) {//f:绿
    a[n].num -= l;
    a[m].num += l;
}

void f2() {
    if (a[g + 1].di == 0) {
        if (a[g].num > a[g + 1].num) {
            a[g].num -= a[g + 1].num;
            a[g + 1].num = a[g].num;
            a[g].num = 0;
            a[g + 1].di = 1;
            g++;
            w--;
        } else {
            if (a[g].num < a[g + 1].num) {
                a[g + 1].num -= a[g].num;
                a[g].num = a[g + 1].num;
                a[g + 1].num = 0;
                a[g].di = 0;
                g--;
                w++;
            } else {
                a[g].num = 0;
                a[g + 1].num = 0;
            }
        }
    } else {
        if (a[g].num > a[g + 1].num) {
            a[g].num -= a[g + 1].num;
            a[g + 1].num = a[g].num;
            a[g].num = 0;
            a[g + 1].di = 1;
            g++;
            y--;
        } else {
            if (a[g].num < a[g + 1].num) {
                a[g + 1].num -= a[g].num;
                a[g].num = a[g + 1].num;
                a[g + 1].num = 0;
                a[g].di = 2;
                g--;
                y++;
            } else {
                a[g].num = 0;
                a[g + 1].num = 0;
            }
        }
    }
}

void g1(int n, int l, int m) {//g:黄
    n = n + g + w;
    m = m + g + w;
    a[n].num -= l;
    a[m].num += l;
}

void g2() {
    if (a[g + w].di == 0) {
        if (a[g + w + 1].num > a[g + w].num) {
            a[g + w + 1].num -= a[g + w].num;
            a[g + w].num = a[g + w + 1].num;
            a[g + w + 1].num = 0;
            a[g + w].di = 2;
            y++;
            w--;
        } else {
            if (a[g + w + 1].num < a[g + w].num) {
                a[g + w].num -= a[g + w + 1].num;
                a[g + w].num = a[g + w + 1].num;
                a[g + w + 1].num = 0;
                a[g + w + 1].di = 0;
                y--;
                w++;
            } else {
                a[g + w + 1].num = 0;
                a[g + w].num = 0;
            }
        }
    } else {
        if (a[g + w + 1].num > a[g + w].num) {
            a[g + w + 1].num -= a[g + w].num;
            a[g + w].num = a[g + w + 1].num;
            a[g + w + 1].num = 0;
            a[g + w].di = 2;
            y++;
            g--;
        } else {
            if (a[g + w + 1].num < a[g + w].num) {
                a[g + w].num -= a[g + w + 1].num;
                a[g + w].num = a[g + w + 1].num;
                a[g + w + 1].num = 0;
                a[g + w + 1].di = 1;
                y--;
                g++;
            } else {
                a[g + w + 1].num = 0;
                a[g + w].num = 0;
            }
        }
    }
}

void welcome() {
    MessageBox(NULL, TEXT("边    界   之   争"), TEXT("进入"), MB_OK);
    MessageBox(NULL, TEXT("本游戏需要两个人互相对抗"), TEXT("提示"), MB_OK);
    write("你好,勇士们!欢迎来到边界之争!\n");
    Sleep(1000);
    write("作者:yuexingfei\n");
    Sleep(1000);
    pa;
}

void xin() {
    write ("            新");
    Sleep(1000);
    write ("            手");
    Sleep(1000);
    write ("            教");
    Sleep(1000);
    write ("            程\n");
    Sleep(1000);
}

void zheng() {
    system("cls");
    write ("            正");
    Sleep(1000);
    write ("            式");
    Sleep(1000);
    write ("            游");
    Sleep(1000);
    write ("            戏\n");
    Sleep(1000);
    system("cls");
}

bool erro1(int n, int l, int m) {
    if (n > g || m > g || a[n].num < l ) {
        err1 = false;
        return false;
    }
    return true;
}

bool erro2(int n, int l, int m) {
    if (g + w > n + g + w || g + w > m + g + w || a[n + g + w].num < l ) {
        err2 = false;
        return false;
    }
    return true;
}

int main() {
    system("title 边界之争");
    system("color 17");
    welcome();
    char c;
    while (1) {
        write ("是否跳过新手教程?(y/n)\n");
        scanf ("%c", &c);
        if (c == 'n' || c == 'N' || c == 'y' || c == 'Y')
            break;
        else
            write ("输入错误!\n");
        Sleep(1500);
        system("cls");
    }
    system("color 07");
    //新手教程
    if (c == 'n' || c == 'N') {
        system("cls");
        xin();
        write ("一:布局\n");
        Sleep(1000);
        write ("共5个地盘,初始绿、黄双方各2个地盘,中间的无人领地1个地盘\n");
        Sleep(1000);
        write ("兵营号为本队从左到右数的第几个兵营,数字代表本兵营的兵力,颜色代表阵营(绿色为绿队,灰色为无人领地,黄色为黄队)\n");
        pa;
        system("cls");
        write ("二:输入类型\n");
        Sleep(1000);
        write ("输入1:换兵\n");
        Sleep(1000);
        write ("输入2:进攻\n");
        Sleep(1000);
        write ("输入其他数字:不操作\n");
        Sleep(1000);
        write ("提示:要先输入表示操作类型的数字哦~\n");
        pa;
        system("cls");
        write ("三:操作输入\n");
        while (1) {
            write("操作输入\"1\":换兵\n");
            Sleep(1000);
            write ("首先,输入1表示你要换兵;其次,输入需要调动的兵营号;然后,输入想要调动的兵力的数量;最后,输入要调往的兵营号。\n");
            Sleep(2000);
            write("地图:\n**************\n");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
            write ("9 5 ");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
            write ("6 ");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
            write ("6 5");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
            write ("\n**************\n请绿操作!\n\n");
            Sleep(2000);
            write ("试着在绿队1号兵营中抽出6个兵移到2号兵营吧!\n");
            write("提示:要先输入数字1,表示你要换兵哦!\n");
            int a, b, c, d;
            scanf ("%d%d%d%d", &a, &b, &c, &d);
            if (a == 1 && b == 1 && c == 6 && d == 2)
                break;
            else {
                write("输入错误!");
                Sleep(1000);
                system("cls");
            }
        }
        system("cls");
        write("地图:\n**************\n");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
        write ("3 11 ");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
        write ("6 ");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
        write ("6 5");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
        write ("\n**************\n");
        Sleep(1002);
        write ("很好!\n");
        Sleep(2500);
        system("cls");
        while (1) {
            write("操作输入\"2\":进攻\n");
            Sleep(1000);
            write("效果:让本队最靠近敌方(包括无人领地)的兵营进攻\n");
            Sleep(2000);
            write("分三种情况:\n一:我多敌少,夺得一格地盘,消耗兵力为对方兵力\n");
            write("地图:\n*****\n");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
            write ("5 ");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
            write ("3");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
            write ("\n*****\n请绿操作!\n\n");
            Sleep(2000);
            write("请输入\"2\"进攻!\n");
            int x;
            scanf ("%d", &x);
            if (x == 2) {
                break;
            } else {
                write("输入错误!");
                Sleep(1000);
                system("cls");
            }
        }
        write("地图:\n*****\n");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
        write ("2 0");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
        write ("\n*****\n");
        Sleep(1000);
        write ("很好!\n");
        Sleep(1000);
        system("cls");
        while (1) {
            write("二:敌多我少,失去一格地盘,本兵营兵力归零,对方兵力消耗为我方兵力\n");
            write("地图:\n*****\n");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
            write ("2 ");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
            write ("5");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
            write ("\n*****\n请绿操作!\n\n");
            Sleep(2000);
            write("请输入\"2\"进攻!\n");
            int x;
            scanf ("%d", &x);
            if (x == 2) {
                break;
            } else {
                write("输入错误!");
                Sleep(1000);
                system("cls");
            }
        }
        write("地图:\n*****\n");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
        write ("0 3");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
        write ("\n*****\n");
        Sleep(1000);
        write ("很好!\n");
        Sleep(1000);
        system("cls");
        while (1) {
            write("三:敌我相等,地盘不变,双方兵力都归零\n");
            write("地图:\n*****\n");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
            write ("11 ");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
            write ("11");
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
            write ("\n*****\n请绿操作!\n\n");
            Sleep(2000);
            write("请输入\"2\"进攻!\n");
            int x;
            scanf ("%d", &x);
            if (x == 2) {
                break;
            } else {
                write("输入错误!");
                Sleep(1000);
                system("cls");
            }
        }
        write("地图:\n*****\n");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
        write ("0 ");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
        write ("0");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
        write ("\n*****\n");
        Sleep(1000);
        write ("很好!\n");
        Sleep(1000);
        system("cls");

        write ("四:获胜条件\n");
        Sleep(1000);
        write("谁先占领所有地盘,谁就赢了!\n");
        Sleep(3000);
        system("cls");

        write("恭喜你,完成了新手教程!\n祝游玩愉快!\n");
        system("pause");
    }

    //正式
    system("cls");
    zheng();

    srand(time(0));
    init();
    while (1) {
        int t = rand() % 4;
        if (t == 1)
            tian();
        while (1) {
            err1 = true;
            out();
            write ("请绿操作!\n");
            scanf ("%d", &opt);
            switch (opt) {
                case 1://移兵
                    int n, m, l;
                    scanf("%d%d%d", &n, &l, &m);
                    if (erro1(n, l, m))
                        f1(n, l, m);
                    break;
                case 2://攻击
                    f2();
                    break;
            }
            if (!err1) {
                write ("操作错误!\n");
                Sleep(1000);
            } else
                break;
        }

        //判断1
        if (g == 5) {
            out();
            Sleep(1000);
            system("cls");
            MessageBox(NULL, TEXT("恭喜绿胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
            break;
        } else {
            if (y == 5) {
                out();
                Sleep(1000);
                system("cls");
                MessageBox(NULL, TEXT("恭喜黄胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
                break;
            }
        }

        system("cls");
        while (1) {
            err2 = true;
            out();
            write ("请黄操作!\n");
            scanf ("%d", &opt);
            switch (opt) {
                case 1://移兵
                    int n, m, l;
                    scanf("%d%d%d", &n, &l, &m);
                    if (erro2(n, l, m))
                        g1(n, l, m);
                    break;
                case 2://攻击
                    g2();
                    break;
            }
            if (!err2) {
                write ("操作错误!\n");
                Sleep(1000);
            } else
                break;
        }

        //判断2
        if (g == 5) {
            out();
            Sleep(1000);
            system("cls");
            MessageBox(NULL, TEXT("恭喜绿胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
            break;
        } else {
            if (y == 5) {
                out();
                Sleep(1000);
                system("cls");
                MessageBox(NULL, TEXT("恭喜黄胜利了!!!"), TEXT("胜利了!!!"), MB_OK);
                break;
            }
        }
    }
    system("pause");
    return 0;
}

40粉粉福预告:曝字迹、曝照片二选一(你们选),C++游戏*1,问答(想问问题的在下面回复或私信)
谢谢关注!