休闲游戏《开心农场》 设计思路
来源:互联网 发布:火车头采集数据导出 编辑:程序博客网 时间:2024/04/27 16:09
开心农场是一个游戏逻辑相对简单的小游戏。
在C++中实现起来,要解决两个关键的问题:时间计算和事件。
在开心农场中,我主要需要两个类:
一个是CGameController(游戏控制类)
另一个是CLandElement(地皮类)
CGameController我推荐所有游戏都写这个类,可以统筹所有的元素,减轻CGame类的负担。
CGame主要负责状态的切换,有任何事件,都可以转发给不同的类处理。
CGameController类主要负责的任务是:
每30分钟(当然这个时间可以更长)随机转换一次天气的状态,比如下雨,刮风。
与CLandElement类进行交互
比如让CLandElement进行锄地,除虫,浇水等等。
CLandElement类可以实现的是,这个地皮里面,究竟有什么东西,他们的状态又是什么。
下面是CLandElement的部分代码:
enum LandState{
DISABLE,//不可用ABLE,//可用DRY,//干燥NORMAL,//正常WET//潮湿};enum PlantState{SEED,//种子阶段SEEDING,//发芽LITTLELEAF,//小叶子BIGLEAF,//大叶子FLOWER,//开花GROWN//成熟};enum PlantId{PLANTID_STRAWBERRY,//草莓丶PLANTID_WHITERADISH,//白萝卜PLANTID_POTATO,//土豆PLANTID_TOMATO,//西红柿};struct TheLandElement{int m_LandId;//土地idint m_LandState;//土地状态int m_PlantId;//植物idint m_PlantState;//植物状态bool m_IsBug;//是否长虫子bool m_IsNeedWater;//是否缺水int m_ExpectantYeild;//预期产量int m_AllYeild;//所有产量int m_NowYeild;//当前剩余产量PlantDateAndTime Grown;//成熟截止时间};
其他的各种修改函数,就不再赘述。一般有get有set即可。
至于时间,我在网上找了很多GetLocateTime不是很实用。
我推荐WinBase里面的一个结构体,方便你对时间进行各类运算。
下面是C++控制台的源代码,可以参考一下放到Win32中。
#include <iostream>#include <time.h>#include <windows.h> using namespace std;struct PlantDateAndTime{int Year;int Mon;int Day;int Hur;int Min;int Sec;};PlantDateAndTime Grown;void CalculateGrowTime(int Hours,int Minute){SYSTEMTIME st = {0};GetLocalTime(&st);Grown.Sec=st.wSecond;Grown.Min=st.wMinute+Minute;Grown.Hur=st.wHour+Hours%24;Grown.Day=st.wDay+Hours/24;Grown.Mon=st.wMonth;Grown.Year=st.wYear;}void main(){CalculateGrowTime(24,20);//可以设置任何值cout << "目标时间:"<<Grown.Year<<"年"<<Grown.Mon<<"月"<<Grown.Day<<"日 "<<Grown.Hur<<"点"<<Grown.Min<<"分"<<Grown.Sec<<"秒";}
至于除虫除草这些,那么就是纹理的操作了。不再赘述。
- 休闲游戏《开心农场》 设计思路
- 开心农场设计稿
- 开心农场
- 《开心农场》
- 开心农场
- 校内网开心农场游戏的外挂怎么写呢?
- 关于开心农场 1
- 开心农场技巧
- firefox玩开心农场
- 开心农场架构
- 开心农场架构
- 请高手指点怎么写校内网开心农场游戏的外挂代码
- libgdx 游戏设计思路
- QQ校友开心农场外挂
- 开心农场外挂破解中。。。
- QQ开心农场的人生哲理
- 人人开心农场制作点滴
- 发布 开心农场助手 2.61!
- mjpg-streamer结构和mjpg_streamer.c与mjpg_streamer.h文件分析
- python学习--smtplib
- 添加votedisk
- 算法导论—动态规划之装配线调度
- 计算机复试上机题解题报告
- 休闲游戏《开心农场》 设计思路
- 0019算法笔记——【动态规划】0-1背包问题
- 查看ie浏览器的版本问题
- 每日编程23之汉诺塔问题
- AJAX核心对象-- XMLHttpRequest 对象使用详解(一)
- webview 获取返回数据
- InstallShield 2010集成.net Framework 4的安装包制作
- 秒杀多线程第十篇 读者写者问题
- C语言作业(2)