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)
我建议先做一些较小的工作。
从一个新项目开始,并开始工作:
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 项目从一台计算机复制到另一台计算机通常麻烦大于其价值。除非所有依赖项都位于完全相同的位置,否则您将会遇到问题。相反,我建议创建一个新项目并仅复制代码。