在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 控制台 推箱子游戏源码

C# 控制台 推箱子游戏源码

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:2.30M
  • 下载次数:34
  • 浏览次数:1928
  • 发布时间:2015-09-15
  • 实例类别:C#语言基础
  • 发 布 人:星火燎原
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 游戏 C# 推箱子 c 源码

实例介绍

【实例简介】含地图编辑模块

【实例截图】

【核心代码】


/*
 * /////////////////////////////////////////////////////////////////////
 * 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();
        }
    }
}


标签: 游戏 C# 推箱子 c 源码

实例下载地址

C# 控制台 推箱子游戏源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警