A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 2666fff 于 2015-5-7 23:51 编辑

首先声明:这是一个完整2D游戏,包括打怪,升级,跑地图,开宝箱,加血,捡装备等等基本游戏元素,所有代码,都是我自己在学校的时候一行一行敲出来的,绝无雷同。
更多代码可以去看我的github,跟我论坛账号同一用户名。

我把这游戏发在这里,一是交流,大家可以自己编着玩,第二,这是个完整代码,你找工作的时候稍微copy改改,就是你的project了,你们懂滴。
黑马门槛真心高,真心屌,一定要到25分才能进门,我决定论坛发这个代码,博客10篇连载我的android程序码,都不算小程序了,如果这样做不符合规范,请老师们提前说,我要赶在11号之前混到25分,谢谢了!

先说环境,这个游戏不算小,包含内容较多,基于slick2D库,至于何为slick2D各位请自行查询。
由于文件较多,我每次都会发部文件结构图。

此游戏包含4个大package:
items,物品系统,monsters,怪物系统,project2,我当时做得第二个project,这是这个游戏的基础javaclass package,villagers,NPC系统。
本帖先发布project2部分文件。

java完整2D游戏连载--part2 (单位基本类) http://bbs.itheima.com/thread-194622-1-1.html

java完整2D游戏连载--part3 (地图 人物  物品栏 类)
http://bbs.itheima.com/thread-194627-1-1.html

java完整2D游戏连载--part4 (gameObject Fontloader 装备属性 装备 ...
http://bbs.itheima.com/thread-194636-1-1.html




RPG.java(包含main function,运行class)
  1. package project2;
  2. /* 433-294 Object Oriented Software Development //我的课的名字
  3. * RPG Game Engine
  4. * Author: weiqian wang <wangw> //我的名字及学校用户名。
  5. */

  6. //import 基本
  7. import org.newdawn.slick.AppGameContainer;
  8. import org.newdawn.slick.GameContainer;
  9. import org.newdawn.slick.BasicGame;
  10. import org.newdawn.slick.Graphics;
  11. import org.newdawn.slick.Input;
  12. import org.newdawn.slick.SlickException;

  13. /** Main class for the Role-Playing Game engine.
  14. * Handles initialisation, input and rendering.
  15. */
  16. public class RPG extends BasicGame
  17. {
  18.     /** Location of the "assets" directory. */
  19.     public static final String ASSETS_PATH = "assets";

  20.     /** Screen width, in pixels. */
  21.     public static final int screenwidth = 800;
  22.     /** Screen height, in pixels. */
  23.     public static final int screenheight = 600;

  24.         public static final int panelheight = 60;
  25.     private __world world;
  26.    

  27.     /** Create a new RPG object. */
  28.     public RPG()
  29.     {
  30.         super("RPG Game Engine");
  31.     }

  32.     /** Initialise the game state. 初始化游戏状态,初始游戏容器
  33.      * @param gc The Slick game container object.
  34.      */
  35.     @Override
  36.     public void init(GameContainer gc)
  37.     throws SlickException
  38.     {
  39.             world = new __world();
  40.     }

  41.     /** Update the game state for a frame. 不断更新游戏数据,游戏程序非一般程序,数据画面需随时更新渲染。
  42.      * @param gc The Slick game container object.
  43.      * @param delta Time passed since last frame (milliseconds).
  44.      */
  45.     @Override
  46.     public void update(GameContainer gc, int delta)
  47.     throws SlickException
  48.     {
  49.         // Get data about the current input (keyboard state). 键盘输入状态
  50.         Input input = gc.getInput();

  51.         // Update the player's movement direction based on keyboard presses.
  52.         double dir_x = 0;
  53.         double dir_y = 0;
  54.         if (input.isKeyDown(Input.KEY_DOWN))
  55.             dir_y += 1;
  56.         if (input.isKeyDown(Input.KEY_UP))
  57.             dir_y -= 1;
  58.         if (input.isKeyDown(Input.KEY_LEFT))
  59.             dir_x -= 1;
  60.         if (input.isKeyDown(Input.KEY_RIGHT))
  61.             dir_x += 1;

  62.         // Let World.update decide what to do with this data.玩家位置,镜头系统固定。
  63.         world.update(dir_x, dir_y, delta);
  64.     }

  65.     /** Render the entire screen, so it reflects the current game state.渲染画面,更新游戏画面。
  66.      * @param gc The Slick game container object.
  67.      * @param g The Slick graphics object, used for drawing.
  68.      */
  69.     public void render(GameContainer gc, Graphics g)
  70.     throws SlickException
  71.     {
  72.         // Let World.render handle the rendering.
  73.             world.render(g);
  74.     }

  75.     /** Start-up method. Creates the game and runs it. main函数,开启游戏。
  76.      * @param args Command-line arguments (ignored).
  77.      */
  78.     public static void main(String[] args)
  79.     throws SlickException
  80.     {
  81.         AppGameContainer app = new AppGameContainer(new RPG());
  82.         // setShowFPS(true), to show frames-per-second.
  83.         app.setShowFPS(false);
  84.         app.setDisplayMode(screenwidth, screenheight, false);
  85.         app.start();
  86.     }
  87. }
复制代码


字数限制,先发一个 类,陆续放出全部



7 个回复

倒序浏览
好的 学习了,虽然现在对我来说还很难。以后学过在过来看看。
回复 使用道具 举报
楼主最好先去入学攻略版块看一下博客的要求。十篇全都是你的游戏代码,虽然纯手工原创,但不符合黑马的要求,还是没用的,反而耽误你走流程的分数、时间
回复 使用道具 举报
fantacyleo 发表于 2015-5-8 00:05
楼主最好先去入学攻略版块看一下博客的要求。十篇全都是你的游戏代码,虽然纯手工原创,但不符合黑马的要求 ...

就跟我报道帖写的一样,黑马板块真心乱,介绍也是稀里糊涂相互冲突。
我们就说这个日记规则,
【论坛公告】技术博客书写规则,请认真遵照执行!!!
http://bbs.itheima.com/thread-3077-1-1.html
(出处: 黑马程序员IT技术论坛)
这篇里面根本没有说明规则,第一条是打广告,第二条也是打广告,第三条是参考一个打广告的博客,第四条是讲如何编辑。

然后我又找到一篇日记规则,比如
三、申请入学考试,提交技术日记
  技术日记占20分,每一篇日记2分,共10篇,
    1、日记内容为自己每天的学习总结,具体细节参考黑马以前同学写的博客:http://blog.csdn.net/kangmiao89757
    2、日记书写规则,请查看:http://bbs.itheima.com/thread-3077-1-1.html,认真遵照执行!否则将不认为此篇日记为黑马日记。
    3、博客发表地址不限,最好是:163博客、iteye博客、csdn博客、博客园。

每天学习总结,我复习自己的代码,加以详细说明一样是总结,他并没有说不可以去研究一整个程序。然后第二个没有10分根本进不去 http://bbs.itheima.com/thread-3077-1-1.html

再举个例子,黑马入学申请到底要多少分.
黑马报名系统:
申请入学考试资格,您必须学完入学视频,完成10篇技术blog,并在黑马程序员论坛中参与技术交流,取得10个技术分。


而置顶帖说:

七、关于论坛技术分
  为了让同学们学习过程中有个交流的平台,让学习不至于枯燥,并且也能对自己学习的知识查漏补缺,黑马程序员在发放入学名额时,要求您的论坛技术分达到25分,因此建议您完成以上环节时多参与论坛交流,论坛技术分规则点击->黑马程序员社区技术分获取规则说明

黑马做得这么大,却这么乱,我有点犹豫了。
回复 使用道具 举报
都这么厉害了,还去学习???
回复 使用道具 举报
2666fff 发表于 2015-5-8 08:32
就跟我报道帖写的一样,黑马板块真心乱,介绍也是稀里糊涂相互冲突。
我们就说这个日记规则,
【论坛公告 ...

黑马入学流程说明杂乱不清晰,这个问题确实存在,之前论坛征求意见,我也提过这方面。现在虽然做了专门的入学攻略版块,但里面的帖子依然没有认真梳理整合。

不过你非要说博客全写自己的代码也是总结,那就是钻牛角尖了。黑马的入学是要求自学黑马的基础视频,所谓的学习总结也是指基础视频的学习总结,你贴出来的示例博客http://blog.csdn.net/kangmiao89757 就是很好的参考。再想不明白,你还可以打电话咨询客服。

至于10分和25分的冲突,还是看你自己摘出来的段落,10分说的是“申请入学考试资格”,25分说的是“发放入学名额”,这意思区别再明显不过了,不存在矛盾。

当然,我知道你的水平大大超过基础视频的范围,但黑马就是这么规定的。权利和义务对等,你想享受黑马后付费的优惠,自然也要遵守黑马的规定。11号之前拿到25技术分,除非有人给你送分,在目前根本就是不可能的事情。你不想写博客,想11号走完流程,可以先付费,省去博客和技术分要求。
回复 使用道具 举报
卡亚 初级黑马 2015-10-6 19:07:07
7#
看看看啊
回复 使用道具 举报
虽然现在看不懂,收藏了,等有一定的基础再看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马