1.概述

老外用Java做的2D密室逃脱游戏。个人认为挺不错的。

来源[url]http://meatfighter.com/escape/index.html[/url]

效果如图

[img]http://dl2.iteye.com/upload/attachment/0105/2427/a742cd21-e376-3ab4-8723-1e96e56970c7.png[/img]

2.源码赏析

[img]http://dl2.iteye.com/upload/attachment/0105/2430/714432c5-559e-302b-98d7-3bc888de61e7.png[/img]

还是一如既往,定义了一个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,可打开调试模式,降低游戏难度,一方面也方便大家学习源码。

java制作密室脱逃,Escape the men's room(Java版密室逃脱)相关推荐

  1. java制作纯字rpg小游戏_求java rpg小游戏源代码 最好是文字rpg 不需要很复杂 只是交作业用...

    展开全部 连连看的小源码 package Lianliankan; import javax.swing.*; import java.awt.*; import java.awt.event.*; ...

  2. 类似java制作计算器的游戏_急求一Java编写的类似计算机带的计算器的程序!!...

    展开全部 No 1. import java.awt.*; import java.awt.event.*; import java.applet.*; public class Calculator ...

  3. java制作烟花源码_java源码解读-java烟花代码!

    解读JAVA代码 正在自学java,刚入门,图形界面没太看懂 贴一段简单的代码,求逐行解释.. java程序解析 public class text6{ final String color; pub ...

  4. java制作安卓游戏脚本_autoA开源(用java写安卓无障碍脚本)

    类 ScreenLib类 封装了模糊找色,屏幕点击,屏幕滑动等方法. TsFrame抽象类 封装了脚本的逻辑流程(帮助你快速开发脚本) Fa和Fb 都是继承自F,他们大部分方法都是一样的.重新封装了屏 ...

  5. Java制作VCARD

    转载自   Java制作VCARD 简介: vCard是电子名片的文件格式标准.它一般附加在电子邮件之后,但也可以用于其它场合(如在互联网上相互交换).vCard可包含的信息有:姓名.地址资讯.电话号 ...

  6. 用JAVA制作小游戏——飞机大战(三)

    本篇博客是对飞机大战游戏项目完整代码的展示 详细代码讲解: 用JAVA制作小游戏--飞机大战(一) 用JAVA制作小游戏--飞机大战(二) 最下方附整个程序的文件下载链接 代码展示 主界面 impor ...

  7. 用JAVA制作小游戏——飞机大战(二)

    本篇博客是对飞机大战游戏使用代码的展示 重难点: 首先需要鼠标能够控制战机,使鼠标在窗口内时始终能够使战机的位置与鼠标相同,实现鼠标控制战斗机移动. 其次需要能够以一定的速度产生子弹和敌机,并且以一定 ...

  8. 用JAVA制作小游戏——推箱子(三)

    本篇博客主要是对推箱子地图编辑器功能的代码讲解. 首先给出这段代码的部分运行截图: 重难点: 地图编辑器主要有三个重难点: 需要有一个绘制地图的界面 能够实现地图绘制的功能 地图绘制完成后需要将地图内 ...

  9. 用JAVA制作小游戏——推箱子(二)

    本篇博客主要是推箱子游戏界面功能的代码讲解. 首先先给出这段代码的部分运行截图: 重难点: 游戏界面主要有五个重难点: 固定好地图的位置 地图的显示 构建菜单栏 读取地图数据 玩家操作功能实现 地图的 ...

最新文章

  1. windows版本下使用xdebug
  2. 人类为什么更聪明 | 人脑神经元关键结构差异被揭示
  3. rsync+inotify实现数据的实时备份
  4. Java中Comparator和Comparable之间的区别
  5. idea测试连接mysql报错08001_IDEA连接MySQL(版本8)数据库失败的解决方法(报错08001)...
  6. 【Android】14.2 外部文件存储和读取
  7. java添加锁_java – 如何在这种情况下添加锁?
  8. python pip install pillow_Windows下Python中pip安装Pillow报错总结(转载)
  9. 终结篇—用BAT文件删除远程主机系统垃圾文件的方法
  10. 【Python | 入门】 从输出打印到面对对象(五分钟速通Python)
  11. WIN7 通过4G模块 拨号上网过程
  12. Codeforces 1023G:Pisces(最长反链)
  13. 使用IDEA创建一个Solidity项目
  14. gpg生成秘钥时卡死
  15. 科学中有故事,故事中有科学
  16. 王阳明《心学》小总结
  17. 月薪3500的我,是怎样把自己 “逼”成月入十万的?
  18. ​12864无字库液晶显示(一)
  19. 网易我的世界服务器清除TNT,以及圈地领地,命令方块使用
  20. CSS3绘画卡通形象

热门文章

  1. 太强了~Python 开发桌面小工具,让代码替我们干重复的工作
  2. c语言实践报告计算机,c语言实践报告计算机
  3. 如何选择集团ERP管理系统_哪家的集团ERP管理系统好
  4. 用Python爬取2019富豪榜数据分析
  5. 硬件钱包linux安装,使用Trezor硬件钱包管理Omni版USDT教程
  6. 计算机主板的英文,主板英语怎么说,主板翻译成英文?
  7. 简单几步让App Store软件下载快如迅雷
  8. 采样与保持仿真实验(计控实验一simulink)
  9. CleanMyMac X2023免费下载及安装使用教程
  10. 单机网页游戏的如何修改服务器数据库,三国志单机页游网页版一键端+教程及修改工具...