// 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
&
没有合适的资源?快使用搜索试试~ 我知道了~
Java小游戏之ShitBricks
共47个文件
java:18个
class:18个
xml:3个
需积分: 0 0 下载量 186 浏览量
2024-03-20
13:03:49
上传
评论
收藏 53KB RAR 举报
温馨提示
Java小游戏之ShitBricks
资源推荐
资源详情
资源评论
收起资源包目录
ShitBricks.rar (47个子文件)
ShitBricks
.classpath 301B
.settings
org.eclipse.jdt.core.prefs 629B
org.eclipse.core.resources.prefs 88B
src
input
KeyHandler.java 2KB
Key.java 936B
resource
ResourceManager.java 5KB
res
images.png 5KB
maths
Vector2f.java 505B
tk
damnesia
gui
PopUpMessage.java 3KB
Frame.java 605B
DamnApplet.java 717B
entity
Obstacle.java 2KB
Entity.java 3KB
Bullet.java 1KB
Animation.java 1KB
Player.java 3KB
main
GameCanvas.java 12KB
HighscoreHelper.java 2KB
world
Tile.java 443B
World.java 1KB
WallTile.java 827B
FloorTile.java 833B
.idea
workspace.xml 3KB
misc.xml 278B
modules.xml 267B
.gitignore 184B
bin
input
Key.class 1KB
KeyHandler.class 2KB
resource
ResourceManager.class 4KB
res
images.png 5KB
maths
Vector2f.class 602B
tk
damnesia
gui
PopUpMessage.class 4KB
Frame.class 707B
DamnApplet.class 939B
entity
Bullet.class 1KB
Obstacle.class 2KB
Player.class 4KB
Entity.class 3KB
Animation.class 2KB
main
HighscoreHelper.class 3KB
GameCanvas.class 12KB
world
FloorTile.class 1KB
World.class 1KB
Tile.class 381B
WallTile.class 1KB
ShitBricks.iml 471B
.project 386B
共 47 条
- 1
资源评论
清风絮柳
- 粉丝: 1543
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功