我正在制作一个游戏,你控制一个方 block ,物体会在随机的地方产生,你必须捡起这些物体才能获得分数,同时还必须躲避从一边到另一边的大方 block 。现在我有 2 个类(一个用于敌人 - 大方 block - 一个用于英雄),我还没有使用生成对象完成点系统,但这不是我现在想做的。
所以我现在的问题是,当你用你的英雄接触“敌人”时,我真的不知道如何让这个人失去游戏/生命。我想知道如何在不类的情况下做到这一点,但我想知道当他们在不同的类(class)时如何做到这一点。
如果有人可以用代码和注释解释如何做到这一点,这会对我有很大帮助:)(我读过一些关于类的“扩展”的内容,但我不确定这是否是我应该使用的或不是)。
这是我的游戏目前的屏幕截图,只是为了更好地说明它:
这是主代码页:
Hero myHero = new Hero(400,480,5);
Enemies myEnemies = new Enemies(50,50,10);
Enemies myEnemies2 = new Enemies(50,350,15);
Enemies myEnemies3 = new Enemies(50,650,12);
void setup() {
size(900,800);
frameRate(30);
smooth();
}
void draw() {
background(0);
myHero.keyPressed();
myEnemies.enemyDisplay();
myEnemies.enemyMove();
myEnemies2.enemyDisplay();
myEnemies2.enemyMove();
myEnemies3.enemyDisplay();
myEnemies3.enemyMove();
}
第 1 类:
class Enemies {
float xpos, ypos, speed;
Enemies(float x, float y, float s) {
xpos = x;
ypos = y;
speed = s;
}
void enemyDisplay() {
rect(xpos, ypos, 100, 100);
}
void enemyMove() {
xpos += speed;
if((xpos > width - 100) || (xpos < 0)) {
speed *= -1;
}
}
}
第 2 类:
class Hero {
float xpos_, ypos_, speed_;
Hero(float x, float y, float s) {
xpos_ = x;
ypos_ = y;
speed_ = s;
}
void keyPressed() {
if (key == CODED) {
if (keyCode == UP) {
ypos_ -= speed_;
}
if (keyCode == DOWN) {
ypos_ += speed_;
}
if (keyCode == LEFT) {
xpos_ -= speed_;
}
if (keyCode == RIGHT) {
xpos_ += speed_;
}
}
rect(xpos_,ypos_,30,30);
}
}
最佳答案
我相信您提出的问题涉及基本的碰撞检测和对象交互。
我首先将 Enemies
创建为 List
并在 setup()
调用期间创建它/添加元素:
List<Enemies> enemies = new List<Enemies>();
enemies.add(new Enemies(50,50,10));
这允许您将所有敌人
存储在一个对象下。所以你的 draw()
方法看起来像:
void draw(){
background(0);
myHero.keyPressed();
for(Enemies enemy : enemies)
{
enemy.enemyDisplay();
enemy.enemyMove();
if (hero.isCollidingWith(enemy)) // collision method defined in the hero object, but you could define it in the Enemies class as well, it doesn't really matter
{
hero.removeHealth(); // method defined in hero that removes health
}
}
}
此方法将位于您的一个类中:
public boolean isColliding(Enemies enemy)
{
// check the x and y coordinates of each object
}
我希望这有助于为您指明正确的方向。
关于java - 处理中的多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26533350/