最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java版吃豆游戏
时间:2008-04-28 编辑:简简单单 来源:一聚教程网
下载地址:http://download.111com.net/source/396925
package org.loon.test;
import java.awt.Color;
import java.awt.Event;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import java.awt.MediaTracker;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.VolatileImage;
/**
*
*
* Title: LoonFramework
*
*
* Description:
*
*
* Copyright: Copyright (c) 2008
*
*
* Company: LoonFramework
*
*
* License:
*
*
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/
class Timer implements Runnable {
Pacgame ap;
int duration;
private Thread myThread;
private boolean loopf = true;
private long tickCount;
public Timer(Pacgame ap, int duration) {
this.ap = ap;
this.duration = duration;
}
public Timer(Pacgame ap) {
this(ap, 16);
}
public void on() {
myThread = new Thread(this);
myThread.start();
}
public void off() {
loopf = false;
}
public void run() {
loopf = true;
tickCount = System.currentTimeMillis();
while (loopf) {
try {
Thread.sleep(duration);
} catch (Exception e) {
e.printStackTrace();
}
ap.notifyFrame();
}
}
public int frames() {
long nowTick = System.currentTimeMillis();
int frame = (int) (nowTick - tickCount) / duration;
if (frame <= 0) {
frame = 1;
tickCount = nowTick;
} else if (frame > 5) {
frame = 5;
tickCount = nowTick;
} else {
tickCount += frame * duration;
}
return frame;
}
}
public class Pacgame extends Panel implements Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;
private static int WIDTH = 256;
private static int HEIGHT = 224;
Thread thread;
//构造一个双缓冲的、可变的image
VolatileImage offImage;
Image bg, bg0;
CGloader loader;
MazeManager mzmanager;
MapManager emanager;
SpriteManager spmanager, chipmanager;
MonsterSprite redmon, ao, pink, monster;
PacSprite pac;
AttractManager atMng;
Timer timer;
int key = 0;
int score;
int number1;
boolean loadOK = false;
boolean isAttr = false;
public void init() {
ClassLoader cl = getClass().getClassLoader();
Toolkit tk = Toolkit.getDefaultToolkit();
bg0 = tk.createImage(cl.getResource("main.png"));
bg = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB_PRE);
MediaTracker mt = new MediaTracker(this);
mt.addImage(bg0, 0);
try {
mt.waitForID(0);
} catch (Exception e) {
e.printStackTrace();
}
loader = new CGloader("pacchr.png", this);
loader.setAlpha(0, 8);
mzmanager = new MazeManager();
emanager = new MapManager();
spmanager = new SpriteManager(4);
chipmanager = new SpriteManager(5);
pac = new PacSprite(10, 20, loader);
redmon = new RedMonster(10, 10, mzmanager, loader);
redmon.setTarget(pac);
spmanager.add(redmon);
ao = new BlueMonster(9, 13, mzmanager, loader);
ao.setTarget(pac);
spmanager.add(ao);
pink = new PinkMonster(10, 13, mzmanager, loader);
pink.setTarget(pac);
spmanager.add(pink);
monster = new Monster(11, 13, mzmanager, loader);
monster.setTarget(pac);
spmanager.add(monster);
for (int i = 0; i < 5; i++) {
chipmanager.add(new ChipSprite(i * 16, 0, loader, i * 16, 130, 16,
16));
}
atMng = new AttractManager(loader);
timer = new Timer(this, 16);
setBackground(Color.black);
setSize(WIDTH, HEIGHT);
offImage = createVolatileImage(WIDTH, HEIGHT);
}
public void paint(Graphics g) {
if (!loadOK)
return;
do {
int returnCode = offImage.validate(getGraphicsConfiguration());
if (returnCode == VolatileImage.IMAGE_INCOMPATIBLE){
offImage = createVolatileImage(WIDTH, HEIGHT);
}
Graphics volG = offImage.getGraphics();
volG.drawImage(bg, 0, 0, this);
spmanager.draw(volG, this);
pac.draw(volG, this);
chipmanager.draw(volG, this);
if (isAttr)
atMng.draw(volG, this);
volG.dispose();
g.drawImage(offImage, 0, 0, this);
} while (offImage.contentsLost());
}
public void update(Graphics g) {
paint(g);
}
public void start() {
System.gc();
if (thread == null) {
thread = new Thread(this);
thread.start();
}
}
@SuppressWarnings("deprecation")
public void stop() {
if (thread != null) {
thread.stop();
thread = null;
}
}
public void run() {
while (true) {
// MAIN LOOP
score = 0;
number1 = 3;
int stage = 1;
esaInit();
loadOK = true;
while (number1 > 0) {
while (gameMain(stage) == 2) {
if (stage == 2)
gameTheater();
stage++;
number1++;// 1:DEAD 2:CLEAR
esaInit();
}
}
// GAME OVER
isAttr = true;
spmanager.setShow(false);
pac.setShow(false);
atMng.player = true;
atMng.ready = false;
atMng.gameover = true;
repaint();
timer.on();
key = 0;
while (true) {
if (key > 0)
break;
waitFrame();
}
timer.off();
atMng.player = false;
atMng.gameover = false;
}
}
public void esaInit() {
Graphics g = bg.getGraphics();
g.drawImage(bg0, 0, 0, null);
g.dispose();
emanager.init(bg);
}
public int gameMain(int stage) {
atMng.init(bg, score, number1);
spmanager.init();
pac.init();
// 游戏状态 1:DEAD 2:CLEAR
int gamestat = 0;
int renzoku = 0;
boolean ispower = false;
boolean iseyesnd = false;
Sprite chip;
isAttr = true;
int wait;
if ((score == 0) && (number1 == 3)) {
wait = 2000;
} else {
wait = 1000;
}
spmanager.setShow(false);
pac.setShow(false);
atMng.player = true;
atMng.ready = true;
repaint();
sleep(wait);
atMng.setBattle(--number1);
spmanager.setShow(true);
pac.setShow(true);
atMng.player = false;
atMng.ready = true;
repaint();
sleep(wait);
isAttr = false;
int time = 0;
timer.on();
int frame = 1;
while (gamestat == 0) {
for (int l = 0; l < frame; l++) {
int score0 = score;
if (time == 60 * 55) {
spmanager.setNawabari(false);
} else if (time == 60 * 50) {
spmanager.setNawabari(true);
} else if (time == 60 * 30) {
spmanager.setNawabari(false);
&nbs
-
上一个: JAVA项目异常处理(连续)
-
下一个: TWaver 2.0正式发布
相关文章
- 2018最多人玩的佛系手游有哪些 2018最多人玩的佛系手游盘点 05-17
- 马赛克别闹CJ2017全场最魔性VR游戏 07-31
- 夏普大屏电视游戏闪耀China Joy2017 07-27
- 最强游戏机Xbox One X将在中国首秀 07-25
- 国足巨星助力EA冠军杯 球星也有自己的游戏梦 07-21
- 绝地求生大逃杀进不去游戏怎么办 07-14