处理“用法:PApplet [选项] <类名> [草图参数]”

And*_*rew 2 java eclipse processing

每次编译代码时,我都会收到此消息:“用法:PApplet [选项] [sketch args] 请参阅 PApplet 的 Javadoc 以获取解释。” 我正在使用的代码是通过闪存驱动器从我的旧计算机导入的,并且在该计算机上运行良好。当我将文件放入工作区后尝试从 src 打开该文件时,它不认为它是一个项目,因此我将其放入一个新的处理项目中。所以基本上我不确定我是否安装了处理错误或代码中存在错误,但我现在收到此错误,这非常烦人,因为我想处理这个旧项目。这是代码:

package tests;

import processing.core.PApplet;
import processing.core.PFont;
import processing.core.PImage;
import java.util.Random;

public class test1 extends PApplet {
    PImage background;
    PImage mole;
    PImage mallet1;
    PImage mallet2;

    PFont f;
    public int timer;
    public int startTime;
    public int gameTime;
    public int startGameTime;

    int score = 0;
    Random rnd = new Random();
    boolean mouseP = false;
    int life = 3;

    Mole mole1;
    Mole mole2;
    Mole mole3;
    Mallet mallet;
     enum GameState {
            MENU,
            RUNNING,
            RUNNING2
       }
     static GameState currentState;

    public void setup() {
        size(1000, 800);
        background = loadImage("background.png");
        currentState = GameState.MENU;
        mole = loadImage("mole.png");
        mole1 = new Mole(mole);
        mole2 = new Mole(mole);
        mole3 = new Mole(mole);
        f = createFont("comic.tff",16,true);
        textFont(f,36);
    }

     public void draw() {

            switch(currentState){
            case MENU:
                drawMenu();
                startTime = millis();
                timer = 0;
                life = 3;
                gameTime = millis();
                cursor(CROSS);
                break;
            case RUNNING:
                drawRunning();
                break;
            case RUNNING2:
                drawRunning2();
                gameTime = millis() - startGameTime;

                break;

            }
        }

    public void drawRunning() {
        clear();
        background(background);

        if(timer < 60000){
        mallet2 = loadImage("mallet2.png");
        timer = millis();

        background(background);
        mole1.drawMole();
        mole1.collision(mallet);
        timer = millis() - startTime;
        mallet1 = loadImage("mallet1.png");
        mallet = new Mallet(mallet1, mouseX, mouseY);

        fill(255,255,255);
        text("Time: " + ((60 - timer / 1000)), 850, 50);

        if (mouseP){
            mallet.drawMallet(mallet2, mouseX, mouseY);
        }
        else {
            mallet.drawMallet(mallet1, mouseX, mouseY);
        }
        if(timer > 60000){
            fill(255,255,255);
            text("Game over!" , background.width/2 - 100, background.height/2);

        currentState = GameState.MENU;

        }
        noCursor();
        text("Score: " + score ,25,50);
        }

    }

    public void drawRunning2() {
    clear();
    mallet1 = loadImage("mallet1.png");
    mallet = new Mallet(mallet1, mouseX, mouseY);


    mallet2 = loadImage("mallet2.png");

    background(background);

    timer = millis() - startTime;

    text("Life: " + life ,25,50);

    noCursor();

    text("Time: " + (gameTime / 1000), 825, 50);
    if(life <= 0){
        mole1.dead = true;
        mole2.dead = true;
        mole3.dead = true;
        text("Game over!" , background.width/2 - 100, background.height/2);

        if(mouseP){

            currentState = GameState.MENU;
            timer = 0;
            gameTime = 0;
            startGameTime = millis();
        }

    }

    if (timer < 2000){
        if (!mole1.dead){
            mole1.drawMole();
            mole1.collision(mallet);
        }
        if (!mole3.dead){
            mole3.drawMole();
            mole3.collision(mallet);
        }
        if (!mole2.dead){
            mole2.drawMole();
            mole2.collision(mallet);
        }
        if (mouseP){
            mallet.drawMallet(mallet2, mouseX, mouseY);
        }
        else {
            mallet.drawMallet(mallet1, mouseX, mouseY);
        }
    }
    else {
        startTime = millis();
        if (!mole1.dead || !mole2.dead || !mole3.dead) {
            life --;
        }
        if (life > 0){
            mole1.dead = false;
            mole2.dead = false;
            mole3.dead = false;

            mole1.xPos = rnd.nextInt(925);
            mole1.yPos = rnd.nextInt(725);
            mole3.xPos = rnd.nextInt(925);
            mole3.yPos = rnd.nextInt(725);
            mole2.xPos = rnd.nextInt(925);
            mole2.yPos = rnd.nextInt(725);

            }

        }
    }

    public void drawMenu(){
        clear();
        background(142,22,178);

        fill(165, 119, 249);
        rect(250, 150, 500, 200 );
        fill(255,255,255);
        text("Time Mode", 375, 270);
        fill(165, 119, 249);
        rect(250, 450, 500, 200 );
        fill(255,255,255);
        text("Survival Mode", 375, 570);

    }

            public void mousePressed()
            {
                mouseP = true;

                if( currentState == GameState.MENU && mouseX > 250 && mouseX < 750 && mouseY > 150 && mouseY < 350){
                    currentState = GameState.RUNNING;
                }
                if( currentState == GameState.MENU && mouseX > 250 && mouseX < 750 && mouseY > 450 && mouseY < 650){
                    currentState = GameState.RUNNING2;
            }

            }
                public void mouseReleased()
                {
                mouseP = false;
                }

    public class Mallet{
        PImage mallet1;
        PImage mallet2;
        float xPos1;
        float yPos1;

        public Mallet(PImage mallet1, float xPos1, float yPos1){

            this.mallet1 = mallet1;
            this.xPos1 = xPos1;
            this.yPos1 = yPos1;
        }

        public void drawMallet(PImage mallet1, float xPos1, float yPos1){
            image(mallet1, xPos1 - 40, yPos1 - 60);
        }
    }
    public class Mole{
        PImage Mole;
        float xPos;
        float yPos;
        boolean dead = false;

        public Mole(PImage mole){       
            this.Mole = mole;
            this.xPos = rnd.nextInt(925);
            this.yPos = rnd.nextInt(750);
        }


        public void drawMole(){
            if (dead == true) {
                this.xPos = rnd.nextInt(1000 - mole.width / 2);
                this.yPos = rnd.nextInt(800 - mole.height);
                dead = false;
            }
            image(Mole, xPos, yPos);    
        }   

        public void collision(Mallet m){
            if(
                    mouseP == true &&
            mouseX > xPos && mouseX < xPos + mole.width && mouseY > yPos && mouseY < yPos + mole.height){
                score ++;
                dead = true;
            }
        }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Kev*_*man 5

我建议先做一些较小的工作。

从一个新项目开始,并开始工作:

public class ProcessingTest extends PApplet{

    @Override
    public void settings() {
        size(200, 200);
    }

    @Override
    public void draw() {
        background(0);
        fill(255, 0, 0);
        ellipse(100, 100, 100, 100);
    }

    public static void main (String... args) {
        ProcessingTest pt = new ProcessingTest();
        PApplet.runSketch(new String[]{"ProcessingTest"}, pt);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将测试您是否正确设置了处理依赖项。如果您遇到困难,那么您可以提出更具体的问题。

开始工作后,您可以向工作示例添加小段代码,直到它停止工作,这将再次允许您提出更具体的问题。这都是为了缩小问题范围:您的错误可能与字体无关,那么为什么您的代码包含字体逻辑?换句话说,请发布MCVE

如果您再次陷入困境,请尝试更具体地说明您的错误:您确定它是在编译期间发生的,还是在您尝试运行时发生的?它在哪条线上?您使用什么版本的处理?你的代码运行得怎么样?(我没有看到main()方法?)

您还应该尝试使用正确的格式(缩进)和命名约定(类名以大写字母开头,方法和变量以小写字母开头)。这将帮助我们阅读您的代码并帮助您发现错误。

我还要说的是,将 Eclipse 项目从一台计算机复制到另一台计算机通常麻烦大于其价值。除非所有依赖项都位于完全相同的位置,否则您将会遇到问题。相反,我建议创建一个新项目并仅复制代码。