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^^His
tick()
方法中找到了答案,该方法也忽略了brackets@MuratK. - 是的,可能有多个括号缺失,我不会检查他的所有代码,他应该像我提到的那样在所有地方添加括号,他会没事的:)。谢谢!我想,我试过了;之前必须在外部,但由于它渲染每个敌人对象,所以它必须包含在身体中!
    public void render(Graphics g)
    {
        for(int i = 0; i < e.size(); i++){
            e.get(i).render(g);
        }
    }