タイトルはほぼすべて説明していますが、最近私は2D配列について学びましたが、私が作成しているこのスペースインベーダーゲームで2D配列を正しく動かす方法について少し混乱しています。スペースインベーダーのための2D配列の移動ゲーム
現在、エイリアンは左から右に移動しています(逆も同様です)。しかし、すべて同時に下に移動するわけではなく、列ごとに下に移動します。コードを編集する場所は誰でも知っていますか?ここで
はエイリアンのために私のコードです:
class Aliens {
int x = 100, y = 75, deltaX = 1;
Aliens (int x, int y) {
this.x = x;
this.y = y;
}
void drawAlien() {
fill(255);
rect(x, y, 25, 25);
}
void moveAlien() {
x = x + deltaX;
if (x >= width) {
y = y + 20;
deltaX = - deltaX;
} else if (x <=0) {
y = y + 20;
deltaX = - deltaX;
}
}
void updateAlien() {
drawAlien();
moveAlien();
}
}
と私のメインクラス:
import ddf.minim.*;
//Global Variables
PImage splash;
PFont roboto;
Defender player;
Aliens[][] alienArray = new Aliens[15][3];
Missile missile;
int gameMode = 0;
int score = 0;
void setup() {
size(1000, 750);
rectMode(CENTER);
textAlign(CENTER, CENTER);
splash = loadImage("Splash.png");
player = new Defender();
for (int row = 0; row < 15; row++) {
for (int column = 0; column < 3; column++) {
alienArray[row][column] = new Aliens((row + 1) * 50, (column + 1) * 50);
}
}
roboto = createFont("Roboto-Regular.ttf", 32);
textFont(roboto);
}
void draw() {
if (gameMode == 0) {
background(0);
textSize(75);
text("Space Invaders", width/2, height/8);
textSize(25);
text("Created by Ryan Simms", width/2, height/4);
textSize(45);
text("Press SPACE to Begin", width/2, height - 100);
image(splash, width/2-125, height/4 + 75);
} else if (gameMode == 1) {
background(0);
score();
player.updateDefender();
for (int row = 0; row < 10; row ++) {
for (int column = 0; column < 3; column++) {
alienArray[row][column].updateAlien();
}
}
if (missile != null) {
missile.updateMissile();
}
if (keyPressed) {
if (key == ' ') {
if (missile == null) {
missile = new Missile(player.x);
}
}
}
if (missile != null) {
if (missile.y <= 0) {
missile = null;
}
}
}
}
void score() {
textSize(20);
text("Score: " + score, 40, 15);
}
void keyPressed() {
if (key == ' ') {
gameMode = 1;
}
}
私はこれを行う方法、または一般的な方向の少なくとも1点について説明したいと思っていました。 – Ryan
@Ryan問題の根源を教えてくれました。互いの間を移動し始める。プログラミング方法を学びたい場合は、コードをリファクタリングする方法について考える必要があります。あなたの質問はコードを編集する場所でした。私はそれに答えた。あなたのためにそれをコーディングすることは、あなたの学習にはほとんど価値がないでしょう。 SOはそのようなサイトではありません。 –
私はこれまでにこのサイトで他に1つの質問をしてきました。人々は私を助けてくれて満足していました。私は以前に問題が何かを理解しようと数時間を費やしました。私はしばしば助けを求めるのが好きではありませんが、私がするときは、少なくとも私が何を変える必要があるかを私に見せてくれるのはうれしいでしょう。エイリアンクラスで2D配列を作成する必要がありますか?私は2D配列を初めて使いました。私は大学から助けを得ることになりましたが、今週はオフになりました。 – Ryan