基本信息
源码名称:C# 控制台 推箱子游戏源码
源码大小:2.30M
文件格式:.zip
开发语言:C#
更新时间:2015-09-15
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
含地图编辑模块
含地图编辑模块
/* * ///////////////////////////////////////////////////////////////////// * Program : Game * Author : hwenycocodq520 (hwenycocodq520#163.com) * Date : 2014/3/27 * Resume : 游戏框架类,实现了基本的游戏循环,派生类需要实现游戏的初始化操作 * * ///////////////////////////////////////////////////////////////////// * Modifiy History * * Date : * Resume : * */ using System.Diagnostics; namespace Hweny.ConsoleGame { public abstract class Game { protected int fps; protected Engine engine; public Game() { engine = new Engine(); } protected abstract void Start(); protected virtual void Cleanup() { } public void Run() { long gameTime = 0L; long elapsedTime = 0L; long lastTime = 0L; long accumulatedTime = 0L; long timeDiff = 0L; long lastFpsTime = 0L; int fpsTicks = 0; Stopwatch sw = new Stopwatch(); sw.Start(); Start(); if (fps <= 0) fps = 60; long FRAME_PERIOD = 1000 / fps; while (!engine.IsShutdown) { gameTime = sw.ElapsedMilliseconds; elapsedTime = gameTime - lastTime; lastTime = gameTime; accumulatedTime = elapsedTime; //处理控制台输入缓冲区中的输入记录 engine.Input.ProcessedInput(); if (!engine.IsPause) { //处理当前状态的输入操作 engine.StateMgr.HandleInput(); var update = false; while (accumulatedTime > FRAME_PERIOD) { //更新当前状态逻辑 engine.StateMgr.Update(FRAME_PERIOD / 1000f); accumulatedTime -= FRAME_PERIOD; update = true; } if (update) { //“渲染”当前状态 engine.StateMgr.Render(); } #if DEBUG fpsTicks ; if (gameTime - lastFpsTime > 1000) { System.Console.Title = engine.Title " fps:" fpsTicks; lastFpsTime = gameTime; fpsTicks = 0; } #endif timeDiff = sw.ElapsedMilliseconds - gameTime; int sleepTime = (int)(FRAME_PERIOD - timeDiff); if (sleepTime > 0) { System.Threading.Thread.Sleep(sleepTime); } } else { engine.StateMgr.OnPause(); System.Threading.Thread.Sleep((int)FRAME_PERIOD * 2); } } engine.Shutdown(); Cleanup(); } } }