精华内容
下载资源
问答
  • C++养成游戏:少女计划C++实现的养女儿游戏:少女计划 C++实现的养女儿游戏:少女计划 C++实现的养女儿游戏:少女计划 // // main.cpp // 少女计划 // // Created by 还有醋v on 2019/1/22. // Copyright © 2019 ...

    400行 C++实现的养女儿游戏:少女计划

    400行 C++实现的养女儿游戏:少女计划
    实现功能
    记录生日,体力值等数据
    多种操作,每种操作随机增加体力等数据
    到生日的月份可以选择是否送礼物,花钱,增加数据
    结算数据,阈值评价

    //
    //  main.cpp
    //  少女计划
    //
    //  Created by 还有醋v on 2019/1/22.
    //  Copyright © 2019 还有醋v. All rights reserved.
    //
    
    #include <iostream>
    #include <vector>
    #include <ctime>
    #include <array>
    #include <cstdlib>
    #include <string>
    
    using namespace std;
    string get_constellation(int date_birth_month, int date_birth_day){
        /*
         计算星座
         date_birth_month  生日月份
         date_birth_day    生日天
         */
        string constellation_names[12][2] = {   // 定义星座
            {"摩羯座", "水瓶座"}, // 1月
            {"水瓶座", "双鱼座"}, // 2月
            {"双鱼座", "白羊座"}, // 3月
            {"白羊座", "金牛座"}, // 4月
            {"金牛座", "双子座"}, // 5月
            {"双子座", "巨蟹座"}, // 6月
            {"巨蟹座", "狮子座"}, // 7月
            {"狮子座", "处女座"}, // 8月
            {"处女座", "天秤座"}, // 9月
            {"天秤座", "天蝎座"}, // 10月
            {"天蝎座", "射手座"}, // 11月
            {"射手座", "摩羯座"}, // 12月
        };
        int constellation_day[12]{20,19,21,20,21,22,23,23,23,24,23,22}; // 跨星座的日期
        return constellation_names[date_birth_month-1][date_birth_day/constellation_day[date_birth_month-1]];
    }
    
    array<int, 11> init_infos(string constellation, array<int, 11> infos_array){
        /*
         初始化属性
         constellation  星座
         infos_array    属性集合
         */
        infos_array[10] = 300; // 钱(10)
        if(constellation == "水瓶座"){
            // 体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)
            infos_array[0] = 4;  infos_array[1] = 3;  infos_array[2] = 2;  infos_array[3] = 4;  infos_array[4] = 3;  infos_array[5] = 1;  infos_array[6] = 2;  infos_array[7] = 1;  infos_array[8] = 5;  infos_array[9] = 3;
        }else if (constellation == "双鱼座"){
            infos_array[0] = 4;  infos_array[1] = 3;  infos_array[2] = 2;  infos_array[3] = 0;  infos_array[4] = 2;  infos_array[5] = 3;  infos_array[6] = 5;  infos_array[7] = 2;  infos_array[8] = 1;  infos_array[9] = 3;
        }else if (constellation == "白羊座"){
            infos_array[0] = 6;  infos_array[1] = 1;  infos_array[2] = 5;  infos_array[3] = 2;  infos_array[4] = 1;  infos_array[5] = 1;  infos_array[6] = 2;  infos_array[7] = 0;  infos_array[8] = 4;  infos_array[9] = 3;
        }else if (constellation == "金牛座"){
            infos_array[0] = 4;  infos_array[1] = 3;  infos_array[2] = 2;  infos_array[3] = 3;  infos_array[4] = 2;  infos_array[5] = 2;  infos_array[6] = 2;  infos_array[7] = 3;  infos_array[8] = 1;  infos_array[9] = 3;
        }else if (constellation == "双子座"){
            infos_array[0] = 5;  infos_array[1] = 3;  infos_array[2] = 2;  infos_array[3] = 2;  infos_array[4] = 4;  infos_array[5] = 2;  infos_array[6] = 4;  infos_array[7] = 2;  infos_array[8] = 2;  infos_array[9] = 4;
        }else if (constellation == "巨蟹座"){
            infos_array[0] = 4;  infos_array[1] = 3;  infos_array[2] = 3;  infos_array[3] = 2;  infos_array[4] = 1;  infos_array[5] = 3;  infos_array[6] = 3;  infos_array[7] = 2;  infos_array[8] = 1;  infos_array[9] = 4;
        }else if (constellation == "狮子座"){
            infos_array[0] = 5;  infos_array[1] = 2;  infos_array[2] = 1;  infos_array[3] = 2;  infos_array[4] = 2;  infos_array[5] = 3;  infos_array[6] = 1;  infos_array[7] = 2;  infos_array[8] = 3;  infos_array[9] = 2;
        }else if (constellation == "处女座"){
            infos_array[0] = 3;  infos_array[1] = 2;  infos_array[2] = 3;  infos_array[3] = 1;  infos_array[4] = 3;  infos_array[5] = 4;  infos_array[6] = 3;  infos_array[7] = 3;  infos_array[8] = 1;  infos_array[9] = 3;
        }else if (constellation == "天秤座"){
            infos_array[0] = 4;  infos_array[1] = 3;  infos_array[2] = 2;  infos_array[3] = 2;  infos_array[4] = 3;  infos_array[5] = 2;  infos_array[6] = 2;  infos_array[7] = 1;  infos_array[8] = 2;  infos_array[9] = 3;
        }else if (constellation == "天蝎座"){
            infos_array[0] = 5;  infos_array[1] = 2;  infos_array[2] = 4;  infos_array[3] = 2;  infos_array[4] = 1;  infos_array[5] = 1;  infos_array[6] = 3;  infos_array[7] = 1;  infos_array[8] = 1;  infos_array[9] = 4;
        }else if (constellation == "射手座"){
            infos_array[0] = 5;  infos_array[1] = 1;  infos_array[2] = 1;  infos_array[3] = 2;  infos_array[4] = 1;  infos_array[5] = 2;  infos_array[6] = 2;  infos_array[7] = 2;  infos_array[8] = 2;  infos_array[9] = 3;
        }else if (constellation == "摩羯座"){
            infos_array[0] = 5;  infos_array[1] = 1;  infos_array[2] = 1;  infos_array[3] = 2;  infos_array[4] = 5;  infos_array[5] = 2;  infos_array[6] = 1;  infos_array[7] = 4;  infos_array[8] = 2;  infos_array[9] = 1;
        }
        return infos_array;
    }
    
    void print_infos(string name_daugher, int age, int date_birth_month ,int date_birth_day, array<int, 11> infos_array){
        /*
         查看状态
         name_daugher       女儿姓名
         age                年龄
         date_birth_month   生日月份
         date_birth_day     生日天
         money              钱
         infos_array        属性集合(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
         */
        cout << "\n信息如下:" << endl;
        cout << "\t姓名:" << name_daugher << endl;
        cout << "\t年龄:" << age << endl;
        cout << "\t生日:" << date_birth_month << "月" << date_birth_day << "日" << endl;
        cout << "\t钱:" << infos_array[10] << endl;
        array<string, 10> infos_name_array {"\t体力:","\t智力:","\t魅力:","\t自尊:","\t道德:","\t气质:","\t感受:","\t体贴:","\t武术:","\t魔法:"};
        cout << left;
        for(int i=0; i<10; i++){
            cout << infos_name_array[i] << infos_array [i] << "\t\t";
            int solid_count = infos_array[i] / 10;  // 计算实心方框的个数
            for (int j = 0; j<10; j++) {
                if(j<solid_count){
                    cout << "■";
                }else{
                    cout << "□";
                }
            }
            cout << endl;
        }
    }
    
    array<int, 11> travel_arrangements(int month, array<int, 11> infos_array){
        /*
         安排行程
         month          月份
         infos_array    属性集合(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
         */
        array<string, 3> meadow {"上旬","中旬","下旬"};
        int choice; // 选择变量
        int temp1,temp2,temp3,temp4,temp5,temp6;  // 临时变量
        for(int i=0;i<3;){
            cout << "\n" << month << "月" << meadow[i] << "要干什么:" << endl;
            cout << "1.学习礼法\n2.学习武艺\n3.学习法术\n4.打工赚钱\n请选择操作:";
            cin >> choice;
            switch (choice) {
                case 1: // 学习礼法 -钱(10) +魅力(2) +自尊(3) +道德(4) +气质(5) +体贴(7)
                    infos_array[10] -= temp1=rand()%(50-25+1)+25; // rand() % (b-a+1)+a  a~b之间随机整数
                    if (infos_array[10]+temp1 < temp1) {
                        cout << "钱不够了,快去打工吧!" << endl;
                        infos_array[10] += temp1;
                        break;
                    }
                    i++;
                    infos_array[2] += temp2=rand()%4;
                    infos_array[3] += temp3=rand()%4;
                    infos_array[4] += temp4=rand()%7+3;
                    infos_array[5] += temp5=rand()%4;
                    infos_array[7] += temp6=rand()%4;
                    cout << "\n子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?”" << endl;
                    cout << month << "月" << meadow[i] << ",学习了礼法,花了:" << temp1 << ",魅力增加了:" << temp2 << ",自尊增加了:" << temp3 << ",道德增加了:" << temp4 << ",气质增加了:" << temp5 << ",体贴增加了:" << temp6 << endl;
                    break;
                case 2: // 学习武艺 -钱(10) +体力(0) +气质(5) +武术(8)
                    infos_array[10] -= temp1=rand()%21+30;
                    if (infos_array[10]+temp1 < temp1) {
                        cout << "钱不够了,快去打工吧!" << endl;
                        infos_array[10] += temp1;
                        break;
                    }
                    i++;
                    infos_array[0] += temp2=rand()%4+2;
                    infos_array[5] += temp3=rand()%4;
                    infos_array[8] += temp4=rand()%6+4;
                    cout << "\n站如松,坐如钟,行如风,卧如弓" << endl;
                    cout << month << "月" << meadow[i] << ",学习了武艺,花了:" << temp1 << ",体力增加了:" << temp2 << ",气质增加了:" << temp3 << ",武术增加了:" << temp4 << endl;
                    break;
                case 3: // 学习法术 -钱(10) +智力(1) +魔法(9)
                    infos_array[10] -= temp1=rand()%51+50;
                    if (infos_array[10]+temp1 < temp1) {
                        cout << "钱不够了,快去打工吧!" << endl;
                        infos_array[10] += temp1;
                        break;
                    }
                    i++;
                    infos_array[1] += temp2=rand()%5;
                    infos_array[9] += temp3=rand()%6+4;
                    cout << "\n要学神仙,驾鹤飞天,点石成金,妙不可言" << endl;
                    cout << month << "月" << meadow[i] << ",学习了法术,花了:" << temp1 << ",智力增加了:" << temp2 << ",魔法增加了:" << temp3 << endl;
                    break;
                case 4: // 打工赚钱 +钱(10) +体力(0)
                    infos_array[10] += temp1=rand()%31+30;
                    infos_array[0] += temp2=rand()%5;
                    i++;
                    cout << "\n打工是不可能打工的!" << endl;
                    cout << month << "月" << meadow[i] << ",打工赚了:" << temp1 << ",体力增加了:" << temp2 << endl;
                    break;
                default:
                    break;
            }
        }
        return infos_array;
    }
    
    array<int, 11> parent_talk(array<int, 11> infos_array){
        /*
         亲子谈话
         infos_array    属性集合(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
         */
        int choice; // 选择变量
        int temp1,temp2,temp3;  // 临时变量
        cout << "\n进行亲子对话:" << endl;
        cout << "1.打招呼\n2.温柔说话\n3.严厉训斥\n4.给零花钱\n请选择操作:";
        cin >> choice;
        switch (choice) {
            case 1: // 打招呼  没有什么软用
                cout << "\n向女儿打了招呼,然鹅并没有什么软用" << endl;
                break;
            case 2: // 温柔说话 +感受(6) +体贴(7)
                cout << "\n最近怎么样?" << endl;
                infos_array[6] += temp1=rand()%5;
                infos_array[7] += temp2=rand()%5;
                cout << "和女儿聊了聊天,感受增加了:" << temp1 << ",体贴增加了:" << temp2 << endl;
                break;
            case 3: // 严厉教育 -感受(6) -体贴(7) +道德(4)
                cout << "\n!@#3$5%^&*9({!@#`~|^&*}!" << endl;
                infos_array[6] -= temp1=rand()%5;
                infos_array[7] -= temp2=rand()%5;
                infos_array[4] += temp3=rand()%15+5;
                cout << "进过了严厉的教育,感受减少了:" << temp1 << ",体贴减少了:" << temp2 << ",道德增加了:" << temp3 << endl;
                break;
            case 4: // 给零花钱 -钱(10)
                if (infos_array[10] < 100) {
                    cout << "钱不够了,快去打工吧!" << endl;
                    break;
                }
                infos_array[10] -= 100;
                cout << "给了女儿100零花钱" << endl;
                int buy = rand()%4;
                switch (buy) {
                    case 0: // 买了喜之郎果冻 +体力(0) +自尊(3)
                        infos_array[0] += temp1=rand()%5+1;
                        infos_array[3] += temp2=rand()%3;
                        cout << "\n女儿用零花钱买了喜之郎果冻,体力增加了:" << temp1 << ",自尊增加了" << temp2 << endl;
                        break;
                    case 1: // 买了漂亮的衣服 +魅力(2) +自尊(3) +气质(5)
                        infos_array[2] += temp1=rand()%5+1;
                        infos_array[3] += temp2=rand()%3;
                        infos_array[5] += temp3=rand()%5+1;
                        cout << "\n女儿用零花钱买了漂亮的衣服,魅力增加了:" << temp1 << ",自尊增加了" << temp2 << ",气质增加了:" << temp3 << endl;
                        break;
                    case 2: // 买了书 +智力(1) +自尊(3) +道德(4)
                        infos_array[1] += temp1=rand()%5+1;
                        infos_array[3] += temp2=rand()%3;
                        infos_array[4] += temp3=rand()%5+1;
                        cout << "\n女儿用零花钱买了书,智力增加了:" << temp1 << ",自尊增加了" << temp2 << ",道德增加了:" << temp3 << endl;
                        break;
                    case 3: // 买了《葵花宝典》 +自尊(3) +魔法(9)
                        infos_array[3] += temp1=rand()%3;
                        infos_array[4] += temp2=rand()%5+15;
                        cout << "\n女儿用零花钱买了《葵花宝典》,自尊增加了:" << temp1 << ",经过学习,魔法增加了" << temp2 << endl;
                        break;
                    case 4: // 钱掉了 -自尊(3) -感受(6)
                        infos_array[3] -= temp1=rand()%3;
                        infos_array[6] -= temp2=rand()%5+1;
                        cout << "\n女儿的零花钱不小心丢了,自尊减少了:" << temp1 << ",感受减少了" << temp2 << endl;
                        break;
                    default:
                        break;
                }
                break;
        }
        return infos_array;
    }
    
    array<int, 11> reset_infos(array<int, 11> infos_array){
        /*
         重置属性
         infos_array    属性集合(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
         */
        for (int i=0; i<10; i++) {
            if(infos_array[i] > 100)
                infos_array[i] = 100;
        }
        return infos_array;
    }
    
    void settlement(array<int,11> infos_array){
        /*
         结算
         infos_array    属性集合(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
         */
        int sum = 0;
        for (int i=0; i<=infos_array.size()-2; i++) {
            sum += infos_array[i];
        }
        if (sum < 100) {
            cout << "你真是个失败的爸爸!" << endl;
        }else if (sum>=100 && sum<500){
            cout << "还需继续努力!" << endl;
        }else if (sum>=500 && sum<700){
            cout << "你是个合格的爸爸!" << endl;
        }else if (sum>=700 && sum<900){
            cout << "你是个良好的爸爸!" << endl;
        }else if (sum>=900){
            cout << "你是个优秀的爸爸!" << endl;
        }
    }
    
    int main(){
        /*
         1.初始化信息(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
         2.游戏大循环
         3.根据参数,判定游戏结果
         */
        
        // 定义信息
        string name_father, name_daugher;   // 姓名
        int date_birth_month, date_birth_day;   // 生日
        int age = 11;
        string constellation;   // 星座
        array<int, 11> infos_array; // 女儿初始属性集合(体力(0)、智力(1)、魅力(2)、自尊(3)、道德(4)、气质(5)、感受(6)、体贴(7)、武术(8)、魔法(9)、钱(10))
        int temp1,temp2,temp3,temp4;    // 临时变量
        int choice; // 选择变量
        
        // 初始化
        cout << "请输入爸爸的姓名:";
        cin >> name_father; // 输入爸爸姓名
        cout << "请输入女儿的姓名:";
        cin >> name_daugher;    // 输入女儿姓名
        cout << "请输入生日的月份:" ;
        cin >> date_birth_month;    // 输入生日月份
        cout << "请输入生日的天数:" ;
        cin >> date_birth_day;  // 输入生日天数
        constellation = get_constellation(date_birth_month, date_birth_day); // 获得星座
        infos_array = init_infos(constellation, infos_array);    // 初始化属性
        
        // 游戏主体
        cout << "\n爸爸的姓名是:" << name_father << endl;
        print_infos(name_daugher, age, date_birth_month, date_birth_day, infos_array); // 打印信息函数
        
        bool is_settlement = false; // 是否结算标记
        for(int year = 2018;year <= 2018+8;year++){
            if (is_settlement) {
                break;
            }
            bool is_gift = false;   // 送礼物状态标记
            for(int month = (year == 2018)?6:1; month<=12;) {
                if (is_settlement) {
                    break;
                }
                
                if(month > date_birth_month){
                    age++;
                }
                // 自动结算
                for (int i=0; i<=infos_array.size()-2; i++) {
                    if (infos_array[i] != 100) {
                        break;
                    }
                    char input_Y_or_N;
                    cout << "女儿的全部属性已满,是否结算?(Y/N):";
                    cin >> input_Y_or_N;
                    if (input_Y_or_N == 'Y' || input_Y_or_N == 'y') {
                        settlement(infos_array);
                    }
                }
                if (age == 19) {
                    cout << "女儿已经成年了,有了男朋友" << endl;
                    settlement(infos_array);
                }
                
                // 判断生日
                cout << "\n本月是" << month << "月" << endl;
                if(month == date_birth_month && is_gift == false){
                    char input_Y_or_N;
                    cout << "本月" << date_birth_day << "号是" << name_daugher << "的生日,要不要送礼物呢?(Y/N):";
                    // 判断送不送
                    cin >> input_Y_or_N;
                    if(input_Y_or_N == 'Y' || input_Y_or_N == 'y'){ // 买了礼物 -钱(10) +魅力(2) +气质(5) +感受(6) +体贴(7)
                        is_gift = true; // 选择送礼物,标记为送过了
                        if(infos_array[10] >= 100){
                            infos_array[10] -= 100;
                            infos_array[2] += temp1=rand()%10;
                            infos_array[5] += temp2=rand()%10;
                            infos_array[6] += temp3=rand()%10;
                            infos_array[7] += temp4=rand()%10;
                            cout << "给女儿买了生日礼物花了100,女儿很高兴" << endl;
                            cout << "魅力增加了:" << temp1 << ",气质增加了:" << temp2 << ",感受增加了:" << temp3 << ",体贴增加了:" << temp4 << endl;
                            infos_array = reset_infos(infos_array);
                        }else{
                            cout << "买礼物需要100,钱不够了,快去打工吧!" << endl;
                        }
                    }
                }
                // 主菜单
                cout << "\n1.查看状态\n2.安排行程\n3.亲子谈话\n4.结算\n请选择操作:";
                cin >> choice;
                
                int counter = 0; // 对话次数的计数器
                switch (choice) {
                    case 1: // 查看状态
                        print_infos(name_daugher, age, date_birth_month, date_birth_day, infos_array);
                        break;
                    case 2: // 安排行程
                        infos_array = travel_arrangements(month, infos_array);
                        month++;
                        infos_array = reset_infos(infos_array);
                        break;
                    case 3: // 亲子谈话
                        if (counter <= 5) {
                            infos_array = parent_talk(infos_array);
                            counter++; // 计数器+1
                        }else{
                            cout << "\n本月已经进行过5次谈话了,快去安排行程吧!" << endl;
                        }
                        infos_array = reset_infos(infos_array);
                        break;
                    case 4: // 结算
                        infos_array = reset_infos(infos_array);
                        print_infos(name_daugher, age, date_birth_month, date_birth_day, infos_array);
                        settlement(infos_array);
                        is_settlement = true;
                        break;
                }
                infos_array = reset_infos(infos_array);
            }
            infos_array = reset_infos(infos_array);
            is_gift = false;    // 新的一年,重置送礼物的状态
            if (age == 19) {
                cout << "女儿已经成年了,有了男朋友" << endl;
                settlement(infos_array);
            }
        }
        char response;
        cout << "输入任意字符退出!" << endl;
        cin >> response;
    }
    
    
    展开全文
  • HTML5养成游戏《我和小狗的一天》源码 挺有意思的源码,有兴趣的朋友可以参考下
  • 随着区块链技术的发展,一个个区块链应用逐渐落地,各大厂商纷纷推出了自己的区块链产品,最多最火的当属区块链养成游戏了。游戏行业一向被认为是区块链技术落地的应用场景之一。与传统游戏纯消费不同,区块链游戏不...

    区块链行业的确有着比较快的迭代速度,区块链游戏在不到一年的时间里,已经由

    1.0时代进入到2.0时代,且即将进入3.0时代。


    随着区块链技术的发展,一个个区块链应用逐渐落地,各大厂商纷纷推出了自己的区块链产品,最多最火的当属区块链养成游戏了。




    游戏行业一向被认为是区块链技术落地的应用场景之一。与传统游戏纯消费不同,区块链游戏不只是为了消遣,更是一种投资手段。区块链游戏在链端运行,拥有去中心化、虚拟道具确权、数据不可篡改等等优点,解决了传统游戏存在的游戏数据造假、道具增发导致贬值、道具无法流通等痛点,其“消费+投资”的运营模式在一定程度上代表着未来网游的发展方向。


    互融云区块链养成游戏平台系统,是一款去中心化、可信任、智能游戏资产价值生态平台。


    区块链养成游戏,核心重构厂商玩家关系,丰富游戏玩法,宠物饲养、配种繁殖、养成任务、宠物pk、拍卖交易、装扮搭配、玩法制定、宠物小窝等玩法;用户可以参与到游戏的设计当中,获得游戏分红收益,让玩家从游戏的被动接受者转变为一个主动参与者。支持虚拟资产确权,利用区块链技术,保障玩家对游戏资产的绝对控制权,同时区块链高流通性让“游戏资产市场”的概念得以实现,并支持游戏所有权及交易权,玩家可以自由地买卖自己的游戏资产,利用智能合约技术开发,游戏玩家规则透明、强安全保护、数据可信任、打破孤岛经济、去中心化运营,游戏运营方无法滥发游戏商品、道具且无法篡改和删除游戏数据,使得游戏数据透明化、可信化,创造新型社区化游戏资产价值生态。区块链养成游戏平台系统具有以下特色:


    用户资产无法确权,解决资产所有权、拥有资产交易权。


    虚拟资产保值、收藏,流通交易,虚拟向现实资产转化。


    中心化游戏运营公司,防止篡改游戏规则,删除游戏数据。


    游戏经济系统孤岛效应,玩家游戏资产无法与外界互通。


    区块链的经济激励模型可以将开发者、渠道商、媒体、玩家等多个参与方聚合在一起,建立一个多方共赢的产业生态;大厂和资本的入局,也使得区块链游戏成为区块链大趋势下最有可能先成熟的一条赛道。


    北京互融时代软件有限公司是行业知名综合金融软件及解决方案提供商。公司总部位于北京,注册资本2000余万元,核心团队组建于2004年8月,2015年成为北京股权交易中心展示企业(企业代码:ZS0809),并成功获得“互融云”商标(第9类 16669591号),公司专注于金融信息化领域企业级应用及云服务,先后获得了九十余项计算机软件著作权登记证书,称得上行业内第一家拥有全业务整合系统认证的软件提供商。


    展开全文
  • 本文同步自wing的地方酒馆 在上一篇文章中,我们开发了自己第一个demo级别的DAPP,并且获得了NAS官方的奖励。...这次的想法是做一个宠物养成游戏,已经发布的地址如下:鸡神养成记http://inspoy.cc/dapp/pet...

    本文同步自wing的地方酒馆

    上一篇文章中,我们开发了自己第一个demo级别的DAPP,并且获得了NAS官方的奖励。现在提交随着提交的应用越来越多,审核力度也在加大,所以demo级的应用已经很难以通过了。

    于是和小伙伴一起开发一个区块链游戏,来帮助自己更好的学习区块链。

    这次的想法是做一个宠物养成游戏,已经发布的地址如下:鸡神养成记http://inspoy.cc/dapp/pet/,欢迎大家来玩耍~,可以随便点一点,一起分得奖池NAS的奖励。

    如果你没有NAS,那么在评论发出你的钱包地址,我会给你转入0.011NAS(足够养鸡并购买双倍积分卡),帮助你来体验区块链和部署自己的合约。

    需求

    列了一下主要的需求有如下几点:

    • 宠物拥有饱食度,可以喂养宠物。
    • 宠物拥有心情值,可以陪宠物玩耍。
    • 宠物拥有经验值,经验值满了可以成神。
    • 系统拥有积分系统,玩耍,成神,喂食都会获得一定积分。
    • 宠物如果饱食度过低,则会死亡,死亡扣除积分。
    • 系统拥有排行榜,排行榜根据积分来排行。
    • 系统拥有双倍积分卡,购买双倍积分卡的币会进入奖池,满足一定额度会分给排行榜前十。

    本来想做个最简单的宠物养成游戏,没想到需求也这么复杂。。 先来看看最后的成品吧~

    哈哈,因为我跟朋友都不是没接触过前端,所以界面比较简单,也比较丑,不要笑~

    需求分析完了,来说说分工,朋友负责的是前端,因为没有接触过,所以跟上次一样,选择bootstrap+jQuery。合约就是js。

    使用教程

    鉴于可能有小伙伴不太懂怎么使用,这里写一下简单的教程。
    首先安装一个chrome的钱包插件:
    https://github.com/ChengOrangeJu/WebExtensionWallet

    • 点击下载zip包,或者clone下来。
    • 打开chrome菜单的更多工具–扩展程序。
    • 打开右上角的开发者模式。
    • 点击加载已解压的差距,将下载的导入。

    这个时候你就可以看到插件已经下好了~
    打开是这样的:

    点击新建钱包,保存你的钱包文件和密码。生成的n1xxxxxx.json 文件名(不带json)代表你的钱包地址。

    这个时候,打开鸡神养成记,输入你的钱包地址,点击登陆,会弹出这样的窗口:

    点击生成交易,即可获得一只你的小鸡了~~

    有时候提示Nonce必须大于什么什么,这种是你手点太快了,关闭这个插件窗口重新点击登陆即可。

    另外登陆需要消耗一些GAS,一般是1000000, 1NAS = 10^18 gas,所以你只需要有0.01个nas就可以交易很多次。

    如果你没有NAS,那么在评论发出你的钱包地址,我会给你转入0.011NAS(足够养鸡并购买双倍积分卡),帮助你来体验区块链和部署自己的合约。

    之后,只需要对宠物进行喂食,玩耍,当分数处于排行榜内,且购买双倍积分卡的金额大于0.5NAS的时候,则会向排行榜分发这些NAS哦~~

    实现

    数据结构

    首先思考怎么存储数据,这里因为NAS本身提供map类型的存储,所以定义一个map类型存储空间,用来存储游戏数据,key是用户地址,value是自定义类型的游戏数据。

    下面思考游戏数据都包含什么东西,因为宠物有心情、饱食度、经验等属性,所以这些不可少。另外玩耍和喂食都要做出时间限制,防止无限喂食,所以应该包含上次喂食和玩耍时间。包括分数、成神数、双倍时间数、等等信息:

    数据结构定义好了。接下来完成各种行为。

    查询数据

    首先肯定是领养一只宠物,在区块链中读取有没有游戏数据,如果没有游戏数据,则生成一个数据:

    这里有一些问题就是我目前不知道如何定时执行代码,所以我只能在查询宠物信息的时候,弄一个登陆状态,来在查询中储存游戏数据(比如饱食度每分钟会下降),所以第一次查询的时候,消耗gas,就会有一种饱食度事实在下降的效果,实际上是用户登陆的时候,动态根据时间计算的。这里先完成饱食度下降的计算,如果下降超过一定额度,则小鸡死亡:

    其次更新一下游戏状态,也就是存储数据,并且每天12点会重置心情值:

    关于saveGameData方法,其实就是将游戏数据存储在map类型里:

    行为

    玩耍

    接下来,需要完成一系列行为,首先是玩耍。
    玩耍主要有几点,第一点是玩耍的间隔判断,所以这里根据玩耍间隔和上次玩耍时间来计算。
    另外如果处于双倍积分卡内,则获得的积分将会*2,心情的最大值为1.

    心情每次增长有一定比例。

    投食

    投食和玩耍差不多,主要区别在于喂食的时候,小鸡可以成神,这里判断一下经验值即可:

    购买双倍积分卡

    这里双倍积分卡其实也是一个时间属性,用户付费以后,增加对应时间即可。需要注意的是,需要判断一下用户的支付数量,如果不对则拒绝交易。另外在合约内部无法得知合约现在的余额,所以我们需要自己额外维护。这里NAS官方使用的BigNumber库来计算大数。

    每次接收到付费的时候判断奖池余额是否大于0.5NAS,如果大于,则向前十分钱,并且清空排行榜数据。

    获取排行榜数据

    这里有一个特别的地方就是,因为官方map不提供遍历的功能。所以只能另外寸一个map,来存放index对应的用户地址,需要遍历的时候,先从地址map里面获取地址,再从数据map里面取出来数据:

    这样完整的合约代码就完成了(吐槽一句,真的不好调试,有一点点小修改就需要重新部署~)

    接下来是前端部分

    前端部分其实核心就是根据sdk来调用区块的数据。
    首先封装两个方法,一个是需要支付的,写入数据函数。一个是不需要支付的查询数据函数:

    页面初始化的时候,对ui进行显隐控制,并且只查询游戏在线人数:

    登陆

    点击登陆按钮,查询宠物信息数据,并且登陆完成后,向合约轮训来事实刷新游戏数据:

    投食&&玩耍

    点击对应的按钮,进行对应的接口调用。

    投食按钮:

    玩耍按钮:

    购买双倍积分卡:

    这样,基本的操作界面已经有了:
    这里有基本的玩耍介绍:

    本文也就到此结束啦~ 人生中第二个DAPP完成了。

    如果你觉得对你有帮助,可以点赞,分享~

    并且十分建议你来玩《鸡神养成记》,可以获得NAS哦~ 是兄弟,就来砍我吧~
    鸡神养成记地址:http://inspoy.cc/dapp/pet/

    如果你没有NAS,那么在评论发出你的钱包地址,我会给你转入0.011NAS(足够养鸡并购买双倍积分卡),帮助你来体验区块链和部署自己的合约。

    欢迎加入qq群一起讨论区块链技术:
    615075629

    展开全文
  • 点击上方蓝字关注我们1、游戏简介游戏名称:萌宅物语无限爱心版游戏类型:养成游戏游戏平台:安卓整理时间:2020-05-30游戏评分:8.72、游戏介绍心得技巧分享特别说明游戏已修改为无限爱心版,在游戏中完成教程模式...

    点击上方蓝字 关注我们

    1、游戏简介

    游戏名称:萌宅物语无限爱心版

    游戏类型:养成游戏

    游戏平台:安卓

    整理时间:2020-05-30

    游戏评分:8.7

    7acf6f3a3fc25fb4d5433be0b067ca05.png

    2、游戏介绍心得技巧分享

    特别说明

    游戏已修改为无限爱心版,在游戏中完成教程模式,使用爱心添加猫娘即可获得!

    萌宅物语中文版超好玩法经营养成治愈游戏。不一样的剧情内容,超棒的卡通游戏画风!可爱的宠物,一个属于你的家!温馨的游戏画面,玩法超多!你还在等什么?快来下载吧!

    萌宅物语最新版介绍

    1.采用小清新美术风格,简约清新的游戏画面营造出甜蜜美好的游戏氛围。

    2.易于上手的游戏操作,轻松简单的组成CP体验平凡生活中的恋爱小美好。

    3.神秘未知的游戏剧情走向,不同的选择将会产生不一样的结果,趣味无限。

    萌宅物语无限爱心版本游戏亮点

    ★三男三女,两两搭配,总有一款CP像极了你自己。

    ★海量的故事剧情,全部由玩家一手打造,体验新的生活;

    ★青春时尚的气息,温馨感人的爱情故事,浪漫与你同行。

    ★漫画式卡通画风,十分的简约,看起来非常的小清新;

    ★文字剧情式养成玩法,休闲欢乐的都市生活模拟;

    ★在游戏中体验欢乐、搞怪、温馨与感动等各种情感;

    游戏特色

    1、自由的布置你的温馨小屋,在二元次造型风格下尽情的享受生活;

    2、以第一视角来感受主角们的爱恨情仇;

    3、设置趣味性任务需要去完成,三个月来回进行互换,重新开启全新的生活。

    4、手绘风游戏美术画面,色调搭配温馨自然,明亮的配色治愈你的心灵;

    5、丰富多彩的剧情故事让你仿佛置身于其中,真实的模拟出各种爱情场景,每日打打闹闹的生活传染到周边各处;

    特别说明

    游戏已修改为无限爱心版,在游戏中完成教程模式,使用爱心添加猫娘即可获得!

    f038a942efd0b69d0d03dc9ed8084a68.png

    3、小贴士

    1、所有游戏我的测试过纯净无毒无害能玩。

    2、游戏资源来源互联网收集仅供分享交流学习试玩使用、如喜欢请到官网购买。

    7f22adf00ec1df76e4f8f0a330a5d40f.png

    4、下载地址

    (链接失效联系我补发)

    百度网盘下载链接分享体验下载链接:

    安卓游戏:萌宅物语无限爱心版

    特别说明

    游戏已修改为无限爱心版,在游戏中完成教程模式,使用爱心添加猫娘即可获得!

    提别提示:安卓/8/9/系统手机测试正常能玩

    其它系统手机没试过。

    怎样下载点击这里查看:安卓游戏下载教程

    下载地址:下图点击进入小程序

    输入编号:0095获得游戏下载链接       

    编号:0095

    复制上方编号

    点击下方小程序输入编号提取下载链接

    点击这里进入小程序

    展开全文
  • 区块链是加密货币背后的技术,是当下与区块链宠物养成游戏等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的宠物养成游戏系统技术实现。 区块链是一...
  • 小兔子养成游戏

    2015-07-08 14:32:52
    控制台小程序,很适合初学者好好学习c++
  • 简单的恋爱养成游戏

    2019-09-25 20:13:13
    '''本来想做一个恋爱养成类的游戏,但因为时间限制,简化了一些行为,比如money参数和talk函数,就没有用到。 可以对各个函数再添加一个money参数值的选项,另,文本实在写不出来,talk就鸽了。''' import random ...
  • 恐龙养成,要PyQt哦,真心觉得丑! doc1.gif doc2.gif docbutton.gif eat1.gif eat2.gif eatbutton.gif pet1.gif pet2.gif pet3.gif play1.gif play2.gif playbutton.gif sleep1.gif sleep2.gif walk...
  • 在这么多纷繁众多的游戏中,休闲养成类以其不肝可爱的特有风格占据一席之地,虽然后来很少去玩他了但却也舍不得删,今天就来盘点那些放手机里吃内存吃灰却也舍不得删的养成游戏。动 物 温 泉★★★★★动物温泉这款...
  • 《极品皇帝(送充无限抽)》是一款以古代官场为背景打造的全新模拟养成游戏!上线就送66万银两!66万粮食!66万士兵!祝你前程似锦666!上线背包使用豪华首充券,福利领取首充大礼包!天天登陆送100连抽!在线送100连...
  • 时间是养成游戏比较重要的部分,像coc的金币、圣水、暗黑重油都是基于离线上线的时间差来确定的,所以简单讲一下c/c++如何获取时间 获取当前时间 1.localtime方法 #include using namespace std; int...
  • 区块链技术伴随着以比特...在各方探索中,不乏成功的尝试,如2017年的Cryptokitties项目便是将区块链与游戏相结合的一个成功案例。正是参考了Cryptokitties等诸多项目的成功经验,用游戏、社交、区块链三者相结合的...
  • 一款类似心跳回忆的游戏,由vb6开发。 现在开源和大家分享。 你可以更改游戏内容但是必须保留原作者的信息
  • 游戏大作战 “这款一直占领Steam热销榜的游戏终于吸引了小编的注意,这款已经发售将近三年的游戏,还能占领Steam的销量排行榜,到底有什么样的魅力(不过看名字也觉得是来搞笑的)?未来人类与你共同解读《人类:...
  • 在工作中,对外,我是培训讲师及咨询顾问,但对内,我还是新员工的思想导师,就是帮助这些即将拍死我们的”后浪”们,解决一些工作中的非业务的疑惑。整理了一下本月的问题,主要的问题有如下三个,与大家分享:1、...
  • ARKit应用中最受欢迎的依然是AR游戏。 还记得上个月苹果商店刚上新一批AR应用的时候,镁客君在公司玩了一下午。时隔一个月,应用市场研究公司Sensor Tower 最近发布了一项数据,告诉大家最受欢迎的AR...
  • 我现在在开发一款恋爱游戏,因为文字比较多,所以采用读文件的方法处理剧情方面的文字。其他的固定的文字用数组来放。遇到一个问题,在模拟器上运行正常,到真机上就报内存不够,不过不是一启动游戏就报的,而是运行...
  • 10000)//假设游戏胜利目标为木头1000 {cout<<"欢迎来到小黑屋测试版,请输入你要选择的命令/n"<<"请输入你的指令:house建造房子,meathouse建造腌肉坊,woodmaker增加伐木工,meatmaker增加猎人,view...
  • 恋爱养成游戏

    2018-12-03 17:54:27
    用C语言编写的小游戏,C语言初学者,类似于恋爱养成
  • 《风信楼》是一部拥有海量选项和丰富剧情的高自由度养成游戏——百种不同结局,尽在你的选择之中。昏君误国,怨声载道,无数野心家暗起反心。在京城一家青楼的掩饰下,你培养手下、积攒钱财、收集情报、建立人脉,...
  • C++写养成游戏

    千次阅读 2019-05-25 18:03:49
    小公举养成游戏界面如下图 这个游戏和我上次写游戏《笑傲江湖之鸿蒙》相似,不过代码量更少,而且是用C++语言写的, 当然凭我现在的水平也只能写这种人物动作全靠文字描述的游戏,虽然不难,但也挺经典 代码...
  • 致敬:日本Gainax公司推出养成游戏,美少女梦工厂 使用控制台编写一个小游戏需要实现的基础功能 新增数据 修改数据 删除数据 查询数据 游戏规则:游戏一共运行78个月,安排每个月的行程,合理规划增加基础属性...
  • 游戏程序员养成计划

    2015-11-12 18:14:26
    与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料...
  • cocos2d-x农场模拟经营养成游戏完整源代码,cocos2d-x引擎开发,使用JSON交互,支持IOS与 Android,解压后1016MB。 非常强大的游戏源代码         完整游戏源代码下载 ......
  • 游戏程序员养成

    2012-11-26 21:28:50
    仅供个人学习使用,请勿... 与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,612
精华内容 644
关键字:

养成游戏