最初に、私が間違った場所でこれを尋ねているか、これを尋ねて何か間違ったことをしている場合は、非常に申し訳ありません. 何か修正が必要な場合はお知らせください。マウスでマスを動かして敵をよけようとするドッジボール型のゲームを作っています。敵は正方形で、画面のランダムな側面から出てきます。どうすればよいか知りたい:
A. プログラムに独自に正方形を作成させ、プレイヤーのスコアが高いほどその量を増やします。
B. 正方形の出現位置を画面の端のランダムな場所にします。
これが私のコードです。これは、長方形を描く部分です。
public void paint(Graphics g){
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void paintComponent(Graphics g) {
Rectangle player = new Rectangle(playerX, playerY, 50, 50);
g.setColor(Color.blue);
g.fillRect(player.x, player.y, player.width, player.height);
}
GamePanel クラスのコード全体は次のとおりです。
package main;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
public class GamePanel extends JPanel implements Runnable{
//Global variables
//Double buffering
private Image dbImage;
private Graphics dbg;
//JPanel variables
static final int GWIDTH = 500, GHEIGHT = 500;
static final Dimension gameDim = new Dimension(GWIDTH, GHEIGHT);
//Game variable
private Thread game;
private volatile boolean running = false;
public boolean mouseClicked = false;
//Character variables
int playerX = 150, playerY = 150;
public class Mouse extends MouseAdapter{
public void mousePressed(MouseEvent e){
mouseClicked = true;
}
public void mouseReleased(MouseEvent e){
mouseClicked = false;
}
public void mouseMoved(MouseEvent e){
mouseClicked = false;
repaint();
playerX = e.getX()-25;
playerY = e.getY()-25;
if(playerX <= 50){
playerX = 50;
}
else if(playerX >= 400){
playerX = 400;
}
if(playerY <= 25){
playerY = 25;
}
else if(playerY >= 400){
playerY = 400;
}
repaint();
}
}
public GamePanel(){
addMouseMotionListener(new Mouse());
setPreferredSize(gameDim);
setBackground(Color.BLUE);
setFocusable(true);
requestFocus(true);
}
public void run(){
while(running){
}
}
public void addNotify(){
super.addNotify();
startGame();
}
private void startGame(){
if(game == null || !running){
game = new Thread(this);
game.start();
running = true;
}
}
public void stopGame(){
if(running){
running = false;
}
//Paint method
}
public void paint(Graphics g){
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void paintComponent(Graphics g) {
Rectangle player = new Rectangle(playerX, playerY, 50, 50);
g.setColor(Color.blue);
g.fillRect(player.x, player.y, player.width, player.height);
}
private void log(String s){
System.out.println(s);
}
}
お時間をいただきありがとうございます。