gpt4 book ai didi

Java:从数组中绘制图形

转载 作者:行者123 更新时间:2023-11-29 03:34:26 25 4
gpt4 key购买 nike

我正在为一个学校项目开发我的第一个 Java 游戏,我在根据数组中的信息绘制图形时遇到了一些问题。

我基本上想做的是创建一个二维数组(矩阵),它将存储有关玩家可以在其中移动的世界的所有信息。所以数组中的一些元素将包含一堵墙,其他元素将包含供玩家移动的开放空间,等等...

我有我正在使用的示例代码:

/**
*
* @author Rasztemberg
*/
package simpleGame;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;


/**
* GameBoard is a part of JPanel.
* It has a Graphical Object {@link Graphics}
* that can be used to render shapes etc. Pass it's reference to any object you
* want to display in the gameBoard panel.
*/


public class GameBoard extends JPanel implements KeyListener{



Player player;
Player enemy;

public GameBoard(){

// SETUP PLAYER ON THE BOARD;
int xPos = 0;
int yPos = 0;
int width = 20;
int height = 20;
Color playerC = Color.BLUE;

player = new Player(xPos, yPos, width, height, playerC);

// SETUP ENEMY ON THE BOARD;
enemy = new Player(100, 100, width, height, Color.RED);

addKeyListener(this);
}


/*
*
* JPanel function to display all gameBoard object graphics.
*/

@Override
public void paint(Graphics g){
super.paint(g); // Call it's parent for proper rendering.

player.display(g);
enemy.display(g);
}


@Override
public void keyTyped(KeyEvent e) {}

@Override
public void keyPressed(KeyEvent e) {

int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_LEFT) {
player.moveLeft();
}

if (keyCode == KeyEvent.VK_RIGHT) {
player.moveRight();
}

if (keyCode == KeyEvent.VK_DOWN) {
player.moveDown();
}

if (keyCode == KeyEvent.VK_UP) {
player.moveUp();
}
}

@Override
public void keyReleased(KeyEvent e) {}


/**
* Set's focus on the panel so key events are catch.
*/

public boolean isFocusTraversable() {
return true;
}

还有,

/**
* @author Rasztemberg
*/
package simpleGame;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import javax.swing.JPanel;


/**
* This is main player Class.
*
*/


public class World {

// Snake parameters

private int x;
private int y;
private int width;
private int height;
private Color color;

/**
* Class constructor. Called when instantiated.
* Assigns x and y coordinates to position the player.
* Sets width, height and color to the rendered object.
*
*/


public World(int x, int y, int w, int h, Color c){

this.x = x;
this.y = y;
this.width = w;
this.height = h;
this.color = c;
}

/**
* Accepts Graphics object to render
* player 1 shape
*/

public void display(Graphics g) {

// This is player rendered graphics.
Graphics2D walls = (Graphics2D) g; // Graphical library to render shapes.
walls.setColor(color);
walls.drawRect(x, y, width, height);
walls.fillRect(x, y, width, height);
}
}

现在,我创建了这个 for 循环来填充测试数组:

int[][] wallArray = new int[800][600];

for (int x = 0; x < wallArray.length; x++) {
for (int y = 0; y < wallArray.length; y++) {
wallArray[x][y] = 1;
}
}

wallArray[100][100] = 0;
greatWall = new World(wallArray);

你知道我怎么画这个数组吗?对于代码的长度,我深表歉意...

最佳答案

只需在您的 GameBoard 的绘图中根据阵列绘制一些东西:

@Override
public void paint(Graphics g){
super.paint(g); // Call it's parent for proper rendering.
for (int i = 0; i<wallArray.length; i++)
for (int j = 0; j<wallArray[0].length; j++){
//do something for every field in the array
//i.e. g.setColor(Color.getColor(wallArray[i][j], 50, 50));
//g.drawLine(i,j,i,j);
}
player.display(g);
enemy.display(g);
}

但是您应该首先阅读一些有关使用 Java 绘画的教程: http://www.oracle.com/technetwork/java/painting-140037.html

关于Java:从数组中绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16277156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com