Java 无法生成一行敌人,仅生成一个敌人:\
控制器类:Java 无法生成一行敌人,仅生成一个敌人:\,java,Java,控制器类: package com.game.src.main; import java.awt.Graphics; import java.util.LinkedList; import java.util.Random; public class Controller { private LinkedList<Enemy> e = new LinkedList<Enemy>(); Ran
package com.game.src.main;
import java.awt.Graphics;
import java.util.LinkedList;
import java.util.Random;
public class Controller
{
private LinkedList<Enemy> e = new LinkedList<Enemy>();
Random r = new Random();
Enemy TempEnemy = null;
Game game;
Textures tex;
public Controller(Game game, Textures tex)
{
this.game = game;
this.tex = tex;
**for(int x = 0; x < (Game.WIDTH * Game.SCALE); x += 21)
addEnemy(new Enemy(x, 200, tex));**
}
public void tick()
{
for(int i = 0; i < e.size(); i++)
TempEnemy = e.get(i);
TempEnemy.tick();
}
public void render(Graphics g)
{
for(int i = 0; i < e.size(); i++)
TempEnemy = e.get(i);
TempEnemy.render(g);
}
public void addEnemy(Enemy block)
{
e.add(block);
}
public void removeEnemy(Enemy block)
{
e.remove(block);
}
}
纹理类别:
package com.game.src.main;
import java.awt.image.BufferedImage;
public class Textures
{
public BufferedImage player, spike;
private SpriteSheet ss;
public Textures(Game game)
{
ss = new SpriteSheet(game.getSpriteSheet());
getTextures();
}
private void getTextures()
{
player = ss.grabImage(1, 1, 44, 65);
spike = ss.grabImage(1, 3, 21, 65);
}
public void setUp()
{
player = ss.grabImage(3, 1, 43, 65);
}
public void setDown()
{
player = ss.grabImage(1, 1, 43, 65);
}
public void setLeft()
{
player = ss.grabImage(5, 1, 43, 65);
}
public void setRight()
{
player = ss.grabImage(7, 1, 43, 65);
}
}
括号
改变这个
public void render(Graphics g)
{
for(int i = 0; i < e.size(); i++)
TempEnemy = e.get(i);
TempEnemy.render(g);
}
public void渲染(图形g)
{
对于(int i=0;i
对此
public void render(Graphics g)
{
for(int i = 0; i < e.size(); i++){
TempEnemy = e.get(i);
TempEnemy.render(g);
}
}
public void渲染(图形g)
{
对于(int i=0;i
PS:始终为循环、if语句等编写括号,即使您只需要执行一行。你可以避免这种斗争
此外,您也不需要“tempdeyen”,此代码的作用与此相同:
public void render(Graphics g)
{
for(int i = 0; i < e.size(); i++){
e.get(i).render(g);
}
}
public void渲染(图形g)
{
对于(int i=0;i
我想问一个问题:为什么要使用temp变量?你可以写e.get(i).render(g)
或者e.get(i).tick()
或者我遗漏了什么?有趣的是,我不知道我可以直接使用你提到的方法。检查之后,它生成了一整行:D今天学到了一些东西。我认为额外的外接程序变量TEMPANY造成了问题:\但为什么?:\您在answers^^Histick()
方法中找到了答案,该方法也忽略了brackets@MuratK. - 是的,可能有多个括号缺失,我不会检查他的所有代码,他应该像我提到的那样在所有地方添加括号,他会没事的:)。谢谢!我想,我试过了;之前必须在外部,但由于它渲染每个敌人对象,所以它必须包含在身体中!
public void render(Graphics g)
{
for(int i = 0; i < e.size(); i++){
e.get(i).render(g);
}
}