Avatar billede fajsa Nybegynder
22. januar 2005 - 11:33 Der er 25 kommentarer og
1 løsning

Enarmet tyveknægt point system

Jeg har lavet følgende kode, men jeg kan ikke rigtig finde ud af at lave et point system til det også.

Det skal enlig være ok simpelt kan bare ikke lige se hvordan man laver det. Kunne være fedt man startede med 500 point f.eks. og kostede det noget at prøve, f.eks. 2 point som så blev trukket fra de 500, hvis man så fik tre ens, vandt f.eks. 25 point som så blev lagt de point du havde.

Nogle der kan hjælpe?
Avatar billede fajsa Nybegynder
22. januar 2005 - 11:34 #1
Hov, glemte koden...

import java.awt.*;
import java.util.*;
import java.applet.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;


public class spillemaskine extends Applet  implements MouseListener, MouseMotionListener
  {
        Terning t1;
        Terning t2;
        Terning t3;
        Rectangle klikfelt;
        Point klikpunkt;
        int a, b;


      public void init()
      {
        t1=new Terning();
        t2=new Terning();
        t3=new Terning();
        klikfelt = new Rectangle(200,100,50,50);
        klikpunkt = new Point();
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
      }

        public void paint(Graphics g)
        {
          t1.kast();
          t2.kast();
          t3.kast();

          g.setColor(Color.black);
          g.drawOval(200,100,50,50);


          if(t1.vaerdi == 1)
          {
            Image billede = getImage(getCodeBase(), "dronning.gif");
            g.drawImage(billede, 50, 50, this);
          }
          if(t1.vaerdi == 2)
          {
            Image billede = getImage(getCodeBase(), "sortTaarn.gif");
            g.drawImage(billede, 50, 50, this);
          }
          if(t1.vaerdi == 3)
          {
            Image billede = getImage(getCodeBase(), "springer.gif");
            g.drawImage(billede, 50, 50, this);
          }

        if(t2.vaerdi == 1)
          {
            Image billede = getImage(getCodeBase(), "dronning.gif");
            g.drawImage(billede, 50, 100, this);
          }
        if(t2.vaerdi == 2)
          {
            Image billede = getImage(getCodeBase(), "sortTaarn.gif");
            g.drawImage(billede, 50, 100, this);
          }
        if(t2.vaerdi == 3)
        {
          Image billede = getImage(getCodeBase(), "springer.gif");
          g.drawImage(billede, 50, 100, this);
        }

        if(t3.vaerdi == 1)
        {
          Image billede = getImage(getCodeBase(), "dronning.gif");
          g.drawImage(billede, 50, 150, this);
        }
        if(t3.vaerdi == 2)
        {
          Image billede = getImage(getCodeBase(), "sortTaarn.gif");
          g.drawImage(billede, 50, 150, this);
        }
        if(t3.vaerdi == 3)
        {
          Image billede = getImage(getCodeBase(), "springer.gif");
          g.drawImage(billede, 50, 150, this);
        }



        }


        public void mousePressed(MouseEvent hændelse) // kræves af MouseListener
          {
          klikpunkt = hændelse.getPoint();
            a = klikpunkt.x;
            b = klikpunkt.y;

          if ( klikfelt.contains(a,b) )
            {
              repaint();

            }
          }

            public void mouseReleased (MouseEvent hændelse){} // kræves af MouseListener
            public void mouseDragged (MouseEvent hændelse){}// kræves af MouseListener
            public void mouseClicked (MouseEvent event) {}    // kræves af MouseListener
            public void mouseEntered (MouseEvent event) {}    // kræves af MouseListener
            public void mouseExited (MouseEvent event) {}    // kræves af MouseListener
            public void mouseMoved (MouseEvent hændelse) {}// kræves af MouseMotionListener
Avatar billede kalp Novice
22. januar 2005 - 11:37 #2
Du kan da i hvertfald lave en tæller som bliver initialiseret med værdien 500.
og så lav nogen metoder som trækker fra og ligger til. Den som trækker fra bliver kaldt når man taber.. den som ligger til når man vinder.
Avatar billede kalp Novice
22. januar 2005 - 11:39 #3
hvis din tæller hedder

private int counter = 500;

så kunne læg til metoden se sådan her ud

public void jegVandt()
{
counter += 25;
}

denne skal du altid kalde

public void spilEnTur()
{
counter -= 2;
}
Avatar billede fajsa Nybegynder
22. januar 2005 - 12:53 #4
hmm, kan stadig ikke lige se hvordan, jeg er stadig rimelig noob.
Kan du impletere det i koden for mig?
Avatar billede _carsten Nybegynder
22. januar 2005 - 14:13 #5
Jeg ved ikke om det kan gøres mere simpelt, men det her kan måske bruges (og så ville jeg lave lidt om på din paint() )


// Instance variabler

Image billede_1 = getImage(getCodeBase(), "dronning.gif");
Image billede_2 = getImage(getCodeBase(), "sortTaarn.gif");
Image billede_3 = getImage(getCodeBase(), "springer.gif");
private int counter = 500;


public void paint(Graphics g){

        if(t1.vaerdi == 1) {
            g.drawImage(billede_1, 50, 50, this);
        }
        if(t1.vaerdi == 2) {
            g.drawImage(billede_2, 50, 50, this);
        }
        if(t1.vaerdi == 3) {
            g.drawImage(billede_3, 50, 50, this);
        }
       
        if(t2.vaerdi == 1) {
            g.drawImage(billede_1, 50, 100, this);
        }
        if(t2.vaerdi == 2) {
            g.drawImage(billede_2, 50, 100, this);
        }
        if(t2.vaerdi == 3) {
            g.drawImage(billede_3, 50, 100, this);
        }
       
        if(t3.vaerdi == 1) {
            g.drawImage(billede_1, 50, 150, this);
        }
        if(t3.vaerdi == 2) {
            g.drawImage(billede_2, 50, 150, this);
        }
        if(t3.vaerdi == 3) {
            g.drawImage(billede_3, 50, 150, this);
        }

    score();  // Ny metode som opsummerer spillers score
}   
   


private void score(){
    counter -= 2; // Spillers indsats betales hvergang
   
    if(t1.vaerdi == t2.vaerdi && t1.vaerdi == t3.vaerdi)
        counter +=25;  //  Gevinst !
}
Avatar billede fajsa Nybegynder
22. januar 2005 - 14:27 #6
Den kommer med følgende fejl, har ikke oplevet at få den før:

"spillemaskine.java": illegal start of expression at line 31, column 9

kommer ved en kode:

private int counter = 500;
Avatar billede _carsten Nybegynder
22. januar 2005 - 14:30 #7
Du skal have den ind heroppe

        Terning t1;
        Terning t2;
        Terning t3;
        Rectangle klikfelt;
        Point klikpunkt;
        int a, b, counter = 500;
Avatar billede _carsten Nybegynder
22. januar 2005 - 14:31 #8
Også disse
        Terning t1;
        Terning t2;
        Terning t3;
        Rectangle klikfelt;
        Point klikpunkt;
        Image billede_1 = getImage(getCodeBase(), "dronning.gif");
        Image billede_2 = getImage(getCodeBase(), "sortTaarn.gif");
        Image billede_3 = getImage(getCodeBase(), "springer.gif");
        private int counter = 500;
Avatar billede fajsa Nybegynder
22. januar 2005 - 15:18 #9
hmm, nu kommer der ikke flere fejl, men scoren bliver ikke vist nogen steder, er  score(); nok til at vise scoren?
Avatar billede _carsten Nybegynder
22. januar 2005 - 15:39 #10
Nej - du skal jo have et TextField eller lignende for at det er muligt at se scoren

TextField field = new TextField(4);
add( field );

private void score(){
    counter -= 2; // Spillers indsats betales hvergang
   
    if(t1.vaerdi == t2.vaerdi && t1.vaerdi == t3.vaerdi)
        counter +=25;  //  Gevinst !
   
    field.setText("" + counter);
}
Avatar billede fajsa Nybegynder
22. januar 2005 - 15:54 #11
hmm, det er altså ik for at være besværlig, men nu kommer der en fejl.

i linje: field.setText("" + counter);

Kommer der:

"spillemaskine.java": cannot resolve symbol: method field (java.lang.String)in class spillemaskine at line 92, column 8
Avatar billede _carsten Nybegynder
22. januar 2005 - 16:15 #12
Du er ikke besværlig.

Det undrer mig bare lidt at netop den linie giver fejl!

Hvad siger denne: field.setText( Integer.toString(counter) );

Er det den eneste fejl du får ???
Avatar billede fajsa Nybegynder
22. januar 2005 - 16:22 #13
Der kommer der også en fejl:

"spillemaskine.java": int cannot be dereferenced at line 92, column 14

Ja det er den neste fejl.
Avatar billede _carsten Nybegynder
22. januar 2005 - 16:36 #14
"spillemaskine.java": int cannot be dereferenced at line 92, column 14
Betyder at man forsøger at kalde en metode på en int, som er en primitiv datatype der ingen metoder har.

Post lige hele fejlkoden, der må være mere end den ene linie!
Avatar billede fajsa Nybegynder
22. januar 2005 - 17:58 #15
hmm, jeg bruger jbuilder, og der kommer ikke rigtig andet...
Tænkte på om man ikke kunne bruge g.drawChar?
Avatar billede _carsten Nybegynder
22. januar 2005 - 19:26 #16
Kender ikke jbuilder, men denne field.setText( Integer.toString(counter) );  kan ikke give fejl

Du kan bedre bruge g.drawString(Integer.toString(counter) , 40,40);
Avatar billede fajsa Nybegynder
22. januar 2005 - 19:55 #17
Nu ligger jeg lige hele koden ud, så du kan se om jeg har lavet nogle fejl:

import java.awt.*;
import java.util.*;
import java.applet.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;


public class spillemaskine extends Applet  implements MouseListener, MouseMotionListener
  {
        Terning t1;
        Terning t2;
        Terning t3;
        Rectangle klikfelt;
        Point klikpunkt;
        int a, b, counter;


      public void init()
      {
        t1=new Terning();
        t2=new Terning();
        t3=new Terning();
        klikfelt = new Rectangle(200,100,50,50);
        klikpunkt = new Point();
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
        int counter = 500;
        TextField field = new TextField(4);
        add( field );
      }


        public void paint(Graphics g){

          t1.kast();
          t2.kast();
          t3.kast();

          g.setColor(Color.black);
          g.drawOval(200, 100, 50, 50);

          if (t1.vaerdi == 1) {
            Image billede = getImage(getCodeBase(), "dronning.gif");
            g.drawImage(billede, 50, 50, this);
          }
          if (t1.vaerdi == 2) {
            Image billede = getImage(getCodeBase(), "sortTaarn.gif");
            g.drawImage(billede, 50, 50, this);
          }
          if (t1.vaerdi == 3) {
            Image billede = getImage(getCodeBase(), "springer.gif");
            g.drawImage(billede, 50, 50, this);
          }

          if (t2.vaerdi == 1) {
            Image billede = getImage(getCodeBase(), "dronning.gif");
            g.drawImage(billede, 50, 100, this);
          }
          if (t2.vaerdi == 2) {
            Image billede = getImage(getCodeBase(), "sortTaarn.gif");
            g.drawImage(billede, 50, 100, this);
          }
          if (t2.vaerdi == 3) {
            Image billede = getImage(getCodeBase(), "springer.gif");
            g.drawImage(billede, 50, 100, this);
          }

          if (t3.vaerdi == 1) {
            Image billede = getImage(getCodeBase(), "dronning.gif");
            g.drawImage(billede, 50, 150, this);
          }
          if (t3.vaerdi == 2) {
            Image billede = getImage(getCodeBase(), "sortTaarn.gif");
            g.drawImage(billede, 50, 150, this);
          }
          if (t3.vaerdi == 3) {
            Image billede = getImage(getCodeBase(), "springer.gif");
            g.drawImage(billede, 50, 150, this);
          }

          score(); // Ny metode som opsummerer spillers score
         
         
       
        }

        private void score(){
            counter -= 2; // Spillers indsats betales hvergang
       
            if(t1.vaerdi == t2.vaerdi && t1.vaerdi == t3.vaerdi)
                counter +=25;  //  Gevinst !
       
            field.setText("" + counter);
        }


        public void mousePressed(MouseEvent hændelse) // kræves af MouseListener
          {
          klikpunkt = hændelse.getPoint();
            a = klikpunkt.x;
            b = klikpunkt.y;

          if ( klikfelt.contains(a,b) )
            {
              repaint();

            }
          }

            public void mouseReleased (MouseEvent hændelse){} // kræves af MouseListener
            public void mouseDragged (MouseEvent hændelse){}// kræves af MouseListener
            public void mouseClicked (MouseEvent event) {}    // kræves af MouseListener
            public void mouseEntered (MouseEvent event) {}    // kræves af MouseListener
            public void mouseExited (MouseEvent event) {}    // kræves af MouseListener
            public void mouseMoved (MouseEvent hændelse) {}// kræves af MouseMotionListener
}
Avatar billede _carsten Nybegynder
22. januar 2005 - 20:16 #18
Ja - i din init()

TextField field = new TextField(4);

Det skal være en instance/object variabel

Altså op med den
public class spillemaskine extends Applet  implements MouseListener, MouseMotionListener
  {
        Terning t1;
        Terning t2;
        Terning t3;
        Rectangle klikfelt;
        Point klikpunkt;
        int a, b, counter;
        TextField field;


      public void init()
      {
        t1=new Terning();
        t2=new Terning();
        t3=new Terning();
        klikfelt = new Rectangle(200,100,50,50);
        klikpunkt = new Point();
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
        int counter = 500;
        field = new TextField(4);
        add( field );
      }
Avatar billede _carsten Nybegynder
22. januar 2005 - 20:42 #19
Hov, din counter er også tosset

        Terning t1;
        Terning t2;
        Terning t3;
        Rectangle klikfelt;
        Point klikpunkt;
        int a, b, counter = 500;
        TextField field;

Og slet den i din init()
Avatar billede kalp Novice
22. januar 2005 - 21:25 #20
sorry fajsa er først kommet hjem nu, men kan se _carsten har hjulpet dig videre:)
Avatar billede _carsten Nybegynder
22. januar 2005 - 21:51 #21
Her du fået det til at virke, ellers så skyd løs med spørgsmål, det er hvad eksperten er til for.
Avatar billede fajsa Nybegynder
22. januar 2005 - 23:11 #22
ja 1000 tak nu virker det, tak for hjælpen alle sammen.
Ville gerne give dig point kalp, men synes det er mest retfærdigt at carsten får dem, men du skal hvertflald også have tak for at have hjulpet mig.

hmm har to spørgsmål:

Hvordan kan man skrive almindelig tekst i et applet?

Og hvordan lukker man enlig spørgsmålet?
Avatar billede kalp Novice
22. januar 2005 - 23:21 #23
Nu arbejder jeg ikke med applet's men vil da tro man godt kan bruge en JLabel.. hmm det ved _Carsten:)

Angående dit andet spørgsmål så ligger carsten til et svar så kan du markere hans navn og acceptere det:)
Avatar billede _carsten Nybegynder
23. januar 2005 - 10:08 #24
Du kan enten adde et java.awt.TextArea eller et javax.swing.JTextArea, som er komponenter man kan skrive i, eller du kan bruge g.drawString("TEKST", x,y).

En applet loades jo i en browser, så der kun 2 mulighed for at 'lukke', nemlig ved at gå til et nyt link eller lukke browseren.
Avatar billede fajsa Nybegynder
23. januar 2005 - 12:50 #25
tak for hjælpen nu virker det :D
Avatar billede kalp Novice
23. januar 2005 - 14:49 #26
fajse>> For at uddele dine point til _carsten kan du nu omkring nederst i venstre side se en lille boks med carstens profilnavn i .. marker og tryk på knappen accepter svar:)
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