1.概述
老外用Java做的2D密室逃脱游戏。个人认为挺不错的。
来源
http://meatfighter.com/escape/index.html
效果如图
2.源码赏析
还是一如既往,定义了一个IMode,这样不同模式可以切换,避免一堆if else,而且扩展也容易。
游戏主要核心就是Main以及GameMode这两个类。其他都是场景。当然里面有很多小游戏,如fifteen,汉诺塔,记忆题。
Main是游戏的一个框架。
public void run() {
Images.inventoryTile.getWidth(); // load images
addMouseListener();
BufferedImage image = new BufferedImage(CANVAS_WIDTH, CANVAS_HEIGHT,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)image.getGraphics();
Graphics2D g2 = null;
int frameSkips = 0;
long nextFrameStartTime = System.nanoTime();
while(alive) {
//1.跳帧,防止电脑太慢
do {
nextFrameStartTime += 16666667;
frameSkips++;
//2.更新模型
mode.update();
} while(nextFrameStartTime < System.nanoTime()
&& frameSkips < MAX_FRAME_SKIPS);
if (frameSkips >= MAX_FRAME_SKIPS) {
nextFrameStartTime = System.nanoTime();
}
frameSkips = 0;
//3.如果targetMode存在,则进入该模式,并进入下一次循环(continue)
if (targetMode != null) {
mode = targetMode;
mode.enter();
targetMode = null;
nextFrameStartTime = System.nanoTime();
continue;
}
//4.渲染(在内存中画)(double buffer)
mode.render(g);
//5.一次性画到屏幕上
// show the hidden buffer
if (g2 == null) {
g2 = (Graphics2D)getGraphics();
requestFocus();
} else {
g2.drawImage(image, 0, 0, null);
}
//6.睡一会儿,节省cpu
// burn off extra cycles
while(nextFrameStartTime - System.nanoTime() > 0) {
Thread.yield();
}
// do not eat up CPU if user leaves browser
if (sleeping) {
synchronized(this) {
while (sleeping && alive) {
try {
wait();
} catch(Throwable t) {
}
}
}
nextFrameStartTime = System.nanoTime();
}
}
}
GameMode稍微复杂一点,处理了鼠标点击,鼠标拖放核心功能。
具体不多说了,附件可下载我加了中文注释的源码包,在JDK7上可以运行。
如果觉得难度太高的话,可以修改Main.DEBUG=true,可打开调试模式,降低游戏难度,一方面也方便大家学习源码。
- 大小: 80.9 KB
- 大小: 10.3 KB
分享到:
相关推荐
逃生室
CT4105-密室密室逃脱游戏
PRISON ESCAPE PLAN Unity迷你密室逃脱益智解谜游戏项目源码C# 支持Unity版本2018.3.5f1及以上 越狱计划 制定逃离监狱的计划并提防看守。画出逃生路线并帮助囚犯逃跑。那么教授有什么计划吗? 商品描述 制定逃离监狱...
Java文本字符编码解码操作类 Escape.java源代码
本工具类用java实现了JavaScript escape/unescape 编码。对接建行支付以及需要向后端传输中文数据时可以使用得到
客厅 sasscape-room是使用Sass的基于Web的密室逃脱游戏。 游戏特色 由多个房间组成 与许多事物的相互作用 旁白留言板 物品和说明板 语言特征 HTML 萨斯 演示链接 偷看我
java实现js的escape和unescape方法
使用Unity VR开放框架开发的密室逃脱VR游戏,演示了完整的VR功能,包括镜头、手柄、场景交互、漫游等功能
关于逃脱虚拟现实室 Escape the Room VR是我们研究的Daydream VR项目,用于模拟Escape the Room体验。 其他信息可在中。 安装 在支持Daydream的Android设备上安装.apk文件,或在Unity上构建。 作者
一个与Escape编码 解码相关的Java实例代码,其实是一个解码编码类,里面就一个文件。关于解码的说明:本方法保证 不论参数s是否经过escape()编码,均能得到正确的“解码”结果,编码的过程请大家下载源代码查看,本...
Java文本字符编码解码操作类 Escape.java源代码 说明:本方法保证 不论参数s是否经过escape()编码,均能得到正确的“解码”结果。
java使用mysql的escape遇到的坑
unity游戏源码-逃脱鸟游戏源码Escape Bird Unity游戏源码 , Unity工具 , 完整的项目 , 适合学习和二次开发 。 是整个完整的UnityPackage包 , 直接导入项目里面就行。 C#语言的! C#语言的!! C#语言的!!! 重要的事说三...
使用java对字符串进行unicode编码和解码。源程序
ansi-escapes - ANSI转义代码用于操纵终端
FORD福特锐际ESCAPE车型手册汽车说明书pdf电子版下载
Simple Escape the Castle Game in JavaScript Free Source Code
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
博文链接:https://icsnowing.iteye.com/blog/224664