// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: GameCanvas.java
package tk.damnesia.main;
import input.Key;
import input.KeyHandler;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferStrategy;
import java.util.ArrayList;
import java.util.Iterator;
import maths.Vector2f;
import resource.ResourceManager;
import tk.damnesia.entity.*;
import tk.damnesia.gui.Frame;
import tk.damnesia.gui.PopUpMessage;
// Referenced classes of package tk.damnesia.main:
// HighscoreHelper
public class GameCanvas extends Canvas implements Runnable, MouseListener,
KeyListener {
public GameCanvas() {
ResourceManager.inits();
framerate = 60D;
running = true;
gameOver = false;
menu = true;
name = "Enter a username";
drawX = 0;
blockspeed = 0.2F;
start();
}
public static void main(String args[]) {
Frame frame = new Frame();
Canvas canvas = new GameCanvas();
canvas.setMinimumSize(new Dimension(frame.WIDTH, frame.HEIGHT - 2));
canvas.setMaximumSize(new Dimension(frame.WIDTH, frame.HEIGHT - 2));
canvas.setPreferredSize(new Dimension(frame.WIDTH, frame.HEIGHT - 2));
frame.add(canvas);
frame.pack();
}
public void initialize() {
if (!gameOver) {
handler = new KeyHandler();
addKeyListener(handler);
addKeyListener(this);
addMouseListener(this);
setMinimumSize(new Dimension(800, 448));
setMaximumSize(new Dimension(800, 448));
setPreferredSize(new Dimension(800, 448));
}
entities = new ArrayList();
p1 = new Player(new Vector2f(392D, 217D), new Vector2f(16D, 16D));
entities.add(p1);
entities.add(new PopUpMessage("STARTED THE GAME!", new Vector2f(20D,
80D), 0.0F));
entities.add(new Obstacle(new Vector2f(1810D, 60D), new Vector2f(16D,
16D), (byte) 0));
entities.add(new Obstacle(new Vector2f(1310D, 150D), new Vector2f(16D,
16D), (byte) 0));
entities.add(new Obstacle(new Vector2f(5210D, 260D), new Vector2f(16D,
16D), (byte) 0));
gameOver = false;
score = 0;
blockspeed = -0.1F;
prepareImages();
requestFocus();
}
private void prepareImages() {
for (int i = 0; i < ResourceManager.alphabet.length; i++)
prepareImage(ResourceManager.alphabet[i], null);
for (int i = 0; i < ResourceManager.Wall.length; i++) {
prepareImage(ResourceManager.Wall[i], null);
prepareImage(ResourceManager.WallDownLeft[i], null);
prepareImage(ResourceManager.WallDownRight[i], null);
prepareImage(ResourceManager.WallTopRight[i], null);
prepareImage(ResourceManager.WallTopLeft[i], null);
}
for (int i = 0; i < ResourceManager.bg.length; i++)
prepareImage(ResourceManager.bg[i], null);
prepareImage(ResourceManager.bullet, null);
}
public void start() {
running = true;
Thread thread = new Thread(this);
thread.setPriority(10);
thread.start();
}
public void stop() {
running = false;
}
public void run() {
long lastTime = System.nanoTime();
double unprocessed = 0.0D;
int frames = 0;
long lastTimer1 = System.currentTimeMillis();
try {
initialize();
} catch (Exception e) {
e.printStackTrace();
return;
}
int toTick = 0;
long lastRenderTime = System.nanoTime();
int min = 0x3b9ac9ff;
int max = 0;
while (running) {
double nsPerTick = 1000000000D / framerate;
boolean shouldRender = false;
for (; unprocessed >= 1.0D; unprocessed--)
toTick++;
int tickCount = toTick;
if (toTick > 0 && toTick < 3)
tickCount = 1;
if (toTick > 20)
toTick = 20;
for (int i = 0; i < tickCount; i++) {
toTick--;
update();
shouldRender = true;
}
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
} else {
if (shouldRender) {
frames++;
Graphics g = bs.getDrawGraphics();
render(g);
long renderTime = System.nanoTime();
int timePassed = (int) (renderTime - lastRenderTime);
if (timePassed < min)
min = timePassed;
if (timePassed > max)
max = timePassed;
lastRenderTime = renderTime;
}
long now = System.nanoTime();
unprocessed += (double) (now - lastTime) / nsPerTick;
lastTime = now;
try {
Thread.sleep(1L);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (shouldRender && bs != null)
bs.show();
if (System.currentTimeMillis() - lastTimer1 > 1000L) {
lastTimer1 += 1000L;
fps = frames;
frames = 0;
}
}
}
}
private void update() {
keys = handler.getKeys();
if (!menu) {
if (!gameOver) {
score++;
for (Iterator iterator = entities.iterator(); iterator
.hasNext();) {
Entity e = (Entity) iterator.next();
if (e instanceof Obstacle) {
if (e.getX() < ((Entity) entities.get(0)).getX())
e.setX(e.getX() + (double) blockspeed);
else
e.setX(e.getX() - (double) blockspeed);
if (e.getY() < ((Entity) entities.get(0)).getY())
e.setY(e.getY() + (double) blockspeed);
else
e.setY(e.getY() - (double) blockspeed);
}
if (e instanceof Player)
((Player) e).update(keys);
else
e.update();
if (e instanceof PopUpMessage)
((PopUpMessage) e).isDone();
}
checkCollisions();
} else if (((Key) keys.get(0)).isDown())
initialize();
if (score > highscore)
highscore = score;
if (score == 20) {
entities.add(new Obstacle());
entities.set(
1,
new PopUpMessage((new StringBuilder(String
.valueOf(name))).append(" STARTED THE GAME!")
.toString(), new Vector2f(20D, 80D)));
}
if (score % 1000 == 0)
blockspeed += 0.1F;
if (score == 500) {
entities.set(1, new PopUpMessage("Awesome!", new Vector2f(20D,
80D)));
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
blockspeed += 0.1F;
}
if (score == 1000) {
entities.set(1, new PopUpMessage("Dodging like a boss!",
new Vector2f(20D, 80D)));
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
}
if (score == 2000) {
entities.set(1, new PopUpMessage("wcfs96 is a cheater!",
new Vector2f(20D, 80D)));
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
}
if (score == 3000) {
entities.set(1, new PopUpMessage("I c what you did there...",
new Vector2f(20D, 80D)));
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
}
if (score == 4000) {
entities.set(1, new PopUpMessage("Needs MOAR obstacles!",
new Vector2f(20D, 80D)));
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
}
if (score == 5000) {
entities.set(1, new PopUpMessage("You dead yet?", new Vector2f(
20D, 80D)));
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
entities.add(new Obstacle());
}
}
}
private void checkCollisions() {
for (int i = 0; i < entities.size() - 1; i++) {
if (((Entity) entities.get(0)).intersects((Entity) entities
.get(i + 1)) && i != 0) {
entities.set(1, new PopUpMessage((new StringBuilder(
"GAME OVER! Score: ")).append(score).toString(),
new Vector2f(20D, 80D), 0.8F));
Thread t = new Thread(new HighscoreHelper(name, score));
t.start();
gameOver = true;
}
if (entities.get(0) instanceof Player) {
for (int j = 0; j < ((Player) entities.get(0)).bullets.size(); j++)
if (i != 0
&
没有合适的资源?快使用搜索试试~ 我知道了~
经典小游戏 - 石砖小游戏
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共42个文件
class:18个
java:18个
prefs:2个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
需积分: 5 0 下载量 110 浏览量
2023-05-14
17:45:08
上传
评论
收藏 51KB RAR 举报
温馨提示
经典小游戏 - 石砖 适合人群:喜欢游戏开发者+java编程者
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 42 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/86b6c80cf5f6435287a03f0aa06edefe_qq_44000141.jpg!1)
小鸿的摸鱼日常
- 粉丝: 3783
- 资源: 22
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 基于Python的无人载具/无人船上位机控制系统可导入坐标自动巡航,带语音反馈功能+源码解析+开发文档(毕设&课设&项目开发)
- 附件1:赣南科技学院课程设计报告撰写规范.docx
- 编程实战:基于JAVA和SQL的离散数学题库管理系统(源代码+文档+外文翻译)
- 毕设项目:离散数学题库管理系统(JAVA+SQL+源代码+文档+外文翻译)
- 基于STM32F1系列微控制器的四旋翼飞行控制器+无人机自动控制+源码(毕业设计&课程设计&项目开发)
- library_OA.zip
- DS18B20温度传感器开发教程.docx
- 基于python开发的无人机群控与协同作业网络化控制平台+源码+算法(毕业设计&课程设计&项目开发)
- cosmos.opml
- C# yolov8 模型效果验证工具(OnnxRuntime+ByteTrack推理).rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)