博客

  • Ajax实现评论的顶和踩功能

    Ajax实现评论的顶和踩功能

    这算是社团布置的一个假期小作业吧,我只是提出我自己的解决方案,不一定是最合适的。

    效果大致如下:

    2

    javascript这块使用jquery。新建一个Asp.net web项目,使用NuGet获取Jquery最新版。

    ajaxDemo1

    数据库方面使用Nhibernate,用Install-Package Nhibernate引用。

    数据库是用的PostgreSQL,Install-Package Npgsql把驱动装上。我这里偷个懒,数据库名,用户名和密码都是ajaxDemo了。

    创建数据库:

    CREATE DATABASE "ajaxDemo" WITH OWNER = "ajaxDemo" ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'Chinese (Simplified)_People''s Republic of China.936' LC_CTYPE = 'Chinese (Simplified)_People''s Republic of China.936' CONNECTION LIMIT = -1;
  • 真心好用的VS扩展–NuGet

    真心好用的VS扩展–NuGet

    无聊中手机上网翻到的,先没明白这是什么东西,等我实际体验了一把以后完全震惊了,太给力了!

    NuGet的官方说明是:NuGet是一款Visual Studio的扩展,它可以简单的安装、升级开源库和工具。

    官网地址:http://www.nuget.org/

    官网最醒目的位置就是下载链接,安装完成后我们来快速体验一把。

    手上有个小项目需要使用到json格式,一般情况我会先Google一下有没有相关的开源库(这个肯定是有的)。

    然后从一些博文中发现了Json.net,然后继续Google之,找到Json.net的官网,然后下载最新的稳定版本,找出DLL文件引用它。

    是不是很复杂?很繁琐?(其实没用NuGet之前我一直觉得这样干很方便的)

    使用NuGet我们就可以很快搞定了。

    右键Managet NuGet Packages

    nuget1

    搜索json,然后看看结果和右侧的介绍,Json.net排在第一位,点Install安装。

    nuget2

    然后等待下载完成,可以看到引用里面已经有了Json.net了。

    nuget3

    那么NuGet到底干了什么呢?下载的开源库在何处呢?看一下输出结果就知道了。

    nuget4

    在packages文件夹下可以找到相关dll文件。

    nuget5

    还有命令行模式可以选用

    还是以Json.net举例,输入Install-Package Newtonsoft.Json即可。

    nuget7

    NuGet还有一个优势就是可以处理依赖(我个人觉得Net的依赖复杂程度没有java麻烦)。以Spring.Core为例子,它依赖Common.Logging。

    自然NuGet完美解决了。

    nuget9

    我没有试升级库功能,但是个人感觉NuGet还是有一些局限的。

    首先需要联网(其实可以建立自己的服务器…我粗心了,谢谢了楼下各位了),其次是每次都下载新的,而且会把针对不同.Net版本的都down下来。…

  • 分享几篇文章(PDF版)

    后天就要回老家了,除了团团年估计也没有其他好玩的,就琢磨下点经典文章带回去看看。

    Google一番找到了老赵很早以前的文章:

    http://www.cnblogs.com/JeffreyZhao/archive/2009/03/02/1401259.html

    说来惭愧,里面的十余篇文章我只看过一篇,正好就补补知识。

    原文给出的连接多是在线版,我找了部分的pdf给大家分享一下。

    合集下载:

    所有程序员都应该至少读上两遍的十篇论文.rar

    单个文章:

  • android游戏开发框架libgdx的使用(十六)—使用TexturePacker工具加快开发速度

    android游戏开发框架libgdx的使用(十六)—使用TexturePacker工具加快开发速度

    libgdx绝对是一个相当不错的游戏引擎,最近一段时间的学习我感觉收获很多。但是我一直对于libgdx加载的图片大小必须是2的次方感到很纠结。

    如果是一张一般的图片想在libgdx中使用的话就需要自己去用ps什么的把图像拉一下,一两张没关系,但是数量大了还是有点烦。

    而且拉大的图片还需要TextureRegion来切割一下,实在麻烦。仔细看了一下libgdx的tool包,发现早有解决方案了。

    具体的类是imagepacker,在com.badlogic.gdx.tools.imagepacker包之中。它可以将多张图片合并在一张之中。同时可以通过原有文件的文件名获得图片资源。

    这里有几张图片:

    111415xpic2766

    将它们放在一个文件夹中(这个文件夹没有其他东西了)。引用gdx-tool.jar。

    代码如下:

    Settings settings =new Settings(); settings.alias =true; TexturePacker.process(settings,"D:img","D:imgoutput");

    在output文件夹中可以找到两个文件,其中一个是合成好的图片

    img1

    另外一个名为pack,其中记录了源文件的位置,大小和名称。

    将图片和pack文件拷贝到项目目录。这里说明一下,pack文件的文件名可以随便改,合成的图片如果需要改名的话就需要改一下pack文件里面的内容了。

    使用时的具体类是TextureAtlas。

    代码:

    package com.cnblogs.htynkn.game;import com.badlogic.gdx.ApplicationListener;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.graphics.GL10;import com.badlogic.gdx.graphics.g2d.TextureAtlas;import com.badlogic.gdx.scenes.scene2d.Stage;import com.badlogic.gdx.scenes.scene2d.ui.Image;publicclass TexturePackerDemo implements ApplicationListener { Stage stage;@Overridepublicvoidcreate() { stage=new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(),false); TextureAtlas atlas=new TextureAtlas(Gdx.files.internal("imgs/pack"));//根据pack文件获取所有图片 
  • 分享从网上收集的一些游戏资源,以RPG类为主

    分享从网上收集的一些游戏资源,以RPG类为主

    最近一直在研究libgdx引擎的使用,自然需要一些图片资源,一边学习一边从网上搬运各种用的上的资源,估摸可能有人用的上,特意分享在此。

    下载地址:点击此处

    收集的资源主要分5个大类,我每一类传几张预览图吧:

    1.tiles

    主要是tiledmap用的。

    TileA1

     

    TileC

    2.场景

    002-Woods01

     

    005-Beach01

    3.过渡

    000007-9S-Transition07

     

    000012-9S-Transition12

    4.角色

    这个的角色资源包含脸部特写,也包含人物走动的图,还有一张情绪图。

    chara01_a

     

    face_m02c

    5.游戏结束

    000016-9S-GameOver16

     

    000026-9S-GameOver26

    反正东西也不大,我就不分开打包了。大家要是觉得有用就下载吧。

    下载地址:

    诚通网盘:http://www.ctdisk.com/file/4279436

     

    这个网站也不错哈~素材丰富 http://www.66rpg.com/category.php?c=3

  • android游戏开发框架libgdx的使用(十七)—TiledMap中角色的行动路径

    android游戏开发框架libgdx的使用(十七)—TiledMap中角色的行动路径

    分享了一些素材,有兴趣的朋友可以看看:http://www.cnblogs.com/htynkn/archive/2012/01/19/game_resource.html

    前些日子的文章介绍了tiledmap的主角出现和移动等等问题。相对于主角游戏自然还应该有敌人(?)。

    与主角不同的是,这些元素的移动时程序控制的,一般有3种。

    1.随主角的移动变化,靠近主角或远离主角

    2.按照固定路线移动

    3.不动

    第一种的话完全是看你的游戏逻辑决定,和tiledmap关系不大。第二种的话我们可以避免硬编码(把移动路径写入程序代码中),而采用tiledmap实现,下面我们来看看具体过程。

    还是新建一张地图,我选用的大小是5030,块大小:3232。

    towntown1

    然后绘制地图:

    adancedmap

    我们假定敌人从地图中间的那条路走到左边的角上。路径如下:

    adancedmap

    现在新建一个对象层,命名为wayPoints。在几个关键的地方标注上对象,命名为wayPoint1,wayPoint2…

    adancedmap

    处理好地图后拷贝到项目中。

    advancelibgdx

    现在新建一个Enemy类,继承Image。

    现在来整理一下思路,首先我们要得到所有的wayPoint.而第一个wayPoint就是角色的初始化点。那么Enemy类首先需要一个Vector2列表,然后继承Image需要一个TextureRegion。

    所以构造函数为

    publicEnemy(List<vector2> vector2s, TextureRegion region) {super(region);this.vector2s = vector2s; currentIndex =0;this.x = vector2s.get(currentIndex).x;this.y = vector2s.get(currentIndex).y; }

    初始点有了,如何移动呢?我们先来看一下坐标

    advancelibgdx2

    我们现在在点1位置,将要移动到点2位置。只需计算x,y,z长度,然后求出对应的moveX和moveY就可以了。

    float x = Math.abs(v1.x - v2.x);float 
  • Jelastic–支持java的PaaS

    Jelastic–支持java的PaaS

    最开始使用的是gae,被墙以后转战sae。虽然sae用着也不错,但是php用着始终没有java熟悉。

    在网上游荡时发现Jelastic,虽然是测试版,但是功能什么的毫无含糊,用着也很方便。

    地址:http://app.jelastic.servint.net/

    1.首先注册账号,登陆。

    jelastic1

    2.从Email中得到密码后登陆。

    jelastic2

    点击Create Environment。有4中容器可以选择,Jetty,Glassfish,Tomcat 6,Tomcat 7.下面还可以选择MySql和NoSql(可以选择MongoDB获取CouchDB)。还有Nginx可选。

    jelastic3

    右边虽然有价格计算器,不过不用担心,都是$0。基本上可以说Jelastic是免费,有兴趣研究的可以看一下它的价格策略。

    选择好以后输入自定的3级域名,然后点Create。创建环境需要几分钟。

    jelastic5

    现在我们来建一个Hello World.我用的netbeans。

    改一下index.jsp的文字意思一下。

    jelastic4

    然后生成war包。上传到Jelastic去。将其部署到刚才新建的环境当中。

    Ok了,访问http://htynkn.jelastic.servint.net/可以看到效果:

    jelastic7

    jelastic还可以绑定域名。我申请了一个免费域名htynkn.tk。在域名管理中心添加一条CHAME就行了。

    jelastic9

  • android游戏开发框架libgdx的使用(十五)—TWL布局

    android游戏开发框架libgdx的使用(十五)—TWL布局

    本文使用的libgdx是0.92版本,和现在的最新版可能有一些不一样的地方。全文内容仅供参考。

    TWL是一个基于OpenGL的图形化用户界面库,它提供了一套非常丰富的窗口小部件,比如标签,编辑框,表格等等。不同的布局方式配合使用可以创建出非常高级的用户界面。

    TWL我原来接触过,但是觉得配置文件太难写了,今天逛论坛发现了官方出了Theme编辑器,马上来试试。

    官网:http://twl.l33tlabs.org/

    Editor下载地址:http://twl.l33tlabs.org/themer/themer.jnlp

    双击等下就可以运行了,界面如下。

    twl1

    先新建一个项目。

    twl2

    来看看默认的项目有什么。

    twl3

    第一项是字体,默认字体只支持英文。

    第二项是输入映射,定义了诸如全选,剪切等操作的快捷键。

    第三项是一个名为-defaults的主题样式,这个样式指明了字体使用第一项声明的那个,同时规定了文字靠左。

    第四项是一个名为label的主题样式。

    我们先让其支持中文。我们仍然可以使用hiero制作文字(注意格式上转化),然后将做好的文件拷贝到项目文件夹中。

    新建一个字体定义。

    twl4

    将新定义拖到最上面,改名为normal。

    twl5

    注意:保持修改要点右边的小勾。

    label其实就是为标签设计的样式。TWL Theme Editor提供了很方便的开发环境。

    twl6

    选择Label,选择Theme name为label,测试效果如下:

    twl7

    现在来新建一个Button的样式,先建一个Image,图片用下面那张:

    widgets

    新建Image节点

    twl8

    新建一个Aera节点,命名为buttonBackground。

    twl9

    将no center,spilt x,spilt y选上。

    twl10

    图像范围的选择可以直接用鼠标,这也是我最喜欢的地方…不用自己数像素了。

    twl11

    新建一个样式,名为button。字体选成normal,background选成buttonBackground,测试一下。

    twl13

    可以看出按钮有问题,新建一个button,将L和R都设成10.

    然后需要按钮有按下的效果怎么办?新建一个select节点,在其中添加两个alias节点。

    其中if(pressed)的效果设置成inset 2(就是变小一点),颜色改成黄色。

    twl16

    将button样式的background指定成buttons。保存项目,将项目文件拷贝到android项目的资源文件夹中。

    TWL Theme Editor的更多使用可以参考:…

  • android游戏开发框架libgdx的使用(十三)—TiledMap中的角色和角色移动

    android游戏开发框架libgdx的使用(十三)—TiledMap中的角色和角色移动

    本文使用的libgdx是0.92版本,和现在的最新版可能有一些不一样的地方。全文内容仅供参考

    本文紧跟上文,[android游戏开发框架libgdx的使用(十二)TiledMap地图的使用]

    地图我们创建好了接下来就是主角的出现。其实上文介绍了如何TiledMap和Stage的结合,角色的处理就简单了。

    可以继承Actor类创建主角类,我就偷个懒,用Image代替。

    编辑我们的TMX文件,添加一个对象层。

    在主角要出现的地方加个形状

    取名为play1

    我们的主角是:

    思路是我们遍历map中的所有Object,如果名字和我们设定的play1一致,那么就实例化一个Image,位置和Object一致,添加到舞台。

    关键代码:

    for (TiledObjectGroup group : map.objectGroups) {
    for (TiledObject object : group.objects) {
    if ("play1".equals(object.name)) {
    player =new Image(new TextureRegion(new Texture(Gdx.files
    .internal("map/player.png")),0,0,27,40));
    player.x = object.x;
    player.y = tileMapRenderer.getMapHeightUnits() - object.y;//map是左上角,Stage是左下角
    
  • android游戏开发框架libgdx的使用(十四)—TiledMap中视角完善和障碍物处理

    android游戏开发框架libgdx的使用(十四)—TiledMap中视角完善和障碍物处理

    本文使用的libgdx是0.92版本,和现在的最新版可能有一些不一样的地方。全文内容仅供参考。

    本文紧跟上文:http://www.cnblogs.com/htynkn/archive/2012/01/13/libgdx_13.html

    上文说到绘制了Map,然后我们的主角也可以四处活动了,但是仍有一些不完善的地方。

    1.地图的边界没有控制。Camera的位置其实是viewport的位置,不是屏幕边界,所以如果直接按照上文的做法做的话主角走到屏幕边缘的时候就有问题了。

    zuobiao

    2.没有障碍,主角的行动没有约束。

    现在先来解决第一个问题。

    解决方案很简单,我们时刻注意viewport的位置,根据viewport计算Screen的边界,让其不超过地图。

    代码如下:

    privatevoidCameraMove(Vector3 vector3, Actor mainActor) {
    Vector3 viewport = stage.getCamera().position.cpy();
    viewport = viewport.add(vector3);
    Vector3 zbound =new Vector3(width /2, height /2,0).add(viewport);
    if (zbound.x > maxCamPosition.x || zbound.y > maxCamPosition.y) {
    return;
    }
    Vector3