2012-02-17 17 views
2

Javaで文字ジャンプをするには、助けが必要です。 これは私のメインクラスBoard.javaJavaで画像をジャンプするにはどうすればいいですか

ある

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); 
} 
} 

その他のクラス: Player.java

package com.mime.mario.graphics; 

import java.awt.Image; 

import javax.swing.ImageIcon; 

public class Player { 
public int x = 75; 
public int y =460; 

ImageIcon img = new ImageIcon("C://Games//Mario//Characters//mario temporary.png"); 
public Image mario = img.getImage(); 

public Image getPlayer() { 
return mario; 
} 
public void move(int dx, int dy){ 

x+=dx; 
y+=dy; 
} 
public int getX(){ 
return x; 
} 
public int getY(){ 
return y; 
} 
} 

私は、これは本当に長いですが、あなたは時間がかかることができればちょうど見て知っていますそれを超えてキャラクターを飛ばす方法を教えてください。本当に感謝しています。 ありがとうございました!私を助けてください!

+0

ここで関連するファイルは、player.javaとboard.javaだけです。 – egrunin

+0

私はちょうどそれを編集しました –

+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); 
} 

あなたが実際にゲームを作成しようとしている場合、あなたが持っています長い道のり。代わりに、睡眠の

をおそらくあなたは(のThread.sleepが必要) - - 私ではないJavaの人が、this might help you

編集を追加します。

この時点で、実際にはいくつかのJavaチュートリアルを読む必要があります。

+0

私は睡眠のエラーを取得 –

+0

それは私が睡眠のためのメソッドを作成する必要があると言います –

1

sleepメソッドをスプライトのwaitメソッドに置き換えることができます。例えば。

//Creating a simple sprite 
Sprite mario; 

//Replacing sleep 
mario.wait(200); 

それとも、Runnableをゲームキャンバスを使用している場合は、Thread.Sleepを使用することができます。

関連する問題