`
rcfalcon
  • 浏览: 228655 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

silverlight超小游戏开发包SmallGameLib(二)—— 一个最简单的DEMO

阅读更多

 这次我们来基于 SmallGameLib构建一个最简单的游戏DEMO。

我们把它叫做walkMan,基本功能就是 玩家可以控制一个角色在屏幕上 上下左右 四个方向行走。

 

截图如下:

 

 

下面一步步来构建我们的DEMO:

 

我们先建立工程,导入SmallGameLib源码。(为何不以dll的形式发布?因为代码实在没多少,所以我们以源码形式发布更加方便)

 

 

修改Config/GameStatus.cs 我们此游戏只有一个状态,修改如下:

 


namespace GDE.SmallGameLib
{
    public enum GameStatus
    {
        游戏中,
    }
}

 

将图片 map.jpg man.jpg添加到 resource/image/下

然后构建我们的角色类,在Logic下新建 Man.cs,引用 GDE.SmallGameLib,构造我们的主角,派生自BaseObj,并实现其四个方向行走的逻辑:

 

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using GDE.SmallGameLib;

namespace example1.Logic
{
    public enum ManDirection
    {
        上,下,左,右,停
    }

    public class Man : BaseObj
    {
        static public ManDirection direction = ManDirection.停;

        public Man()
        {
            setImage("man.png");
            H = 80;
            W = 60;
        }

        public override void logic()
        {
            switch (direction)
            { 
                case ManDirection.上:
                    Y-=5;
                    break;
                case ManDirection.下:
                    Y+=5;
                    break;
                case ManDirection.左:
                    X-=5;
                    break;
                case ManDirection.右:
                    X+=5;
                    break;
            }
            if (X < 0) X = 0;
            if (X + W > Config.ScreenW) X = Config.ScreenW - W;
            if (Y < 0) Y = 0;
            if (Y + H > Config.ScreenH) Y = Config.ScreenH - H;
        }
    }
}

 

 

然后构建我们的层类,在Logic目录下新建 Layer.cs,引用GDE.SmallGameLib,构建我们的主层。该层中只有一个角色,就是我们的主角:

 

using GDE.SmallGameLib;

namespace example1.Logic
{
    public class Layer : BaseLayer
    {
        public Layer()
        {
            AddObj(new Man());
        }
    }
}

 

 

构建我们的引擎核心类,在Logic下新建 walkMan.cs

 

using GDE.SmallGameLib;

namespace example1.Logic
{
    public class walkMan : GameEngine
    {
        public walkMan(UserControl mainPage, Canvas rootCanvas, GameStatus startStatus) :
            base(mainPage, rootCanvas, startStatus)
        { 
            
        }

        protected override void TickGameFrameLoop(object sender, EventArgs e)
        {
            layersLogic();
        }
    }
}

 

 

然后在我们的MainPage下启动该引擎,并编写按键处理相关程序:

 

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            walkMan gameCore = new walkMan(this, RootCanvas, GameStatus.游戏中);
            gameCore.AddLayer(new Layer(), 0);
            GameEngine.LoopStart();
        }

        private void MainPage_KeyUp(object sender, KeyEventArgs e)
        {
            //Man.direction = ManDirection.停;
        }

        private void MainPage_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            switch (e.Key)
            {
                case Key.Left:
                    Man.direction = ManDirection.左;
                    break;
                case Key.Right:
                    Man.direction = ManDirection.右;
                    break;
                case Key.Up:
                    Man.direction = ManDirection.上;
                    break;
                case Key.Down:
                    Man.direction = ManDirection.下;
                    break;
            }
        }
    }

 

 

在MainPage.xaml中指定按键处理函数及游戏背景图片,并设置根画布

 

 

<UserControl x:Class="example1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400" KeyDown="MainPage_KeyDown" KeyUp="MainPage_KeyUp">

    <Canvas x:Name="RootCanvas">
    	<Image Height="300" Source="Resource/Image/map.jpg" Stretch="Fill" Width="400" Canvas.ZIndex="-1"/>
    </Canvas>
</UserControl>

 

 

整个DEMO就完成了~

 

用户可以通过上下左右来操作角色移动,角色在碰到四周的时候将不能继续移动。是不是很简单?

分享到:
评论

相关推荐

    ASP.NET源码——Silverlight 2.0 功能展示Demo源码.zip

    【ASP.NET源码——Silverlight 2.0 功能展示Demo源码】 此压缩包包含的是一个基于ASP.NET技术的Silverlight 2.0功能演示项目。Silverlight是微软推出的一种浏览器插件,用于创建丰富的、交互式的网络应用程序,与...

    Silverlight 5 开发工具包 - 中文

    Silverlight 5 开发工具包- 中文

    SilverlightDEmo

    【标题】"SilverlightDemo"揭示的是一个基于微软Silverlight技术的应用实例,它展示了Silverlight在构建富互联网应用程序(RIA)中的强大功能。Silverlight,作为一款轻量级的插件,旨在为Web提供丰富的媒体体验和...

    silverlight学习demo实例

    这个"silverlight学习demo实例"集合是为初学者和开发者提供的一个实践平台,帮助他们更好地理解和掌握Silverlight的核心功能和应用。 首先,我们来看"DemoAnimation"。这个子目录很可能是关于Silverlight动画的示例...

    Silverlight网络游戏飞行岛2.0源码

    《Silverlight网络游戏飞行岛2.0源码》是一款基于Microsoft Silverlight技术开发的网络游戏,它展示了Silverlight在游戏...对于想要涉足网络游戏开发,尤其是Silverlight领域的开发者来说,这是一个宝贵的实践案例。

    silverlight自定义DataGrid demo

    在本文中,我们将深入探讨Silverlight中的自定义DataGrid实现,以及如何利用Grid控件来构建这样一个功能。Silverlight是一种由Microsoft开发的富互联网应用程序(RIA)平台,它允许开发者创建交互性强、视觉效果丰富...

    ASP.NET源码——[影音娱乐]Silverlight连连看游戏源码.zip

    总的来说,这个源码实例提供了一个将ASP.NET和Silverlight结合应用于娱乐应用的实例,对于提升开发者在Web游戏开发领域的技能和经验具有很大价值。通过分析和重构源码,你可以深化对这两种技术的理解,并能将其应用...

    silverlight 4 toolkit Demo

    Silverlight是微软开发的一个跨浏览器、跨平台的插件,用于在Web上创建和展示富媒体内容。Silverlight 4作为其第四个主要版本,增加了许多新功能,如桌面拖放支持、打印功能、改进的文本渲染、更强大的数据绑定以及...

    Silverlight实例秀——可切换视图的DataTemplate

    在本文中,我们将深入探讨Silverlight中的一个关键特性——DataTemplate,以及如何利用它来创建一个可切换视图的功能。DataTemplate是Silverlight界面设计中的重要工具,它允许开发者定义数据对象如何在UI中呈现。在...

    Silverlight SharpDraw 在线绘图Demo

    本篇文章将深入探讨一个基于Silverlight 3平台的在线绘图Demo——"Silverlight SharpDraw",揭示其核心技术和实现方式。 Silverlight是微软推出的一款跨浏览器、跨平台的插件,用于创建和展示丰富的交互式媒体和...

    ASP.NET源码——[影音娱乐]Silverlight打苍蝇游戏.zip

    【ASP.NET源码——[影音娱乐]Silverlight打苍蝇游戏.zip】是一个包含ASP.NET源代码的压缩包,主要用于创建一款基于Silverlight技术的在线打苍蝇游戏。在这个项目中,开发者利用了ASP.NET框架的强大功能,结合...

    silverlight视频聊天Demo

    总之,Silverlight视频聊天Demo是一个综合性的学习资源,它涵盖了媒体处理、网络通信、用户交互等多个方面。对于初学者来说,通过研究这个Demo,不仅可以了解Silverlight的基础用法,还能深入理解实时音视频聊天应用...

    silverlight demo

    它作为一个插件,可以在主流浏览器上运行,提供跨平台、跨浏览器的支持,旨在增强网页的视觉效果和功能。 **技术背景与发展历程** 在2007年,微软首次推出了Silverlight,作为与Adobe Flash竞争的产品。随着互联网...

    silverlight 3d游戏开发微软经典教程

    Farseer Physics Engine则是一个物理模拟引擎,常用于2D和3D游戏开发中,它可以模拟现实世界的物理现象,如重力、碰撞检测和刚体动力学。在Silverlight游戏中,Farseer能帮助创建更真实的游戏环境,增加游戏的互动性...

    Silverlight 4 RIA开发全程解析(完整版)

    使用《SilverLight 4 RIA开发全程解析》所阐述的在线业务的新特性,您可以创建一个与传统的基于ASP.NET的网站相比响应速度大为提高的Web应用程序。为了了解这些新特性以及改进的Silverlight工具包,我们在每一章中都...

    ASP.NET源码——[影音娱乐]Silverlight实现的MoveBox游戏.zip

    【总结】:"ASP.NET源码——[影音娱乐]Silverlight实现的MoveBox游戏.zip"提供了一个实践性的学习案例,涵盖了ASP.NET后端开发和Silverlight前端技术。通过研究这个项目,开发者可以增进对这两项技术的掌握,为未来...

    SL图文教程silverlight网页游戏开发教程

    《SL图文教程:Silverlight网页游戏开发》是一份详尽的教学资源,专为初学者设计,旨在引导没有SL(Silverlight)基础的人进入这个富媒体技术的世界。Silverlight是微软推出的一种强大的网络应用程序开发框架,尤其...

Global site tag (gtag.js) - Google Analytics