如何在Java中实现图像跳转
我需要帮助在java中进行字符跳转。 这是我的主课 Board.java如何在Java中实现图像跳转,java,Java,我需要帮助在java中进行字符跳转。 这是我的主课 Board.java package com.mime.mario; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.mime.mario.graphics.Background; import com.mime.mario.graphics.BasicImages; import com.mime.mario.graphics.Gr
package com.mime.mario;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.mime.mario.graphics.Background;
import com.mime.mario.graphics.BasicImages;
import com.mime.mario.graphics.Grass;
import com.mime.mario.graphics.Player;
public class Board extends JPanel implements MouseListener, ActionListener {
private static final long serialVersionUID = 1L;
BasicImages bi;
Background b;
Grass g1;
Player p;
Timer time;
int i = 0;
Font font = new Font("Arial", Font.BOLD, 20);
String score = "Score = " + i;
public Board() {
bi = new BasicImages();
g1 = new Grass();
b = new Background();
p = new Player();
time = new Timer(5, this);
time.start();
addMouseListener(this);
addKeyListener(new Al());
setFocusable(true);
}
public void actionPerformed(ActionEvent e) {
repaint();
}
public void paint(Graphics g) {
g.drawImage(b.getBackground(), 0, 0, null);
// prints the walls
for (int x = 50; x < 896; x += 128) {
g.drawImage(bi.getWall(), x, 120, null);
}
for (int x = 480; x < 700; x += 64) {
g.drawImage(bi.getWall(), x, 350, null);
}
// prints the coins
for (int x = 100; x < 900; x += 128) {
g.drawImage(bi.getCoin(), x, 100, null);
}
// prints the grass
for (int x = -20; x < 960; x += 64) {
for (int y = 520; y < 590; y += 64) {
g.drawImage(g1.getGrass(), x, y, null);
}
}
g.drawImage(p.getPlayer(),p.getX(),p.getY(),null);
g.setFont(font);
g.drawString(score, 416, 64);
}
public void mouseClicked(MouseEvent e) {
i++;
score = "Score = " + i;
repaint();
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public class Al extends KeyAdapter {
Rectangle nextlevel = new Rectangle(900, 430, 32, 700);
Rectangle player = new Rectangle(p.getX(), p.getY(), 44, 77);
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_LEFT) {
p.move(-32, 0);
}
if (keycode == KeyEvent.VK_RIGHT) {
if (!player.intersects(nextlevel)) {
p.move(32, 0);
}
}
if (keycode == KeyEvent.VK_UP) {
p.move(0, -32);
}
if (keycode == KeyEvent.VK_DOWN) {
p.move(0, 32);
}
if (keycode == KeyEvent.VK_SPACE) {
p.move(0, -32);
}
if (player.intersects(nextlevel)) {
System.out.println("gshjfkjasf");
}
repaint();
}
public void keyRelased(KeyEvent e) {
p.move(0, 0);
}
}
我知道这真的很长,但如果你能花时间看一下,告诉我如何让角色跳跃,我将非常感激。
非常感谢。请帮帮我 我只是在猜测,但是: 现在,当您按下向上箭头键时,角色将被绘制到一个新位置(比之前的位置高出30像素) 你希望它向上移动几次,暂停,向下移动几次 执行此操作的最简单方法是按您的要求执行,但它会使系统在运行时无响应:
int n;
for (n = 0; n < 3; ++n) {
p.move(0, -32);
sleep(200);
}
for (n = 0; n < 3; ++n) {
p.move(0, 32);
sleep(200);
}
intn;
对于(n=0;n<3;++n){
p、 移动(0,-32);
睡眠(200);
}
对于(n=0;n<3;++n){
p、 移动(0,32);
睡眠(200);
}
如果你真的想写一个游戏,你还有很长的路要走
编辑以添加:
可能您需要Thread.sleep()而不是sleep——我不是java人,但是
此时,您确实应该阅读一些java教程。您可以用sprite的
wait
方法替换sleep
方法。例如
//Creating a simple sprite
Sprite mario;
//Replacing sleep
mario.wait(200);
或者,如果您使用的是可运行的游戏画布,您可以使用
Thread.Sleep
。这里唯一相关的文件是player.java和board.java。这里有什么问题吗?我想让角色跳跃,它说我需要创建睡眠方法
//Creating a simple sprite
Sprite mario;
//Replacing sleep
mario.wait(200);