java制作密室脱逃,Escape the men's room(Java版密室逃脱)
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版密室逃脱)相关推荐
- java制作纯字rpg小游戏_求java rpg小游戏源代码 最好是文字rpg 不需要很复杂 只是交作业用...
展开全部 连连看的小源码 package Lianliankan; import javax.swing.*; import java.awt.*; import java.awt.event.*; ...
- 类似java制作计算器的游戏_急求一Java编写的类似计算机带的计算器的程序!!...
展开全部 No 1. import java.awt.*; import java.awt.event.*; import java.applet.*; public class Calculator ...
- java制作烟花源码_java源码解读-java烟花代码!
解读JAVA代码 正在自学java,刚入门,图形界面没太看懂 贴一段简单的代码,求逐行解释.. java程序解析 public class text6{ final String color; pub ...
- java制作安卓游戏脚本_autoA开源(用java写安卓无障碍脚本)
类 ScreenLib类 封装了模糊找色,屏幕点击,屏幕滑动等方法. TsFrame抽象类 封装了脚本的逻辑流程(帮助你快速开发脚本) Fa和Fb 都是继承自F,他们大部分方法都是一样的.重新封装了屏 ...
- Java制作VCARD
转载自 Java制作VCARD 简介: vCard是电子名片的文件格式标准.它一般附加在电子邮件之后,但也可以用于其它场合(如在互联网上相互交换).vCard可包含的信息有:姓名.地址资讯.电话号 ...
- 用JAVA制作小游戏——飞机大战(三)
本篇博客是对飞机大战游戏项目完整代码的展示 详细代码讲解: 用JAVA制作小游戏--飞机大战(一) 用JAVA制作小游戏--飞机大战(二) 最下方附整个程序的文件下载链接 代码展示 主界面 impor ...
- 用JAVA制作小游戏——飞机大战(二)
本篇博客是对飞机大战游戏使用代码的展示 重难点: 首先需要鼠标能够控制战机,使鼠标在窗口内时始终能够使战机的位置与鼠标相同,实现鼠标控制战斗机移动. 其次需要能够以一定的速度产生子弹和敌机,并且以一定 ...
- 用JAVA制作小游戏——推箱子(三)
本篇博客主要是对推箱子地图编辑器功能的代码讲解. 首先给出这段代码的部分运行截图: 重难点: 地图编辑器主要有三个重难点: 需要有一个绘制地图的界面 能够实现地图绘制的功能 地图绘制完成后需要将地图内 ...
- 用JAVA制作小游戏——推箱子(二)
本篇博客主要是推箱子游戏界面功能的代码讲解. 首先先给出这段代码的部分运行截图: 重难点: 游戏界面主要有五个重难点: 固定好地图的位置 地图的显示 构建菜单栏 读取地图数据 玩家操作功能实现 地图的 ...
最新文章
- windows版本下使用xdebug
- 人类为什么更聪明 | 人脑神经元关键结构差异被揭示
- rsync+inotify实现数据的实时备份
- Java中Comparator和Comparable之间的区别
- idea测试连接mysql报错08001_IDEA连接MySQL(版本8)数据库失败的解决方法(报错08001)...
- 【Android】14.2 外部文件存储和读取
- java添加锁_java – 如何在这种情况下添加锁?
- python pip install pillow_Windows下Python中pip安装Pillow报错总结(转载)
- 终结篇—用BAT文件删除远程主机系统垃圾文件的方法
- 【Python | 入门】 从输出打印到面对对象(五分钟速通Python)
- WIN7 通过4G模块 拨号上网过程
- Codeforces 1023G:Pisces(最长反链)
- 使用IDEA创建一个Solidity项目
- gpg生成秘钥时卡死
- 科学中有故事,故事中有科学
- 王阳明《心学》小总结
- 月薪3500的我,是怎样把自己 “逼”成月入十万的?
- ​12864无字库液晶显示(一)
- 网易我的世界服务器清除TNT,以及圈地领地,命令方块使用
- CSS3绘画卡通形象
热门文章
- 太强了~Python 开发桌面小工具,让代码替我们干重复的工作
- c语言实践报告计算机,c语言实践报告计算机
- 如何选择集团ERP管理系统_哪家的集团ERP管理系统好
- 用Python爬取2019富豪榜数据分析
- 硬件钱包linux安装,使用Trezor硬件钱包管理Omni版USDT教程
- 计算机主板的英文,主板英语怎么说,主板翻译成英文?
- 简单几步让App Store软件下载快如迅雷
- 采样与保持仿真实验(计控实验一simulink)
- CleanMyMac X2023免费下载及安装使用教程
- 单机网页游戏的如何修改服务器数据库,三国志单机页游网页版一键端+教程及修改工具...