做一个学(chou)习(ka)游戏(一)
来源:互联网 发布:巫师3优化好 编辑:程序博客网 时间:2024/05/01 09:04
嗯,抽卡是坏文明。但不得不承认这种形式的设计确实是抓住了人性。就像斯金纳箱中的小老鼠一样。
所以不能被这种心理利用,而要利用这种心理来学习。因此决定模仿抽卡类游戏做一个用以读书的游戏。
写代码前,首先设计游戏大致的整体结构:
游戏的主旋律是这样的:
获得卡(概率性、稀有度)->强化卡(加深与该卡的羁绊、获得提升感)->完成任务(获得成就感)->获得抽卡道具(奖励系统)->获得卡(进入循环)
其中主要游戏性的部分应该是强化和任务,这占据着90%的时间,虽然抽卡是其 骗氪点,但是主要的90%时间才是决定持续这个循环的关键。
因此将在强化和升级内容中,把一般游戏中游戏性的内容替换为阅读和做习题,并通过相应的时间积累作为奖励反馈。而抽卡系统中的卡,将换为各类书籍,并按难度和重要度分不同的稀有度。
如图:
需要一个卡类(卡面以及数据),任务类,主角数据类,系统类。
设计部分的类如下:
class card{//卡基类-基本的卡、作为图鉴存在private: picture*pic; int id; int lv;//稀有度 1~5星 通过查稀有度表可得出 暂时用名字第一个数字代替 int search(string name){ return name[0] - '0'; }public: card(string filename){//图片文件名和内容描述文件名一致 pic = picture::create(res_file+filename+picsuff); id = cardcount++; lv = search(filename); } virtual void show(){ cout << pic->getname() << endl; }};class card_usr:public card{//卡子类-用户使用得到private: int charpter;//总章节数(决定等级上限 总上限是100级,每章节完成强化后突破上限) int lv_mx;//当前等级上限 int cur_lv;//当前等级 int fet_mx;//当前羁绊上限 int fetter;//羁绊点-再次召唤增加其上限public: card_usr(string filename):card(filename){//这里需要程序随机加密 filename += ".txt"; ifstream fin(res_file+filename); fin >> charpter >> lv_mx >> cur_lv >> fet_mx >> fetter; fin.close(); } virtual void show(){ card::show(); }};class card_system{//卡系统 游戏总导演private://客户端数据 const string cardnamefile = "card.txt";//卡名文件//服务器数据 const string usrnamefile = "usrs.txt";//用户文件 const string usrresfile = "usr_data\\";//用户数据文件夹 vector<card*>cards; vector<int>id;//用户的卡号 int num; string usr_name = "dljgs1";// string usr_key;public: void login(){ ;//登陆 暂空 } void load_database(){//读取卡数据 ifstream fin(cardnamefile); string buf; while (!fin.eof()){ fin >> buf; cards.push_back(new card_usr(buf)); } num = cardcount; if (num != cards.size())report("数量不一致"); } void load_user(){ ifstream fin(usrresfile + usr_name + ".txt"); if (fin.fail()){ report("用户"+usr_name+"不存在!"); } //*!这里需要加密 int k; fin >> k;//数量 while (k--){ int temp; fin >> temp; id.push_back(temp); }//读取卡号 } void init(){//初始化 srand(time(NULL)); login();//登陆 load_database();//读取数据库所有卡 load_user();//读取用户有的卡 } void run(){ init(); //游戏本体 ; int i; while (1){ cout << "1.查看当前卡\n2.抽卡"; cin >> i; if (i == 1){ for each (auto var in id) { cards[var]->show(); } system("pause"); } else{ ; } system("cls"); } } card_system(){ init(); run(); }};
目前暂时只做好大致框架仅供本地测试,也并没有分客户端和服务端,之后会结合cocos的学习逐步分离。
0 0
- 做一个学(chou)习(ka)游戏(一)
- 用COCOS-2DX做一个RPG游戏(一)
- 新做一个Delegate的Demo,仅供新手学习用(一)
- 李开复(一) 如何学做管理
- 用cocos2d-x做一个简单的windows phone 7游戏(一)
- Step by Step,用JAVA做一个FLAPPYBIRD游戏(一)
- 如何做一个网络对战游戏之(一 前言)
- 做游戏,学编程(C语言) 4 flappy bird
- 我用Unity3d做游戏(一)
- 用HTML5做2048游戏(一)
- 一起做游戏(一)
- C语言进阶教程(一)(转自Peter Fačka)
- 清明节自己在宿舍做了一个游戏模拟器...学开车的同学有福了
- 分享一个 Excel 做的三国杀 游戏 ,想学EXCEL的绝对受用。
- html5(熊与蘑菇)一步一步学做游戏 第一回:游戏分析
- html5(熊与蘑菇)一步一步学做游戏 第八回:完善游戏
- 边做游戏边学android—1(猜数字游戏)
- 做游戏,学编程(C语言) 飞机游戏 2 (思考改进)
- Python Re库
- PAT-A-1009. Product of Polynomials (25)
- 关于HashSet、LinkedHashSet和TreeSet以及Comparable和Comparator
- 蓝桥杯-十六进制转八进制(java)
- JAVA网络程序设计的基本概念
- 做一个学(chou)习(ka)游戏(一)
- MAC 苹果电脑 Xcode文件路径
- 新的代码
- JAVA之MD5加密算法
- 贪心+优先队列
- 1、HTTP监控工具httpry
- 使用 Visual Studio 进行调试
- VIM学习手记1-从命令模式直接进入单词替换修改
- 【C】获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列