📄 gallery.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.image.MemoryImageSource;
//import java.awt.image.*;
import java.awt.image.PixelGrabber;
public class gallery extends Applet implements KeyListener, ActionListener{
public Image offScreenImage;
public Ticker t;
public static int[] screen;
public static int[] screenBuffer;
public static boolean[] buffer;
public MemoryImageSource source;
public Image img;
public camera Camera;
public static texture[] textures;
public model world;
public static polygon3D[] polygons;
public double lastTime;
public int[] frameRate;
public int fps;
public int counter;
public static int visiblePolygon;
public String message;
public void init(){
Color c1 = new Color(40,40,40);
Color c2 = new Color(41,41,40);
System.out.println(c1.getRGB() - c2.getRGB());
frameRate = new int[30];
Camera = new camera(new vector(10,8,-9));
screen = new int[640*480];
screenBuffer = new int[640*480];
buffer = new boolean[640*480];
source = new MemoryImageSource(640, 480, screen, 0, 640);
source.setAnimated(true);
source.setFullBufferUpdates(true);
img = createImage(source);
addKeyListener(this);
requestFocus();
t = new Ticker(0);
t.addActionListener(this);
t.start();
}
public final void actionPerformed(ActionEvent e){
if(textures == null){
loadTexture();
}
if(counter == 0){
Camera = new camera(new vector(10,5,-9));
gameData.makeData();
loadModels();
}
counter++;
gameData.update();
visiblePolygon = 0;
double thisTime = System.currentTimeMillis();
frameRate[counter%30] = (int)(1000/(thisTime - lastTime));
fps = 0;
for(int i = 0; i < 30; i++)
fps+=frameRate[i];
lastTime = thisTime;
fps= fps/30;
clearScreen();
camera.update();
LightSource.update();
world.update();
world.sort();
world.draw();
message = "FPS: " + fps + " " + "visible polygons: " + visiblePolygon;
source.newPixels(0, 0, 640, 480);
myPaint(this.getGraphics());
}
public final void clearScreen(){
for(int i = 0; i < screen.length; i++){
screen[i] = -134250;
}
}
public final void myPaint(Graphics g){
Graphics offScreenGraphics;
if (offScreenImage == null) {
offScreenImage = createImage(640, 480);
}
offScreenGraphics = offScreenImage.getGraphics();
offScreenGraphics.drawImage(img, 0, 0, this);
if(message != null)
offScreenGraphics.drawString(message, 10,10);
g.drawImage(offScreenImage, 0, 0, this);
}
public final void paint(Graphics g){
clearScreen();
myPaint(this.getGraphics());
}
public final void update(Graphics g){}
public void loadTexture(){
textures = new texture[18];
clearScreen();
textures[0] = new texture(getImage(getDocumentBase(), "Image\\" + "0.jpg"), 9, 8);
textures[1] = new texture(getImage(getDocumentBase(), "Image\\" + "1.jpg"), 9, 9);
textures[2] = new texture(getImage(getDocumentBase(), "Image\\" + "2.jpg"),8, 8);
textures[3] = new texture(getImage(getDocumentBase(), "Image\\" + "3.jpg"),8, 4);
textures[4] = new texture(getImage(getDocumentBase(), "Image\\" + "4.jpg"),8, 8);
textures[5] = new texture(getImage(getDocumentBase(), "Image\\" + "5.jpg"),1, 1);
textures[6] = new texture(getImage(getDocumentBase(), "Image\\" + "6.jpg"),1, 1);
textures[7] = new texture(getImage(getDocumentBase(), "Image\\" + "7.jpg"),1, 1);
textures[8] = new texture(getImage(getDocumentBase(), "Image\\" + "8.jpg"),1, 1);
textures[9] = new texture(getImage(getDocumentBase(), "Image\\" + "9.jpg"),1, 1);
textures[10] = new texture(getImage(getDocumentBase(), "Image\\" + "10.jpg"),1, 1);
textures[11] = new texture(getImage(getDocumentBase(), "Image\\" + "11.jpg"),7, 7);
textures[12] = new texture(getImage(getDocumentBase(), "Image\\" + "12.jpg"),7, 7);
textures[13] = new texture(getImage(getDocumentBase(), "Image\\" + "13.jpg"),6, 6);
textures[14] = new texture(getImage(getDocumentBase(), "Image\\" + "14.jpg"),9, 8);
textures[15] = new texture(getImage(getDocumentBase(), "Image\\" + "15.gif"),9, 8);
textures[16] = new texture(getImage(getDocumentBase(), "Image\\" + "16.jpg"),8, 7);
textures[17] = new texture(getImage(getDocumentBase(), "Image\\" + "17.jpg"),9, 9);
}
public void loadModels(){
modelBuilder.build();
world = modelBuilder.world;
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
if(e.getKeyChar() == 'w')
camera.MOVE_FORWARD = false;
else if(e.getKeyChar() == 's')
camera.MOVE_BACKWARD = false;
else if(e.getKeyChar() == 'a')
camera.SLIDE_LEFT = false;
else if(e.getKeyChar() == 'd')
camera.SLIDE_RIGHT = false;
if(e.getKeyCode() == KeyEvent.VK_UP)
Camera.UP_TYPED= false;
else if(e.getKeyCode() == KeyEvent.VK_DOWN)
Camera.DOWN_TYPED = false;
else if(e.getKeyCode() == KeyEvent.VK_LEFT)
Camera.LEFT_TYPED = false;
else if(e.getKeyCode() == KeyEvent.VK_RIGHT)
Camera.RIGHT_TYPED = false;
}
public void keyPressed(KeyEvent e){
if(e.getKeyChar() == 'w')
camera.MOVE_FORWARD = true;
else if(e.getKeyChar() == 's')
camera.MOVE_BACKWARD = true;
else if(e.getKeyChar() == 'a')
camera.SLIDE_LEFT = true;
else if(e.getKeyChar() == 'd')
camera.SLIDE_RIGHT = true;
if(e.getKeyCode() == KeyEvent.VK_UP)
Camera.UP_TYPED= true;
else if(e.getKeyCode() == KeyEvent.VK_DOWN)
Camera.DOWN_TYPED = true;
else if(e.getKeyCode() == KeyEvent.VK_LEFT)
Camera.LEFT_TYPED = true;
else if(e.getKeyCode() == KeyEvent.VK_RIGHT)
Camera.RIGHT_TYPED = true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -