Avatar billede jannek_ek Nybegynder
13. september 2005 - 20:45 Der er 12 kommentarer

kan ikke kalde variabel

Ja jeg har et problem med det her, da min kompiler siger at den ikke kan kalde 2 variabler, og en funktion:


program.java:25: cannot resolve symbol
symbol  : variable billede
location: class person
      billede = personen.billede;
                        ^
program.java:26: cannot resolve symbol
symbol  : variable tekst
location: class person
      tekst = personen.tekst;
                      ^
program.java:27: cannot resolve symbol
symbol  : method nyt (java.lang.String,java.lang.String)
location: class vindue
      spillet.nyt("billede", "tekst");
            ^
program.java:34: cannot resolve symbol
symbol  : variable billede
location: class person
      billede = mod.billede;
                  ^
program.java:35: cannot resolve symbol
symbol  : variable tekst
location: class person
      tekst = mod.tekst;
                ^
program.java:36: cannot resolve symbol
symbol  : method nyt (java.lang.String,java.lang.String)
location: class vindue
      spillet.nyt("billede", "tekst");
            ^
6 errors


program.java:

import java.awt.*;

public class program
{
  public static void main(String[] arg)
  {
    vindue spillet = new vindue();
    person personen = new person("Henning", 233, 19, 23, 32, 70, 11, 3);
    person mod = new person("Bjarke", 198, 12, 20, 29, 90, 40, 30);
    String tekst;
    String billede;

    spillet.setSize(640, 480);
    spillet.setTitle("The ultimative game!");
    spillet.setVisible(true);

    while(personen.liv > 0 && mod.liv > 0)
    {
      personen.angrebet(mod);
      try
      {
        Thread.sleep(1000);
      } catch(Exception e)
      {}
      billede = personen.billede;
      tekst = personen.tekst;
      spillet.nyt(billede, tekst);
      mod.angrebet(personen);
      try
      {
        Thread.sleep(1000);
      } catch(Exception e)
      {}
      billede = mod.billede;
      tekst = mod.tekst;
      spillet.nyt(billede, tekst);
    }
    try
    {
      Thread.sleep(1000);
    } catch(Exception e)
    {}
    System.exit(0);
  }
}


person.java:

import java.awt.*;

public class person
{
  protected String navn;
  protected int maxLiv = 100;
  protected int liv = maxLiv;
  protected int forsvar = 2;
  protected int skjold = 5;
  protected int skade = 5;
  protected int angreb = 60;
  protected int blok = 20;
  protected int hastighed = 10;
  protected int buffer;
  protected String billede;
  protected String tekst;

  public person(String n)
  {
    navn = n;
  }

  public person(String n, int l, int f, int s, int sk, int a, int b, int h)
  {
    navn = n;
    maxLiv = l;
    liv = l;
    forsvar = f;
    skjold = s;
    skade = sk;
    angreb = a;
    blok = b;
    hastighed = h;
  }

  public person(monster mod)
  {
    navn = mod.navn;
    liv = maxLiv = mod.liv;
    forsvar = mod.forsvar;
    skjold = mod.skjold;
    skade = mod.skade;
    angreb = mod.angreb;
    blok = mod.blok;
    hastighed = mod.hastighed;
  }

  public void angrebet(person mod)
  {
    if(((int) (Math.random() * (double) (mod.angreb + 1))) >= ((int) (Math.random() * (double) (hastighed + 1))))
    {
      if(((int) (Math.random() * (double) (mod.angreb + 1))) >= ((int) (Math.random() * (double) (blok + 1))))
      {
        buffer = mod.skade - ((int) (Math.random() * (double) (forsvar + 1)));
        if(buffer > 0)
        {
          liv -= buffer;
        } else
        {
          liv--;
        }
        billede = "ramt";
      } else
      {
        buffer = mod.skade - ((int) (Math.random() * (double) (forsvar + 1))) - skjold;
        if(buffer > 0)
        {
          liv -= buffer;
        } else
        {
          liv--;
        }
        billede = "blok";
      }
      if(buffer < 1)
      {
        buffer = 1;
      }
      tekst = mod.navn + " skadede " + buffer;
    } else
    {
      tekst = mod.navn + " lavede en flot forbier!";
      billede = "forbier";
    }
    if(liv < 1)
    {
      liv = 0;
      billede = "død";
    }
    tekst = tekst + "\n" + navn + " har " + liv + " liv tilbage";
  }
}


og vindue.java:


import java.awt.*;

public class vindue extends Frame
{
  public String tekst;
  protected Image billede;

  public void paint(Graphics g)
  {
    Insets ins = getInsets();
    g.translate(ins.left, ins.top);
    g.drawImage(billede, 0, 0, this);
    g.drawString(tekst, 10, 210);
  }

  public void nyt(String nytB, String nyT)
  {
    billede = Toolkit.getDefaultToolkit().getImage(nytB + ".gif");
    tekst = nyT;
    repaint();
  }
}

jeg har kikket længe på det, men kan ikke gennemskue hvor fejlen ligger...
Avatar billede jannek_ek Nybegynder
13. september 2005 - 20:46 #1
^ står under . i alle 6 tilfælde
Avatar billede arne_v Ekspert
13. september 2005 - 20:51 #2
jeg tror at dine fields i class person skal ændres fra protected til public !
Avatar billede arne_v Ekspert
13. september 2005 - 20:51 #3
(eller måske snarere til private og så med public get og set metoder)
Avatar billede jannek_ek Nybegynder
13. september 2005 - 21:51 #4
hmm jeg kan prøve, men jeg de burde kunne læses når de nu kun er beskyttet... og spillet.nyt(...) har jeg prøvet at fylde ud med to strenge der blev lavet inde i parranteserne ("streng", "streng")
Avatar billede jannek_ek Nybegynder
13. september 2005 - 21:56 #5
nu har jeg lavet

  public String getBillede()
  {
    return = billede;
  }

  public String getTekst()
  {
    return = billede;
  }

men kompileren siger det samme som før, bare med getBillede(); og getTekst();
Avatar billede arne_v Ekspert
13. september 2005 - 21:57 #6
nu har jeg lige prøvet at gemme de 3 filer og compile - jeg får en helt anden fejl end dig !?!?
Avatar billede arne_v Ekspert
13. september 2005 - 21:57 #7
klassen person har 2 constructorer med samme argumenter (1 String)
Avatar billede arne_v Ekspert
13. september 2005 - 21:58 #8
med

/*
  public person(monster mod)
  {
    navn = mod.navn;
    liv = maxLiv = mod.liv;
    forsvar = mod.forsvar;
    skjold = mod.skjold;
    skade = mod.skade;
    angreb = mod.angreb;
    blok = mod.blok;
    hastighed = mod.hastighed;
  }
*/

compiler koden hos mig
Avatar billede jannek_ek Nybegynder
13. september 2005 - 21:59 #9
damn... det kan kan da ikke være min compiler der er noget galt med... jeg bruger j2sdk1.4.2_06
Avatar billede jannek_ek Nybegynder
13. september 2005 - 22:00 #10
når, det kan du bare slette, det er først noget der skal bruges senere, så det gør ikke noget at du sletter den constructor nu
Avatar billede arne_v Ekspert
13. september 2005 - 22:09 #11
det virker også hos mig med 1.4.2
Avatar billede jannek_ek Nybegynder
13. september 2005 - 22:26 #12
damn
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester